vk/device: Only flush the texture cache when setting state base address
authorJason Ekstrand <jason.ekstrand@intel.com>
Sun, 31 May 2015 01:04:48 +0000 (18:04 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Sun, 31 May 2015 01:04:50 +0000 (18:04 -0700)
After further examination, it appears that the other flushes and stalls
weren't actually needed.

src/vulkan/device.c

index 6dc411c46be697e10f66eee3c371fe59e2ec1736..f0e73b3687a155fddbcde322fa14ee855763cd61 100644 (file)
@@ -2806,19 +2806,11 @@ anv_cmd_buffer_new_surface_state_bo(struct anv_cmd_buffer *cmd_buffer)
    /* Re-emit state base addresses so we get the new surface state base
     * address before we start emitting binding tables etc.
     */
-   anv_batch_emit(&cmd_buffer->batch, GEN8_PIPE_CONTROL,
-                  .CommandStreamerStallEnable = true,
-                  .RenderTargetCacheFlushEnable = true);
    anv_cmd_buffer_emit_state_base_address(cmd_buffer);
 
-   /* It seems like just chainging the state base addresses isn't enough.
-    * If we don't do another PIPE_CONTROL afterwards to invalidate the
-    * texture cache, we still don't always get the right results.  I have
-    * no idea if this is actually what we are supposed to do, but it seems
-    * to work.
-    *
-    * FIXME: We should look into this more.  Maybe there is something more
-    * specific we're supposed to be doing.
+   /* It seems like just changing the state base addresses isn't enough.
+    * Invalidating the cache seems to be enough to cause things to
+    * propagate.  However, I'm not 100% sure what we're supposed to do.
     */
    anv_batch_emit(&cmd_buffer->batch, GEN8_PIPE_CONTROL,
                   .TextureCacheInvalidationEnable = true);