Module: vkd3d Branch: master Commit: f33ca836d7a4613184fbe41df31055594a11f259 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/f33ca836d7a4613184fbe41df31055...
Author: Francisco Casas fcasas@codeweavers.com Date: Thu Jan 5 12:13:46 2023 -0300
vkd3d-shader/hlsl: Make single-component swizzles retrieve a scalar.
---
libs/vkd3d-shader/hlsl.c | 8 ++++++-- tests/hlsl-storage-qualifiers.shader_test | 6 +++--- tests/hlsl-vector-indexing.shader_test | 6 +++--- 3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c index 01172efd..256e466a 100644 --- a/libs/vkd3d-shader/hlsl.c +++ b/libs/vkd3d-shader/hlsl.c @@ -1164,11 +1164,15 @@ struct hlsl_ir_swizzle *hlsl_new_swizzle(struct hlsl_ctx *ctx, DWORD s, unsigned struct hlsl_ir_node *val, const struct vkd3d_shader_location *loc) { struct hlsl_ir_swizzle *swizzle; + struct hlsl_type *type;
if (!(swizzle = hlsl_alloc(ctx, sizeof(*swizzle)))) return NULL; - init_node(&swizzle->node, HLSL_IR_SWIZZLE, - hlsl_get_vector_type(ctx, val->data_type->base_type, components), loc); + if (components == 1) + type = hlsl_get_scalar_type(ctx, val->data_type->base_type); + else + type = hlsl_get_vector_type(ctx, val->data_type->base_type, components); + init_node(&swizzle->node, HLSL_IR_SWIZZLE, type, loc); hlsl_src_from_node(&swizzle->val, val); swizzle->swizzle = s; return swizzle; diff --git a/tests/hlsl-storage-qualifiers.shader_test b/tests/hlsl-storage-qualifiers.shader_test index 4d17c0d7..59066c5f 100644 --- a/tests/hlsl-storage-qualifiers.shader_test +++ b/tests/hlsl-storage-qualifiers.shader_test @@ -1,4 +1,4 @@ -[pixel shader todo] +[pixel shader] void sub2(in uniform float4 i, out float4 o) { o = i; @@ -17,5 +17,5 @@ void main(in uniform float4 a, uniform float4 b, out float4 o : sv_target) [test] uniform 0 float4 0.1 0.0 0.0 0.0 uniform 4 float4 0.2 0.0 0.0 0.0 -todo draw quad -probe all rgba (0.1, 0.2, 0.3, 0.4) +draw quad +todo probe all rgba (0.1, 0.2, 0.3, 0.4) diff --git a/tests/hlsl-vector-indexing.shader_test b/tests/hlsl-vector-indexing.shader_test index a7e671b8..1542d358 100644 --- a/tests/hlsl-vector-indexing.shader_test +++ b/tests/hlsl-vector-indexing.shader_test @@ -37,7 +37,7 @@ float4 main() : SV_TARGET }
-[pixel shader todo] +[pixel shader] float4 main() : SV_TARGET { float4 vec = {0, 1, 2, 3}; @@ -47,5 +47,5 @@ float4 main() : SV_TARGET }
[test] -todo draw quad -todo probe all rgba (2.0, 2.0, 2.0, 2.0) +draw quad +probe all rgba (2.0, 2.0, 2.0, 2.0)