Skip to content

Commit f6b5ed3

Browse files
layers: Use a set for spirv capabilities (KhronosGroup#11513)
1 parent ca0d00d commit f6b5ed3

File tree

2 files changed

+3
-12
lines changed

2 files changed

+3
-12
lines changed

layers/state_tracker/shader_module.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,11 +1026,7 @@ Module::StaticData::StaticData(const Module& module_state, bool parse, Stateless
10261026
} break;
10271027

10281028
case spv::OpCapability:
1029-
capability_list.push_back(static_cast<spv::Capability>(insn.Word(1)));
1030-
// Cache frequently checked capabilities
1031-
if (capability_list.back() == spv::CapabilityRuntimeDescriptorArray) {
1032-
has_capability_runtime_descriptor_array = true;
1033-
}
1029+
capability_list.insert(static_cast<spv::Capability>(insn.Word(1)));
10341030
break;
10351031

10361032
case spv::OpVariable:

layers/state_tracker/shader_module.h

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -693,9 +693,7 @@ struct Module {
693693
// We only need to check index 1, since you can't have double array of descriptors
694694
std::vector<const Instruction*> descriptor_indexing_spec_const_ac_inst;
695695

696-
std::vector<spv::Capability> capability_list;
697-
// Code on the hot path can cache capabilities for fast access.
698-
bool has_capability_runtime_descriptor_array{false};
696+
vvl::unordered_set<spv::Capability> capability_list;
699697

700698
bool has_specialization_constants{false};
701699
bool uses_interpolate_at_sample{false};
@@ -813,10 +811,7 @@ struct Module {
813811
spv::StorageClass StorageClass(const Instruction &insn) const;
814812
bool UsesStorageCapabilityStorageClass(const Instruction &insn) const;
815813

816-
bool HasCapability(spv::Capability find_capability) const {
817-
return std::any_of(static_data_.capability_list.begin(), static_data_.capability_list.end(),
818-
[find_capability](const spv::Capability &capability) { return capability == find_capability; });
819-
}
814+
bool HasCapability(spv::Capability find_capability) const { return static_data_.capability_list.count(find_capability) != 0; }
820815
};
821816

822817
} // namespace spirv

0 commit comments

Comments
 (0)