[Mesa-dev] [PATCH v2 3/4] intel/nir: Split IO arrays into elements
Kenneth Graunke
kenneth at whitecape.org
Tue Jul 31 21:54:53 UTC 2018
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...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180731/aa3be63c/attachment.sig>
More information about the mesa-dev
mailing list