From 49c7d28b0bdb4a8a8a93a3dfd2cb5417c5a3ff83 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 31 Aug 2022 17:15:27 +0200 Subject: [PATCH] radv: gather MRTs that are written by the fragment shader This will be used to filter color attachments without exports. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_shader.h | 1 + src/amd/vulkan/radv_shader_info.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 16d3dab1db3..3f383edfb66 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -329,6 +329,7 @@ struct radv_shader_info { bool allow_flat_shading; bool has_epilog; unsigned spi_ps_input; + unsigned colors_written; } ps; struct { bool uses_grid_size; diff --git a/src/amd/vulkan/radv_shader_info.c b/src/amd/vulkan/radv_shader_info.c index d61d4399e6c..9f76609f8ff 100644 --- a/src/amd/vulkan/radv_shader_info.c +++ b/src/amd/vulkan/radv_shader_info.c @@ -77,6 +77,10 @@ gather_intrinsic_store_output_info(const nir_shader *nir, const nir_intrinsic_in case MESA_SHADER_GEOMETRY: output_usage_mask = info->gs.output_usage_mask; break; + case MESA_SHADER_FRAGMENT: + if (idx >= FRAG_RESULT_DATA0) + info->ps.colors_written |= 0xf << (4 * (idx - FRAG_RESULT_DATA0)); + break; default: break; }