vkd3d/tests/hlsl/numthreads.shader_test
Francisco Casas 19c23ca6f2 tests/shader_runner: Replace spaces with dashes in format names.
Probably good if we want to allow specifying several formats in the same
line, separated by spaces.

While at it, rename "r32g32 int" to "r32g32-sint".
2024-08-22 16:01:37 +02:00

195 lines
2.8 KiB
Plaintext

% Test allowed syntax for the "numthreads" attribute.
[require]
shader model >= 5.0
[compute shader]
[numthreads(1, 1, 1)]
void main() {}
[compute shader fail]
[numthreads]
void main() {}
[compute shader fail]
[numthreads(1, 1)]
void main() {}
[compute shader fail]
[numthreads(1, 1, 1, 1)]
void main() {}
[compute shader fail]
[numthreads(0, 1, 1)]
void main() {}
[compute shader fail]
[numthreads(1, 0, 1)]
void main() {}
[compute shader fail]
[numthreads(1, 1, 0)]
void main() {}
[compute shader fail todo]
[numthreads(-1, 1, 1)]
void main() {}
[compute shader fail todo]
[numthreads(1, -1, 1)]
void main() {}
[compute shader fail todo]
[numthreads(1, 1, -1)]
void main() {}
[compute shader fail todo]
[numthreads(1, -1, -1)]
void main() {}
[compute shader todo]
[numthreads(uint(1), 1, 1)]
void main() {}
[compute shader todo]
[numthreads(int(1), 1, 1)]
void main() {}
[compute shader fail]
[numthreads(float(1), 1, 1)]
void main() {}
[compute shader fail]
[numthreads(uint1(1), 1, 1)]
void main() {}
[compute shader todo]
[numthreads(int(1), 1, 1)]
void main() {}
[compute shader todo]
[numthreads(1 + 1, 1, 1)]
void main() {}
[compute shader fail]
[numthreads("1", 1, 1)]
void main() {}
[compute shader todo fail(sm>=6)]
static int x = 1;
[numthreads(x, 1, 1)]
void main() {}
[compute shader fail]
void main() {}
[compute shader fail(sm<6)]
[NumThreads(1, 1, 1)]
void main() {}
[compute shader]
[numthreads(1, 1, 1)]
void main();
void main() {}
[compute shader fail]
void main() {}
[numthreads(1, 1, 1)]
void main();
[compute shader fail(sm<6)]
void main();
[numthreads(1, 1, 1)]
void main() {}
[compute shader fail todo]
/* Expressions with side effects are forbidden in attributes (but not if the
* attribute is ignored). */
static int x = 1;
[numthreads(x++, 1, 1)]
void main() {}
[compute shader fail todo]
static int x = 1;
[numthreads(++x, 1, 1)]
void main() {}
[compute shader fail todo]
static int x = 1;
[numthreads((x = 2), 1, 1)]
void main() {}
[compute shader fail(sm>=6)]
static int x = 1;
[numthreads(++x, 1, 1)]
void func() {}
[bogus(++x)]
[numthreads(1, 1, 1)]
void main() { func(); }
[uav 0]
format r32-float
size (2d, 2, 2)
1.0 1.0
1.0 1.0
[compute shader]
/* In SM < 6.0, attributes are taken from the first function, and dropped from the second. */
RWTexture2D<float> u;
[numthreads(2, 1, 1)]
void main(uint2 id);
[numthreads(1, 2, 1)]
void main(uint2 id : sv_dispatchthreadid)
{
u[id] = 2.0;
}
[test]
todo(glsl) dispatch 1 1 1
probe uav 0 (0, 0) r (2.0)
if(sm<6) probe uav 0 (0, 1) r (1.0)
if(sm<6) probe uav 0 (1, 0) r (2.0)
probe uav 0 (1, 1) r (1.0)
if(sm>=6) probe uav 0 (0, 1) r (2.0)
if(sm>=6) probe uav 0 (1, 0) r (1.0)