Overall, this looks like a good idea to me. Probably needs some changes
in our internal code but the idea is quite sane.

Roland

Am 24.05.2015 um 13:19 schrieb Marek Olšák:
> 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
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Vjtt0vs_iqoI31UfJxBl7yv9I2FeiaeAYgMTLKRBc_I&m=dS0ucK9FuuSdcbnt4s0qhRBgFja_cLvjtixh9CaYjPc&s=ta_2hl9KvbY_ta-8iuUigKSHVWY1HsYcyPczQmh_c8s&e=
>  
> 

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to