[Mesa-dev] [PATCH 01/10] tgsi: add Texture and Format to tgsi_instruction_memory
Hans de Goede
hdegoede at redhat.com
Sun Mar 20 21:59:28 UTC 2016
Hi Ilia
On 20-03-16 21:17, Ilia Mirkin wrote:
> Hi Nicolai,
>
> Looks like this results in uninitialized formats when parsing text, so
> a shader which looks like this:
I already have a fix for this ready:
https://cgit.freedesktop.org/~jwrdegoede/mesa/commit/?id=e0e4b87dcc990fa829ca88ca4ff82881c7585923
Which has multiple reviewed-by-s feel free to cherry pick and push this
(I'm still waiting to get commit access).
Regards,
Hans
>
> COMP
> DCL SV[0], BLOCK_ID
> DCL SV[1], GRID_SIZE
> DCL SAMP[0]
> DCL SAMP[1]
> DCL SAMP[2]
> DCL SAMP[3]
> DCL SAMP[4]
> DCL SAMP[5]
> DCL SAMP[6]
> DCL SAMP[7]
> DCL BUFFER[16]
> DCL BUFFER[17]
> DCL CONST[8..11]
> DCL TEMP[0..3], LOCAL
> DCL ADDR[0..2]
> IMM[0] UINT32 {16, 64, 32, 48}
> 0: UMUL TEMP[0].x, SV[1].xxxx, SV[1].yyyy
> 1: UMUL TEMP[0].x, TEMP[0].xxxx, SV[0].zzzz
> 2: UMAD TEMP[0].x, SV[1].xxxx, SV[0].yyyy, TEMP[0].xxxx
> 3: UADD TEMP[0].x, TEMP[0].xxxx, SV[0].xxxx
> 4: UMUL TEMP[1].x, TEMP[0].xxxx, IMM[0].xxxx
> 5: LOAD TEMP[1].xyz, BUFFER[17], TEMP[1].xxxx
> 6: UMUL TEMP[2].x, TEMP[0].xxxx, IMM[0].yyyy
> 7: MOV TEMP[3].xyz, TEMP[1].xyzz
> 8: UARL ADDR[2].x, CONST[8].xxxx
> 9: TEX TEMP[3], TEMP[3], SAMP[ADDR[2].x], 2D_ARRAY
> 10: STORE BUFFER[16], TEMP[2].xxxx, TEMP[3]
> 11: UMAD TEMP[2].x, TEMP[0].xxxx, IMM[0].yyyy, IMM[0].xxxx
> 12: MOV TEMP[3].xyz, TEMP[1].xyzz
> 13: UARL ADDR[2].x, CONST[9].xxxx
> 14: TEX TEMP[3], TEMP[3], SAMP[ADDR[2].x], 2D_ARRAY
> 15: STORE BUFFER[16], TEMP[2].xxxx, TEMP[3]
> 16: UMAD TEMP[2].x, TEMP[0].xxxx, IMM[0].yyyy, IMM[0].zzzz
> 17: MOV TEMP[3].xyz, TEMP[1].xyzz
> 18: UARL ADDR[2].x, CONST[10].xxxx
> 19: TEX TEMP[3], TEMP[3], SAMP[ADDR[2].x], 2D_ARRAY
> 20: STORE BUFFER[16], TEMP[2].xxxx, TEMP[3]
> 21: UMAD TEMP[0].x, TEMP[0].xxxx, IMM[0].yyyy, IMM[0].wwww
> 22: MOV TEMP[1].xyz, TEMP[1].xyzz
> 23: UARL ADDR[2].x, CONST[11].xxxx
> 24: TEX TEMP[1], TEMP[1], SAMP[ADDR[2].x], 2D_ARRAY
> 25: STORE BUFFER[16], TEMP[0].xxxx, TEMP[1]
> 26: END
>
> No longer loads properly (or rather, fails when dumped again). Can you
> fix this up so that the round trip works as expected? You can test
> locally with ./src/gallium/drivers/nouveau/nouveau_compiler -a c0 (or
> -a e4), which accepts a TGSI file argument (or - for stdin).
>
> Thanks,
>
> -ilia
>
> On Sun, Mar 13, 2016 at 10:29 AM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
>> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>>
>> Frontends should have this information readily available, and it simplifies
>> image LOAD/STORE/ATOM* handling especially with indirect image access.
>> ---
>> src/gallium/auxiliary/tgsi/tgsi_dump.c | 8 ++++++++
>> src/gallium/include/pipe/p_shader_tokens.h | 4 +++-
>> 2 files changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c b/src/gallium/auxiliary/tgsi/tgsi_dump.c
>> index f232f38..c8b91bb 100644
>> --- a/src/gallium/auxiliary/tgsi/tgsi_dump.c
>> +++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c
>> @@ -637,6 +637,14 @@ iter_instruction(
>> TXT(", ");
>> ENM(bit, tgsi_memory_names);
>> }
>> + if (inst->Memory.Texture) {
>> + TXT( ", " );
>> + ENM( inst->Memory.Texture, tgsi_texture_names );
>> + }
>> + if (inst->Memory.Format) {
>> + TXT( ", " );
>> + TXT( util_format_name(inst->Memory.Format) );
>> + }
>> }
>>
>> switch (inst->Instruction.Opcode) {
>> diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
>> index 9d4a96a..34e491e 100644
>> --- a/src/gallium/include/pipe/p_shader_tokens.h
>> +++ b/src/gallium/include/pipe/p_shader_tokens.h
>> @@ -743,7 +743,9 @@ struct tgsi_dst_register
>> struct tgsi_instruction_memory
>> {
>> unsigned Qualifier : 3; /* TGSI_MEMORY_ */
>> - unsigned Padding : 29;
>> + unsigned Texture : 8; /* only for images: TGSI_TEXTURE_ */
>> + unsigned Format : 10; /* only for images: PIPE_FORMAT_ */
>> + unsigned Padding : 11;
>> };
>>
>> #define TGSI_MEMBAR_SHADER_BUFFER (1 << 0)
>> --
>> 2.5.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list