<div dir="auto">R-b</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 11, 2019, 5:02 PM Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This fixes dEQP-VK.multiview.*geometry*.<br>
<br>
Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com" target="_blank" rel="noreferrer">samuel.pitoiset@gmail.com</a>><br>
---<br>
 src/amd/vulkan/radv_nir_to_llvm.c | 16 +++++++++++++++-<br>
 1 file changed, 15 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c<br>
index 11498bc27aa..7da061f7f33 100644<br>
--- a/src/amd/vulkan/radv_nir_to_llvm.c<br>
+++ b/src/amd/vulkan/radv_nir_to_llvm.c<br>
@@ -3583,11 +3583,12 @@ static void gfx10_ngg_gs_emit_epilogue_2(struct radv_shader_context *ctx)<br>
        ac_build_ifcc(&ctx->ac, tmp, 5145);<br>
        {<br>
                struct radv_vs_output_info *outinfo = &ctx->shader_info->vs.outinfo;<br>
+               bool export_view_index = ctx->options->key.has_multiview_view_index;<br>
                struct radv_shader_output_values *outputs;<br>
                unsigned noutput = 0;<br>
<br>
                /* Allocate a temporary array for the output values. */<br>
-               unsigned num_outputs = util_bitcount64(ctx->output_mask);<br>
+               unsigned num_outputs = util_bitcount64(ctx->output_mask) + export_view_index;<br>
                outputs = calloc(num_outputs, sizeof(outputs[0]));<br>
<br>
                memset(outinfo->vs_output_param_offset, AC_EXP_PARAM_UNDEFINED,<br>
@@ -3642,6 +3643,19 @@ static void gfx10_ngg_gs_emit_epilogue_2(struct radv_shader_context *ctx)<br>
                        noutput++;<br>
                }<br>
<br>
+               /* Export ViewIndex. */<br>
+               if (export_view_index) {<br>
+                       outinfo->writes_layer = true;<br>
+<br>
+                       outputs[noutput].slot_name = VARYING_SLOT_LAYER;<br>
+                       outputs[noutput].slot_index = 0;<br>
+                       outputs[noutput].usage_mask = 0x1;<br>
+                       outputs[noutput].values[0] = ac_to_float(&ctx->ac, ctx->abi.view_index);<br>
+                       for (unsigned j = 1; j < 4; j++)<br>
+                               outputs[noutput].values[j] = ctx->ac.f32_0;<br>
+                       noutput++;<br>
+               }<br>
+<br>
                radv_llvm_export_vs(ctx, outputs, noutput, outinfo, false);<br>
                FREE(outputs);<br>
        }<br>
-- <br>
2.22.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank" rel="noreferrer">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></blockquote></div>