From bf784f53870b65406c152779529569f9f2ec08ed Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Tue, 28 Jan 2025 08:24:16 +1100 Subject: [PATCH] Updated vkd3d to 40c225095f64dacfe8b88780a5d43ecdeafe4d2a. --- libs/vkd3d/libs/vkd3d-shader/dxil.c | 1 + .../vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libs/vkd3d/libs/vkd3d-shader/dxil.c b/libs/vkd3d/libs/vkd3d-shader/dxil.c index 399c2b67eae..a10de68008a 100644 --- a/libs/vkd3d/libs/vkd3d-shader/dxil.c +++ b/libs/vkd3d/libs/vkd3d-shader/dxil.c @@ -8598,6 +8598,7 @@ static const enum vkd3d_shader_sysval_semantic sysval_semantic_table[] = [SEMANTIC_KIND_VERTEXID] = VKD3D_SHADER_SV_VERTEX_ID, [SEMANTIC_KIND_INSTANCEID] = VKD3D_SHADER_SV_INSTANCE_ID, [SEMANTIC_KIND_POSITION] = VKD3D_SHADER_SV_POSITION, + [SEMANTIC_KIND_RTARRAYINDEX] = VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX, [SEMANTIC_KIND_CLIPDISTANCE] = VKD3D_SHADER_SV_CLIP_DISTANCE, [SEMANTIC_KIND_CULLDISTANCE] = VKD3D_SHADER_SV_CULL_DISTANCE, [SEMANTIC_KIND_PRIMITIVEID] = VKD3D_SHADER_SV_PRIMITIVE_ID, diff --git a/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c index e8dd4d62ae2..8d112fb57a7 100644 --- a/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c +++ b/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c @@ -148,15 +148,7 @@ static bool fold_cast(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, float f = 0.0f; int32_t i = 0; - if (dst_type->e.numeric.dimx != src->node.data_type->e.numeric.dimx - || dst_type->e.numeric.dimy != src->node.data_type->e.numeric.dimy) - { - FIXME("Cast from %s to %s.\n", debug_hlsl_type(ctx, src->node.data_type), - debug_hlsl_type(ctx, dst_type)); - return false; - } - - for (k = 0; k < dst_type->e.numeric.dimx; ++k) + for (k = 0; k < src->node.data_type->e.numeric.dimx; ++k) { switch (src->node.data_type->e.numeric.type) { @@ -221,6 +213,13 @@ static bool fold_cast(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, break; } } + + if (src->node.data_type->e.numeric.dimx == 1) + { + for (k = 1; k < dst_type->e.numeric.dimx; ++k) + dst->u[k] = dst->u[0]; + } + return true; } -- 2.47.2