From: Francisco Casas fcasas@codeweavers.com
--- tests/hlsl/default-values.shader_test | 72 +++++++++++++++++++++++++++ 1 file changed, 72 insertions(+)
diff --git a/tests/hlsl/default-values.shader_test b/tests/hlsl/default-values.shader_test index af724689f..911a683fa 100644 --- a/tests/hlsl/default-values.shader_test +++ b/tests/hlsl/default-values.shader_test @@ -66,6 +66,78 @@ float4 main() : sv_target }
+[pixel shader] +cbuffer buff +{ + float2 a = {1, 2}; + float4x2 b = {1, 2, 3, 4, 5, 6, 7, 8}; +} + +float4 main() : sv_target +{ + return float4(a, b[2]); +} + + +[pixel shader fail(sm<6) todo] +cbuffer buff +{ + float a = 7; + float4 b = a; // initial value must be a literal expression. +} + +float4 main() : sv_target { return 0; } + + +[pixel shader fail(sm<6) todo] +cbuffer buff +{ + float a = 7; + float4 b = {1, 2, a, 4}; // initial value must be a literal expression. +} + +float4 main() : sv_target { return 0; } + + +[pixel shader] +static const float a = 7; + +cbuffer buff +{ + float4 b = {1, 2, a, 4}; // static constant values are allowed on the initializer. +} + +float4 main() : sv_target { return 0; } + + +[pixel shader] +cbuffer buff +{ + float2 a = {1, 2}; + float4 b = {3, 5, float2(4, 4)}; // numeric type initializers are allowed. +} + +float4 main() : sv_target +{ + return 2 * b; +} + + +[pixel shader] +cbuffer buff +{ + struct apple + { + float3 a[2]; + int2x2 b; + } ap = {1, 2, 3, 4, 5, 6, 7.5, 8, 9, 10}; +} + +float4 main() : sv_target +{ + return float4(ap.b); +} + [require] shader model >= 5.0