glsl/standalone: Add the ability to generate ir_builder code
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 15 Sep 2016 18:37:32 +0000 (11:37 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 10 Nov 2016 22:30:49 +0000 (14:30 -0800)
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/compiler/glsl/main.cpp
src/compiler/glsl/standalone.cpp
src/compiler/glsl/standalone.h

index 1e5e0fe..e0d3ab7 100644 (file)
@@ -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' },
index 73c7408..6aecd22 100644 (file)
@@ -40,6 +40,7 @@
 #include "util/set.h"
 #include "linker.h"
 #include "glsl_parser_extras.h"
+#include "ir_builder_print_visitor.h"
 #include "opt_add_neg_to_sub.h"
 
 class dead_variable_visitor : public ir_hierarchical_visitor {
@@ -550,6 +551,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;
index 648cedb..5029e16 100644 (file)
@@ -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;
 };