pipebuffer: don't fail when validating mapped buffers
authorKeith Whitwell <keithw@vmware.com>
Fri, 24 Apr 2009 11:43:04 +0000 (12:43 +0100)
committerKeith Whitwell <keithw@vmware.com>
Fri, 24 Apr 2009 11:43:04 +0000 (12:43 +0100)
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.

src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c

index 2cd0b8a8cdf3d56529db2b1072eac610bb5f8c26..044e8e1dd3e6d4c9b7346afdc04f8d1e6e080a7f 100644 (file)
@@ -365,21 +365,22 @@ fenced_buffer_validate(struct pb_buffer *buf,
    if(fenced_buf->vl && fenced_buf->vl != vl)
       return PIPE_ERROR_RETRY;
    
+#if 0
    /* Do not validate if buffer is still mapped */
    if(fenced_buf->flags & PIPE_BUFFER_USAGE_CPU_READ_WRITE) {
       /* TODO: wait for the thread that mapped the buffer to unmap it */
       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 &&
       (fenced_buf->validation_flags & flags) == flags) {
       /* Nothing to do -- buffer already validated */
       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);
    if (ret != PIPE_OK)