On Tuesday, July 31, 2018 12:22:02 PM PDT Jason Ekstrand wrote: > The NIR nir_lower_io_arrays_to_elements pass attempts to split I/O > variables which are arrays or matrices into a sequence of separate > variables. This can help link-time optimization by allowing us to > remove varyings at a more granular level. > > Shader-db results on Kaby Lake: > > total instructions in shared programs: 15177645 -> 15168494 (-0.06%) > instructions in affected programs: 79857 -> 70706 (-11.46%) > helped: 392 > HURT: 0 > --- > src/intel/compiler/brw_nir.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c > index 17ccfa48af6..29ad68fdb2a 100644 > --- a/src/intel/compiler/brw_nir.c > +++ b/src/intel/compiler/brw_nir.c > @@ -709,6 +709,10 @@ void > brw_nir_link_shaders(const struct brw_compiler *compiler, > nir_shader **producer, nir_shader **consumer) > { > + nir_lower_io_arrays_to_elements(*producer, *consumer); > + nir_validate_shader(*producer); > + nir_validate_shader(*consumer); > + > NIR_PASS_V(*producer, nir_remove_dead_variables, nir_var_shader_out); > NIR_PASS_V(*consumer, nir_remove_dead_variables, nir_var_shader_in); > >
This actually passes the test suite? That's strange. When I was playing with this earlier, it was demoting gl_ClipDistance[1] from a float[1] compact array to a single float variable...but leaving it marked compact. var->data.compact = true makes no sense for non-arrays. I think our clip/cull distance handling assumes that it's an array, though. So...not sure whether the pass should unset compact, or skip over compact arrays...
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev