Mesa (master): anv: Re-emit all compute state on pipeline switch
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sat Dec 7 04:04:08 UTC 2019
Module: Mesa
Branch: master
Commit: 0f60aa4037dfb6aa86d5b9524fe649f13b2b8825
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f60aa4037dfb6aa86d5b9524fe649f13b2b8825
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Fri Dec 6 18:26:59 2019 -0600
anv: Re-emit all compute state on pipeline switch
It's a very odd case to hit in the real world. However, there are some
CTS tests which switch back and forth between dispatch and clear without
changing the pipeline.
Fixes: bc612536eb2f "anv: Emit a dummy MEDIA_VFE_STATE before switching..."
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
---
src/intel/vulkan/genX_cmd_buffer.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index c764011eb5f..50c9d9ed12a 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -4073,6 +4073,13 @@ genX(flush_pipeline_select)(struct anv_cmd_buffer *cmd_buffer,
vfe.NumberofURBEntries = 2;
vfe.URBEntryAllocationSize = 2;
}
+
+ /* We just emitted a dummy MEDIA_VFE_STATE so now that packet is
+ * invalid. Set the compute pipeline to dirty to force a re-emit of the
+ * pipeline in case we get back-to-back dispatch calls with the same
+ * pipeline and a PIPELINE_SELECT in between.
+ */
+ cmd_buffer->state.compute.pipeline_dirty = true;
}
#endif
More information about the mesa-commit
mailing list