Mesa (main): d3d12: Don't add a second dual-source output for Heaven

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Feb 10 21:00:55 UTC 2022


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

Author: Jesse Natalie <jenatali at microsoft.com>
Date:   Wed Feb  9 15:22:40 2022 -0800

d3d12: Don't add a second dual-source output for Heaven

Reviewed-by: Sil Vilerino <sivileri at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14965>

---

 src/gallium/drivers/d3d12/d3d12_compiler.cpp | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/d3d12/d3d12_compiler.cpp b/src/gallium/drivers/d3d12/d3d12_compiler.cpp
index 2975adc485f..f52ce424c86 100644
--- a/src/gallium/drivers/d3d12/d3d12_compiler.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_compiler.cpp
@@ -285,12 +285,17 @@ missing_dual_src_outputs(struct d3d12_context *ctx)
                   continue;
 
                nir_variable *var = nir_intrinsic_get_var(intr, 0);
-               if (var->data.mode != nir_var_shader_out ||
-                   (var->data.location != FRAG_RESULT_COLOR &&
-                    var->data.location != FRAG_RESULT_DATA0))
+               if (var->data.mode != nir_var_shader_out)
                   continue;
 
-               indices_seen |= 1u << var->data.index;
+               unsigned index = var->data.index;
+               if (var->data.location > FRAG_RESULT_DATA0)
+                  index = var->data.location - FRAG_RESULT_DATA0;
+               else if (var->data.location != FRAG_RESULT_COLOR &&
+                        var->data.location != FRAG_RESULT_DATA0)
+                  continue;
+
+               indices_seen |= 1u << index;
                if ((indices_seen & 3) == 3)
                   return 0;
             }



More information about the mesa-commit mailing list