summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineOpenGL
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-01-12 22:31:37 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-01-12 22:31:37 +0000
commited9b3675f5619d9888f74dd9f0f1750542f88e34 (patch)
tree836b1663f0b6513c108c4e43a6e349cf921107c2 /Graphics/GraphicsEngineOpenGL
parentFixed potential issue with Vulkan queries (diff)
downloadDiligentCore-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.h2
-rw-r--r--Graphics/GraphicsEngineOpenGL/src/QueryGLImpl.cpp9
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;