Merge remote-tracking branch 'public/master' into vulkan
This commit is contained in:
@@ -22,10 +22,10 @@ NIR_FILES = \
|
||||
nir_gather_info.c \
|
||||
nir_gs_count_vertices.c \
|
||||
nir_inline_functions.c \
|
||||
nir_intrinsics.c \
|
||||
nir_intrinsics.h \
|
||||
nir_instr_set.c \
|
||||
nir_instr_set.h \
|
||||
nir_intrinsics.c \
|
||||
nir_intrinsics.h \
|
||||
nir_liveness.c \
|
||||
nir_lower_alu_to_scalar.c \
|
||||
nir_lower_atomics.c \
|
||||
|
||||
@@ -143,16 +143,7 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
|
||||
v2.run(sh->ir);
|
||||
visit_exec_list(sh->ir, &v1);
|
||||
|
||||
nir_function *main = NULL;
|
||||
nir_foreach_function(shader, func) {
|
||||
if (strcmp(func->name, "main") == 0) {
|
||||
main = func;
|
||||
break;
|
||||
}
|
||||
}
|
||||
assert(main);
|
||||
|
||||
nir_lower_outputs_to_temporaries(shader, main);
|
||||
nir_lower_outputs_to_temporaries(shader, nir_shader_get_entrypoint(shader));
|
||||
|
||||
shader->info.name = ralloc_asprintf(shader, "GLSL%d", shader_prog->Name);
|
||||
if (shader_prog->Label)
|
||||
|
||||
@@ -1822,6 +1822,8 @@ nir_shader_get_entrypoint(nir_shader *shader)
|
||||
assert(exec_list_length(&shader->functions) == 1);
|
||||
struct exec_node *func_node = exec_list_get_head(&shader->functions);
|
||||
nir_function *func = exec_node_data(nir_function, func_node, node);
|
||||
assert(func->return_type == glsl_void_type());
|
||||
assert(func->num_params == 0);
|
||||
return func;
|
||||
}
|
||||
|
||||
|
||||
@@ -127,6 +127,7 @@ optimizations = [
|
||||
(('bcsel', ('flt', a, b), b, a), ('fmax', a, b)),
|
||||
(('bcsel', ('inot', 'a@bool'), b, c), ('bcsel', a, c, b)),
|
||||
(('bcsel', a, ('bcsel', a, b, c), d), ('bcsel', a, b, d)),
|
||||
(('bcsel', a, True, 'b@bool'), ('ior', a, b)),
|
||||
(('fmin', a, a), a),
|
||||
(('fmax', a, a), a),
|
||||
(('imin', a, a), a),
|
||||
@@ -270,6 +271,10 @@ optimizations = [
|
||||
(('fabs', ('fsub', 0.0, a)), ('fabs', a)),
|
||||
(('iabs', ('isub', 0, a)), ('iabs', a)),
|
||||
|
||||
# Propagate negation up multiplication chains
|
||||
(('fmul', ('fneg', a), b), ('fneg', ('fmul', a, b))),
|
||||
(('imul', ('ineg', a), b), ('ineg', ('imul', a, b))),
|
||||
|
||||
# Misc. lowering
|
||||
(('fmod', a, b), ('fsub', a, ('fmul', b, ('ffloor', ('fdiv', a, b)))), 'options->lower_fmod'),
|
||||
(('frem', a, b), ('fsub', a, ('fmul', b, ('ftrunc', ('fdiv', a, b)))), 'options->lower_fmod'),
|
||||
|
||||
Reference in New Issue
Block a user