Files
wine-staging/patches/vkd3d-latest/0003-Updated-vkd3d-to-40c225095f64dacfe8b88780a5d43ecdeaf.patch

61 lines
2.4 KiB
Diff
Raw Normal View History

2025-02-04 10:23:08 +11:00
From bf784f53870b65406c152779529569f9f2ec08ed Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
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