From ae89a492eafbeab5333c35bbc5ed152a3b2956c6 Mon Sep 17 00:00:00 2001 From: Stephen Miller <56742918+StevenMiller123@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:47:30 -0500 Subject: [PATCH] shader_recompiler: Initialize all ClipDistance and CullDistance values (#3478) * Initialize all values in clip_distances Co-Authored-By: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com> * Clang * Apply initializer for CullDistance --------- Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com> --- .../backend/spirv/spirv_emit_context.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp index 19469f64f..e7c1340ce 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp @@ -540,14 +540,20 @@ void EmitContext::DefineInputs() { } void EmitContext::DefineVertexBlock() { + const std::array zero{f32_zero_value, f32_zero_value, f32_zero_value, f32_zero_value, + f32_zero_value, f32_zero_value, f32_zero_value, f32_zero_value}; output_position = DefineVariable(F32[4], spv::BuiltIn::Position, spv::StorageClass::Output); if (info.stores.GetAny(IR::Attribute::ClipDistance)) { - clip_distances = DefineVariable(TypeArray(F32[1], ConstU32(8U)), spv::BuiltIn::ClipDistance, - spv::StorageClass::Output); + const Id type{TypeArray(F32[1], ConstU32(8U))}; + const Id initializer{ConstantComposite(type, zero)}; + clip_distances = DefineVariable(type, spv::BuiltIn::ClipDistance, spv::StorageClass::Output, + initializer); } if (info.stores.GetAny(IR::Attribute::CullDistance)) { - cull_distances = DefineVariable(TypeArray(F32[1], ConstU32(8U)), spv::BuiltIn::CullDistance, - spv::StorageClass::Output); + const Id type{TypeArray(F32[1], ConstU32(8U))}; + const Id initializer{ConstantComposite(type, zero)}; + cull_distances = DefineVariable(type, spv::BuiltIn::CullDistance, spv::StorageClass::Output, + initializer); } if (info.stores.GetAny(IR::Attribute::RenderTargetId)) { output_layer = DefineVariable(S32[1], spv::BuiltIn::Layer, spv::StorageClass::Output);