Module: vkd3d Branch: master Commit: af652874236825405ac5e4a26333b79d98f2aa76 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/af652874236825405ac5e4a26333b7...
Author: Zebediah Figura zfigura@codeweavers.com Date: Tue Mar 29 16:56:03 2022 -0500
vkd3d-shader/hlsl: Check for majority modifiers on non-matrices in apply_type_modifiers().
---
libs/vkd3d-shader/hlsl.y | 7 ++++--- tests/majority-syntax.shader_test | 10 +++++----- 2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y index 2b62eccf..da78d291 100644 --- a/libs/vkd3d-shader/hlsl.y +++ b/libs/vkd3d-shader/hlsl.y @@ -903,6 +903,10 @@ static struct hlsl_type *apply_type_modifiers(struct hlsl_ctx *ctx, struct hlsl_ else default_majority = HLSL_MODIFIER_ROW_MAJOR; } + else if (type->type != HLSL_CLASS_MATRIX) + { + check_invalid_matrix_modifiers(ctx, *modifiers, loc); + }
if (!default_majority && !(*modifiers & HLSL_TYPE_MODIFIERS_MASK)) return type; @@ -2041,9 +2045,6 @@ static struct list *declare_vars(struct hlsl_ctx *ctx, struct hlsl_type *basic_t } vkd3d_free(v->arrays.sizes);
- if (type->type != HLSL_CLASS_MATRIX) - check_invalid_matrix_modifiers(ctx, modifiers, v->loc); - if (modifiers & (HLSL_STORAGE_IN | HLSL_STORAGE_OUT)) { struct vkd3d_string_buffer *string; diff --git a/tests/majority-syntax.shader_test b/tests/majority-syntax.shader_test index 63ba18f3..4ab385a5 100644 --- a/tests/majority-syntax.shader_test +++ b/tests/majority-syntax.shader_test @@ -48,7 +48,7 @@ float4 main() : sv_target return 0; }
-[pixel shader fail todo] +[pixel shader fail] column_major float4 f;
float4 main() : sv_target @@ -68,7 +68,7 @@ float4 main() : sv_target return 0; }
-[pixel shader fail todo] +[pixel shader fail] struct apple { float4x4 m; @@ -80,7 +80,7 @@ float4 main() : sv_target return 0; }
-[pixel shader fail todo] +[pixel shader fail] typedef float4x4 myarray_t[2];
row_major myarray_t a; @@ -90,13 +90,13 @@ float4 main() : sv_target return 0; }
-[pixel shader fail todo] +[pixel shader fail] float4 main(uniform row_major float4 f) : sv_target { return 0; }
-[pixel shader fail todo] +[pixel shader fail] struct apple { row_major float4 f;