Module: vkd3d Branch: master Commit: 15e7711786e9f83e7087200bb9e08795e21b4431 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/15e7711786e9f83e7087200bb9e087...
Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Thu Dec 21 15:58:46 2023 +0100
vkd3d-shader/ir: Validate source swizzles depending on the dimension.
---
libs/vkd3d-shader/ir.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index a21af2fe..35a95c2b 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -1679,6 +1679,10 @@ static void vsir_validate_src_param(struct validation_context *ctx, validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_SWIZZLE, "Source has invalid swizzle %#x.", src->swizzle);
+ if (src->reg.dimension != VSIR_DIMENSION_VEC4 && src->swizzle != 0) + validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_SWIZZLE, "Source of dimension %u has invalid swizzle %#x.", + src->reg.dimension, src->swizzle); + if (src->modifiers >= VKD3DSPSM_COUNT) validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_MODIFIERS, "Source has invalid modifiers %#x.", src->modifiers);