llvmpipe: check render targets before other textures
authorBrian Paul <brianp@vmware.com>
Wed, 13 Jan 2010 22:32:55 +0000 (15:32 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 13 Jan 2010 22:32:55 +0000 (15:32 -0700)
src/gallium/drivers/llvmpipe/lp_setup.c

index ce006bf618e4406da2c6d086a739b190ddd846e5..649e97992bad8ce915cf9e1a6cd8b84fdf7ce1a8 100644 (file)
@@ -482,19 +482,22 @@ lp_setup_is_texture_referenced( const struct setup_context *setup,
                                 const struct pipe_texture *texture )
 {
    unsigned i;
-   for (i = 0; i < Elements(setup->scenes); i++) {
-      if (lp_scene_is_textured_referenced(setup->scenes[i], texture)) {
-         return PIPE_REFERENCED_FOR_READ;
-      }
-   }
 
    /* check the render targets */
    for (i = 0; i < setup->fb.nr_cbufs; i++) {
       if (setup->fb.cbufs[i]->texture == texture)
          return PIPE_REFERENCED_FOR_READ | PIPE_REFERENCED_FOR_WRITE;
    }
-   if (setup->fb.zsbuf && setup->fb.zsbuf->texture == texture)
+   if (setup->fb.zsbuf && setup->fb.zsbuf->texture == texture) {
       return PIPE_REFERENCED_FOR_READ | PIPE_REFERENCED_FOR_WRITE;
+   }
+
+   /* check textures referenced by the scene */
+   for (i = 0; i < Elements(setup->scenes); i++) {
+      if (lp_scene_is_textured_referenced(setup->scenes[i], texture)) {
+         return PIPE_REFERENCED_FOR_READ;
+      }
+   }
 
    return PIPE_UNREFERENCED;
 }