aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp
diff options
context:
space:
mode:
authorBjörn Breitmeyer <bjoern.breitmeyer@kdab.com>2014-02-25 10:18:06 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-28 12:09:25 +0100
commit10f0485464acebd281f37b78f9ab5d02ee4ada9b (patch)
treecfca7a4c1311ee56f180b293df800a0619e21275 /src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp
parent6ef802ff6ed1cd234848b65fdad56dc3b0579cff (diff)
Fixed regression from fd5c629f4336b1f79
Buffer offsets were wrong, and a type in the buffer content. Task-number: QTBUG-36989 Change-Id: I863976420d495b006692c4b614f74c285649cb1a Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp')
-rw-r--r--src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp
index 4a8d908d2f..a625eebd5d 100644
--- a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp
+++ b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp
@@ -69,7 +69,7 @@ QSGDefaultDistanceFieldGlyphCache::QSGDefaultDistanceFieldGlyphCache(QSGDistance
{
m_blitBuffer.create();
m_blitBuffer.bind();
- static GLfloat buffer[16] = {1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f,
+ static GLfloat buffer[16] = {-1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f,
0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f};
m_blitBuffer.allocate(buffer, sizeof(buffer));
m_blitBuffer.release();
@@ -405,13 +405,21 @@ void QSGDefaultDistanceFieldGlyphCache::resizeTexture(TextureInfo *texInfo, int
glViewport(0, 0, oldWidth, oldHeight);
- m_blitBuffer.bind();
-
+ const bool vaoInit = m_vao.isCreated();
+ if (isCoreProfile()) {
+ if ( !vaoInit )
+ m_vao.create();
+ m_vao.bind();
+ }
m_blitProgram->bind();
- m_blitProgram->enableAttributeArray(int(QT_VERTEX_COORDS_ATTR));
- m_blitProgram->enableAttributeArray(int(QT_TEXTURE_COORDS_ATTR));
- m_blitProgram->setAttributeBuffer(int(QT_VERTEX_COORDS_ATTR), GL_FLOAT, 0, 2);
- m_blitProgram->setAttributeBuffer(int(QT_TEXTURE_COORDS_ATTR), GL_FLOAT, 8, 2);
+ if (!vaoInit || !isCoreProfile()) {
+ m_blitBuffer.bind();
+
+ m_blitProgram->enableAttributeArray(int(QT_VERTEX_COORDS_ATTR));
+ m_blitProgram->enableAttributeArray(int(QT_TEXTURE_COORDS_ATTR));
+ m_blitProgram->setAttributeBuffer(int(QT_VERTEX_COORDS_ATTR), GL_FLOAT, 0, 2);
+ m_blitProgram->setAttributeBuffer(int(QT_TEXTURE_COORDS_ATTR), GL_FLOAT, 32, 2);
+ }
m_blitProgram->disableAttributeArray(int(QT_OPACITY_ATTR));
m_blitProgram->setUniformValue("imageTexture", GLuint(0));
@@ -447,7 +455,8 @@ void QSGDefaultDistanceFieldGlyphCache::resizeTexture(TextureInfo *texInfo, int
m_blitProgram->disableAttributeArray(int(QT_VERTEX_COORDS_ATTR));
m_blitProgram->disableAttributeArray(int(QT_TEXTURE_COORDS_ATTR));
- m_blitBuffer.release();
+ if (isCoreProfile())
+ m_vao.release();
}
bool QSGDefaultDistanceFieldGlyphCache::useTextureResizeWorkaround() const