summaryrefslogtreecommitdiffstats
path: root/src/gui/opengl
diff options
context:
space:
mode:
authorSérgio Martins <sergio.martins@kdab.com>2016-08-05 10:51:49 +0100
committerSérgio Martins <sergio.martins@kdab.com>2016-08-11 08:28:36 +0000
commit0681e603803634f89f72b37b216b91cab2e085d1 (patch)
tree8506eea608b9dfe56ad2ddbbe0709c7c270082e8 /src/gui/opengl
parentfbc9edb5e7bf1417959e9c9fb5f70979ff176483 (diff)
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 <laszlo.agocs@qt.io> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/gui/opengl')
-rw-r--r--src/gui/opengl/qopenglframebufferobject.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp
index 6fc18b1d01..1ee90a0827 100644
--- a/src/gui/opengl/qopenglframebufferobject.cpp
+++ b/src/gui/opengl/qopenglframebufferobject.cpp
@@ -1068,6 +1068,7 @@ bool QOpenGLFramebufferObject::bind()
d->funcs.glBindFramebuffer(GL_FRAMEBUFFER, d->fbo());
QOpenGLContextPrivate::get(current)->qgl_current_fbo_invalid = true;
+ QOpenGLContextPrivate::get(current)->qgl_current_fbo = this;
if (d->format.samples() == 0) {
// Create new textures to replace the ones stolen via takeTexture().
@@ -1107,7 +1108,9 @@ bool QOpenGLFramebufferObject::release()
if (current) {
d->funcs.glBindFramebuffer(GL_FRAMEBUFFER, current->defaultFramebufferObject());
- QOpenGLContextPrivate::get(current)->qgl_current_fbo_invalid = true;
+ QOpenGLContextPrivate *contextPrv = QOpenGLContextPrivate::get(current);
+ contextPrv->qgl_current_fbo_invalid = true;
+ contextPrv->qgl_current_fbo = Q_NULLPTR;
}
return true;