summaryrefslogtreecommitdiffstats
path: root/src/render/backend/renderer_p.h
diff options
context:
space:
mode:
authorWieland Hagen <wieland.hagen@kdab.com>2017-02-01 15:38:38 +0700
committerWieland Hagen <wieland.hagen@kdab.com>2017-02-01 09:29:11 +0000
commitf1c21aaae49d0a356ecfab268994381932b6d327 (patch)
tree15b1343e9041723b647b49ff89111274475b5ef6 /src/render/backend/renderer_p.h
parent0da1d0e6a93e9c1f745f5ff3b8d628a2de9b0fa3 (diff)
Delete abandoned VAOs after each frame
Use a job to traverse all active VAO handles to check if the geometry and shader objects used to identify the VAO do stil exist. If not, let the renderer dispose the VAOs. Make sure to synchronize access to VAO state and hide state changes behind member functions. Change-Id: Ib77be67d55daa61885cd914af8d9cfc622cae940 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/backend/renderer_p.h')
-rw-r--r--src/render/backend/renderer_p.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h
index 9f6e8d857..bd12ecec6 100644
--- a/src/render/backend/renderer_p.h
+++ b/src/render/backend/renderer_p.h
@@ -322,15 +322,20 @@ private:
OpenGLVertexArrayObject **vao);
GenericLambdaJobPtr<std::function<void ()>> m_bufferGathererJob;
+ GenericLambdaJobPtr<std::function<void ()>> m_vaoGathererJob;
GenericLambdaJobPtr<std::function<void ()>> m_textureGathererJob;
GenericLambdaJobPtr<std::function<void ()>> m_shaderGathererJob;
SynchronizerJobPtr m_syncTextureLoadingJob;
+ void lookForAbandonedVaos();
void lookForDirtyBuffers();
void lookForDirtyTextures();
void lookForDirtyShaders();
+ QMutex m_abandonedVaosMutex;
+ QVector<HVao> m_abandonedVaos;
+
QVector<HBuffer> m_dirtyBuffers;
QVector<HShader> m_dirtyShaders;
QVector<HTexture> m_dirtyTextures;