diff --git a/Makefile.am b/Makefile.am index c8671510..1c8ef123 100644 --- a/Makefile.am +++ b/Makefile.am @@ -88,6 +88,7 @@ vkd3d_shader_tests = \ tests/hlsl/compute.shader_test \ tests/hlsl/conditional.shader_test \ tests/hlsl/const.shader_test \ + tests/hlsl/constructgswithso.shader_test \ tests/hlsl/coverage.shader_test \ tests/hlsl/cross.shader_test \ tests/hlsl/d3dcolor-to-ubyte4.shader_test \ diff --git a/tests/hlsl/constructgswithso.shader_test b/tests/hlsl/constructgswithso.shader_test new file mode 100644 index 00000000..0ea82708 --- /dev/null +++ b/tests/hlsl/constructgswithso.shader_test @@ -0,0 +1,35 @@ +[pixel shader todo] +float4 main() : sv_target { return 0; } + +GeometryShader gs1 = CompileShader(gs_5_0, main()); +GeometryShader gs2 = ConstructGSWithSO(gs1, "random_string", "another_string", NULL, NULL, 1); + +technique11 +{ + pass + { + SetGeometryShader(gs2); + } +} + +% ConstructGSWithSO for pixel shaders parses with either 2 or 6 arguments, without doing type checking. +[pixel shader fail(sm<6)] +float4 main() : sv_target { return 0; } +GeometryShader gs1 = CompileShader(gs_5_0, main()); +GeometryShader gs2 = ConstructGSWithSO(gs1); + +[pixel shader todo] +float4 main() : sv_target { return 0; } +GeometryShader gs2 = ConstructGSWithSO("foo", "bar"); + +[pixel shader fail(sm<6)] +float4 main() : sv_target { return 0; } +GeometryShader gs2 = ConstructGSWithSO(1, 2, 3); + +[pixel shader todo] +float4 main() : sv_target { return 0; } +GeometryShader gs2 = ConstructGSWithSO("foo", "bar", float2(42, 42), 3, 4, NULL); + +[pixel shader fail(sm<6)] +float4 main() : sv_target { return 0; } +GeometryShader gs2 = ConstructGSWithSO(1, 2, 3, 4, 5, 6, 7);