[Mesa-dev] [PATCH] r600/sb: remove superfluos assert

Vadim Girlin vadimgirlin at gmail.com
Tue Sep 12 17:25:18 UTC 2017


On 09/12/2017 12:49 PM, Gert Wollny wrote:
> Am Dienstag, den 12.09.2017, 09:56 +0300 schrieb Vadim Girlin:
>> On 09/11/2017 07:09 PM, Emil Velikov wrote:
> 
>> Anyway, if num_arrays is 0 there, I suspect it can be a result of
>> some other issue. At the very least it looks like a potential
>> performance problem, because in that case we assume all shader
>> registers can be  accessed with indirect addressing and it can limit
>> the optimizations significantly. So it might make sense to figure out
>> why it's zero in the first place, in theory it shouldn't happen.
>> Maybe something is wrong with the indirect_files bits?
> 
> The shader that's failing is this (i.e. no arrays, and indirect access
> only to SV).

Is the tested feature really supported by r600g? AFAICS the indirect 
index value is unused in the shader code.

Anyway, at first glance it looks like we don't need indirect addressing 
for GPRs in this case, so the outer "if" around that assert probably 
should handle this case too and skip the assert. I'm not 100% sure though.

> 
> FRAG
> DCL SV[0], SAMPLEMASK
> DCL OUT[0], COLOR
> DCL CONST[0][0]
> DCL TEMP[0..1], LOCAL
> DCL ADDR[0]
> IMM[0] FLT32 {    1.0000,     0.0000,     0.0000,     0.0000}
> IMM[1] INT32 {1, 0, 0, 0}
>    0: MOV TEMP[0], IMM[0].xyyx
>    1: UARL ADDR[0].x, CONST[0][0].xxxx
>    2: USEQ TEMP[1].x, SV[ADDR[0].x].xxxx, IMM[1].xxxx
>    3: UIF TEMP[1].xxxx
>    4:   MOV TEMP[0].xy, IMM[0].yxyy
>    5: ENDIF
>    6: MOV OUT[0], TEMP[0]
>    7: END
> 
> ===== SHADER #12 ======================================
> PS/BARTS/EVERGREEN =====
> ===== 36 dw ===== 8 gprs ===== 1 stack
> =========================================
> 0000  40000005 a4180000 ALU_PUSH_BEFORE 7 @10 KC0[CB0:0-15]
> 0010  000000f9 00400c90     1     x: MOV                R2.x,  1.0
> 0012  000004f8 20400c90           y: MOV                R2.y,  0
> 0014  000004f8 40400c90           z: MOV                R2.z,  0
> 0016  000000f9 60400c90           w: MOV                R2.w,  1.0
> 0018  80000080 00800c90           t: MOV                R4.x,  KC0[0].x
> 0020  801f4800 00601d10     2     x: SETE_INT           R3.x,  R0.z, 1
> 0022  801f00fe 00e0229c     3 MP  x: PRED_SETNE_INT     R7.x,  PV.x, 0
> 0002  00000003 82800001 JUMP @6 POP:1
> 0004  0000000c a8040000 ALU_POP_AFTER 2 @24
> 0024  000004f8 00400c90     4     x: MOV                R2.x,  0
> 0026  800000f9 20400c90           y: MOV                R2.y,  1.0
> 0006  0000000e a00c0000 ALU 4 @28
> 0028  00000002 00200c90     5     x: MOV                R1.x,  R2.x
> 0030  00000402 20200c90           y: MOV                R1.y,  R2.y
> 0032  00000802 40200c90           z: MOV                R1.z,  R2.z
> 0034  80000c02 60200c90           w: MOV                R1.w,  R2.w
> 0008  c0008000 95200688 EXPORT_DONE        PIXEL 0     R1.xyzw  EOP
> ===== SHADER_END
> 



More information about the mesa-dev mailing list