projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
glsl/shader_cache: handle SPIR-V shaders
[mesa.git]
/
src
/
compiler
/
glsl
/
ir_optimization.h
diff --git
a/src/compiler/glsl/ir_optimization.h
b/src/compiler/glsl/ir_optimization.h
index e4f78f038fddab176ecbf904c0290c7ca88af886..e027654d3a02b8a57a2950da22cf6ecfe95026ac 100644
(file)
--- a/
src/compiler/glsl/ir_optimization.h
+++ b/
src/compiler/glsl/ir_optimization.h
@@
-21,16
+21,21
@@
* DEALINGS IN THE SOFTWARE.
*/
* DEALINGS IN THE SOFTWARE.
*/
-
/**
* \file ir_optimization.h
*
* Prototypes for optimization passes to be called by the compiler and drivers.
*/
/**
* \file ir_optimization.h
*
* Prototypes for optimization passes to be called by the compiler and drivers.
*/
+#ifndef GLSL_IR_OPTIMIZATION_H
+#define GLSL_IR_OPTIMIZATION_H
+
+struct gl_linked_shader;
+struct gl_shader_program;
+
/* Operations for lower_instructions() */
#define SUB_TO_ADD_NEG 0x01
/* Operations for lower_instructions() */
#define SUB_TO_ADD_NEG 0x01
-#define
DIV_TO_MUL_RCP
0x02
+#define
FDIV_TO_MUL_RCP
0x02
#define EXP_TO_EXP2 0x04
#define POW_TO_EXP2 0x08
#define LOG_TO_LOG2 0x10
#define EXP_TO_EXP2 0x04
#define POW_TO_EXP2 0x08
#define LOG_TO_LOG2 0x10
@@
-49,10
+54,16
@@
#define FIND_LSB_TO_FLOAT_CAST 0x20000
#define FIND_MSB_TO_FLOAT_CAST 0x40000
#define IMUL_HIGH_TO_MUL 0x80000
#define FIND_LSB_TO_FLOAT_CAST 0x20000
#define FIND_MSB_TO_FLOAT_CAST 0x40000
#define IMUL_HIGH_TO_MUL 0x80000
+#define DDIV_TO_MUL_RCP 0x100000
+#define DIV_TO_MUL_RCP (FDIV_TO_MUL_RCP | DDIV_TO_MUL_RCP)
+#define SQRT_TO_ABS_SQRT 0x200000
+#define MUL64_TO_MUL_AND_MUL_HIGH 0x400000
/* Opertaions for lower_64bit_integer_instructions() */
#define MUL64 (1U << 0)
#define SIGN64 (1U << 1)
/* Opertaions for lower_64bit_integer_instructions() */
#define MUL64 (1U << 0)
#define SIGN64 (1U << 1)
+#define DIV64 (1U << 2)
+#define MOD64 (1U << 3)
/**
* \see class lower_packing_builtins_visitor
/**
* \see class lower_packing_builtins_visitor
@@
-93,7
+104,6
@@
bool opt_conditional_discard(exec_list *instructions);
bool do_constant_folding(exec_list *instructions);
bool do_constant_variable(exec_list *instructions);
bool do_constant_variable_unlinked(exec_list *instructions);
bool do_constant_folding(exec_list *instructions);
bool do_constant_variable(exec_list *instructions);
bool do_constant_variable_unlinked(exec_list *instructions);
-bool do_copy_propagation(exec_list *instructions);
bool do_copy_propagation_elements(exec_list *instructions);
bool do_constant_propagation(exec_list *instructions);
void do_dead_builtin_varyings(struct gl_context *ctx,
bool do_copy_propagation_elements(exec_list *instructions);
bool do_constant_propagation(exec_list *instructions);
void do_dead_builtin_varyings(struct gl_context *ctx,
@@
-116,9
+126,8
@@
bool lower_if_to_cond_assign(gl_shader_stage stage, exec_list *instructions,
unsigned max_depth = 0, unsigned min_branch_cost = 0);
bool do_mat_op_to_vec(exec_list *instructions);
bool do_minmax_prune(exec_list *instructions);
unsigned max_depth = 0, unsigned min_branch_cost = 0);
bool do_mat_op_to_vec(exec_list *instructions);
bool do_minmax_prune(exec_list *instructions);
-bool do_noop_swizzle(exec_list *instructions);
bool do_structure_splitting(exec_list *instructions);
bool do_structure_splitting(exec_list *instructions);
-bool
do_swizzle_swizzle
(exec_list *instructions);
+bool
optimize_swizzles
(exec_list *instructions);
bool do_vectorize(exec_list *instructions);
bool do_tree_grafting(exec_list *instructions);
bool do_vec_index_to_cond_assign(exec_list *instructions);
bool do_vectorize(exec_list *instructions);
bool do_tree_grafting(exec_list *instructions);
bool do_vec_index_to_cond_assign(exec_list *instructions);
@@
-136,10
+145,11
@@
bool lower_clip_cull_distance(struct gl_shader_program *prog,
gl_linked_shader *shader);
void lower_output_reads(unsigned stage, exec_list *instructions);
bool lower_packing_builtins(exec_list *instructions, int op_mask);
gl_linked_shader *shader);
void lower_output_reads(unsigned stage, exec_list *instructions);
bool lower_packing_builtins(exec_list *instructions, int op_mask);
-void lower_shared_reference(struct gl_linked_shader *shader,
- unsigned *shared_size);
+void lower_shared_reference(struct gl_context *ctx,
+ struct gl_shader_program *prog,
+ struct gl_linked_shader *shader);
void lower_ubo_reference(struct gl_linked_shader *shader,
void lower_ubo_reference(struct gl_linked_shader *shader,
- bool clamp_block_indices);
+ bool clamp_block_indices
, bool use_std430_as_default
);
void lower_packed_varyings(void *mem_ctx,
unsigned locations_used,
const uint8_t *components,
void lower_packed_varyings(void *mem_ctx,
unsigned locations_used,
const uint8_t *components,
@@
-158,14
+168,19
@@
void optimize_dead_builtin_variables(exec_list *instructions,
bool lower_tess_level(gl_linked_shader *shader);
bool lower_vertex_id(gl_linked_shader *shader);
bool lower_tess_level(gl_linked_shader *shader);
bool lower_vertex_id(gl_linked_shader *shader);
-bool lower_blend_equation_advanced(gl_linked_shader *shader);
+bool lower_cs_derived(gl_linked_shader *shader);
+bool lower_blend_equation_advanced(gl_linked_shader *shader, bool coherent);
bool lower_subroutine(exec_list *instructions, struct _mesa_glsl_parse_state *state);
void propagate_invariance(exec_list *instructions);
bool lower_subroutine(exec_list *instructions, struct _mesa_glsl_parse_state *state);
void propagate_invariance(exec_list *instructions);
-ir_rvalue *
-compare_index_block(exec_list *instructions, ir_variable *index,
- unsigned base, unsigned components, void *mem_ctx);
+namespace ir_builder { class ir_factory; };
+
+ir_variable *compare_index_block(ir_builder::ir_factory &body,
+ ir_variable *index,
+ unsigned base, unsigned components);
bool lower_64bit_integer_instructions(exec_list *instructions,
unsigned what_to_lower);
bool lower_64bit_integer_instructions(exec_list *instructions,
unsigned what_to_lower);
+
+#endif /* GLSL_IR_OPTIMIZATION_H */