[Mesa-dev] Question about NIR changes since mesa 17.3

Timothy Arceri tarceri at itsqueeze.com
Fri Mar 30 21:55:15 UTC 2018


On 31/03/18 00:43, Qiang Yu wrote:
> Hi guys,
> 
> I'm rebasing the mesa-lima code from 17.3 to 18.0 and found the NIR changes
> in 18.0 will always do nir_lower_io_to_scalar_early() for the output of 
> vertex
> shader and input of fragment shader. My first question is:
> Is it for the link time optimization that we can drop un-used channel in 
> a slot
> and merge channels in different slots to one slot if possible?

Correct.

> 
> Mali4xx GPU has different processor for vertex shader (GP) and fragment
> shader (PP). Scalar is OK for GP, but PP more like vec ops. So this scalar
> change make PP not comfortable. I like the link time optimization, so don't
> want to just disable it. My second question is:
> Is there any NIR helper that I can use to merge scalar input to vector 
> again?
> Or what's the right way to make the scalar input vector again?
> 
> I see master mesa branch will further do nir_lower_alu_to_scalar
> for all nir which will get more pain for mali PP, so my third question is:
> How other vec GPU solve this problem or anyway to disable it?

It's not a problem for any other GPUs using Gallium currently. You might 
need to add a CAP and skip the passes for your driver or run a new 
recombine pass which I think you might need to write. You could check 
with the i965 guys if a pass exist as they are the only ones using NIR 
with a vector backend, but I don't think there is.

> 
> Thanks,
> Qiang


More information about the mesa-dev mailing list