OSDN Git Service

r600g: Invalidate texture cache when creating vertex buffers for compute v2
authorTom Stellard <thomas.stellard@amd.com>
Wed, 1 Aug 2012 20:42:53 +0000 (20:42 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 19 Sep 2012 18:58:53 +0000 (14:58 -0400)
Compute shaders fetch data from vertex buffers via the texture cache, so
we need to make sure the texture cache is flushed.

v2:
  - Fix rebase mistake
  - Fix spelling in comment

Reviewed-by: Marek Olšák <maraeo@gmail.com>
src/gallium/drivers/r600/evergreen_compute.c

index 1056cf2..2c66306 100644 (file)
@@ -96,7 +96,9 @@ static void evergreen_cs_set_vertex_buffer(
        vb->buffer = buffer;
        vb->user_buffer = NULL;
 
-       rctx->flags |= rctx->has_vertex_cache ? R600_CONTEXT_VTX_FLUSH : R600_CONTEXT_TEX_FLUSH;
+       /* The vertex instructions in the compute shaders use the texture cache,
+        * so we need to invalidate it. */
+       rctx->flags |= R600_CONTEXT_TEX_FLUSH;
        state->enabled_mask |= 1 << vb_index;
        state->dirty_mask |= 1 << vb_index;
        r600_atom_dirty(rctx, &state->atom);