diff options
author | Wieland Hagen <wieland.hagen@kdab.com> | 2017-02-01 15:38:38 +0700 |
---|---|---|
committer | Wieland Hagen <wieland.hagen@kdab.com> | 2017-02-01 09:29:11 +0000 |
commit | f1c21aaae49d0a356ecfab268994381932b6d327 (patch) | |
tree | 15b1343e9041723b647b49ff89111274475b5ef6 /src/render/backend/renderer_p.h | |
parent | 0da1d0e6a93e9c1f745f5ff3b8d628a2de9b0fa3 (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.h | 5 |
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; |