diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index e00f55e1e9c..f32182fefe8 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -9764,10 +9764,12 @@ iris_emit_raw_pipe_control(struct iris_batch *batch, /* "GPGPU specific workarounds" (both post-sync and flush) ------------ */ if (IS_COMPUTE_PIPELINE(batch)) { - if ((GFX_VER == 9 || GFX_VER == 11) && - (flags & PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE)) { - /* Project: SKL, ICL / Argument: Tex Invalidate - * "Requires stall bit ([20] of DW) set for all GPGPU Workloads." + if (GFX_VER >= 9 && (flags & PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE)) { + /* SKL PRMs, Volume 7: 3D-Media-GPGPU, Programming Restrictions for + * PIPE_CONTROL, Flush Types: + * "Requires stall bit ([20] of DW) set for all GPGPU Workloads." + * For newer platforms this is documented in the PIPE_CONTROL + * instruction page. */ flags |= PIPE_CONTROL_CS_STALL; } diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 119b9e53126..1f2d4710d11 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -2516,6 +2516,16 @@ genX(batch_emit_pipe_control_write)(struct anv_batch *batch, }; } + /* SKL PRMs, Volume 7: 3D-Media-GPGPU, Programming Restrictions for + * PIPE_CONTROL, Flush Types: + * "Requires stall bit ([20] of DW) set for all GPGPU Workloads." + * For newer platforms this is documented in the PIPE_CONTROL instruction + * page. + */ + if (current_pipeline == GPGPU && + (bits & ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT)) + bits |= ANV_PIPE_CS_STALL_BIT; + #if INTEL_NEEDS_WA_1409600907 /* Wa_1409600907: "PIPE_CONTROL with Depth Stall Enable bit must * be set with any PIPE_CONTROL with Depth Flush Enable bit set.