From: Nikolay Sivov nsivov@codeweavers.com
--- libs/vkd3d-shader/hlsl.c | 3 ++- tests/hlsl-type-names.shader_test | 32 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c index d15abe50..b9b37eea 100644 --- a/libs/vkd3d-shader/hlsl.c +++ b/libs/vkd3d-shader/hlsl.c @@ -610,6 +610,7 @@ static const char * get_case_insensitive_typename(const char *name) { "dword", "float", + "matrix", }; unsigned int i;
@@ -2841,7 +2842,7 @@ static void declare_predefined_types(struct hlsl_ctx *ctx) {"dword", HLSL_CLASS_SCALAR, HLSL_TYPE_UINT, 1, 1}, {"float", HLSL_CLASS_SCALAR, HLSL_TYPE_FLOAT, 1, 1}, {"VECTOR", HLSL_CLASS_VECTOR, HLSL_TYPE_FLOAT, 4, 1}, - {"MATRIX", HLSL_CLASS_MATRIX, HLSL_TYPE_FLOAT, 4, 4}, + {"matrix", HLSL_CLASS_MATRIX, HLSL_TYPE_FLOAT, 4, 4}, {"STRING", HLSL_CLASS_OBJECT, HLSL_TYPE_STRING, 1, 1}, {"TEXTURE", HLSL_CLASS_OBJECT, HLSL_TYPE_TEXTURE, 1, 1}, {"PIXELSHADER", HLSL_CLASS_OBJECT, HLSL_TYPE_PIXELSHADER, 1, 1}, diff --git a/tests/hlsl-type-names.shader_test b/tests/hlsl-type-names.shader_test index e88f1cda..69510b34 100644 --- a/tests/hlsl-type-names.shader_test +++ b/tests/hlsl-type-names.shader_test @@ -2,6 +2,7 @@ typedef float2 Dword; typedef float3 dWord; typedef float2 fLoat; +typedef float2 mAtrix;
float4 f() { @@ -10,6 +11,9 @@ float4 f() dword v1 = {1, 2}; float v2 = {2, 3}; DWORD v4 = 4; + mAtrix v5 = {1, 2}; + maTrix v6 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; + matrix v7 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; return float4(v1.x, v2.x, v2.y, v4); }
@@ -55,3 +59,31 @@ float4 main() : sv_target { return float4(0, 0, 0, 0); } + +[pixel shader fail] +typedef float2 matrix; + +float4 main() : sv_target +{ + return float4(0, 0, 0, 0); +} + +[pixel shader fail] +float4 f() +{ + typedef float2 matrix; + return float4(0, 0, 0, 0); +} + +float4 main() : SV_TARGET +{ + return f(); +} + +[pixel shader fail] +Matrix<float, 2, 2> m; + +float4 main() : sv_target +{ + return float4(0, 0, 0, 0); +}