diff --git a/core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp b/core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp index df5301cc1..7e065487e 100644 --- a/core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp +++ b/core/shader/recompiler/ControlFlow/src/RequestSerializer.cpp @@ -519,6 +519,7 @@ void writeSpirvTarget(Writer& writer, const SpirvTarget& target) { writer.WriteU32(target.vulkanVersion); writer.WriteU32(target.spirvVersion); writer.WriteU32(target.subgroupSize); + writer.WriteU32(target.bdaCachePageBits); writer.WriteU32Span(target.supportedCapabilities); writer.WriteU64(target.supportedExtensions.size()); for (const std::string_view extension : target.supportedExtensions) { @@ -544,6 +545,7 @@ SpirvTarget readSpirvTarget(Reader& reader, DeserializedRequest& result) { target.vulkanVersion = reader.ReadU32(); target.spirvVersion = reader.ReadU32(); target.subgroupSize = reader.ReadU32(); + target.bdaCachePageBits = reader.ReadU32(); result.supportedCapabilities = reader.ReadU32Vector(); target.supportedCapabilities = result.supportedCapabilities; const auto extensionCount = reader.ReadU64(); diff --git a/core/shader/recompiler/Recompiler.cpp b/core/shader/recompiler/Recompiler.cpp index 28ae67ca4..fe9b49e9a 100644 --- a/core/shader/recompiler/Recompiler.cpp +++ b/core/shader/recompiler/Recompiler.cpp @@ -136,9 +136,10 @@ RecompileResult RecompileImpl(const RecompileRequest& request) { targetOptions.vulkanVersion = request.target.vulkanVersion; targetOptions.spirvVersion = request.target.spirvVersion; targetOptions.subgroupSize = request.target.subgroupSize; + targetOptions.bdaCachePageBits = request.target.bdaCachePageBits; constexpr SpirvEmitter spirvEmitter; - const auto spirv = spirvEmitter.Emit(program, bindings, targetOptions); + const auto spirv = spirvEmitter.Emit(program, inputInfo, bindings, targetOptions); RecompileResult result; result.spirv = spirv; diff --git a/core/shader/recompiler/Recompiler.hpp b/core/shader/recompiler/Recompiler.hpp index fd9e3aad6..90a68c242 100644 --- a/core/shader/recompiler/Recompiler.hpp +++ b/core/shader/recompiler/Recompiler.hpp @@ -122,6 +122,7 @@ struct SpirvTarget { std::uint32_t vulkanVersion; std::uint32_t spirvVersion; std::uint32_t subgroupSize; + std::uint32_t bdaCachePageBits; std::span supportedCapabilities; std::span supportedExtensions; std::array maxWorkgroupSize; diff --git a/core/shader/recompiler/SpirvBackend/include/SpirvBackend/SpirvEmitter.hpp b/core/shader/recompiler/SpirvBackend/include/SpirvBackend/SpirvEmitter.hpp index 8769a4f0c..87aa56566 100644 --- a/core/shader/recompiler/SpirvBackend/include/SpirvBackend/SpirvEmitter.hpp +++ b/core/shader/recompiler/SpirvBackend/include/SpirvBackend/SpirvEmitter.hpp @@ -13,6 +13,7 @@ struct SpirvTargetOptions { std::uint32_t vulkanVersion; std::uint32_t spirvVersion; std::uint32_t subgroupSize; + std::uint32_t bdaCachePageBits; }; class SpirvEmitter {