gallium: cached bufmgr add map busy check
authorDave Airlie <airlied@redhat.com>
Sun, 21 Mar 2010 08:23:22 +0000 (18:23 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 21 Mar 2010 09:38:41 +0000 (19:38 +1000)
Suggested by Jose on the list, probably not perfect but will let me get
past this for now, testing with a fenced bufmgr on top of this, was slower,

Also this doesn't let you do the busy early exit optimisation either from
what I can see.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/auxiliary/pipebuffer/pb_bufmgr_cache.c

index 86f9266c95ff2490362debf12fda1f5b1672ca6d..0f2ae05daedf8552548eeb066db3c56628f1b543 100644 (file)
@@ -227,6 +227,8 @@ pb_cache_is_buffer_compat(struct pb_cache_buffer *buf,
                           pb_size size,
                           const struct pb_desc *desc)
 {
+   void *map;
+
    if(buf->base.base.size < size)
       return FALSE;
 
@@ -239,6 +241,13 @@ pb_cache_is_buffer_compat(struct pb_cache_buffer *buf,
    
    if(!pb_check_usage(desc->usage, buf->base.base.usage))
       return FALSE;
+
+   map = pb_map(buf->buffer, PIPE_BUFFER_USAGE_DONTBLOCK);
+   if (!map) {
+      return FALSE;
+   }
+
+   pb_unmap(buf->buffer);
    
    return TRUE;
 }