diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 19cb294c03c..d28852d232f 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -6470,6 +6470,20 @@ genX(flush_pipeline_select)(struct anv_cmd_buffer *cmd_buffer, anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_CC_STATE_POINTERS), t); #endif +#if GFX_VERx10 == 120 + /* Undocumented workaround to force the re-emission of + * MEDIA_INTERFACE_DESCRIPTOR_LOAD when switching from 3D to Compute + * pipeline without rebinding a pipeline : + * vkCmdBindPipeline(COMPUTE, cs_pipeline); + * vkCmdDispatch(...); + * vkCmdBindPipeline(GRAPHICS, gfx_pipeline); + * vkCmdDraw(...); + * vkCmdDispatch(...); + */ + if (pipeline == _3D) + cmd_buffer->state.compute.pipeline_dirty = true; +#endif + #if GFX_VER >= 12 /* From Tigerlake PRM, Volume 2a, PIPELINE_SELECT: *