pipebuffer: don't fail when validating mapped buffers
This can be almost impossible to avoid - hopefully we won't encounter a situation where this is a true requirement. Would probably require drivers to flush between hardware and software vertex processing.
This commit is contained in:
@@ -365,21 +365,22 @@ fenced_buffer_validate(struct pb_buffer *buf,
|
|||||||
if(fenced_buf->vl && fenced_buf->vl != vl)
|
if(fenced_buf->vl && fenced_buf->vl != vl)
|
||||||
return PIPE_ERROR_RETRY;
|
return PIPE_ERROR_RETRY;
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* Do not validate if buffer is still mapped */
|
/* Do not validate if buffer is still mapped */
|
||||||
if(fenced_buf->flags & PIPE_BUFFER_USAGE_CPU_READ_WRITE) {
|
if(fenced_buf->flags & PIPE_BUFFER_USAGE_CPU_READ_WRITE) {
|
||||||
/* TODO: wait for the thread that mapped the buffer to unmap it */
|
/* TODO: wait for the thread that mapped the buffer to unmap it */
|
||||||
return PIPE_ERROR_RETRY;
|
return PIPE_ERROR_RETRY;
|
||||||
}
|
}
|
||||||
|
/* Final sanity checking */
|
||||||
|
assert(!(fenced_buf->flags & PIPE_BUFFER_USAGE_CPU_READ_WRITE));
|
||||||
|
assert(!fenced_buf->mapcount);
|
||||||
|
#endif
|
||||||
|
|
||||||
if(fenced_buf->vl == vl &&
|
if(fenced_buf->vl == vl &&
|
||||||
(fenced_buf->validation_flags & flags) == flags) {
|
(fenced_buf->validation_flags & flags) == flags) {
|
||||||
/* Nothing to do -- buffer already validated */
|
/* Nothing to do -- buffer already validated */
|
||||||
return PIPE_OK;
|
return PIPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Final sanity checking */
|
|
||||||
assert(!(fenced_buf->flags & PIPE_BUFFER_USAGE_CPU_READ_WRITE));
|
|
||||||
assert(!fenced_buf->mapcount);
|
|
||||||
|
|
||||||
ret = pb_validate(fenced_buf->buffer, vl, flags);
|
ret = pb_validate(fenced_buf->buffer, vl, flags);
|
||||||
if (ret != PIPE_OK)
|
if (ret != PIPE_OK)
|
||||||
|
Reference in New Issue
Block a user