diff options
author | Trond Kjernåsen <trond.kjernasen@nokia.com> | 2010-09-21 15:08:09 (GMT) |
---|---|---|
committer | Trond Kjernåsen <trond.kjernasen@nokia.com> | 2010-09-21 15:19:56 (GMT) |
commit | eb2926a2f9607e985b8bca54346e6fdf91343247 (patch) | |
tree | 3910c0d194d515a5058bd7e839ae453255041a93 /src/opengl | |
parent | fc7f7d9193f0b9e4bfefa63d739a24005c0140af (diff) | |
download | Qt-eb2926a2f9607e985b8bca54346e6fdf91343247.zip Qt-eb2926a2f9607e985b8bca54346e6fdf91343247.tar.gz Qt-eb2926a2f9607e985b8bca54346e6fdf91343247.tar.bz2 |
Fixed drawing a large number of glyphs with the same font under GL.
Our glyph caching system doesn't take GL texture size limitation into
account, and assumes you can create an infinitely large texture.
On top of that, the cache will never create a cache that is wider
than 256, or QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH, which means we'll
hit the texture size limit even faster. With this patch the entire
texture is utilized. However, to fix in properly we need to support
having multiple texture for each font engine. That will be fixed
shortly (see task QTBUG-13784).
Task-number: QT-3971
Reviewed-by: Eskil
Diffstat (limited to 'src/opengl')
-rw-r--r-- | src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp | 11 | ||||
-rw-r--r-- | src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp index 410cf21..f353995 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp @@ -129,7 +129,7 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height) GLuint oldTexture = m_texture; createTextureData(width, height); - + if (ctx->d_ptr->workaround_brokenFBOReadBack) { QImageTextureGlyphCache::resizeTextureData(width, height); Q_ASSERT(image().depth() == 8); @@ -281,4 +281,13 @@ int QGLTextureGlyphCache::glyphPadding() const return 1; } +int QGLTextureGlyphCache::maxTextureWidth() const +{ + return ctx->d_ptr->maxTextureSize(); +} + +int QGLTextureGlyphCache::maxTextureHeight() const +{ + return ctx->d_ptr->maxTextureSize(); +} QT_END_NAMESPACE diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h index 6bcd655..eb3693c 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h @@ -73,6 +73,8 @@ public: virtual void resizeTextureData(int width, int height); virtual void fillTexture(const Coord &c, glyph_t glyph); virtual int glyphPadding() const; + virtual int maxTextureWidth() const; + virtual int maxTextureHeight() const; inline GLuint texture() const { return m_texture; } |