diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-01-12 22:31:37 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-01-12 22:31:37 +0000 |
| commit | ed9b3675f5619d9888f74dd9f0f1750542f88e34 (patch) | |
| tree | 836b1663f0b6513c108c4e43a6e349cf921107c2 /Graphics/GraphicsEngineOpenGL | |
| parent | Fixed potential issue with Vulkan queries (diff) | |
| download | DiligentCore-ed9b3675f5619d9888f74dd9f0f1750542f88e34.tar.gz DiligentCore-ed9b3675f5619d9888f74dd9f0f1750542f88e34.zip | |
Added query invalidation through IQuery::Invalidate and AutoInvalidate parameter to IQuery::GetData
Diffstat (limited to 'Graphics/GraphicsEngineOpenGL')
| -rw-r--r-- | Graphics/GraphicsEngineOpenGL/include/QueryGLImpl.h | 2 | ||||
| -rw-r--r-- | Graphics/GraphicsEngineOpenGL/src/QueryGLImpl.cpp | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/Graphics/GraphicsEngineOpenGL/include/QueryGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/QueryGLImpl.h index 71379b66..f10c7bf2 100644 --- a/Graphics/GraphicsEngineOpenGL/include/QueryGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/QueryGLImpl.h @@ -55,7 +55,7 @@ public: IMPLEMENT_QUERY_INTERFACE_IN_PLACE(IID_QueryGL, TQueryBase); /// Implementation of IQuery::GetData() in OpenGL backend. - virtual bool GetData(void* pData, Uint32 DataSize) override final; + virtual bool GetData(void* pData, Uint32 DataSize, bool AutoInvalidate) override final; /// Implementation of IQueryGL::GetGlQueryHandle(). diff --git a/Graphics/GraphicsEngineOpenGL/src/QueryGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/QueryGLImpl.cpp index 8749e174..a33de7ce 100644 --- a/Graphics/GraphicsEngineOpenGL/src/QueryGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/QueryGLImpl.cpp @@ -52,7 +52,7 @@ QueryGLImpl::~QueryGLImpl() { } -bool QueryGLImpl::GetData(void* pData, Uint32 DataSize) +bool QueryGLImpl::GetData(void* pData, Uint32 DataSize, bool AutoInvalidate) { GLuint ResultAvailable = GL_FALSE; @@ -79,7 +79,7 @@ bool QueryGLImpl::GetData(void* pData, Uint32 DataSize) return false; } - if (ResultAvailable) + if (ResultAvailable && pData != nullptr) { switch (m_Desc.Type) { @@ -134,6 +134,11 @@ bool QueryGLImpl::GetData(void* pData, Uint32 DataSize) UNEXPECTED("Unexpected query type"); return false; } + + if (AutoInvalidate) + { + Invalidate(); + } } return ResultAvailable != GL_FALSE; |
