st/glsl_to_nir: move nir_lower_io to drivers
This allows drivers more freedom in how exactly they want to lower I/O, e.g. first lowering I/O to temporaries. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -296,6 +296,9 @@ ir3_shader_create(struct ir3_compiler *compiler,
|
||||
if (cso->type == PIPE_SHADER_IR_NIR) {
|
||||
/* we take ownership of the reference: */
|
||||
nir = cso->ir.nir;
|
||||
|
||||
NIR_PASS_V(nir, nir_lower_io, nir_var_all, ir3_glsl_type_size,
|
||||
(nir_lower_io_options)0);
|
||||
} else {
|
||||
debug_assert(cso->type == PIPE_SHADER_IR_TGSI);
|
||||
if (fd_mesa_debug & FD_DBG_DISASM) {
|
||||
@@ -342,6 +345,9 @@ ir3_shader_create_compute(struct ir3_compiler *compiler,
|
||||
if (cso->ir_type == PIPE_SHADER_IR_NIR) {
|
||||
/* we take ownership of the reference: */
|
||||
nir = (nir_shader *)cso->prog;
|
||||
|
||||
NIR_PASS_V(nir, nir_lower_io, nir_var_all, ir3_glsl_type_size,
|
||||
(nir_lower_io_options)0);
|
||||
} else {
|
||||
debug_assert(cso->ir_type == PIPE_SHADER_IR_TGSI);
|
||||
if (fd_mesa_debug & FD_DBG_DISASM) {
|
||||
|
@@ -2427,6 +2427,9 @@ vc4_shader_state_create(struct pipe_context *pctx,
|
||||
* creation.
|
||||
*/
|
||||
s = cso->ir.nir;
|
||||
|
||||
NIR_PASS_V(s, nir_lower_io, nir_var_all, type_size,
|
||||
(nir_lower_io_options)0);
|
||||
} else {
|
||||
assert(cso->type == PIPE_SHADER_IR_TGSI);
|
||||
|
||||
|
@@ -377,8 +377,7 @@ st_finalize_nir(struct st_context *st, struct gl_program *prog, nir_shader *nir)
|
||||
&nir->uniforms, &nir->num_uniforms);
|
||||
|
||||
NIR_PASS_V(nir, nir_lower_system_values);
|
||||
NIR_PASS_V(nir, nir_lower_io, nir_var_all, type_size,
|
||||
(nir_lower_io_options)0);
|
||||
|
||||
if (screen->get_param(screen, PIPE_CAP_NIR_SAMPLERS_AS_DEREF))
|
||||
NIR_PASS_V(nir, nir_lower_samplers_as_deref, shader_program);
|
||||
else
|
||||
|
Reference in New Issue
Block a user