Now that we store a copy of the NIR shader, and don't immediately free it, we can use it in annotations as well. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>tags/10.6-branchpoint
@@ -438,6 +438,8 @@ fs_visitor::nir_emit_block(nir_block *block) | |||
void | |||
fs_visitor::nir_emit_instr(nir_instr *instr) | |||
{ | |||
this->base_ir = instr; | |||
switch (instr->type) { | |||
case nir_instr_type_alu: | |||
nir_emit_alu(nir_instr_as_alu(instr)); | |||
@@ -464,6 +466,8 @@ fs_visitor::nir_emit_instr(nir_instr *instr) | |||
default: | |||
unreachable("unknown instruction type"); | |||
} | |||
this->base_ir = NULL; | |||
} | |||
static brw_reg_type |
@@ -29,6 +29,7 @@ | |||
#include "program/prog_print.h" | |||
#include "program/prog_instruction.h" | |||
#include "main/macros.h" | |||
#include "glsl/nir/nir.h" | |||
void | |||
dump_assembly(void *assembly, int num_annotations, struct annotation *annotation, | |||
@@ -55,7 +56,9 @@ dump_assembly(void *assembly, int num_annotations, struct annotation *annotation | |||
last_annotation_ir = annotation[i].ir; | |||
if (last_annotation_ir) { | |||
fprintf(stderr, " "); | |||
if (!prog->Instructions) | |||
if (prog->nir) | |||
nir_print_instr(annotation[i].ir, stderr); | |||
else if (!prog->Instructions) | |||
fprint_ir(stderr, annotation[i].ir); | |||
else { | |||
const struct prog_instruction *pi = |