X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Fcompiler%2Fnir%2Fnir_print.c;h=ed7cccfc2cad9eb82ac5759dfb2264bfd994b99c;hp=9daaba7738575fb81638f9a47d4364f8b30e4525;hb=2b1ef5df4eacae2a1c4028655c8b1f35412e0a3b;hpb=01ab308edc78cda777bc66f2e8110fbd8c21aa18 diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c index 9daaba77385..ed7cccfc2ca 100644 --- a/src/compiler/nir/nir_print.c +++ b/src/compiler/nir/nir_print.c @@ -808,7 +808,9 @@ print_intrinsic_instr(nir_intrinsic_instr *instr, print_state *state) [NIR_INTRINSIC_MEMORY_MODES] = "mem_modes", [NIR_INTRINSIC_MEMORY_SCOPE] = "mem_scope", [NIR_INTRINSIC_EXECUTION_SCOPE] = "exec_scope", + [NIR_INTRINSIC_IO_SEMANTICS] = "io_semantics", }; + for (unsigned idx = 1; idx < NIR_INTRINSIC_NUM_INDEX_FLAGS; idx++) { if (!info->index_map[idx]) continue; @@ -923,6 +925,32 @@ print_intrinsic_instr(nir_intrinsic_instr *instr, print_state *state) break; } + case NIR_INTRINSIC_IO_SEMANTICS: + fprintf(fp, " location=%u slots=%u", + nir_intrinsic_io_semantics(instr).location, + nir_intrinsic_io_semantics(instr).num_slots); + if (state->shader->info.stage == MESA_SHADER_FRAGMENT && + instr->intrinsic == nir_intrinsic_store_output && + nir_intrinsic_io_semantics(instr).dual_source_blend_index) { + fprintf(fp, " dualsrc=1"); + } + if (state->shader->info.stage == MESA_SHADER_FRAGMENT && + instr->intrinsic == nir_intrinsic_load_output && + nir_intrinsic_io_semantics(instr).fb_fetch_output) { + fprintf(fp, " fbfetch=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; + fprintf(fp, " gs_streams("); + for (unsigned i = 0; i < 4; i++) { + fprintf(fp, "%s%c=%u", i ? " " : "", "xyzw"[i], + (gs_streams >> (i * 2)) & 0x3); + } + fprintf(fp, ")"); + } + break; + default: { unsigned off = info->index_map[idx] - 1; assert(index_name[idx]); /* forgot to update index_name table? */