From ed9b3675f5619d9888f74dd9f0f1750542f88e34 Mon Sep 17 00:00:00 2001 From: assiduous Date: Sun, 12 Jan 2020 14:31:37 -0800 Subject: Added query invalidation through IQuery::Invalidate and AutoInvalidate parameter to IQuery::GetData --- Graphics/GraphicsEngineOpenGL/include/QueryGLImpl.h | 2 +- Graphics/GraphicsEngineOpenGL/src/QueryGLImpl.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'Graphics/GraphicsEngineOpenGL') 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; -- cgit v1.2.3