summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSamuel Rødal <sroedal@trolltech.com>2009-09-15 13:11:01 (GMT)
committerSamuel Rødal <sroedal@trolltech.com>2009-09-15 14:46:06 (GMT)
commit5af2150b1a8a2e8ca89c52c796da6112cac98231 (patch)
treefddcb8b209f05e4025db60d386d844a637f758e2 /src
parentdc6e88c0dc5be96423498850c519afbad6e13989 (diff)
downloadQt-5af2150b1a8a2e8ca89c52c796da6112cac98231.zip
Qt-5af2150b1a8a2e8ca89c52c796da6112cac98231.tar.gz
Qt-5af2150b1a8a2e8ca89c52c796da6112cac98231.tar.bz2
Increased performance of blurpicker example with GL 2 engine.
Slightly increase threshold for when to shrink an FBO, and reduce the number of calls to glBindFramebuffer. Reviewed-by: Tom
Diffstat (limited to 'src')
-rw-r--r--src/opengl/qpixmapdata_gl.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/opengl/qpixmapdata_gl.cpp b/src/opengl/qpixmapdata_gl.cpp
index d5398a9..5eff237 100644
--- a/src/opengl/qpixmapdata_gl.cpp
+++ b/src/opengl/qpixmapdata_gl.cpp
@@ -98,7 +98,7 @@ QGLFramebufferObject *QGLFramebufferObjectPool::acquire(const QSize &requestSize
sz.setHeight(qMax(requestSize.height(), qRound(sz.height() * 1.5)));
// wasting too much space?
- if (sz.width() * sz.height() > requestSize.width() * requestSize.height() * 2.5)
+ if (sz.width() * sz.height() > requestSize.width() * requestSize.height() * 4)
sz = requestSize;
if (sz != fboSize) {
@@ -183,12 +183,11 @@ void QGLPixmapGLPaintDevice::endPaint()
data->copyBackFromRenderFbo(false);
- data->m_renderFbo->release();
- qgl_fbo_pool()->release(data->m_renderFbo);
- data->m_renderFbo = 0;
-
// Base's endPaint will restore the previous FBO binding
QGLPaintDevice::endPaint();
+
+ qgl_fbo_pool()->release(data->m_renderFbo);
+ data->m_renderFbo = 0;
}
QGLContext* QGLPixmapGLPaintDevice::context() const
@@ -466,8 +465,8 @@ void QGLPixmapData::copyBackFromRenderFbo(bool keepCurrentFboBound) const
if (!ctx->d_ptr->fbo)
glGenFramebuffers(1, &ctx->d_ptr->fbo);
- glBindFramebuffer(GL_FRAMEBUFFER_EXT, ctx->d_ptr->fbo);
- glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER_EXT, ctx->d_ptr->fbo);
+ glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
GL_TEXTURE_2D, m_texture.id, 0);
const int x0 = 0;
@@ -475,7 +474,8 @@ void QGLPixmapData::copyBackFromRenderFbo(bool keepCurrentFboBound) const
const int y0 = 0;
const int y1 = h;
- glBindFramebuffer(GL_READ_FRAMEBUFFER_EXT, m_renderFbo->handle());
+ if (!m_renderFbo->isBound())
+ glBindFramebuffer(GL_READ_FRAMEBUFFER_EXT, m_renderFbo->handle());
glDisable(GL_SCISSOR_TEST);