nir: Add per_view to IO semantics
authorConnor Abbott <cwabbott0@gmail.com>
Wed, 2 Sep 2020 09:20:06 +0000 (11:20 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 29 Sep 2020 10:32:00 +0000 (10:32 +0000)
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6514>

src/compiler/nir/nir.h
src/compiler/nir/nir_lower_io.c
src/compiler/nir/nir_print.c

index 054edf5..2f9409c 100644 (file)
@@ -1785,7 +1785,8 @@ typedef struct {
    unsigned fb_fetch_output:1; /* for GL_KHR_blend_equation_advanced */
    unsigned gs_streams:8; /* xxyyzzww: 2-bit stream index for each component */
    unsigned medium_precision:1; /* GLSL mediump qualifier */
-   unsigned _pad:8;
+   unsigned per_view:1;
+   unsigned _pad:7;
 } nir_io_semantics;
 
 #define NIR_INTRINSIC_MAX_INPUTS 5
index 29d03f9..16020c2 100644 (file)
@@ -437,6 +437,7 @@ emit_store(struct lower_io_state *state, nir_ssa_def *data,
    semantics.medium_precision =
       var->data.precision == GLSL_PRECISION_MEDIUM ||
       var->data.precision == GLSL_PRECISION_LOW;
+   semantics.per_view = var->data.per_view;
    nir_intrinsic_set_io_semantics(store, semantics);
 
    nir_builder_instr_insert(b, &store->instr);
index bfc35d9..fa1b704 100644 (file)
@@ -972,6 +972,10 @@ print_intrinsic_instr(nir_intrinsic_instr *instr, print_state *state)
                 nir_intrinsic_io_semantics(instr).fb_fetch_output) {
                fprintf(fp, " fbfetch=1");
             }
+            if (instr->intrinsic == nir_intrinsic_store_output &&
+                nir_intrinsic_io_semantics(instr).per_view) {
+               fprintf(fp, " perview=1");
+            }
             if (state->shader->info.stage == MESA_SHADER_GEOMETRY &&
                 instr->intrinsic == nir_intrinsic_store_output) {
                unsigned gs_streams = nir_intrinsic_io_semantics(instr).gs_streams;