Module: vkd3d Branch: master Commit: 5b5c020ade430ad859837376772ce88174b15476 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/5b5c020ade430ad859837376772ce8...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Feb 24 11:39:45 2023 +0100
vkd3d-shader/hlsl: Improve handling of builtin alias type "matrix".
---
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 64d6e870..f84b60fe 100644 --- a/libs/vkd3d-shader/hlsl.c +++ b/libs/vkd3d-shader/hlsl.c @@ -614,6 +614,7 @@ static const char * get_case_insensitive_typename(const char *name) { "dword", "float", + "matrix", }; unsigned int i;
@@ -2845,7 +2846,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); +}