svga: fix synchronization bug between sampler views and surfaces
authorBrian Paul <brianp@vmware.com>
Mon, 18 Jun 2012 16:22:06 +0000 (10:22 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 18 Jun 2012 16:22:59 +0000 (10:22 -0600)
This fixes a bug where a sampler view was using stale texture/resource
data when the texture was modified through a surface (render to texture).
Bumping the texture and layer ages triggers sampler view revalidation.

Fixes piglit fbo-blit failure.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/gallium/drivers/svga/svga_surface.c

index 44c18926e1131332a27ef74e796210bd8f2e146b..6c4f06d4289e05377af251731797be8bc1427319 100644 (file)
@@ -320,6 +320,11 @@ svga_mark_surface_dirty(struct pipe_surface *surf)
       else {
          /* this will happen later in svga_propagate_surface */
       }
+
+      /* Increment the view_age and texture age for this surface's slice
+       * so that any sampler views into the texture are re-validated too.
+       */
+      tex->view_age[surf->u.tex.first_layer] = ++(tex->age);
    }
 }