From 7a55a930f6a1441f5779cee1e8c264db9a74b0bb Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Sun, 12 May 2024 16:28:05 +0300 Subject: [PATCH] anv: reuse common pipeline state for compute push allocations Signed-off-by: Lionel Landwerlin Reviewed-by: Ivan Briano Part-of: --- src/intel/vulkan/anv_private.h | 2 -- src/intel/vulkan/genX_cmd_compute.c | 18 +++++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 95c12c4fde6..258202a7358 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -3898,8 +3898,6 @@ struct anv_cmd_compute_state { bool pipeline_dirty; - struct anv_state push_data; - struct anv_address num_workgroups; uint32_t scratch_size; diff --git a/src/intel/vulkan/genX_cmd_compute.c b/src/intel/vulkan/genX_cmd_compute.c index 6162c724b70..a4762e585aa 100644 --- a/src/intel/vulkan/genX_cmd_compute.c +++ b/src/intel/vulkan/genX_cmd_compute.c @@ -179,18 +179,18 @@ genX(cmd_buffer_flush_compute_state)(struct anv_cmd_buffer *cmd_buffer) if (cmd_buffer->state.push_constants_dirty & VK_SHADER_STAGE_COMPUTE_BIT) { - if (comp_state->push_data.alloc_size == 0 || + if (comp_state->base.push_constants_state.alloc_size == 0 || comp_state->base.push_constants_data_dirty) { - comp_state->push_data = + comp_state->base.push_constants_state = anv_cmd_buffer_cs_push_constants(cmd_buffer); comp_state->base.push_constants_data_dirty = false; } #if GFX_VERx10 < 125 - if (comp_state->push_data.alloc_size) { + if (comp_state->base.push_constants_state.alloc_size) { anv_batch_emit(&cmd_buffer->batch, GENX(MEDIA_CURBE_LOAD), curbe) { - curbe.CURBETotalDataLength = comp_state->push_data.alloc_size; - curbe.CURBEDataStartAddress = comp_state->push_data.offset; + curbe.CURBETotalDataLength = comp_state->base.push_constants_state.alloc_size; + curbe.CURBEDataStartAddress = comp_state->base.push_constants_state.offset; } } #endif @@ -310,8 +310,8 @@ emit_indirect_compute_walker(struct anv_cmd_buffer *cmd_buffer, struct GENX(COMPUTE_WALKER_BODY) body = { .SIMDSize = dispatch_size, .MessageSIMD = dispatch_size, - .IndirectDataStartAddress = comp_state->push_data.offset, - .IndirectDataLength = comp_state->push_data.alloc_size, + .IndirectDataStartAddress = comp_state->base.push_constants_state.offset, + .IndirectDataLength = comp_state->base.push_constants_state.alloc_size, .GenerateLocalID = prog_data->generate_local_id != 0, .EmitLocal = prog_data->generate_local_id, .WalkOrder = prog_data->walk_order, @@ -364,8 +364,8 @@ emit_compute_walker(struct anv_cmd_buffer *cmd_buffer, .PredicateEnable = predicate, .SIMDSize = dispatch.simd_size / 16, .MessageSIMD = dispatch.simd_size / 16, - .IndirectDataStartAddress = comp_state->push_data.offset, - .IndirectDataLength = comp_state->push_data.alloc_size, + .IndirectDataStartAddress = comp_state->base.push_constants_state.offset, + .IndirectDataLength = comp_state->base.push_constants_state.alloc_size, #if GFX_VERx10 == 125 .SystolicModeEnable = prog_data->uses_systolic, #endif