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));
 }