Module: Mesa Branch: main Commit: 4248d0b03ae255268c1f99844138f1d2c73a6617 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4248d0b03ae255268c1f99844138f1d2c73a6617
Author: Samuel Pitoiset <[email protected]> Date: Thu Nov 16 17:03:13 2023 +0100 radv,aco: declare PS epilog VGPR arguments for depth/stencil/samplemask Depth/stencil/samplemask inputs are first to match create_fs_jump_to_epilog(). Signed-off-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26413> --- src/amd/vulkan/radv_aco_shader_info.h | 3 +++ src/amd/vulkan/radv_shader_args.c | 8 ++++++++ src/amd/vulkan/radv_shader_args.h | 3 +++ 3 files changed, 14 insertions(+) diff --git a/src/amd/vulkan/radv_aco_shader_info.h b/src/amd/vulkan/radv_aco_shader_info.h index 19206d33b84..6f8f180ff82 100644 --- a/src/amd/vulkan/radv_aco_shader_info.h +++ b/src/amd/vulkan/radv_aco_shader_info.h @@ -118,6 +118,9 @@ radv_aco_convert_ps_epilog_key(struct aco_ps_epilog_info *aco_info, const struct ASSIGN_FIELD(alpha_to_coverage_via_mrtz); memcpy(aco_info->colors, radv_args->colors, sizeof(aco_info->colors)); + aco_info->depth = radv_args->depth; + aco_info->stencil = radv_args->stencil; + aco_info->samplemask = radv_args->sample_mask; aco_info->alpha_func = COMPARE_FUNC_ALWAYS; } diff --git a/src/amd/vulkan/radv_shader_args.c b/src/amd/vulkan/radv_shader_args.c index 0b57750cbc7..fbc8d076706 100644 --- a/src/amd/vulkan/radv_shader_args.c +++ b/src/amd/vulkan/radv_shader_args.c @@ -825,6 +825,14 @@ radv_declare_ps_epilog_args(const struct radv_device *device, const struct radv_ { radv_init_shader_args(device, MESA_SHADER_FRAGMENT, args); + /* Declare VGPR arguments for depth/stencil/sample exports. */ + if (key->export_depth) + ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_FLOAT, &args->depth); + if (key->export_stencil) + ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_FLOAT, &args->stencil); + if (key->export_sample_mask) + ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_FLOAT, &args->sample_mask); + /* Declare VGPR arguments for color exports. */ for (unsigned i = 0; i < MAX_RTS; i++) { unsigned col_format = (key->spi_shader_col_format >> (i * 4)) & 0xf; diff --git a/src/amd/vulkan/radv_shader_args.h b/src/amd/vulkan/radv_shader_args.h index 07c6acfad6e..08107d6b989 100644 --- a/src/amd/vulkan/radv_shader_args.h +++ b/src/amd/vulkan/radv_shader_args.h @@ -62,6 +62,9 @@ struct radv_shader_args { /* PS epilogs */ struct ac_arg colors[MAX_RTS]; + struct ac_arg depth; + struct ac_arg stencil; + struct ac_arg sample_mask; /* TCS */ /* # [0:5] = the number of patch control points
