diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h index e64976f7a29..0ca326eef31 100644 --- a/src/intel/blorp/blorp_genX_exec.h +++ b/src/intel/blorp/blorp_genX_exec.h @@ -1625,7 +1625,7 @@ blorp_setup_binding_table(struct blorp_batch *batch, } } -#if GFX_VER >= 7 +#if GFX_VER >= 7 && GFX_VER < 12 if (has_indirect_clear_color) { /* Updating a surface state object may require that the state cache be * invalidated. From the SKL PRM, Shared Functions -> State -> State @@ -1635,6 +1635,12 @@ blorp_setup_binding_table(struct blorp_batch *batch, * the Binding Table Pointer (BTP) and Binding Table Index (BTI) is * modified [...], the L1 state cache must be invalidated to ensure * the new surface or sampler state is fetched from system memory. + * + * XXX - Investigate why exactly this invalidation is necessary to + * avoid Vulkan regressions on ICL. It's possible that the + * MI_ATOMIC used to update the clear color isn't correctly + * ordered with the pre-existing invalidation in + * blorp_update_clear_color(). */ blorp_emit(batch, GENX(PIPE_CONTROL), pipe) { pipe.StateCacheInvalidationEnable = true;