diff options
author | Harald Vistnes <harald.vistnes@gmail.com> | 2019-08-20 19:22:25 +0200 |
---|---|---|
committer | Harald Vistnes <harald.vistnes@gmail.com> | 2019-08-26 10:08:51 +0200 |
commit | dbd7c517e4d49fb05457a7fe290f7c4e48cdb9cf (patch) | |
tree | 3b99b81e68101d4e4768b615b1c6ea8d43de132f /src/render/renderers/opengl/jobs | |
parent | 99cc24f53ed2946494d3e8d594a6722c571a282f (diff) |
Allow multiple instances of a few render states
Allow more than one instance of BlendEquationArgumentsMask and
ClipPlaneMask render states.
Task-number: QTBUG-77735
Change-Id: I9d2bdc82843e2eaf0f8a781208e4ca10e3a777c7
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/renderers/opengl/jobs')
-rw-r--r-- | src/render/renderers/opengl/jobs/renderviewjobutils.cpp | 10 | ||||
-rw-r--r-- | src/render/renderers/opengl/jobs/renderviewjobutils_p.h | 6 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/render/renderers/opengl/jobs/renderviewjobutils.cpp b/src/render/renderers/opengl/jobs/renderviewjobutils.cpp index 49e85e1d3..364a04ed3 100644 --- a/src/render/renderers/opengl/jobs/renderviewjobutils.cpp +++ b/src/render/renderers/opengl/jobs/renderviewjobutils.cpp @@ -196,7 +196,7 @@ void setRenderViewConfigFromFrameGraphLeafNode(RenderView *rv, const FrameGraphN // Add states from new stateSet we might be missing // but don' t override existing states (lower StateSetNode always has priority) if (rStateSet->hasRenderStates()) - addUniqueStatesToRenderStateSet(stateSet, rStateSet->renderStates(), manager->renderStateManager()); + addStatesToRenderStateSet(stateSet, rStateSet->renderStates(), manager->renderStateManager()); break; } @@ -420,13 +420,13 @@ void parametersFromMaterialEffectTechnique(ParameterInfoList *infoList, } // Only add states with types we don't already have -void addUniqueStatesToRenderStateSet(RenderStateSet *stateSet, - const QVector<Qt3DCore::QNodeId> stateIds, - RenderStateManager *manager) +void addStatesToRenderStateSet(RenderStateSet *stateSet, + const QVector<Qt3DCore::QNodeId> stateIds, + RenderStateManager *manager) { for (const Qt3DCore::QNodeId &stateId : stateIds) { RenderStateNode *node = manager->lookupResource(stateId); - if (node->isEnabled() && !stateSet->hasStateOfType(node->type())) { + if (node->isEnabled() && stateSet->canAddStateOfType(node->type())) { stateSet->addState(node->impl()); } } diff --git a/src/render/renderers/opengl/jobs/renderviewjobutils_p.h b/src/render/renderers/opengl/jobs/renderviewjobutils_p.h index bd2e12534..b2fa59785 100644 --- a/src/render/renderers/opengl/jobs/renderviewjobutils_p.h +++ b/src/render/renderers/opengl/jobs/renderviewjobutils_p.h @@ -150,9 +150,9 @@ void parametersFromParametersProvider(ParameterInfoList *infoList, Q_AUTOTEST_EXPORT ParameterInfoList::const_iterator findParamInfo(ParameterInfoList *infoList, const int nameId); -Q_AUTOTEST_EXPORT void addUniqueStatesToRenderStateSet(RenderStateSet *stateSet, - const QVector<Qt3DCore::QNodeId> stateIds, - RenderStateManager *manager); +Q_AUTOTEST_EXPORT void addStatesToRenderStateSet(RenderStateSet *stateSet, + const QVector<Qt3DCore::QNodeId> stateIds, + RenderStateManager *manager); typedef QHash<int, QVariant> UniformBlockValueBuilderHash; |