Mesa (main): radv: validate shaders after linking passes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu May 19 14:36:43 UTC 2022


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

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Wed Aug 18 14:07:42 2021 +0100

radv: validate shaders after linking passes

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5244
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12448>

---

 src/amd/vulkan/radv_pipeline.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 71760293c09..e8db770eede 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -2829,6 +2829,8 @@ radv_link_shaders(struct radv_pipeline *pipeline,
 
       for (int i = 1; i < shader_count; ++i) {
          nir_lower_io_arrays_to_elements(ordered_shaders[i], ordered_shaders[i - 1]);
+         nir_validate_shader(ordered_shaders[i], "after nir_lower_io_arrays_to_elements");
+         nir_validate_shader(ordered_shaders[i - 1], "after nir_lower_io_arrays_to_elements");
       }
 
       for (int i = 0; i < shader_count; ++i) {
@@ -2961,6 +2963,9 @@ radv_link_shaders(struct radv_pipeline *pipeline,
 
    for (int i = 1; !optimize_conservatively && (i < shader_count); ++i) {
       if (nir_link_opt_varyings(ordered_shaders[i], ordered_shaders[i - 1])) {
+         nir_validate_shader(ordered_shaders[i], "after nir_link_opt_varyings");
+         nir_validate_shader(ordered_shaders[i - 1], "after nir_link_opt_varyings");
+
          NIR_PASS(_, ordered_shaders[i - 1], nir_opt_constant_folding);
          NIR_PASS(_, ordered_shaders[i - 1], nir_opt_algebraic);
          NIR_PASS(_, ordered_shaders[i - 1], nir_opt_dce);
@@ -2972,6 +2977,8 @@ radv_link_shaders(struct radv_pipeline *pipeline,
       bool progress = nir_remove_unused_varyings(ordered_shaders[i], ordered_shaders[i - 1]);
 
       nir_compact_varyings(ordered_shaders[i], ordered_shaders[i - 1], true);
+      nir_validate_shader(ordered_shaders[i], "after nir_compact_varyings");
+      nir_validate_shader(ordered_shaders[i - 1], "after nir_compact_varyings");
       if (ordered_shaders[i]->info.stage == MESA_SHADER_MESH) {
          /* nir_compact_varyings can change the location of per-vertex and per-primitive outputs */
          nir_shader_gather_info(ordered_shaders[i], nir_shader_get_entrypoint(ordered_shaders[i]));



More information about the mesa-commit mailing list