r300: deqp regressions from "glsl: enable the use of the nir based varying linker"
There is a bunch of regression from 7647023f by @tarceri with r300 driver.
Regressed dEQPs:
dEQP-GLES2.functional.shaders.random.basic_expression.combined.12
dEQP-GLES2.functional.shaders.random.basic_expression.combined.30
dEQP-GLES2.functional.shaders.random.basic_expression.combined.63
dEQP-GLES2.functional.shaders.random.basic_expression.combined.66
dEQP-GLES2.functional.shaders.random.conditionals.combined.14
dEQP-GLES2.functional.shaders.random.conditionals.combined.48
For example with dEQP-GLES2.functional.shaders.random.conditionals.combined.48
, this is what we got from ntt before:
r300: Initial fragment program
FRAG
PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1
DCL IN[0], GENERIC[9], PERSPECTIVE
DCL IN[1].xy, GENERIC[10], PERSPECTIVE
DCL OUT[0], COLOR
DCL CONST[0][0]
DCL TEMP[0]
IMM[0] FLT32 { -6.0000, 0.0000, 0.0000, 0.0000}
0: MOV TEMP[0].x, IMM[0].xxxx
1: MOV TEMP[0].yz, IN[1].yyxx
2: MOV TEMP[0].w, CONST[0][0].xxxx
3: ADD OUT[0], TEMP[0], IN[0].wxzy
4: END
This is what we receive now:
r300: Initial fragment program
FRAG
PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1
DCL IN[0], GENERIC[9], PERSPECTIVE
DCL IN[1].x, GENERIC[10], PERSPECTIVE
DCL IN[2].x, GENERIC[11], CONSTANT
DCL OUT[0], COLOR
DCL CONST[0][0]
DCL TEMP[0]
IMM[0] FLT32 {-1061158912.0000, 0.0000, 0.0000, 0.0000}
0: MOV TEMP[0].x, IMM[0].xxxx
1: MOV TEMP[0].y, IN[2].xxxx
2: MOV TEMP[0].z, IN[1].xxxx
3: MOV TEMP[0].w, CONST[0][0].xxxx
4: ADD OUT[0], TEMP[0], IN[0].wxzy
5: END
So obviously there is now one more instruction, but more importantly IMM[0]
is now wrong. It seems the
vec1 32 ssa_4 = load_const (0xc0c00000 = -6.000000)
gets messed up in nir_lower_int_to_float
to vec1 32 ssa_4 = load_const (0xce7d0000 = -1061158912.000000)
.
While I spotted this with dEQP, this likely affects also a bunch of real world apps because I see some changes in constant inlining with shader-db.
Shader-db also shows small instructions regression:
total instructions in shared programs: 123718 -> 123795 (0.06%)
instructions in affected programs: 5145 -> 5222 (1.50%)
helped: 28
HURT: 64
helped stats (abs) min: 1 max: 4 x̄: 1.75 x̃: 1
helped stats (rel) min: 0.87% max: 12.00% x̄: 4.55% x̃: 4.13%
HURT stats (abs) min: 1 max: 4 x̄: 1.97 x̃: 2
HURT stats (rel) min: 0.50% max: 27.27% x̄: 13.11% x̃: 7.69%
95% mean confidence interval for instructions value: 0.43 1.25
95% mean confidence interval for instructions %-change: 5.09% 10.38%
Instructions are HURT.
This looks mostly similar similar to the shader above, i.e., some inputs were packed before and are not now...