diff --git a/.pick_status.json b/.pick_status.json index f8e5e2cf9d0..9d4daf0c784 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -24,7 +24,7 @@ "description": "iris: add plumbing/support for L3 fabric flush", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/iris/iris_context.h b/src/gallium/drivers/iris/iris_context.h index bb1d023afad..9e8af30d679 100644 --- a/src/gallium/drivers/iris/iris_context.h +++ b/src/gallium/drivers/iris/iris_context.h @@ -499,6 +499,7 @@ enum pipe_control_flags PIPE_CONTROL_L3_READ_ONLY_CACHE_INVALIDATE = (1 << 28), PIPE_CONTROL_UNTYPED_DATAPORT_CACHE_FLUSH = (1 << 29), PIPE_CONTROL_CCS_CACHE_FLUSH = (1 << 30), + PIPE_CONTROL_L3_FABRIC_FLUSH = (1 << 31), }; #define PIPE_CONTROL_CACHE_FLUSH_BITS \ diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 9e8f0bcdbad..252e4181ed8 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -9988,7 +9988,7 @@ iris_emit_raw_pipe_control(struct iris_batch *batch, if (INTEL_DEBUG(DEBUG_PIPE_CONTROL)) { fprintf(stderr, - " PC [%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%"PRIx64"]: %s\n", + " PC [%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%"PRIx64"]: %s\n", (flags & PIPE_CONTROL_FLUSH_ENABLE) ? "PipeCon " : "", (flags & PIPE_CONTROL_CS_STALL) ? "CS " : "", (flags & PIPE_CONTROL_STALL_AT_SCOREBOARD) ? "Scoreboard " : "", @@ -9999,6 +9999,7 @@ iris_emit_raw_pipe_control(struct iris_batch *batch, (flags & PIPE_CONTROL_DATA_CACHE_FLUSH) ? "DC " : "", (flags & PIPE_CONTROL_DEPTH_CACHE_FLUSH) ? "ZFlush " : "", (flags & PIPE_CONTROL_TILE_CACHE_FLUSH) ? "Tile " : "", + (flags & PIPE_CONTROL_L3_FABRIC_FLUSH) ? "L3Fabric " : "", (flags & PIPE_CONTROL_CCS_CACHE_FLUSH) ? "CCS " : "", (flags & PIPE_CONTROL_DEPTH_STALL) ? "ZStall " : "", (flags & PIPE_CONTROL_STATE_CACHE_INVALIDATE) ? "State " : "", @@ -10033,6 +10034,7 @@ iris_emit_raw_pipe_control(struct iris_batch *batch, #endif #if GFX_VER == 12 pc.TileCacheFlushEnable = flags & PIPE_CONTROL_TILE_CACHE_FLUSH; + pc.L3FabricFlush = flags & PIPE_CONTROL_L3_FABRIC_FLUSH; #endif #if GFX_VER > 11 pc.HDCPipelineFlushEnable = flags & PIPE_CONTROL_FLUSH_HDC; diff --git a/src/gallium/drivers/iris/iris_utrace.c b/src/gallium/drivers/iris/iris_utrace.c index 907c45c937e..52b69d8c6ef 100644 --- a/src/gallium/drivers/iris/iris_utrace.c +++ b/src/gallium/drivers/iris/iris_utrace.c @@ -236,6 +236,7 @@ iris_utrace_pipe_flush_bit_to_ds_stall_flag(uint32_t flags) { .iris = PIPE_CONTROL_DEPTH_CACHE_FLUSH, .ds = INTEL_DS_DEPTH_CACHE_FLUSH_BIT, }, { .iris = PIPE_CONTROL_DATA_CACHE_FLUSH, .ds = INTEL_DS_DATA_CACHE_FLUSH_BIT, }, { .iris = PIPE_CONTROL_TILE_CACHE_FLUSH, .ds = INTEL_DS_TILE_CACHE_FLUSH_BIT, }, + { .iris = PIPE_CONTROL_L3_FABRIC_FLUSH, .ds = INTEL_DS_L3_FABRIC_FLUSH_BIT, }, { .iris = PIPE_CONTROL_RENDER_TARGET_FLUSH, .ds = INTEL_DS_RENDER_TARGET_CACHE_FLUSH_BIT, }, { .iris = PIPE_CONTROL_STATE_CACHE_INVALIDATE, .ds = INTEL_DS_STATE_CACHE_INVALIDATE_BIT, }, { .iris = PIPE_CONTROL_CONST_CACHE_INVALIDATE, .ds = INTEL_DS_CONST_CACHE_INVALIDATE_BIT, },