While I'm all for doing this, won't this break every driver if it no
longer has all the decl's? It'll take special logic to convert

DECL IN[0..5], GENERIC[0]

into

DECL IN[0], GENERIC[0]
DECL IN[1], GENERIC[1]
etc

Perhaps this should be guarded by a cap? Or an audit of all drivers
should be done?

On Sun, May 24, 2015 at 7:19 AM, Marek Olšák <mar...@gmail.com> wrote:
> Hi,
>
> The reason I add this is that TGSI doesn't allow indirect indexing of inputs 
> and outputs. Consider this:
>
> MOV OUT[ADDR[0]-1000], IMM[0]
>
> There is no way to know where the output array starts here. It could be for 
> example OUT[6]=GENERIC4 or anything else. The problem is some outputs are 
> physically stored in a different memory domain than others. Per-patch 
> (tessellation) outputs are one such example. Does the MOV instruction write a 
> per-vertex or per-patch output? There is no way to know.
>
> The problem can be avoided by using carefully-generated unoptimized TGSI 
> where the relative index is the same as the base of the array, which is 
> OUT[6] here:
>
> UADD TEMP[0].x, TEMP[0].x, -1006
> UARL ADDR[0], TEMP[0].x
> MOV OUT[ADDR[0]+6], IMM[0]
>
> This hack helps for this case, but the drivers which do move outputs to temps 
> are still unable to allocate registers efficiently, because there is no way 
> to know the actual array size.
>
> This patch series adds proper TGSI support for IN/OUT arrays. It works in the 
> same way as temp arrays and it's a requirement for tessellation.
>
> Please review.
>
> Marek
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to