glsl: Enable debug prints for do_common_optimization
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -1866,59 +1866,76 @@ do_common_optimization(exec_list *ir, bool linked,
|
|||||||
const struct gl_shader_compiler_options *options,
|
const struct gl_shader_compiler_options *options,
|
||||||
bool native_integers)
|
bool native_integers)
|
||||||
{
|
{
|
||||||
|
const bool debug = false;
|
||||||
GLboolean progress = GL_FALSE;
|
GLboolean progress = GL_FALSE;
|
||||||
|
|
||||||
progress = lower_instructions(ir, SUB_TO_ADD_NEG) || progress;
|
#define OPT(PASS, ...) do { \
|
||||||
|
if (debug) { \
|
||||||
|
fprintf(stderr, "START GLSL optimization %s\n", #PASS); \
|
||||||
|
const bool opt_progress = PASS(__VA_ARGS__); \
|
||||||
|
progress = opt_progress || progress; \
|
||||||
|
if (opt_progress) \
|
||||||
|
_mesa_print_ir(stderr, ir, NULL); \
|
||||||
|
fprintf(stderr, "GLSL optimization %s: %s progress\n", \
|
||||||
|
#PASS, opt_progress ? "made" : "no"); \
|
||||||
|
} else { \
|
||||||
|
progress = PASS(__VA_ARGS__) || progress; \
|
||||||
|
} \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
OPT(lower_instructions, ir, SUB_TO_ADD_NEG);
|
||||||
|
|
||||||
if (linked) {
|
if (linked) {
|
||||||
progress = do_function_inlining(ir) || progress;
|
OPT(do_function_inlining, ir);
|
||||||
progress = do_dead_functions(ir) || progress;
|
OPT(do_dead_functions, ir);
|
||||||
progress = do_structure_splitting(ir) || progress;
|
OPT(do_structure_splitting, ir);
|
||||||
}
|
}
|
||||||
progress = do_if_simplification(ir) || progress;
|
OPT(do_if_simplification, ir);
|
||||||
progress = opt_flatten_nested_if_blocks(ir) || progress;
|
OPT(opt_flatten_nested_if_blocks, ir);
|
||||||
progress = opt_conditional_discard(ir) || progress;
|
OPT(opt_conditional_discard, ir);
|
||||||
progress = do_copy_propagation(ir) || progress;
|
OPT(do_copy_propagation, ir);
|
||||||
progress = do_copy_propagation_elements(ir) || progress;
|
OPT(do_copy_propagation_elements, ir);
|
||||||
|
|
||||||
if (options->OptimizeForAOS && !linked)
|
if (options->OptimizeForAOS && !linked)
|
||||||
progress = opt_flip_matrices(ir) || progress;
|
OPT(opt_flip_matrices, ir);
|
||||||
|
|
||||||
if (linked && options->OptimizeForAOS) {
|
if (linked && options->OptimizeForAOS) {
|
||||||
progress = do_vectorize(ir) || progress;
|
OPT(do_vectorize, ir);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (linked)
|
if (linked)
|
||||||
progress = do_dead_code(ir, uniform_locations_assigned) || progress;
|
OPT(do_dead_code, ir, uniform_locations_assigned);
|
||||||
else
|
else
|
||||||
progress = do_dead_code_unlinked(ir) || progress;
|
OPT(do_dead_code_unlinked, ir);
|
||||||
progress = do_dead_code_local(ir) || progress;
|
OPT(do_dead_code_local, ir);
|
||||||
progress = do_tree_grafting(ir) || progress;
|
OPT(do_tree_grafting, ir);
|
||||||
progress = do_constant_propagation(ir) || progress;
|
OPT(do_constant_propagation, ir);
|
||||||
if (linked)
|
if (linked)
|
||||||
progress = do_constant_variable(ir) || progress;
|
OPT(do_constant_variable, ir);
|
||||||
else
|
else
|
||||||
progress = do_constant_variable_unlinked(ir) || progress;
|
OPT(do_constant_variable_unlinked, ir);
|
||||||
progress = do_constant_folding(ir) || progress;
|
OPT(do_constant_folding, ir);
|
||||||
progress = do_minmax_prune(ir) || progress;
|
OPT(do_minmax_prune, ir);
|
||||||
progress = do_rebalance_tree(ir) || progress;
|
OPT(do_rebalance_tree, ir);
|
||||||
progress = do_algebraic(ir, native_integers, options) || progress;
|
OPT(do_algebraic, ir, native_integers, options);
|
||||||
progress = do_lower_jumps(ir) || progress;
|
OPT(do_lower_jumps, ir);
|
||||||
progress = do_vec_index_to_swizzle(ir) || progress;
|
OPT(do_vec_index_to_swizzle, ir);
|
||||||
progress = lower_vector_insert(ir, false) || progress;
|
OPT(lower_vector_insert, ir, false);
|
||||||
progress = do_swizzle_swizzle(ir) || progress;
|
OPT(do_swizzle_swizzle, ir);
|
||||||
progress = do_noop_swizzle(ir) || progress;
|
OPT(do_noop_swizzle, ir);
|
||||||
|
|
||||||
progress = optimize_split_arrays(ir, linked) || progress;
|
OPT(optimize_split_arrays, ir, linked);
|
||||||
progress = optimize_redundant_jumps(ir) || progress;
|
OPT(optimize_redundant_jumps, ir);
|
||||||
|
|
||||||
loop_state *ls = analyze_loop_variables(ir);
|
loop_state *ls = analyze_loop_variables(ir);
|
||||||
if (ls->loop_found) {
|
if (ls->loop_found) {
|
||||||
progress = set_loop_controls(ir, ls) || progress;
|
OPT(set_loop_controls, ir, ls);
|
||||||
progress = unroll_loops(ir, ls, options) || progress;
|
OPT(unroll_loops, ir, ls, options);
|
||||||
}
|
}
|
||||||
delete ls;
|
delete ls;
|
||||||
|
|
||||||
|
#undef OPT
|
||||||
|
|
||||||
return progress;
|
return progress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user