tests: Add a test for arrays with an expression as the index.

Currently, the compiler requires that dereferences be HLSL_IR_CONSTANT, so that
it can compute the offset at compile time. However, scenarios such as this test
will produce a dereference with HLSL_IR_EXPR, which will generate an error.

Passing this test in particular will require adding support for SM4 relative
addressing, as well as support for non-constant indexing in general.

Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
This commit is contained in:
Ethan Lee 2023-04-28 22:28:05 -04:00 committed by Alexandre Julliard
parent bb680e73de
commit aa17d139be
Notes: Alexandre Julliard 2023-05-29 22:32:19 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Zebediah Figura (@zfigura)
Approved-by: Francisco Casas (@fcasas)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/189
2 changed files with 26 additions and 0 deletions

View File

@ -50,6 +50,7 @@ vkd3d_shader_tests = \
tests/arithmetic-int.shader_test \ tests/arithmetic-int.shader_test \
tests/arithmetic-int-uniform.shader_test \ tests/arithmetic-int-uniform.shader_test \
tests/arithmetic-uint.shader_test \ tests/arithmetic-uint.shader_test \
tests/array-index-expr.shader_test \
tests/array-parameters.shader_test \ tests/array-parameters.shader_test \
tests/asfloat.shader_test \ tests/asfloat.shader_test \
tests/asuint.shader_test \ tests/asuint.shader_test \

View File

@ -0,0 +1,25 @@
[pixel shader todo]
uniform float4 f[3];
uniform float2 i;
float4 main() : sv_target
{
return f[i.x + i.y];
}
[test]
uniform 0 float4 1.0 2.0 3.0 4.0
uniform 4 float4 5.0 6.0 7.0 8.0
uniform 8 float4 9.0 10.0 11.0 12.0
uniform 12 float4 0 0 0 0
todo draw quad
todo probe all rgba (1.0, 2.0, 3.0, 4.0)
uniform 12 float4 1 0 0 0
todo draw quad
todo probe all rgba (5.0, 6.0, 7.0, 8.0)
uniform 12 float4 0 1 0 0
todo draw quad
todo probe all rgba (5.0, 6.0, 7.0, 8.0)
uniform 12 float4 1 1 0 0
todo draw quad
todo probe all rgba (9.0, 10.0, 11.0, 12.0)