From 0681e603803634f89f72b37b216b91cab2e085d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Martins?= Date: Fri, 5 Aug 2016 10:51:49 +0100 Subject: Cache the current QOpenGLFramebufferObject This doesn't cover FBOs bound directly with glBindFramebuffer(), but it's perfect to create a fast path for code we know uses QOGLFBO, thus avoiding expensive glGetIntegerv() driver calls. The use case is to use this in QSG24BitTextMaskShader::activate(), where we need to check if the current FBO is sRGB capable. Change-Id: I434eeeb7e6a3d16be9327315536ad7280245085d Reviewed-by: Laszlo Agocs Reviewed-by: Sean Harmer --- src/gui/kernel/qopenglcontext_p.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/gui/kernel/qopenglcontext_p.h') diff --git a/src/gui/kernel/qopenglcontext_p.h b/src/gui/kernel/qopenglcontext_p.h index 4a746bf12b..7c8c698a7d 100644 --- a/src/gui/kernel/qopenglcontext_p.h +++ b/src/gui/kernel/qopenglcontext_p.h @@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE class QOpenGLFunctions; class QOpenGLContext; +class QOpenGLFramebufferObject; class QOpenGLMultiGroupSharedResource; class Q_GUI_EXPORT QOpenGLSharedResource @@ -204,6 +205,7 @@ public: , workaround_missingPrecisionQualifiers(false) , active_engine(0) , qgl_current_fbo_invalid(false) + , qgl_current_fbo(Q_NULLPTR) , defaultFboRedirect(0) { requestedFormat = QSurfaceFormat::defaultFormat(); @@ -242,6 +244,11 @@ public: bool qgl_current_fbo_invalid; + // Set and unset in QOpenGLFramebufferObject::bind()/unbind(). + // (Only meaningful for QOGLFBO since an FBO might be bound by other means) + // Saves us from querying the driver for the current FBO in most paths. + QOpenGLFramebufferObject *qgl_current_fbo; + QVariant nativeHandle; GLuint defaultFboRedirect; -- cgit v1.2.3