glsl: Pass ctx->Const.NativeIntegers to do_common_optimization().
The next few patches will introduce an optimization that only works when integers are not represented as floating point values. v2: Re-word-wrap a line, as requested by Ian Romanick. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
40d9337406
commit
169c645f12
|
@ -1444,7 +1444,8 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader,
|
|||
/* Do some optimization at compile time to reduce shader IR size
|
||||
* and reduce later work if the same shader is linked multiple times
|
||||
*/
|
||||
while (do_common_optimization(shader->ir, false, false, 32, options))
|
||||
while (do_common_optimization(shader->ir, false, false, 32, options,
|
||||
ctx->Const.NativeIntegers))
|
||||
;
|
||||
|
||||
validate_ir_tree(shader->ir);
|
||||
|
@ -1492,7 +1493,8 @@ bool
|
|||
do_common_optimization(exec_list *ir, bool linked,
|
||||
bool uniform_locations_assigned,
|
||||
unsigned max_unroll_iterations,
|
||||
const struct gl_shader_compiler_options *options)
|
||||
const struct gl_shader_compiler_options *options,
|
||||
bool native_integers)
|
||||
{
|
||||
GLboolean progress = GL_FALSE;
|
||||
|
||||
|
|
|
@ -67,7 +67,8 @@ enum lower_packing_builtins_op {
|
|||
bool do_common_optimization(exec_list *ir, bool linked,
|
||||
bool uniform_locations_assigned,
|
||||
unsigned max_unroll_iterations,
|
||||
const struct gl_shader_compiler_options *options);
|
||||
const struct gl_shader_compiler_options *options,
|
||||
bool native_integers);
|
||||
|
||||
bool do_algebraic(exec_list *instructions);
|
||||
bool do_constant_folding(exec_list *instructions);
|
||||
|
|
|
@ -2298,7 +2298,9 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
|
||||
unsigned max_unroll = ctx->ShaderCompilerOptions[i].MaxUnrollIterations;
|
||||
|
||||
while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false, max_unroll, &ctx->ShaderCompilerOptions[i]))
|
||||
while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false,
|
||||
max_unroll, &ctx->ShaderCompilerOptions[i],
|
||||
ctx->Const.NativeIntegers))
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ do_optimization(struct exec_list *ir, const char *optimization,
|
|||
|
||||
if (sscanf(optimization, "do_common_optimization ( %d , %d ) ",
|
||||
&int_0, &int_1) == 2) {
|
||||
return do_common_optimization(ir, int_0 != 0, false, int_1, options);
|
||||
return do_common_optimization(ir, int_0 != 0, false, int_1, options, true);
|
||||
} else if (strcmp(optimization, "do_algebraic") == 0) {
|
||||
return do_algebraic(ir);
|
||||
} else if (strcmp(optimization, "do_constant_folding") == 0) {
|
||||
|
|
|
@ -202,7 +202,8 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
|
|||
) || progress;
|
||||
|
||||
progress = do_common_optimization(shader->base.ir, true, true, 32,
|
||||
&ctx->ShaderCompilerOptions[stage])
|
||||
&ctx->ShaderCompilerOptions[stage],
|
||||
ctx->Const.NativeIntegers)
|
||||
|| progress;
|
||||
} while (progress);
|
||||
|
||||
|
|
|
@ -1344,7 +1344,8 @@ create_new_program(struct gl_context *ctx, struct state_key *key)
|
|||
const struct gl_shader_compiler_options *options =
|
||||
&ctx->ShaderCompilerOptions[MESA_SHADER_FRAGMENT];
|
||||
|
||||
while (do_common_optimization(p.shader->ir, false, false, 32, options))
|
||||
while (do_common_optimization(p.shader->ir, false, false, 32, options,
|
||||
ctx->Const.NativeIntegers))
|
||||
;
|
||||
reparent_ir(p.shader->ir, p.shader->ir);
|
||||
|
||||
|
|
|
@ -3008,7 +3008,7 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
|
||||
progress = do_common_optimization(ir, true, true,
|
||||
options->MaxUnrollIterations,
|
||||
options)
|
||||
options, ctx->Const.NativeIntegers)
|
||||
|| progress;
|
||||
|
||||
progress = lower_quadop_vector(ir, true) || progress;
|
||||
|
|
|
@ -5358,7 +5358,9 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
progress = do_lower_jumps(ir, true, true, options->EmitNoMainReturn, options->EmitNoCont, options->EmitNoLoops) || progress;
|
||||
|
||||
progress = do_common_optimization(ir, true, true,
|
||||
options->MaxUnrollIterations, options)
|
||||
options->MaxUnrollIterations,
|
||||
options,
|
||||
ctx->Const.NativeIntegers)
|
||||
|| progress;
|
||||
|
||||
progress = lower_if_to_cond_assign(ir, options->MaxIfDepth) || progress;
|
||||
|
|
Loading…
Reference in New Issue