Mesa (main): aco: Fix multiview view index for mesh shaders.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Feb 25 06:51:17 UTC 2022


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

Author: Timur Kristóf <timur.kristof at gmail.com>
Date:   Fri Jan 21 19:23:15 2022 +0100

aco: Fix multiview view index for mesh shaders.

Signed-off-by: Timur Kristóf <timur.kristof at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15034>

---

 src/amd/compiler/aco_instruction_selection.cpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index c3cf3db160e..3f5eb97d7f0 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -10747,8 +10747,8 @@ create_vs_exports(isel_context* ctx)
             get_arg(ctx, ctx->args->ac.vs_prim_id);
    }
 
-   if (ctx->options->key.has_multiview_view_index) {
-      assert(!outinfo->writes_layer_per_primitive);
+   if (ctx->options->key.has_multiview_view_index &&
+       !outinfo->writes_layer_per_primitive) {
       ctx->outputs.mask[VARYING_SLOT_LAYER] |= 0x1;
       ctx->outputs.temps[VARYING_SLOT_LAYER * 4u] =
          as_vgpr(ctx, get_arg(ctx, ctx->args->ac.view_index));
@@ -10802,6 +10802,13 @@ create_primitive_exports(isel_context *ctx, Temp prim_ch1)
 
    Builder bld(ctx->program, ctx->block);
 
+   if (ctx->options->key.has_multiview_view_index &&
+       outinfo->writes_layer_per_primitive) {
+      ctx->outputs.mask[VARYING_SLOT_LAYER] |= 0x1;
+      ctx->outputs.temps[VARYING_SLOT_LAYER * 4u] =
+         as_vgpr(ctx, get_arg(ctx, ctx->args->ac.view_index));
+   }
+
    /* Use zeroes if the shader doesn't write these but they are needed by eg. PS. */
    if (outinfo->writes_layer_per_primitive && !ctx->outputs.mask[VARYING_SLOT_LAYER])
       ctx->outputs.temps[VARYING_SLOT_LAYER * 4u] = bld.copy(bld.def(v1), Operand::c32(0));



More information about the mesa-commit mailing list