diff options
author | Kenneth Graunke <[email protected]> | 2014-08-02 05:33:14 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2014-08-04 15:43:56 -0700 |
commit | f82f2fb3dc770902f1657ab1c22e6004faa3afab (patch) | |
tree | 40118de1d6a88933d7f9556070da883c6fc33dc3 /src/mesa/program/arbprogparse.c | |
parent | b48621c348fef53cc226b5ca8c08e4c71d24edec (diff) |
mesa: Actually use the Mesa IR optimizer for ARB programs.
On Haswell, this cuts 1-3 instructions from 183 vertex shaders in
"Shadowrun Returns", "Shatter", and "Trine 2." It adds 2 instructions
to a single fragment shader in "Closure."
total instructions in shared programs: 278803 -> 278546 (-0.09%)
instructions in affected programs: 41930 -> 41673 (-0.61%)
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/mesa/program/arbprogparse.c')
-rw-r--r-- | src/mesa/program/arbprogparse.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mesa/program/arbprogparse.c b/src/mesa/program/arbprogparse.c index 5b9665091b6..7dec399a538 100644 --- a/src/mesa/program/arbprogparse.c +++ b/src/mesa/program/arbprogparse.c @@ -60,6 +60,7 @@ having three separate program parameter arrays. #include "prog_parameter.h" #include "prog_statevars.h" #include "prog_instruction.h" +#include "prog_optimize.h" #include "program_parser.h" @@ -84,6 +85,9 @@ _mesa_parse_arb_fragment_program(struct gl_context* ctx, GLenum target, return; } + if ((ctx->_Shader->Flags & GLSL_NO_OPT) == 0) + _mesa_optimize_program(ctx, &prog); + free(program->Base.String); /* Copy the relevant contents of the arb_program struct into the @@ -177,6 +181,9 @@ _mesa_parse_arb_vertex_program(struct gl_context *ctx, GLenum target, return; } + if ((ctx->_Shader->Flags & GLSL_NO_OPT) == 0) + _mesa_optimize_program(ctx, &prog); + free(program->Base.String); /* Copy the relevant contents of the arb_program struct into the |