feat(shader): add bda cache page bits field to spirv target

This commit is contained in:
boykopovar 2026-09-21 14:33:19 +03:00
parent 1490c0386c
commit fbb8a36f65
4 changed files with 6 additions and 1 deletions

View File

@ -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();

View File

@ -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;

View File

@ -122,6 +122,7 @@ struct SpirvTarget {
std::uint32_t vulkanVersion;
std::uint32_t spirvVersion;
std::uint32_t subgroupSize;
std::uint32_t bdaCachePageBits;
std::span<const std::uint32_t> supportedCapabilities;
std::span<const std::string_view> supportedExtensions;
std::array<std::uint32_t, 3> maxWorkgroupSize;

View File

@ -13,6 +13,7 @@ struct SpirvTargetOptions {
std::uint32_t vulkanVersion;
std::uint32_t spirvVersion;
std::uint32_t subgroupSize;
std::uint32_t bdaCachePageBits;
};
class SpirvEmitter {