mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader: Allow declarations to specify type modifiers redundant with the type.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b38f94cfdc
commit
1dbb146454
@ -57,6 +57,7 @@ vkd3d_shader_tests = \
|
||||
tests/conditional.shader_test \
|
||||
tests/hlsl-array-dimension.shader_test \
|
||||
tests/hlsl-comma.shader_test \
|
||||
tests/hlsl-duplicate-modifiers.shader_test \
|
||||
tests/hlsl-invalid.shader_test \
|
||||
tests/hlsl-majority-pragma.shader_test \
|
||||
tests/hlsl-majority-typedef.shader_test \
|
||||
@ -256,6 +257,7 @@ XFAIL_TESTS = \
|
||||
tests/conditional.shader_test \
|
||||
tests/hlsl-array-dimension.shader_test \
|
||||
tests/hlsl-comma.shader_test \
|
||||
tests/hlsl-duplicate-modifiers.shader_test \
|
||||
tests/hlsl-majority-pragma.shader_test \
|
||||
tests/hlsl-majority-typedef.shader_test \
|
||||
tests/hlsl-nested-arrays.shader_test \
|
||||
|
@ -659,9 +659,13 @@ static struct hlsl_type *apply_type_modifiers(struct hlsl_ctx *ctx, struct hlsl_
|
||||
if (!(new_type = hlsl_type_clone(ctx, type, default_majority)))
|
||||
return NULL;
|
||||
|
||||
new_type->modifiers = add_modifiers(ctx, new_type->modifiers, *modifiers, loc);
|
||||
new_type->modifiers |= *modifiers;
|
||||
*modifiers &= ~HLSL_TYPE_MODIFIERS_MASK;
|
||||
|
||||
if ((new_type->modifiers & HLSL_MODIFIER_ROW_MAJOR) && (new_type->modifiers & HLSL_MODIFIER_COLUMN_MAJOR))
|
||||
hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER,
|
||||
"'row_major' and 'column_major' modifiers are mutually exclusive.");
|
||||
|
||||
if (new_type->type == HLSL_CLASS_MATRIX)
|
||||
new_type->reg_size = (hlsl_type_is_row_major(new_type) ? new_type->dimy : new_type->dimx) * 4;
|
||||
return new_type;
|
||||
|
11
tests/hlsl-duplicate-modifiers.shader_test
Normal file
11
tests/hlsl-duplicate-modifiers.shader_test
Normal file
@ -0,0 +1,11 @@
|
||||
[pixel shader]
|
||||
typedef const precise row_major float2x2 mat_t;
|
||||
float4 main() : sv_target
|
||||
{
|
||||
const precise row_major mat_t mat = float2x2(0.1, 0.2, 0.3, 0.4);
|
||||
return mat;
|
||||
}
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe all rgba (0.1, 0.2, 0.3, 0.4)
|
@ -219,3 +219,20 @@ float4 main(void) : sv_target
|
||||
in float f;
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
const const float4 c;
|
||||
|
||||
float4 main() : sv_target
|
||||
{
|
||||
return float4(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
typedef row_major float4x4 mat_t;
|
||||
column_major mat_t m;
|
||||
|
||||
float4 main() : sv_target
|
||||
{
|
||||
return float4(0, 0, 0, 0);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user