<p dir="ltr"></p>
<p dir="ltr">On Aug 8, 2016 9:18 AM, "Eric Anholt" <<a href="mailto:eric@anholt.net">eric@anholt.net</a>> wrote:<br>
><br>
> Timothy Arceri <<a href="mailto:timothy.arceri@collabora.com">timothy.arceri@collabora.com</a>> writes:<br>
><br>
> > On Sat, 2016-08-06 at 10:15 +1000, Timothy Arceri wrote:<br>
> >> On Fri, 2016-08-05 at 16:27 -0700, Eric Anholt wrote:<br>
> >> > vc4 wants to have per-scalar IO load/stores so that dead code<br>
> >> > elimination<br>
> >> > can happen on a more granular basis,<br>
> ><br>
> > Out of interest what is it exactly that you are doing in the backend? <br>
><br>
> Given that all of my IO is done as indidivual moves of scalars (with the<br>
> exception of the color output, which is weird but is lowered by vc4 code<br>
> anyway), I'd like to see all the scalar ops for setting up<br>
> undefined/unused scalar slots get dropped.  I don't see much change from<br>
> this, because dead code is easy to eliminate, but I think there were<br>
> small diffs.  It also makes the output more readable by cutting the<br>
> pointless vector ops.<br>
><br>
> However, doing my IO as scalar has been a bit of a pain for other<br>
> passes: The UCP and twoside lowering want a single load/store for the<br>
> vector.  Because of this, I've also wondered if using the write_mask and<br>
> extending nir_opt_dce() for per-channel liveness would be a better way<br>
> to go.</p>
<p dir="ltr">I would very much like to see dead code extended to channels anyway. :-)</p>
<p dir="ltr">> > I was looking at brw_do_vector_splitting() and it seems to me that<br>
> > moving that out of the Intel backend and making it also work on<br>
> > varyings could be benefical to all drivers as we could extend it to<br>
> > work across stages which would hopefully also improve varying packing.<br>
> ><br>
> > Currently it says: <br>
> ><br>
> > "This skips vectors in uniforms and varyings, which need to be<br>
> > accessible as vectors for their access by the GL."<br>
> ><br>
> > But that really only applies to vs inputs and the outward facing stages<br>
> > of SSOs.<br>
><br>
> Yeah, I think that comment is stale at this point.  But we have a lot of<br>
> that pass in NIR already (ALU, const, io), and instead of extending the<br>
> GLSL IR pass I'd rather see a NIR cross-linking pass.<br>
><br>
> On the topic of cross-linking: Back in the day, i965 would look at the<br>
> VS outputs and propagate constants into the FS inputs.  This was really<br>
> painful, slow code to maintain, and we eventually just dropped it.<br>
> However, if we know that a VS/FS pair are non-SSO, it seems like with<br>
> NIR we could do that propagation really easily at link time.<br>
><br>
> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
></p>