broadcom/compiler: implement nir_intrinsic_load_view_index
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 23 Jul 2021 07:38:02 +0000 (09:38 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 27 Jul 2021 07:31:31 +0000 (07:31 +0000)
This is used for multiview's gl_ViewIndex built-in.

Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12034>

src/broadcom/compiler/nir_to_vir.c
src/broadcom/compiler/v3d_compiler.h

index 2a4dac7..190d7c3 100644 (file)
@@ -3291,6 +3291,11 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr)
                 unreachable("Should have been lowered");
                 break;
 
+        case nir_intrinsic_load_view_index:
+                ntq_store_dest(c, &instr->dest, 0,
+                               vir_uniform(c, QUNIFORM_VIEW_INDEX, 0));
+                break;
+
         default:
                 fprintf(stderr, "Unknown intrinsic: ");
                 nir_print_instr(&instr->instr, stderr);
index c1ea346..125a412 100644 (file)
@@ -325,6 +325,11 @@ enum quniform_contents {
          * out-of-bounds accesses into the tile state during binning.
          */
         QUNIFORM_FB_LAYERS,
+
+        /**
+         * Current value of gl_ViewIndex for Multiview rendering.
+         */
+        QUNIFORM_VIEW_INDEX,
 };
 
 static inline uint32_t v3d_unit_data_create(uint32_t unit, uint32_t value)