From 1fb005b487fbff39bc98c08fa3091679f69ffe84 Mon Sep 17 00:00:00 2001 From: Natalie Vock Date: Thu, 15 Jan 2026 16:11:52 +0100 Subject: [PATCH] radv/nir: Add and use radv_nir_return_param_from_type helper Part-of: --- src/amd/vulkan/nir/radv_nir_rt_stage_common.c | 11 +++++++++++ src/amd/vulkan/nir/radv_nir_rt_stage_common.h | 2 ++ src/amd/vulkan/nir/radv_nir_rt_stage_functions.c | 8 ++------ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/amd/vulkan/nir/radv_nir_rt_stage_common.c b/src/amd/vulkan/nir/radv_nir_rt_stage_common.c index 5ce95852d08..f6938eacb95 100644 --- a/src/amd/vulkan/nir/radv_nir_rt_stage_common.c +++ b/src/amd/vulkan/nir/radv_nir_rt_stage_common.c @@ -240,3 +240,14 @@ radv_nir_param_from_type(nir_parameter *param, const glsl_type *type, bool unifo param->is_uniform = uniform; param->driver_attributes = driver_attribs; } + +void +radv_nir_return_param_from_type(nir_parameter *param, const glsl_type *type, bool uniform, unsigned driver_attribs) +{ + param->num_components = 1; + param->bit_size = 32; + param->type = type; + param->is_uniform = uniform; + param->driver_attributes = driver_attribs; + param->is_return = true; +} diff --git a/src/amd/vulkan/nir/radv_nir_rt_stage_common.h b/src/amd/vulkan/nir/radv_nir_rt_stage_common.h index fb46fa90321..e7732ba58b1 100644 --- a/src/amd/vulkan/nir/radv_nir_rt_stage_common.h +++ b/src/amd/vulkan/nir/radv_nir_rt_stage_common.h @@ -101,6 +101,8 @@ bool radv_nir_lower_rt_storage(nir_shader *shader, nir_variable **hit_attribs, n nir_variable **payload_out, uint32_t workgroup_size); void radv_nir_param_from_type(nir_parameter *param, const glsl_type *type, bool uniform, unsigned driver_attribs); +void radv_nir_return_param_from_type(nir_parameter *param, const glsl_type *type, bool uniform, + unsigned driver_attribs); /* * diff --git a/src/amd/vulkan/nir/radv_nir_rt_stage_functions.c b/src/amd/vulkan/nir/radv_nir_rt_stage_functions.c index 454a7121cff..8b8ab7fb45e 100644 --- a/src/amd/vulkan/nir/radv_nir_rt_stage_functions.c +++ b/src/amd/vulkan/nir/radv_nir_rt_stage_functions.c @@ -118,12 +118,8 @@ radv_nir_init_rt_function_params(nir_function *function, mesa_shader_stage stage } if (payload_base != -1u) { - for (unsigned i = 0; i < DIV_ROUND_UP(payload_size, 4); ++i) { - function->params[payload_base + i].num_components = 1; - function->params[payload_base + i].bit_size = 32; - function->params[payload_base + i].is_return = true; - function->params[payload_base + i].type = glsl_uint_type(); - } + for (unsigned i = 0; i < DIV_ROUND_UP(payload_size, 4); ++i) + radv_nir_return_param_from_type(function->params + payload_base + i, glsl_uint_type(), false, 0); } /* Entrypoints can't have parameters. Consider RT stages as callable functions */