summaryrefslogtreecommitdiffstats
path: root/src/plugins/renderers/rhi/managers/rhiresourcemanagers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/renderers/rhi/managers/rhiresourcemanagers.cpp')
-rw-r--r--src/plugins/renderers/rhi/managers/rhiresourcemanagers.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/renderers/rhi/managers/rhiresourcemanagers.cpp b/src/plugins/renderers/rhi/managers/rhiresourcemanagers.cpp
index d0aed29bc..e653a364e 100644
--- a/src/plugins/renderers/rhi/managers/rhiresourcemanagers.cpp
+++ b/src/plugins/renderers/rhi/managers/rhiresourcemanagers.cpp
@@ -99,6 +99,21 @@ int RHIGraphicsPipelineManager::getIdForAttributeVec(const std::vector<Attribute
return std::distance(m_attributesInfo.begin(), it);
}
+int RHIGraphicsPipelineManager::getIdForRenderStates(const RenderStateSetPtr &stateSet)
+{
+ if (!stateSet)
+ return -1;
+ const std::vector<StateVariant> &states = stateSet->states();
+ auto it = std::find(m_renderStates.begin(),
+ m_renderStates.end(),
+ states);
+ if (it == m_renderStates.end()) {
+ m_renderStates.emplace_back(states);
+ return m_renderStates.size() - 1;
+ }
+ return std::distance(m_renderStates.begin(), it);
+}
+
namespace {
template<typename Manager>