summaryrefslogtreecommitdiffstats
path: root/src/opengl/gl2paintengineex
Commit message (Collapse)AuthorAgeFilesLines
* Change to release license header.Jason McDonald2011-02-1617-221/+221
| | | | Reviewed-by: Trust Me
* Update copyright year to 2011.Jason McDonald2011-01-1117-17/+17
| | | | | Reviewed-by: Trust Me (cherry picked from commit ac5c099cc3c5b8c7eec7a49fdeb8a21037230350)
* Fix regression in text rendering in OpenGL2 engineEskil Abrahamsen Blomfeldt2011-01-111-4/+0
| | | | | | | | | | | | | | | | Change 532115bcaa370af827a5cbad017b272842c5aacf introduced a regression by fixing a typo in the QT_OPENGL_ES_2 macro. This caused a broken and untested code path to be used in the GLES2 case. Since the QImage scanlines are 32 bit aligned, QImage::width() cannot be used when copying the data. Rather than pass in bytesPerLine() to the GL function, I opted to revert to the proven behavior, where the pad bytes are never read by GL but each scanline is copied separately, to avoid further regressions on different hardware. This also seems like the more correct approach, as the pad bytes should ideally not be copied into the cache texture. Reviewed-by: Samuel (cherry picked from commit 7a54885b1df9baf793374e3cb9fdf8be93ee7c80)
* Add work around for bug when painting w/glTexSubImage into large textureEskil Abrahamsen Blomfeldt2010-12-161-1/+4
| | | | | | | | | | | | | | It seems that copying small rectangles from glTexSubImage2D into a texture which is 2048x2048 is busted on some SGX drivers, even though the driver reports 2048 as the maximum texture size. This caused text to turn into flickering garbage once the texture glyph cache had grown to its max size (e.g. when painting very many Chinese glyphs.) To work around the problem, we hardcore the maximum texture height to 1024 on this driver so that the texture glyph cache is reset whenever that size is exceeded. Task-number: QT-3971 Done-with: Samuel
* Don't delete FBO when resetting glyph cacheEskil Abrahamsen Blomfeldt2010-12-141-4/+7
| | | | | | | | | | When the glyph cache is cleared because the max texture size has been exceeded, we shouldn't delete the fbo as this is only created in setContext() and will thus not be recreated. All subsequent resizing of the cache will fail. Task-number: QT-3971 Reviewed-by: Samuel
* Fixed GL 2 engine rendering of images / pixmaps above max texture size.Samuel Rødal2010-12-132-5/+49
| | | | | | | | Down-scale images or pixmaps that are above the max texture size. Not optimal performance-wise, but better than failing. Task-number: QTBUG-16033 Reviewed-by: Eskil Abrahamsen Blomfeldt
* Missing glyphs in GL when scaling QStaticText and QML text itemsEskil Abrahamsen Blomfeldt2010-12-101-5/+13
| | | | | | | | | | | | | Since scaled text is backed by an A8 glyph cache, it needs to repopulate even if it has previously populated the cache for the unscaled text. This means that we need to record in the userData that the type of the cache is not the same as the last time. Otherwise the A8 version of the cache will only be updated when it's created and when the text actually changes, leading to glyphs missing on screen when zooming text using a scale. Task-number: QTBUG-16012 Reviewed-by: Gunnar
* Try using pure scissor clip in GL 2 engine for rotations.Samuel Rødal2010-12-091-1/+5
| | | | | | | | As long as the final clip area is rectangular and axis aligned we can use a scissor clip. This prevents performance problems when doing 90-degree rotated rectangle clips. Reviewed-by: Bjørn Erik Nilsen
* Fixed missing text in GL 2 engine after recreating a context.Samuel Rødal2010-12-091-1/+3
| | | | | | If we recreate the texture glyph cache, we also need to repopulate. Reviewed-by: Eskil Abrahamsen Blomfeldt
* Fix text disappearing on GL when RGB-path is taken (no transformation)Eskil Abrahamsen Blomfeldt2010-12-071-8/+11
| | | | | | | | | | | | | When there is no transformation on a glyph in the GL texture glyph cache, it will take the RGB code path to support subpixel antialiasing. In this code path we would ask glTextImage2D() to convert from a GL_ALPHA buffer to an internal format of GL_RGBA. This is not supported on OpenGL ES 2, and would cause missing text for some drivers. The change also fixes a typo in an #ifdef. Task-number: QTBUG-15789 Reviewed-by: Kim
* Fix a build break when namespace is definedMiikka Heikkinen2010-11-221-17/+17
| | | | Reviewed-by: Jani Hautakangas
* Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public into ↵Qt Continuous Integration System2010-11-191-17/+17
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public: (21 commits) Fixed handling of QInputMethodEvents with nonzero replacementLength. Fixed namespace issues related to epocroot.cpp Corrected ASCII comparison and removed extra braces Add symbian scope for qfiledialog_symbian.cpp Resolve EPOCROOT in qt.conf using same logic as in .pro Make epocroot resolving compatible with more build environments Fix for QtOpenGL RVCT4 compilation error Removed extra cpp and done changes based on comments Correct flags for Symbian file dialogs Fix for WServ 64 crash on Symbian. Use include(original mkspec) instead of copying of mkspec to default Fixed code style of d92cbfc5, reported by git push. Switched qdesktopservices to use SchemeHandler for Symbian^3 and later. Removed unnecessary Q_OS_SYMBIAN flags from qdesktopservices_s60.cpp. Documented usage of dialogs on Symbian Native file dialog on Symbian^3 Add Location as self signable capability in patch_capabilities.pl Localize .loc and .pkg content based on TRANSLATIONS Bump Qt version to 4.7.2. SSL: Fix for systemCaCertificates being called first on symbian ...
| * Fix for QtOpenGL RVCT4 compilation errorJani Hautakangas2010-11-181-17/+17
| | | | | | | | | | | | | | | | | | RVCT4 has strict lookup rules. Calls from function ,that depends on a template parameter, to internal static functions must be qualified. Task-number: QTBUG-15424 Reviewed-by: Jason Barron
* | Fix possible corrupted text when gl glyph cache becomes fullEskil Abrahamsen Blomfeldt2010-11-193-3/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the OpenGL glyph cache filled up (the max texture size on the hardware was exceeded) the characters would be drawn as black blocks instead. As a work-around for this, the cache will now be cleared and repopulated whenever this happens, meaning that once in a while (when a lot of different glyphs have been drawn in a font) there will be a performance hit. A more complete solution is described in QTBUG-13784, but this requires so much refactoring that it was deemed too risky for a patch release. This patch fixes the problem with a small penalty and low risk. Task-number: QT-3971 Reviewed-by: Samuel
* | Prevent crash in GL 2 engine when stroking null rectangle.Samuel Rødal2010-11-171-0/+3
| | | | | | | | | | Task-number: QTBUG-15320 Reviewed-by: Kim
* | Fix possible missing glyphs in text when using GL engineEskil Abrahamsen Blomfeldt2010-11-163-2/+24
|/ | | | | | | | | | | | | | | If you create/destroy gl contexts a lot, you may sometimes get a new context with the same pointer as a destroyed context. When you look up the glyph cache in the font engine using the context pointer as a key, you will then get a glyph cache which contains no valid data. We need to reset the glyph cache completely in this case and set up bindings for the new context so that the glyph cache can be repopulated and reused. Note that there is a different solution for this in Qt 4.8, so this is temporary solution for the Qt 4.7.x series. Task-number: QT-4162 Reviewed-by: Fabien Freling
* Remove driver bug work-around from GL 2 paint engine.Samuel Rødal2010-11-121-5/+0
| | | | | | | For platforms where the driver bug isn't fixed, the work-around should be done by packagers instead. Reviewed-by: Gunnar Sletta
* Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into ↵Qt Continuous Integration System2010-11-111-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: remove pointless assignment of deprecated variable fix tst_headers Fixed a shell syntax error in configure Clear X11 structure before use Make operator QRectF const Fix GC-related crash in QScriptValue::setData() get rid of dependency on QtGui Removed implicity QtGui linking from icd.pro as it is not needed. DFB: Make sure QPixmap::hasAlpha is respected fix build on mingw Fix some painting issues in QDirectFBPaintEngine QNAM: Do not need QNetworkSession in AlwaysCache load mode Don't crash if QScriptClass property getter returns an invalid value QNAM: Remove dead waitForUpstreamBytesWritten() code QNAM: Remove dead waitForDownstreamReadyRead() code fix memleak in test
| * Make operator QRectF constHarald Fernengel2010-11-091-1/+1
| | | | | | | | | | | | | | This allows us to convert a QGLRect to a QRectF also in const functions. Function is inline and private, no ABI break. Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* | Doc: Fixing typoSergio Ahumada2010-11-091-1/+1
| |
* | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-11-051-12/+12
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: More fix for QTBUG-14640:oci performance problem with qlonglong Doc: Fixing typo Fixed grabWidget sometimes returning uninitialized memory. Fix Malayalam Rendering - 'Ra' is PreBase Update .def files for QtGui and QtOpenVG Use 32bit textures for alpha textures after all. One more fix for dithering. Doc: Fixing typo Fix QTBUG-14640:oci performance problem with qlonglong 32bit => 16bit conversion has 4byte-aligned output. Fix gcc bug in qReallocAligned Prevented threading related crash in OpenGL module. Fix possible crash in QStaticText and QDeclarativeTextLayout Fix QTBUG-14132 oracle (xe) stored procedures with bind variables get errors
| * Fix possible crash in QStaticText and QDeclarativeTextLayoutEskil Abrahamsen Blomfeldt2010-10-291-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | The QStaticTextItem held an uncounted reference to QFontEngine. The pointer would dangle in some cases where there was no font object referencing the engine and the cache was cleaned out (e.g. when a new application font is added.) Properly count the reference, and also add reference counting to userData to make it harder to shoot yourself in the foot, since the QStaticTextItem class is now being used in different places, Task-number: QTBUG-14446 Reviewed-by: Martin Jones
* | Prevent access to non-existent memory in QGL2PEXVertexArrayTopi Reiniö2010-11-041-2/+3
|/ | | | | | | | | | | | | QGL2PEXVertexArray::addClosingLine() uses using QDataBuffer::add() to add a QPointF at the end, with a const reference to another value in the same array. As add() resizes and possibly relocates the buffer, an already-released memory location may be accessed. This change copies the value into a temporary variable before resizing the array. Task-number: QTBUG-14944 Reviewed-by: Samuel
* Fixed many spelling errors.Rohan McGovern2010-10-251-1/+1
|
* Functions that are externally defined to QtOpenGL needs to be imported.Jani Hautakangas2010-10-211-1/+1
| | | | | | This is needed for RVCT4 Reviewed-by: Jason Barron
* Fix GL_OES_element_index_uint and add GL_OES_depth24 detection.Jani Hautakangas2010-10-202-20/+9
| | | | | | | | | GL_OES_element_index_uint detection was not working because EGL config wasn't yet resolved. In addition QFrameBufferObject should use 24bit depth render buffer if extension is available. Task-number: QTBUG-14542 Reviewed-by: Gunnar
* Fix text rendering in GL when using the broken-fbo-fallbackEskil Abrahamsen Blomfeldt2010-10-071-1/+1
| | | | | | | | | | | This is a backport of 3874cd95e203da40d5205ef6455d7f56cba6923a which was committed to qt:master. Since the patch that originally exposed the bug was added to 4.7.2, this patch is required there as well. Bug is visible when resizing the glyph cache on devices where QGLContext::brokenFBOReadback defaults to true, or by setting this to true on desktop. Reviewed-by: Gunnar
* Quick fix for OSX and Windows/Mingw compilation errors.Jani Hautakangas2010-10-051-8/+8
| | | | | | | | | | On OSX AssertMacros.h header has macro called verify() and QRBTree::verify() function was substituted by this macro. On Windows/Mingw includes need to point to exported private include folder. Reviewed-by: Kim
* Fix gcc compilation problems in QtOpenGL. Actually was typo andJani Hautakangas2010-10-041-2/+2
| | | | | | for some reason rvct didn't catch that. Reviewed-by: TRUSTME
* Enable QtOpenGL vector path caching on Symbian/IVE3Jani Hautakangas2010-10-043-134/+320
| | | | | | | | | | IVE3 doesn't support UNSIGNED_INT <type> index values in DrawElements. This patch checks if GL_OES_element_index_uint extensions is supported and determines DrawElement indices type based on that. On desktop environment UNSIGNED_INT is always supported. Task-number: QTBUG-13563 Reviewed-by: Gunnar
* Fallback to A8 text rendering on Mac when LCD smoothing is disabledAaron Kennedy2010-09-291-0/+7
| | | | | Task-number: QTBUG-14050 Reviewed-by: Eskil Abrahamsen Blomfeldt
* Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7Aaron Kennedy2010-09-281-28/+2
|\
| * Compile on Symbian - rework the X11 mask patch a bit.Trond Kjernåsen2010-09-231-2/+2
| | | | | | | | | | | | | | | | Avoid adding a virtual QPixmapData::hasMask() function, we can do without it. Made QPixmap::hasAlpha() fast, so we can use that instead. Reviewed-by: Samuel
| * Fixed drawing of QPixmaps with masks in the GL 2 and X11 engines.Trond Kjernåsen2010-09-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | A regression from 4.6.x. This is an X11-only problem caused by the separate masks that an X11 QPixmap can contain. These masks we're not taken into account when a number optimizations were done for 4.7. Introduction of the texture-from-pixmap extension in 4.6 also broke masked pixmaps under X11. Task-number: QTBUG-13814 Reviewed-by: Samuel
| * Revert "Fixed painter path drawing on FBO without stencil buffer."Kim Motoyoshi Kalland2010-09-221-26/+0
| | | | | | | | | | This reverts commit 89cbb165600de9a557a8a621dc41b93c2a7a2b52. The patch should be applied to Qt 4.8, not 4.7.
* | Minimize parameter changes on glyph cache texturesAaron Kennedy2010-09-283-5/+32
| | | | | | | | | | | | | | Cache the last set filtering mode on glyph textures and update only when necessary. Reviewed-by: Gunnar Sletta
* | Only set maskTexture sampler uniform onceAaron Kennedy2010-09-282-6/+13
| | | | | | | | | | | | | | Qt always uses the same texture unit as the maskTexture, so it makes sense to set the uniform only once when the program is created. Reviewed-By: Gunnar Sletta
* | Only repopulate the glyph cache when we know something could have changedAaron Kennedy2010-09-281-11/+16
| | | | | | | | Reviewed-by: Gunnar Sletta
* | Remove unnecessary attribute changesAaron Kennedy2010-09-231-2/+0
| | | | | | | | | | | | | | The only consumer of TextDrawingMode is drawCachedGlyphs, and it always sets these two attrib pointers anyway. Reviewed-By: Gunnar Sletta
* | Invalidate QStaticText coord cache when texture size changesAaron Kennedy2010-09-231-1/+8
|/ | | | | | | If the glyph cache texture changes size, the texture coordinate array must be regenerated to point to the correct texture locations. Reviewed-By: Gunnar Sletta
* Fixed drawing a large number of glyphs with the same font under GL.Trond Kjernåsen2010-09-212-1/+12
| | | | | | | | | | | | | | 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
* Fixed painter path drawing on FBO without stencil buffer.Kim Motoyoshi Kalland2010-09-201-0/+26
| | | | | Task-number: QTBUG-13450 Reviewed-by: Samuel
* Fixes QPen dash offset for OpenGL paint engines (1.x & 2.x).Yoann Lopes2010-09-201-0/+1
| | | | | Task-number: QTBUG-13409 Reviewed-by: Trond
* Some optimizations to the GL pixmap data.Samuel Rødal2010-09-092-0/+8
| | | | | | | - Don't use toImage() / fromImage() to copy when a render FBO is active. - Use raster for rendering to small (< 32x32) pixmaps. Reviewed-by: Trond
* Introduce QtOpenGL module for Symbian.Jani Hautakangas2010-08-202-4/+20
| | | | | Task-number: QT-2139 Reviewed-by: Gunnar Sletta
* Silence warning when building with MSVC 2005Andy Shaw2010-07-141-1/+1
| | | | Reviewed-by: Eskil
* Fix text drawing into alpha pixmap with opengl engineEskil Abrahamsen Blomfeldt2010-07-072-6/+0
| | | | | | | | | | | | | The merge 03dc74984749adf5b11482bf871a47086217845c mistakenly merged the glyphMargin() (which had been removed in 4.7 because QGLTextureGlyphCache now inherits from the image glyph cache) with the glyphPadding() which had been introduced in separate commits in both branches (probably backported.) This broke text drawing into a pixmap with an alpha with the GL engine, because we'd assume a margin of 1, but the alphaMapForGlyph() function doesn't support margins. Task-number: QTBUG-11987 Reviewed-by: Gunnar
* Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Olivier Goffart2010-06-082-0/+6
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/webkit/VERSION src/3rdparty/webkit/WebCore/ChangeLog src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp src/3rdparty/webkit/WebKit/qt/ChangeLog src/gui/painting/qpainter.cpp src/gui/painting/qtextureglyphcache.cpp src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h src/s60installs/bwins/QtGuiu.def src/s60installs/eabi/QtCoreu.def src/s60installs/eabi/QtGuiu.def src/s60installs/eabi/QtNetworku.def src/s60installs/eabi/QtOpenVGu.def tests/auto/qfontmetrics/tst_qfontmetrics.cpp tools/linguist/lupdate/main.cpp
| * Fix antialiasing with transformed text in OpenGL2 paint engineEskil Abrahamsen Blomfeldt2010-05-313-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since the paint engine now transforms the prerendered glyphs instead of rendering transformed glyphs as paths, we need to turn on texture filtering to avoid antialiasing artifacts. In order to do this, we also need to pad the glyphs in the glyph cache, otherwise you will get artifacts when sampling the area around the glyph's bounding rect (where there might be other glyphs.) This done by adding a glyphPadding() function to the cache which returns the number of pixels to pad between each glyph. Updated: This also fixes a general issue where some combinations of font sizes and transformations will cause the engine to sample neighbouring glyphs, so this has been backported to Qt 4.6.x. Task-number: QTBUG-9706, QTBUG-11028 Reviewed-by: Tom Conflicts: src/gui/painting/qtextureglyphcache.cpp src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
* | Speed up QStaticText with affine transformation on GL2 engineEskil Abrahamsen Blomfeldt2010-06-012-22/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since the OpenGL2 paint engine supports transforming the prerendered glyphs rather than rasterizing the glyphs with the transformation applied, we don't need to recalculate the QStaticText layout whenever the transformation changes. This means that we can do fast animated transforms for QStaticText on this paint engine. A quick test yields something like 100x speed-up on Windows. This also give visually better results, as we previously would animate the hinting of the glyphs, thus causing jittering. The autotest has been updated to reflect the fact that drawText() and drawStaticText() now go through identical paths on GL, also when transforms are set on the painter. However, the scale was changed in one test, because it was so great that drawText() would fall back to paths. With QStaticText the idea is speed, so you'll get a poor, but fast result instead, which is better than tricking people. Reviewed-by: Samuel