vk/device: Only flush the texture cache when setting state base address
After further examination, it appears that the other flushes and stalls weren't actually needed.
This commit is contained in:
@@ -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
|
/* Re-emit state base addresses so we get the new surface state base
|
||||||
* address before we start emitting binding tables etc.
|
* 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);
|
anv_cmd_buffer_emit_state_base_address(cmd_buffer);
|
||||||
|
|
||||||
/* It seems like just chainging the state base addresses isn't enough.
|
/* It seems like just changing the state base addresses isn't enough.
|
||||||
* If we don't do another PIPE_CONTROL afterwards to invalidate the
|
* Invalidating the cache seems to be enough to cause things to
|
||||||
* texture cache, we still don't always get the right results. I have
|
* propagate. However, I'm not 100% sure what we're supposed to do.
|
||||||
* 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.
|
|
||||||
*/
|
*/
|
||||||
anv_batch_emit(&cmd_buffer->batch, GEN8_PIPE_CONTROL,
|
anv_batch_emit(&cmd_buffer->batch, GEN8_PIPE_CONTROL,
|
||||||
.TextureCacheInvalidationEnable = true);
|
.TextureCacheInvalidationEnable = true);
|
||||||
|
Reference in New Issue
Block a user