summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2016-09-15 11:37:32 -0700
committerIan Romanick <ian.d.romanick@intel.com>2016-09-15 15:08:14 -0700
commit9a4894a768fe84f6db0cc5fd44fb11497859edad (patch)
treea769ecb271e30e46de288de34170ed5e7980ef3f
parent03cbe9e75be1675906fa860c25f928c7ef5aa3bb (diff)
glsl/standalone: Add the ability to generate ir_builder codestandalone-ir_builder
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
-rw-r--r--src/compiler/glsl/main.cpp1
-rw-r--r--src/compiler/glsl/standalone.cpp12
-rw-r--r--src/compiler/glsl/standalone.h1
3 files changed, 14 insertions, 0 deletions
diff --git a/src/compiler/glsl/main.cpp b/src/compiler/glsl/main.cpp
index 1e5e0febcd9..e0d3ab75d16 100644
--- a/src/compiler/glsl/main.cpp
+++ b/src/compiler/glsl/main.cpp
@@ -42,6 +42,7 @@ const struct option compiler_opts[] = {
{ "dump-ast", no_argument, &options.dump_ast, 1 },
{ "dump-hir", no_argument, &options.dump_hir, 1 },
{ "dump-lir", no_argument, &options.dump_lir, 1 },
+ { "dump-builder", no_argument, &options.dump_builder, 1 },
{ "link", no_argument, &options.do_link, 1 },
{ "just-log", no_argument, &options.just_log, 1 },
{ "version", required_argument, NULL, 'v' },
diff --git a/src/compiler/glsl/standalone.cpp b/src/compiler/glsl/standalone.cpp
index 1b2a575ea8c..4f8076429f2 100644
--- a/src/compiler/glsl/standalone.cpp
+++ b/src/compiler/glsl/standalone.cpp
@@ -40,6 +40,7 @@
#include "util/set.h"
#include "linker.h"
#include "glsl_parser_extras.h"
+#include "ir_builder_print_visitor.h"
class add_neg_to_sub_visitor : public ir_hierarchical_visitor {
public:
@@ -563,6 +564,17 @@ standalone_compile_shader(const struct standalone_options *_options,
shader->Program = rzalloc(shader, gl_program);
init_gl_program(shader->Program, shader->Stage);
}
+
+ if (options->dump_builder) {
+ for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
+ struct gl_linked_shader *shader = whole_program->_LinkedShaders[i];
+
+ if (!shader)
+ continue;
+
+ _mesa_print_builder_for_ir(stdout, shader->ir);
+ }
+ }
}
return whole_program;
diff --git a/src/compiler/glsl/standalone.h b/src/compiler/glsl/standalone.h
index 648cedb70ab..5029e168119 100644
--- a/src/compiler/glsl/standalone.h
+++ b/src/compiler/glsl/standalone.h
@@ -33,6 +33,7 @@ struct standalone_options {
int dump_ast;
int dump_hir;
int dump_lir;
+ int dump_builder;
int do_link;
int just_log;
};