summarylogtreecommitdiffstats
path: root/0001-anv-force-MEDIA_INTERFACE_DESCRIPTOR_LOAD-reemit-aft.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-anv-force-MEDIA_INTERFACE_DESCRIPTOR_LOAD-reemit-aft.patch')
-rw-r--r--0001-anv-force-MEDIA_INTERFACE_DESCRIPTOR_LOAD-reemit-aft.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/0001-anv-force-MEDIA_INTERFACE_DESCRIPTOR_LOAD-reemit-aft.patch b/0001-anv-force-MEDIA_INTERFACE_DESCRIPTOR_LOAD-reemit-aft.patch
new file mode 100644
index 000000000000..19c21a04115e
--- /dev/null
+++ b/0001-anv-force-MEDIA_INTERFACE_DESCRIPTOR_LOAD-reemit-aft.patch
@@ -0,0 +1,40 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
+Date: Sun, 12 Jun 2022 23:59:05 +0300
+Subject: [PATCH] anv: force MEDIA_INTERFACE_DESCRIPTOR_LOAD reemit after
+ 3D->GPGPU switch
+
+Seems to fix a hang in Age of Empire 4 where the HW is hung on a
+PIPE_CONTROL after a GPGPU_WALKER but no
+MEDIA_INTERFACE_DESCRIPTOR_LOAD was emitted since the switch from 3D
+to GPGPU.
+
+This would happen in the following case :
+
+ vkCmdBindPipeline(COMPUTE, cs_pipeline);
+ vkCmdDispatch(...);
+ vkCmdBindPipeline(GRAPHICS, gfx_pipeline);
+ vkCmdDraw(...);
+ vkCmdDispatch(...);
+
+Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
+---
+ src/intel/vulkan/genX_cmd_buffer.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
+index 1aa997f2ade2..2e9979c8f63e 100644
+--- a/src/intel/vulkan/genX_cmd_buffer.c
++++ b/src/intel/vulkan/genX_cmd_buffer.c
+@@ -5955,6 +5955,11 @@ genX(flush_pipeline_select)(struct anv_cmd_buffer *cmd_buffer,
+ }
+ #endif
+
++#if GFX_VERx10 == 120
++ if (pipeline == _3D)
++ cmd_buffer->state.compute.pipeline_dirty = true;
++#endif
++
+ /* From "BXML » GT » MI » vol1a GPU Overview » [Instruction]
+ * PIPELINE_SELECT [DevBWR+]":
+ *