Zebediah Figura : vkd3d-shader: Allow static const variables to lack an initializer.

Alexandre Julliard julliard at winehq.org
Mon Mar 22 16:48:26 CDT 2021


Module: vkd3d
Branch: master
Commit: 0c1c916ad7a64ecb97bab7645c841f4729f7feef
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=0c1c916ad7a64ecb97bab7645c841f4729f7feef

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Thu Mar 18 00:22:23 2021 -0500

vkd3d-shader: Allow static const variables to lack an initializer.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/hlsl.y                  | 3 ++-
 tests/hlsl-invalid.shader_test            | 7 +++++++
 tests/hlsl-static-initializer.shader_test | 3 ++-
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y
index c12b4e9..45767de 100644
--- a/libs/vkd3d-shader/hlsl.y
+++ b/libs/vkd3d-shader/hlsl.y
@@ -1472,7 +1472,8 @@ static struct list *declare_vars(struct hlsl_ctx *ctx, struct hlsl_type *basic_t
             local = false;
         }
 
-        if (type->modifiers & HLSL_MODIFIER_CONST && !(var->modifiers & HLSL_STORAGE_UNIFORM) && !v->initializer.args_count)
+        if ((type->modifiers & HLSL_MODIFIER_CONST) && !v->initializer.args_count
+                && !(var->modifiers & (HLSL_STORAGE_STATIC | HLSL_STORAGE_UNIFORM)))
         {
             hlsl_error(ctx, v->loc, VKD3D_SHADER_ERROR_HLSL_MISSING_INITIALIZER,
                     "Const variable \"%s\" is missing an initializer.", var->name);
diff --git a/tests/hlsl-invalid.shader_test b/tests/hlsl-invalid.shader_test
index 16e75d0..370d84d 100644
--- a/tests/hlsl-invalid.shader_test
+++ b/tests/hlsl-invalid.shader_test
@@ -115,3 +115,10 @@ float4 main() : sv_target
 {
     return 0;
 }
+
+[pixel shader fail]
+float4 main() : sv_target
+{
+    const float4 x;
+    return x;
+}
diff --git a/tests/hlsl-static-initializer.shader_test b/tests/hlsl-static-initializer.shader_test
index 9b9d000..9c48651 100644
--- a/tests/hlsl-static-initializer.shader_test
+++ b/tests/hlsl-static-initializer.shader_test
@@ -5,9 +5,10 @@ float myfunc()
 }
 static float a = myfunc() + 0.2;
 static float b;
+static const float c;
 float4 main() : sv_target
 {
-    return float4(a, b, 0, 0);
+    return float4(a, b, c, 0);
 }
 
 [test]




More information about the wine-cvs mailing list