[Mesa-dev] [RFC] Solving the TGSI indirect addressing optimization problem

Christoph Bumiller e0425955 at student.tuwien.ac.at
Mon Mar 11 13:46:46 PDT 2013


On 11.03.2013 19:33, Brian Paul wrote:
> On 03/11/2013 06:44 AM, Christian König wrote:
>> Hi everybody,
>>
>> this problem has been open for quite some time now, with a bunch of
>> different
>> opinions and sometimes even patches floating on the list.
>>
>> The solutions proposed or implemented so far all more or less
>> incomplete, so
>> this approach was designed in mind with both completeness and
>> compatibility
>> with existing code.
>>
>> Over all it's just an implementation of what Tom Stellard named
>> solution #4 in
>> this eMail thread:
>> http://lists.freedesktop.org/archives/mesa-dev/2013-January/033264.html
>>
>> Please review and as usual comments are welcome,
>
> I still don't quite get what's going on here.
>
> In Christoph's reply, it seems he tested your patch and got TGSI code
> that looks like this:
>
> DCL IN[0]
> DCL IN[1]
> DCL IN[2]
> DCL OUT[0], POSITION
> DCL OUT[1], GENERIC[12]
> DCL OUT[2], GENERIC[13]
> DCL OUT[3], GENERIC[14]
> DCL OUT[4], GENERIC[15]
> DCL CONST[0..1]
> DCL TEMP[0..3], LOCAL
> DCL TEMP[4], LOCAL
> DCL ADDR[0]
> IMM[0] FLT32 {    0.0000,     0.0000,     0.0000,     0.0000}
>   0: UARL ADDR[0].x, CONST[1].xxxx
>   1: MOV TEMP[4], IN[ADDR[0].x] <<< (not the bug) but this is invalid as
> there is no IN array, just single ones
>   2: MOV TEMP[0], IN[0]
>   3: MOV TEMP[1], IN[1]
>   4: MOV TEMP[2], IMM[0].xxxx
>   5: MOV TEMP[3], IMM[0].xxxx
>   6: UARL ADDR[0].x, CONST[0].xxxx
>   7: MOV TEMP[1][ADDR[0].x], IN[2]
>
> What exactly does "LOCAL" mean on the temp declarations?
>
That the register isn't used for parameter passing between subroutines.
Has been introduced a long time ago.
See commit 2644952bd4dfa3b75112dee8dfd287a12d770705.

> But in Jose's example, he wrote:
>
>   DCL TEMP[1][0..70]
>   DCL TEMP[2][0..7]
>   MOV OUT[1], TEMP[1][ADDR[0].x]
>
> In this code, each chunk of temporaries has an explicit name as Marek
> suggested in his comments to the "#4" proposal.
>

The point is that TEMP (and all other spaces likewise) are still a
single space, i.e. without duplicate indices. The only real change is
that an indirect access is supplied with the index of the declaration of
which the range will be accessed.

> What exactly is your proposal doing?
>
> Can you please provide some more sample TGSI code to illustrate what
> you're doing?  And, how it would be extended for inputs/outputs?
>
> Thanks.
>
> -Brian
>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>



More information about the mesa-dev mailing list