From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin 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 --- 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 240630d84124..77822ec89404 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -5917,6 +5917,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+]": *