aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2015-01-24 02:05:56 -0800
committerKenneth Graunke <[email protected]>2015-04-11 12:35:47 -0700
commitb6354d9bb077815d2e388dc5d0e7411ea6d89748 (patch)
tree5ecaa3ab8d64496c12e45d1bc8db8d43eb3dc029
parent89c1feb78d010bc457f5d02be84c955eebf3549f (diff)
i965/nir: Make INTEL_DEBUG=ann work with NIR.
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 <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_nir.cpp4
-rw-r--r--src/mesa/drivers/dri/i965/intel_asm_annotation.c5
2 files changed, 8 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
index d6508fc707a..3972581ef12 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
@@ -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
diff --git a/src/mesa/drivers/dri/i965/intel_asm_annotation.c b/src/mesa/drivers/dri/i965/intel_asm_annotation.c
index ac126556107..eed5756e84a 100644
--- a/src/mesa/drivers/dri/i965/intel_asm_annotation.c
+++ b/src/mesa/drivers/dri/i965/intel_asm_annotation.c
@@ -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 =