llvmpipe: Use comments and more code from softpipe's is_texture_referenced implementa...
authorJosé Fonseca <jfonseca@vmware.com>
Sat, 26 Dec 2009 11:02:02 +0000 (11:02 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Sat, 26 Dec 2009 11:02:02 +0000 (11:02 +0000)
src/gallium/drivers/llvmpipe/lp_context.c

index 001311e7031a11bbf63d301ab2360fd1ffc66342..37587d4f792c2af5bc6c48d4e3253ce6c77fc4e8 100644 (file)
@@ -140,6 +140,7 @@ llvmpipe_is_texture_referenced( struct pipe_context *pipe,
    struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
    unsigned i;
 
+   /* check if any of the bound drawing surfaces are this texture */
    if(llvmpipe->dirty_render_cache) {
       for (i = 0; i < llvmpipe->framebuffer.nr_cbufs; i++) {
          if(llvmpipe->framebuffer.cbufs[i] && 
@@ -150,6 +151,13 @@ llvmpipe_is_texture_referenced( struct pipe_context *pipe,
          llvmpipe->framebuffer.zsbuf->texture == texture)
          return PIPE_REFERENCED_FOR_WRITE;
    }
+
+   /* check if any of the tex_cache textures are this texture */
+   for (i = 0; i < PIPE_MAX_SAMPLERS; i++) {
+      if (llvmpipe->tex_cache[i] &&
+            llvmpipe->tex_cache[i]->texture == texture)
+         return PIPE_REFERENCED_FOR_READ;
+   }
    for (i = 0; i < PIPE_MAX_VERTEX_SAMPLERS; i++) {
       if (llvmpipe->vertex_tex_cache[i] &&
           llvmpipe->vertex_tex_cache[i]->texture == texture)