Module: Mesa
Branch: main
Commit: 49c7d28b0bdb4a8a8a93a3dfd2cb5417c5a3ff83
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=49c7d28b0bdb4a8a8a93a3dfd2cb5417c5a3ff83

Author: Samuel Pitoiset <[email protected]>
Date:   Wed Aug 31 17:15:27 2022 +0200

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 <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5786>

---

 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;
    }

Reply via email to