aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/coreapi
diff options
context:
space:
mode:
authorBerthold Krevert <berthold.krevert@basyskom.com>2015-01-29 17:18:49 +0100
committerBerthold Krevert <berthold.krevert@basyskom.com>2015-02-04 15:23:55 +0000
commitec699494f537902e756ac317a5bbe52694cc4223 (patch)
tree0b19e0dc7b1c73e93d4898579643846992711cec /src/quick/scenegraph/coreapi
parentb962b5281b3c90cacc00db8b8b69bcff730a0093 (diff)
Move VAO binding to Renderer::render()
Amongst other things, QSGRenderer::preprocess() triggers the rendering of QQuickShaderEffectSource items into framebuffer objects. The renderers responsible for these QQuickShaderEffectSource items bind and unbind their own VAOs, which messes up the VAO state set in QSGRenderer::preprocess(). Scenegraph nodes must not depend on the vao state set by the renderer anyway as the binding has to be considered as an implementation detail. Change-Id: Idec34c65397394e12e7f8419a1c9633d5f70a22e Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/quick/scenegraph/coreapi')
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp14
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h1
2 files changed, 3 insertions, 12 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
index 375ffac60b..688a5fcb44 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
@@ -2531,17 +2531,6 @@ void Renderer::deleteRemovedElements()
m_elementsToDelete.reset();
}
-void Renderer::preprocess()
-{
- // Bind our VAO. It's important that we do this here as the
- // QSGRenderer::preprocess() call may well do work that requires
- // a bound VAO.
- if (m_vao)
- m_vao->bind();
-
- QSGRenderer::preprocess();
-}
-
void Renderer::render()
{
if (Q_UNLIKELY(debug_dump())) {
@@ -2568,6 +2557,9 @@ void Renderer::render()
qDebug() << "Renderer::render()" << this << type;
}
+ if (m_vao)
+ m_vao->bind();
+
if (m_rebuild & (BuildRenderLists | BuildRenderListsForTaggedRoots)) {
bool complete = (m_rebuild & BuildRenderLists) != 0;
if (complete)
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
index 50bea04f23..7fa5b21d7a 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
@@ -530,7 +530,6 @@ public:
protected:
void nodeChanged(QSGNode *node, QSGNode::DirtyState state);
- void preprocess() Q_DECL_OVERRIDE;
void render();
private: