diff --git a/renderdoc/driver/shaders/spirv/spirv_editor.cpp b/renderdoc/driver/shaders/spirv/spirv_editor.cpp index 0e6f2cb41..2ba6fc739 100644 --- a/renderdoc/driver/shaders/spirv/spirv_editor.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_editor.cpp @@ -233,7 +233,7 @@ void Editor::AddDecoration(const Operation &op) void Editor::AddCapability(Capability cap) { // don't add duplicate capabilities - if(capabilities.find(cap) != capabilities.end()) + if(HasCapability(cap)) return; // insert the operation at the very start @@ -243,6 +243,11 @@ void Editor::AddCapability(Capability cap) addWords(FirstRealWord, op.size()); } +bool Editor::HasCapability(Capability cap) +{ + return capabilities.find(cap) != capabilities.end(); +} + void Editor::AddExtension(const rdcstr &extension) { // don't add duplicate extensions diff --git a/renderdoc/driver/shaders/spirv/spirv_editor.h b/renderdoc/driver/shaders/spirv/spirv_editor.h index 6f2d28271..b3922dec5 100644 --- a/renderdoc/driver/shaders/spirv/spirv_editor.h +++ b/renderdoc/driver/shaders/spirv/spirv_editor.h @@ -97,6 +97,7 @@ public: void SetMemberName(Id id, uint32_t member, const rdcstr &name); void AddDecoration(const Operation &op); void AddCapability(Capability cap); + bool HasCapability(Capability cap); void AddExtension(const rdcstr &extension); void AddExecutionMode(const Operation &mode); Id HasExtInst(const char *setname);