From 3299e6165365ddb6eeb7ea2a39a553dff92c3737 Mon Sep 17 00:00:00 2001 From: lizzie Date: Sat, 28 Mar 2026 02:36:36 +0000 Subject: [PATCH] [shader_recompiler] fix CBuf get/set VUUID due to using composite for U32[1], F32[1] Signed-off-by: lizzie --- .../backend/spirv/emit_spirv_context_get_set.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp index db11def7b2..015bf02c15 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp @@ -149,7 +149,9 @@ Id GetCbuf(EmitContext& ctx, Id result_type, Id UniformDefinitions::*member_ptr, is_float ? ctx.Const(0.0f) : ctx.Const(0u), }; const Id cond = ctx.OpULessThanEqual(ctx.TypeBool(), buffer_offset, ctx.Const(0xFFFFu)); - const Id zero = ctx.OpCompositeConstruct(result_type, std::span(zero_vec.data(), num_elements)); + const Id zero = num_elements > 1 + ? ctx.OpCompositeConstruct(result_type, std::span(zero_vec.data(), num_elements)) + : (is_float ? ctx.Const(0.0f) : ctx.Const(0u)); return ctx.OpSelect(result_type, cond, val, zero); }