Module: vkd3d Branch: master Commit: dd36215a00174a1db560021562bad84cd37e3071 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/dd36215a00174a1db560021562bad8...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Tue Feb 21 23:59:04 2023 +0100
vkd3d-shader/hlsl: Support case-insensitive lookup for builtin 'float' type.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com
---
libs/vkd3d-shader/hlsl.c | 3 ++- tests/hlsl-type-names.shader_test | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c index c2c694ba..d15abe50 100644 --- a/libs/vkd3d-shader/hlsl.c +++ b/libs/vkd3d-shader/hlsl.c @@ -609,6 +609,7 @@ static const char * get_case_insensitive_typename(const char *name) static const char *const names[] = { "dword", + "float", }; unsigned int i;
@@ -2838,7 +2839,7 @@ static void declare_predefined_types(struct hlsl_ctx *ctx) effect_types[] = { {"dword", HLSL_CLASS_SCALAR, HLSL_TYPE_UINT, 1, 1}, - {"FLOAT", HLSL_CLASS_SCALAR, HLSL_TYPE_FLOAT, 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}, {"STRING", HLSL_CLASS_OBJECT, HLSL_TYPE_STRING, 1, 1}, diff --git a/tests/hlsl-type-names.shader_test b/tests/hlsl-type-names.shader_test index f90ea587..e88f1cda 100644 --- a/tests/hlsl-type-names.shader_test +++ b/tests/hlsl-type-names.shader_test @@ -1,20 +1,25 @@ [pixel shader] typedef float2 Dword; typedef float3 dWord; +typedef float2 fLoat;
float4 f() { typedef Dword dword; + typedef fLoat float; dword v1 = {1, 2}; + float v2 = {2, 3}; DWORD v4 = 4; - return float4(v1.x, v1.y, 3, v4); + return float4(v1.x, v2.x, v2.y, v4); }
float4 f2() { typedef dword dword; - dword v = 1; - return float4(v, v, v, v); + typedef float float; + dword v1 = 1; + float v2 = 1; + return float4(v1, v2, v1, v1); }
float4 main() : SV_TARGET @@ -42,3 +47,11 @@ float4 main() : sv_target { return float4(0, 0, 0, 0); } + +[pixel shader fail] +typedef float2 float; + +float4 main() : sv_target +{ + return float4(0, 0, 0, 0); +}