From 4830aec8ad18cdfe8bf40da753eadf7974c708ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Tue, 24 Jun 2025 13:16:47 -0700 Subject: [PATCH] anv: Reduce compiled code for Wa_16018063123 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wa_16018063123 is not a workaround that depends on stepping, so we can use the INTEL_WA_16018063123_GFX_VER macro to reduce code generate for non affected platforms. Reviewed-by: Nanley Chery Signed-off-by: José Roberto de Souza Part-of: --- src/intel/vulkan/genX_cmd_buffer.c | 19 ++++++++----------- src/intel/vulkan/genX_query.c | 2 +- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 640d54a5a33..e50e3429080 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -1883,7 +1883,7 @@ genX(cmd_buffer_apply_pipe_flushes)(struct anv_cmd_buffer *cmd_buffer) if (bits & ANV_PIPE_AUX_TABLE_INVALIDATE_BIT) { if (anv_cmd_buffer_is_video_queue(cmd_buffer) || GFX_VERx10 == 125) { /* Wa_16018063123 - emit fast color dummy blit before MI_FLUSH_DW. */ - if (intel_needs_workaround(cmd_buffer->device->info, 16018063123) && + if (INTEL_WA_16018063123_GFX_VER && anv_cmd_buffer_is_blitter_queue(cmd_buffer)) genX(batch_emit_fast_color_dummy_blit)(&cmd_buffer->batch, cmd_buffer->device); @@ -4257,7 +4257,7 @@ cmd_buffer_barrier_blitter(struct anv_cmd_buffer *cmd_buffer, if (flush_ccs || flush_llc) { /* Wa_16018063123 - emit fast color dummy blit before MI_FLUSH_DW. */ - if (intel_needs_workaround(cmd_buffer->device->info, 16018063123)) { + if (INTEL_WA_16018063123_GFX_VER) { genX(batch_emit_fast_color_dummy_blit)(&cmd_buffer->batch, cmd_buffer->device); } @@ -6332,8 +6332,8 @@ void genX(cmd_emit_timestamp)(struct anv_batch *batch, if ((batch->engine_class == INTEL_ENGINE_CLASS_COPY) || (batch->engine_class == INTEL_ENGINE_CLASS_VIDEO)) { /* Wa_16018063123 - emit fast color dummy blit before MI_FLUSH_DW. */ - if (intel_needs_workaround(device->info, 16018063123) && - (batch->engine_class == INTEL_ENGINE_CLASS_COPY)) + if (INTEL_WA_16018063123_GFX_VER && + batch->engine_class == INTEL_ENGINE_CLASS_COPY) genX(batch_emit_fast_color_dummy_blit)(batch, device); anv_batch_emit(batch, GENX(MI_FLUSH_DW), fd) { fd.PostSyncOperation = WriteTimestamp; @@ -6476,15 +6476,10 @@ ALWAYS_INLINE void genX(batch_emit_fast_color_dummy_blit)(struct anv_batch *batch, struct anv_device *device) { -#if GFX_VERx10 >= 125 +#if INTEL_WA_16018063123_GFX_VER anv_batch_emit(batch, GENX(XY_FAST_COLOR_BLT), blt) { blt.DestinationBaseAddress = device->workaround_address; -#if GFX_VERx10 >= 200 - blt.DestinationMOCSindex = MOCS_GET_INDEX(device->isl_dev.mocs.blitter_dst); - blt.DestinationEncryptEn = MOCS_GET_ENCRYPT_EN(device->isl_dev.mocs.blitter_dst); -#else blt.DestinationMOCS = device->isl_dev.mocs.blitter_dst; -#endif blt.DestinationPitch = 63; blt.DestinationX2 = 1; blt.DestinationY2 = 4; @@ -6494,6 +6489,8 @@ genX(batch_emit_fast_color_dummy_blit)(struct anv_batch *batch, blt.DestinationSurfaceQPitch = 4; blt.DestinationTiling = XY_TILE_LINEAR; } +#else + unreachable("Not implemented"); #endif } @@ -6529,7 +6526,7 @@ genX(cmd_buffer_begin_companion_rcs_syncpoint)( genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer); } else if (anv_cmd_buffer_is_blitter_queue(cmd_buffer)) { /* Wa_16018063123 - emit fast color dummy blit before MI_FLUSH_DW. */ - if (intel_needs_workaround(cmd_buffer->device->info, 16018063123)) { + if (INTEL_WA_16018063123_GFX_VER) { genX(batch_emit_fast_color_dummy_blit)(&cmd_buffer->batch, cmd_buffer->device); } diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c index d5518a5cb4e..4d9a1f9f77e 100644 --- a/src/intel/vulkan/genX_query.c +++ b/src/intel/vulkan/genX_query.c @@ -1586,7 +1586,7 @@ void genX(CmdWriteTimestamp2)( if (anv_cmd_buffer_is_blitter_queue(cmd_buffer) || anv_cmd_buffer_is_video_queue(cmd_buffer)) { /* Wa_16018063123 - emit fast color dummy blit before MI_FLUSH_DW. */ - if (intel_needs_workaround(cmd_buffer->device->info, 16018063123) && + if (INTEL_WA_16018063123_GFX_VER && anv_cmd_buffer_is_blitter_queue(cmd_buffer)) { genX(batch_emit_fast_color_dummy_blit)(&cmd_buffer->batch, cmd_buffer->device);