mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 19:58:09 +02:00
linker: Do post-link lowering and optimization
The lowering code should probably be moved elsewhere.
This commit is contained in:
parent
60e2d06d1c
commit
a7ba9a7919
1 changed files with 38 additions and 0 deletions
|
|
@ -80,6 +80,7 @@ extern "C" {
|
|||
#include "hash_table.h"
|
||||
#include "shader_api.h"
|
||||
#include "linker.h"
|
||||
#include "ir_optimization.h"
|
||||
|
||||
/**
|
||||
* Visitor that determines whether or not a variable is ever written.
|
||||
|
|
@ -1223,6 +1224,43 @@ link_shaders(struct gl_shader_program *prog)
|
|||
}
|
||||
|
||||
/* FINISHME: Perform whole-program optimization here. */
|
||||
for (unsigned i = 0; i < prog->_NumLinkedShaders; i++) {
|
||||
/* Optimization passes */
|
||||
bool progress;
|
||||
exec_list *ir = prog->_LinkedShaders[i]->ir;
|
||||
|
||||
/* Lowering */
|
||||
do_mat_op_to_vec(ir);
|
||||
do_mod_to_fract(ir);
|
||||
do_div_to_mul_rcp(ir);
|
||||
|
||||
do {
|
||||
progress = false;
|
||||
|
||||
progress = do_function_inlining(ir) || progress;
|
||||
progress = do_if_simplification(ir) || progress;
|
||||
progress = do_copy_propagation(ir) || progress;
|
||||
progress = do_dead_code_local(ir) || progress;
|
||||
#if 0
|
||||
progress = do_dead_code_unlinked(state, ir) || progress;
|
||||
#endif
|
||||
progress = do_constant_variable_unlinked(ir) || progress;
|
||||
progress = do_constant_folding(ir) || progress;
|
||||
progress = do_if_return(ir) || progress;
|
||||
#if 0
|
||||
if (ctx->Shader.EmitNoIfs)
|
||||
progress = do_if_to_cond_assign(ir) || progress;
|
||||
#endif
|
||||
|
||||
progress = do_vec_index_to_swizzle(ir) || progress;
|
||||
/* Do this one after the previous to let the easier pass handle
|
||||
* constant vector indexing.
|
||||
*/
|
||||
progress = do_vec_index_to_cond_assign(ir) || progress;
|
||||
|
||||
progress = do_swizzle_swizzle(ir) || progress;
|
||||
} while (progress);
|
||||
}
|
||||
|
||||
assign_uniform_locations(prog);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue