[spirv] Add hasCapability method

This commit is contained in:
Philip Rebohle 2021-01-29 16:29:26 +01:00
parent 3a993d0c5c
commit c1073455bf
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 16 additions and 6 deletions

View File

@ -38,17 +38,24 @@ namespace dxvk {
}
bool SpirvModule::hasCapability(
spv::Capability capability) {
for (auto ins : m_capabilities) {
if (ins.opCode() == spv::OpCapability && ins.arg(1) == capability)
return true;
}
return false;
}
void SpirvModule::enableCapability(
spv::Capability capability) {
// Scan the generated instructions to check
// whether we already enabled the capability.
for (auto ins : m_capabilities) {
if (ins.opCode() == spv::OpCapability && ins.arg(1) == capability)
return;
if (!hasCapability(capability)) {
m_capabilities.putIns (spv::OpCapability, 2);
m_capabilities.putWord(capability);
}
m_capabilities.putIns (spv::OpCapability, 2);
m_capabilities.putWord(capability);
}

View File

@ -65,6 +65,9 @@ namespace dxvk {
uint32_t allocateId();
bool hasCapability(
spv::Capability capability);
void enableCapability(
spv::Capability capability);