anv: Rename and share get_scratch_surf() with other files

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 <lionel.g.landwerlin@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40832>
This commit is contained in:
José Roberto de Souza 2026-04-02 11:13:52 -07:00 committed by Marge Bot
parent 5f1c22037b
commit fd420e80e2
3 changed files with 40 additions and 34 deletions

View file

@ -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)
{

View file

@ -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,

View file

@ -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);