From ea51d2a2138c2067885839599763c658b98a8b32 Mon Sep 17 00:00:00 2001 From: Stenzek <stenzek@gmail.com> Date: Sun, 5 Nov 2023 15:03:48 +1000 Subject: [PATCH] SPIRVCompiler: Pad fragment output components for MSL Fixes some Reshade shaders not compiling. --- src/util/spirv_compiler.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/util/spirv_compiler.cpp b/src/util/spirv_compiler.cpp index 56e120685..1fa451267 100644 --- a/src/util/spirv_compiler.cpp +++ b/src/util/spirv_compiler.cpp @@ -176,6 +176,11 @@ std::optional<SPIRVCompiler::SPIRVCodeVector> SPIRVCompiler::CompileShader(GPUSh std::optional<std::string> SPIRVCompiler::CompileSPIRVToMSL(std::span<const SPIRVCodeType> spv) { spirv_cross::CompilerMSL compiler(spv.data(), spv.size()); + + spirv_cross::CompilerMSL::Options options = compiler.get_msl_options(); + options.pad_fragment_output_components = true; + compiler.set_msl_options(options); + std::string msl = compiler.compile(); return (msl.empty()) ? std::optional<std::string>() : std::optional<std::string>(std::move(msl)); }