From fd420e80e2b3aea38e287edd8629580998261464 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Thu, 2 Apr 2026 11:13:52 -0700 Subject: [PATCH] anv: Rename and share get_scratch_surf() with other files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We will need to call get_scratch_surf() from other files, so here removing the static and adding it to anv_private.h. No changes in behavior expected here. Reviewed-by: Lionel Landwerlin Signed-off-by: José Roberto de Souza Part-of: --- src/intel/vulkan/anv_allocator.c | 21 ++++++++++++++ src/intel/vulkan/anv_private.h | 5 ++++ src/intel/vulkan/genX_shader.c | 48 ++++++++++---------------------- 3 files changed, 40 insertions(+), 34 deletions(-) diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index 837f5bcf2a7..5ece4805f11 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -1483,6 +1483,27 @@ anv_scratch_pool_get_surf(struct anv_device *device, } } +uint32_t +anv_shader_get_scratch_surf(struct anv_batch *batch, + struct anv_device *device, + struct anv_shader *shader, + bool protected) +{ + if (shader->prog_data->total_scratch == 0) + return 0; + + struct anv_scratch_pool *pool = protected ? + &device->protected_scratch_pool : &device->scratch_pool; + struct anv_bo *bo = + anv_scratch_pool_alloc(device, pool, shader->vk.stage, + shader->prog_data->total_scratch); + anv_reloc_list_add_bo(batch->relocs, bo); + uint32_t ret = anv_scratch_pool_get_surf( + device, pool, shader->prog_data->total_scratch); + + return ret >> ANV_SCRATCH_SPACE_SHIFT; +} + VkResult anv_bo_cache_init(struct anv_bo_cache *cache, struct anv_device *device) { diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 9cf9fcfd02b..9d4b202c598 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1423,6 +1423,11 @@ struct anv_shader { uint32_t *cmd_data; }; +uint32_t anv_shader_get_scratch_surf(struct anv_batch *batch, + struct anv_device *device, + struct anv_shader *shader, + bool protected); + extern struct vk_device_shader_ops anv_device_shader_ops; void anv_write_rt_shader_group(struct vk_device *vk_device, diff --git a/src/intel/vulkan/genX_shader.c b/src/intel/vulkan/genX_shader.c index 0aeba0985ce..e341af1b3d3 100644 --- a/src/intel/vulkan/genX_shader.c +++ b/src/intel/vulkan/genX_shader.c @@ -76,26 +76,6 @@ get_scratch_space(const struct anv_shader *shader) return ffs(shader->prog_data->total_scratch / 2048); } -static UNUSED uint32_t -get_scratch_surf(struct anv_batch *batch, - struct anv_device *device, - struct anv_shader *shader, - bool protected) -{ - if (shader->prog_data->total_scratch == 0) - return 0; - - struct anv_scratch_pool *pool = protected ? - &device->protected_scratch_pool : &device->scratch_pool; - struct anv_bo *bo = - anv_scratch_pool_alloc(device, pool, shader->vk.stage, - shader->prog_data->total_scratch); - anv_reloc_list_add_bo(batch->relocs, bo); - return anv_scratch_pool_get_surf( - device, pool, shader->prog_data->total_scratch) >> - ANV_SCRATCH_SPACE_SHIFT; -} - /* Streamout (can be used by several shaders) */ static void emit_3dstate_streamout(struct anv_batch *batch, @@ -601,7 +581,7 @@ emit_vs_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, vs.vs, vs_dwords, GENX(3DSTATE_VS), vs) { #if GFX_VERx10 >= 125 - vs.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, false); + vs.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, false); #else vs.PerThreadScratchSpace = get_scratch_space(shader); vs.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -611,7 +591,7 @@ emit_vs_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, vs.vs_protected, vs_dwords, GENX(3DSTATE_VS), vs) { #if GFX_VERx10 >= 125 - vs.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, true); + vs.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, true); #else vs.PerThreadScratchSpace = get_scratch_space(shader); vs.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -679,7 +659,7 @@ emit_hs_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, hs.hs, hs_dwords, GENX(3DSTATE_HS), hs) { #if GFX_VERx10 >= 125 - hs.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, false); + hs.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, false); #else hs.PerThreadScratchSpace = get_scratch_space(shader); hs.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -689,7 +669,7 @@ emit_hs_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, hs.hs_protected, hs_dwords, GENX(3DSTATE_HS), hs) { #if GFX_VERx10 >= 125 - hs.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, false); + hs.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, false); #else hs.PerThreadScratchSpace = get_scratch_space(shader); hs.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -773,7 +753,7 @@ emit_ds_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, ds.ds, ds_dwords, GENX(3DSTATE_DS), ds) { #if GFX_VERx10 >= 125 - ds.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, false); + ds.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, false); #else ds.PerThreadScratchSpace = get_scratch_space(shader); ds.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -783,7 +763,7 @@ emit_ds_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, ds.ds_protected, ds_dwords, GENX(3DSTATE_DS), ds) { #if GFX_VERx10 >= 125 - ds.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, true); + ds.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, true); #else ds.PerThreadScratchSpace = get_scratch_space(shader); ds.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -847,7 +827,7 @@ emit_gs_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, gs.gs, gs_dwords, GENX(3DSTATE_GS), gs) { #if GFX_VERx10 >= 125 - gs.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, false); + gs.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, false); #else gs.PerThreadScratchSpace = get_scratch_space(shader); gs.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -857,7 +837,7 @@ emit_gs_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, gs.gs_protected, gs_dwords, GENX(3DSTATE_GS), gs) { #if GFX_VERx10 >= 125 - gs.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, true); + gs.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, true); #else gs.PerThreadScratchSpace = get_scratch_space(shader); gs.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -887,12 +867,12 @@ emit_task_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, ts.control, task_control_dwords, GENX(3DSTATE_TASK_CONTROL), tc) { - tc.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, false); + tc.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, false); } if (device_needs_protected(device)) { anv_shader_emit_merge(batch, shader, ts.control_protected, task_control_dwords, GENX(3DSTATE_TASK_CONTROL), tc) { - tc.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, true); + tc.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, true); } } @@ -963,12 +943,12 @@ emit_mesh_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, ms.control, mesh_control_dwords, GENX(3DSTATE_MESH_CONTROL), mc) { - mc.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, false); + mc.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, false); } if (device_needs_protected(device)) { anv_shader_emit_merge(batch, shader, ms.control_protected, mesh_control_dwords, GENX(3DSTATE_MESH_CONTROL), mc) { - mc.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, true); + mc.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, true); } } @@ -1087,7 +1067,7 @@ emit_ps_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, ps.ps, ps_dwords, GENX(3DSTATE_PS), ps) { #if GFX_VERx10 >= 125 - ps.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, false); + ps.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, false); #else ps.PerThreadScratchSpace = get_scratch_space(shader); ps.ScratchSpaceBasePointer = get_scratch_address(device, shader); @@ -1097,7 +1077,7 @@ emit_ps_shader(struct anv_batch *batch, anv_shader_emit_merge(batch, shader, ps.ps_protected, ps_dwords, GENX(3DSTATE_PS), ps) { #if GFX_VERx10 >= 125 - ps.ScratchSpaceBuffer = get_scratch_surf(batch, device, shader, true); + ps.ScratchSpaceBuffer = anv_shader_get_scratch_surf(batch, device, shader, true); #else ps.PerThreadScratchSpace = get_scratch_space(shader); ps.ScratchSpaceBasePointer = get_scratch_address(device, shader);