v3d: Only call nir_lower_io on shader_in/out
Gallium drivers should never see nir_var_uniform because gallium lowers regular uniforms to a UBO. No GL driver should ever see either nir_var_mem_shared because that's lowered in GLSL IR. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5418>
This commit is contained in:
parent
96d99f2ecc
commit
23b7094829
|
@ -306,14 +306,12 @@ v3d_uncompiled_shader_create(struct pipe_context *pctx,
|
|||
s = tgsi_to_nir(ir, pctx->screen, false);
|
||||
}
|
||||
|
||||
nir_variable_mode lower_mode = nir_var_all & ~nir_var_uniform;
|
||||
if (s->info.stage == MESA_SHADER_VERTEX ||
|
||||
s->info.stage == MESA_SHADER_GEOMETRY) {
|
||||
lower_mode &= ~(nir_var_shader_in | nir_var_shader_out);
|
||||
if (s->info.stage != MESA_SHADER_VERTEX &&
|
||||
s->info.stage != MESA_SHADER_GEOMETRY) {
|
||||
NIR_PASS_V(s, nir_lower_io,
|
||||
nir_var_shader_in | nir_var_shader_out,
|
||||
type_size, (nir_lower_io_options)0);
|
||||
}
|
||||
NIR_PASS_V(s, nir_lower_io, lower_mode,
|
||||
type_size,
|
||||
(nir_lower_io_options)0);
|
||||
|
||||
NIR_PASS_V(s, nir_lower_regs_to_ssa);
|
||||
NIR_PASS_V(s, nir_normalize_cubemap_coords);
|
||||
|
|
Loading…
Reference in New Issue