From: Ian Romanick <ian.d.roman...@intel.com> If the user did not request full linking, link the shader with the built-in functions, inline them, and eliminate them. Previous to this you'd see all these calls to "dot" and "max" in the output. This prevented a lot of expected optimizations and cluttered the output. This gives it some chance of being useful.
Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> --- src/compiler/glsl/standalone.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/compiler/glsl/standalone.cpp b/src/compiler/glsl/standalone.cpp index f7e1055..1b2a575 100644 --- a/src/compiler/glsl/standalone.cpp +++ b/src/compiler/glsl/standalone.cpp @@ -38,6 +38,8 @@ #include "standalone.h" #include "util/string_to_uint_map.h" #include "util/set.h" +#include "linker.h" +#include "glsl_parser_extras.h" class add_neg_to_sub_visitor : public ir_hierarchical_visitor { public: @@ -506,10 +508,34 @@ standalone_compile_shader(const struct standalone_options *_options, } } - if ((status == EXIT_SUCCESS) && options->do_link) { + if (status == EXIT_SUCCESS) { _mesa_clear_shader_program_data(whole_program); - link_shaders(ctx, whole_program); + if (options->do_link) { + link_shaders(ctx, whole_program); + } else { + struct gl_shader *const shader = whole_program->Shaders[0]; + + whole_program->LinkStatus = GL_TRUE; + whole_program->_LinkedShaders[shader->Stage] = + link_intrastage_shaders(whole_program /* mem_ctx */, + ctx, + whole_program, + whole_program->Shaders, + 1, + true); + + struct gl_shader_compiler_options *const compiler_options = + &ctx->Const.ShaderCompilerOptions[shader->Stage]; + + do_common_optimization(whole_program->_LinkedShaders[shader->Stage]->ir, + false, + false, + compiler_options, + true, + true); + } + status = (whole_program->LinkStatus) ? EXIT_SUCCESS : EXIT_FAILURE; if (strlen(whole_program->InfoLog) > 0) { -- 2.5.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev