summaryrefslogtreecommitdiffstats
path: root/src/opengl/gl2paintengineex
Commit message (Collapse)AuthorAgeFilesLines
* Update license headers to release version.Jason McDonald2010-10-1817-221/+221
|
* Fixed drawing a large number of glyphs with the same font under GL.Trond Kjernåsen2010-09-232-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 (cherry picked from commit eb2926a2f9607e985b8bca54346e6fdf91343247)
* 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
* | Fixed compilation of QtOpenGL.Samuel Rødal2010-05-271-1/+1
| | | | | | | | Reviewed-by: Eskil
* | Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Olivier Goffart2010-05-172-5/+6
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: demos/demos.pro mkspecs/features/resources.prf mkspecs/features/uic.prf src/corelib/io/qurl.cpp src/corelib/tools/qlocale_symbian.cpp src/gui/graphicsview/qgraphicsscene.cpp src/gui/graphicsview/qgraphicswidget_p.cpp src/gui/graphicsview/qgraphicswidget_p.h src/gui/util/qsystemtrayicon_win.cpp src/multimedia/audio/qaudioinput.cpp tests/auto/qhostinfo/qhostinfo.pro
| * Workaround for ATI driver bug when using QGraphicsEffect with GL.Kim Motoyoshi Kalland2010-05-122-5/+6
| | | | | | | | | | | | | | | | | | If you forward declare a shader function which takes a sampler as argument, the shader program will fail to link on ATI cards under Windows. Task-number: QTBUG-10510 Reviewed-by: Trond
* | Limit the lower glyph texture cache size to 16x16 in GL.Trond Kjernåsen2010-05-141-0/+12
| | | | | | | | | | | | | | | | | | | | | | The SGX chip has a limitation regarding FBOs in that it doesn't support FBO sizes that are POT and less than 16 pixels in width/height. Since the FBO we use in the GL glyph cache always mirrors the size of the texture itself, we limit that instead to avoid creating invalid FBOs. Task-number: QTBUG-10645 Reviewed-by: Gunnar
* | Added workarounds for two MBX/SGX specific GL ES bugs/problems.Trond Kjernåsen2010-05-142-15/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The workaround flags are put into the platform independent section for now, since there might be a general need for these as we expand our GL and GL ES usage. The workaround_needsFullClearOnEveryFrame flag covers the case where you get a performance penalty on PowerVR hw if all rendering buffers are not cleared. The workaround_brokenFBOReadBack flag covers the case where copying pixels from a texture (e.g. via glCopyTexSubImage2d()) bound in an FBO doesn't work. Task-number: QTBUG-10670 Reviewed-by: Gunnar
* | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-05-112-32/+59
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (24 commits) Stabilize tst_QColumnView::parentCurrentIndex Really fix tst_QDockWidget::taskQTBUG_9758_undockedGeometry on Linux Fix typos in Elastic Nodes example documentation. Made paint engine texture drawing work in GL ES 2 and updated docs. Opt out of visual-config size checks with extension Fix off-by-one in text layouts and widget size hints on Mac Stabilize tst_QDockWidget::taskQTBUG_9758_undockedGeometry Mark QFileDialog::Options as a Q_FLAGS fix tst_QDockWidget::taskQTBUG_9758_undockedGeometry on Linux Fixed scrolling bugs in widget graphics effect backend. Fixed source pixmap bug in widget graphics effect backend. Fix crash with stylesheet if widget change style in the changeEvent Fix textdrawing under GL on N900. Fixed bug in QIODevice::read after first reading 0 bytes. Fix auto-test failure on Mac/Linux/QWS. Some EGL implementations does not return a EGLNativeDisplayType Fixed the sizing of the dock area with fixed size dock widgets QSortFilterProxyModel: Warning or assert failure Performance issue with QGraphicsItem::ItemClipsChildrenToShape. Fixes crash in QGraphicsItem::mouseMove for untransformable items. ...
| * | Fix textdrawing under GL on N900.Gunnar Sletta2010-05-072-32/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The driver in the N900 doesn't support glCopyTexSubImage or glReadPixels for FBO's that have a GL_ALPHA or POT color attachment. The ifdef'ed code in resize() was a previous attempt to make this work which didn't. We could have changed the texture to be GL_RGBA and changed the texture size to be NPOT, but that would have wasted precious GPU memory and would have been slower, so we waste a bit of system memory instead, by having a QImage copy along with the texture. Reviewed-by: Eskil Reviewed-by: Trond
* | | Avoid many unnecessary allocations, so so that paint engines attached to pixmapsWarwick Allison2010-05-075-7/+16
|/ / | | | | | | | | | | | | | | | | do not consume excessive amounts of memory, and so can still be reasonably kept cached with the pixmap. Saves 8K for every pixmaps drawn to on raster paint engine. Saves about 2K for other graphicssystems. Task-number: QTBUG-10215 Reviewed-by: Gunnar
* | Fix crash in styles example when running with opengl graphicssystemTom Cooksey2010-04-281-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When drawing text using glyphs, the shader manager will select the "MaskFragmentShader" which requires a varying called "textureCoords" which is used to sample the glyph from the glyph texture. That's fine, except when you try to use one of the pattern brushes or a texture brush, because the src pixel fragment shader snippets for those brushes also sample from a texture (the brush texture) and name the verying they use "textureCoords" too. This led to textureCoords being defined twice, which in turn caused a shader compile error which then casued the seg-fault. This patch simply renames the varying used to pass the coordinates for the brush texture so it doesn't conflict. Reviewed-By: Kim Task-Number: QTBUG-9522
* | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-04-272-2/+7
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: Add unit tests covering most of QVector's API. Fix crash when CoreText fails to shape text for us Fix crash when using opengl graphicssystem on desktop
| * | Fix crash when using opengl graphicssystem on desktopTom Cooksey2010-04-272-2/+7
| | | | | | | | | | | | | | | Reviewed-By: Eskil Task-number: QTBUG-10225
* | | Correctly inherit extension propertiesAaron Kennedy2010-04-271-1/+1
|/ / | | | | | | Correct a typo that breaks extension properties in some cases.
* | Remove dead code left after a merge conflict resolutionTom Cooksey2010-04-222-22/+0
| | | | | | | | Reviewed-By: Kim
* | Use QGLContextPrivate to track attribarray enabled state.Gunnar Sletta2010-04-191-3/+3
| | | | | | | | | | Reviewed-by: Trond Reviewed-by: Tom
* | Move nativePaintingActive flag to GL2 engine's privateTom Cooksey2010-04-142-9/+10
| | | | | | | | Reviewed-By: Samuel
* | More adjustments to QTBUG-6800Carolina Gomes2010-04-142-6/+4
| | | | | | | | | | Merge-request: 2344 Reviewed-by: Tom Cooksey
* | QTBUG-6800 patch included, but only for OpenGL 2.0Carolina Gomes2010-04-142-1/+12
| | | | | | | | | | Merge-request: 2344 Reviewed-by: Tom Cooksey
* | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-04-124-6/+34
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (44 commits) QSlider and StyleSheet: fix one pixel error while drawing the SliderAddPage accelerate QWindowsPipeWriter for bigger chunks of data Fix antialiasing with transformed text in OpenGL2 paint engine Fix flattening of largely scaled, thin, dashed beziers. Increased the precision used to flatten beziers Fix QT_NO_MOVIE Fix compile error with QT_NO_ACTION in QtGui Fix QT_NO_COMPLETER Fix QT_NO_FSCOMPLETER Fix QT_NO_FILESYSTEMMODEL Build fix Safeguard ourselves against corrupt registry values for cleartype gamma fix cetest build properly qdrawhelper: optimize the fetch transformed bilinear functions Compile fix for WinCE Make sure the selectionChanged signal is not called too much Implement heightForWidth support for QTabWidget and QStackedLayout. Fix the doc for QFrame::frameStyle Don't use texture-from-pixmap if the target isn't GL_TEXTURE_2D Add runtime check for GLX >= 1.3 before using glXCreatePixmap ...
| * \ Merge branch '4.7' of git@scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7Eskil Abrahamsen Blomfeldt2010-04-122-5/+27
| |\ \
| | * | Fix flattening of largely scaled, thin, dashed beziers.Gunnar Sletta2010-04-121-4/+24
| | | | | | | | | | | | | | | | | | | | Reviewed-by: Samuel Task: http://bugreports.qt.nokia.com/browse/QTBUG-9218
| | * | Allow y-interted pixmaps for brushes in GL2 paint engineTom Cooksey2010-04-091-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This means texture-from-pixmap can now be used for brush pixmaps. Task-number: QTBUG-9707 Task-number: QT-3013 Reviewed-By: Samuel Rødal
| * | | Fix antialiasing with transformed text in OpenGL2 paint engineEskil Abrahamsen Blomfeldt2010-04-123-1/+7
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. Task-number: QTBUG-9706 Reviewed-by: Tom
* | | Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Thiago Macieira2010-04-122-5/+13
|\ \ \ | |/ / |/| / | |/ | | | | | | Conflicts: qmake/generators/symbian/symmake.cpp src/gui/image/qimage.cpp src/openvg/qwindowsurface_vgegl.cpp
| * Fixed possible data corruption in the triangulating stroker.Trond Kjernåsen2010-04-091-4/+12
| | | | | | | | | | | | | | | | | | In the case where a polygon or polyline that contains consequtive equal points, we end up calculating an invalid normal vector for the joins. This fix skips past duplicate consequtive points. Task-number: QTBUG-9548 Reviewed-by: Kim
| * Fixed caching of QPainter patterns in the GL 2 engine.Trond Kjernåsen2010-04-071-1/+1
| | | | | | | | | | | | | | The patterns all got the same cache key (e.g. 1), which caused the patterns to be uploaded as a texture every single time they were used. Reviewed-by: Kim
* | Compile Qt in C++0x mode.Thiago Macieira2010-03-201-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | This is not valid in C++0x: char str[] = { 128, 0 }; Because 128 cannot be represented in a char. The same applies to conversion from int to qreal: it's a narrowing conversion, with possible data loss. More info: http://www2.research.att.com/~bs/C++0xFAQ.html#narrowing Reviewed-by: Trust Me
* | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7-integrationQt Continuous Integration System2010-03-172-12/+17
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * '4.7' of scm.dev.nokia.troll.no:qt/qt-qml: (112 commits) Verbose unexpected errors. One url for an *unqualilfied* import is not special. Fix test failures Optimization: Don't unnecessarily run VMEStack element constructors Optimization: Reduce unnecessary QObject allocations Reset QDeclarativeDeclarativeData::outerContext when the context is removed Simplify QDeclarativeComponent::creationContext() logic Optimization: Use id notifier for QtScript bindings Optimization: Combine QDeclarativeDeclarativeData and QObject allocations Fixes for the module import Fix documentation add alan's tic-tac-toe AI Remove test in .pro file also Remove unneeded #include and add needed header to .pri Add easing changes to QmlChanges.txt Update more animation on property value source docs. Doc fixes. QmlChanges.txt cleanup. Remove WorkerListModel and integrate its functionality into ListModel. Split post alpha API changes into a separate section. ...
| * \ Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7-integrationQt Continuous Integration System2010-03-162-12/+17
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * '4.7' of scm.dev.nokia.troll.no:qt/qt-qml: (100 commits) Remove test in .pro file also Remove unneeded #include and add needed header to .pri Add easing changes to QmlChanges.txt Update more animation on property value source docs. Doc fixes. QmlChanges.txt cleanup. Remove WorkerListModel and integrate its functionality into ListModel. Split post alpha API changes into a separate section. Optimize drawPixmapFragments for the GL2 paint engine. Optimize QRegion::intersects(QRect). Compile with user defined Qt namespace Fix regression from previous commit Import "content" with as qualifier to support network without qmldir Small fixes to photoviewer demo Little more doc on QabstractItemModel and QML. Fix benchmark. Add basic QUrl benchmarks. Add busy indicator to photoviewer demo Set maximumExtents correctly for highlightRangeMode: StrictlyEnforceRange fix installation of imports libraries ...
| | * | Optimize drawPixmapFragments for the GL2 paint engine.Michael Brasser2010-03-152-12/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In this case, we don't need QGL2PEXVertexArray to keep track of min and max information. Reviewed-by: Samuel
* | | | Fix OpenGL2 paint engine compilation issueRhys Weatherley2010-03-161-1/+1
| | | | | | | | | | | | | | | | Reviewed-by: Daniel Pope
* | | | Avoid using uncompatible vertex shader for non-solid brushesEskil Abrahamsen Blomfeldt2010-03-161-3/+10
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | The simplified vertex shader for complex geometry is written specifically for solid brushes and needs to be disabled when the brush is anything else. This work-around can be removed later when QTBUG-9069 is handled, since that removes the extra requirements on the setPosition() shader. Reviewed-by: tom
* | | Implement a special case, simplified vertex shader for complex geometryEskil Abrahamsen Blomfeldt2010-03-165-2/+39
|/ / | | | | | | | | | | | | | | | | | | When drawing text, the vertex count will most likely be so high that using a uniform-based, simpler vertex shader is faster. We implement the ability to inform the shader manager that the geometry is considered complex, so that it can choose the simpler vertex shader in these cases. Task-number: QT-2887 Reviewed-by: tom
* | Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Thiago Macieira2010-03-151-3/+8
|\ \ | |/ | | | | | | Conflicts: src/gui/styles/qs60style_s60.cpp
| * Worked around driver bug causing clipping errors on N900.Samuel Rødal2010-03-101-3/+8
| | | | | | | | | | | | | | | | | | Apparently the driver does some optimization which causes it to behave erratically when stencil testing is enabled. Multiplying the return value from the texture lookup by 1.0 disables the optimization. Task-number: QTBUG-8753 Reviewed-by: Trond
* | Added clipping to the dashed stroke processor in the GL2 engine.Kim Motoyoshi Kalland2010-03-103-7/+12
| | | | | | | | | | | | | | | | | | Without clipping, the stroker could consume a huge amount of memory when scaling up cosmetic, dashed strokes. I also made QDashStroker clip more aggressively. Task-number: QTBUG-7832 Reviewed-by: Samuel
* | Compile fix when Qt3Support is enabled for devices using EGL.Trond Kjernåsen2010-03-101-1/+1
| | | | | | | | Reviewed-by: Samuel
* | Compile with Qt3Support in a ScratchBox environment.Trond Kjernåsen2010-03-101-1/+1
| | | | | | | | Reviewed-by: Tom Cooksey
* | Renamed QPainter::Fragment/Hint -> QPainter::PixmapFragment/HintTrond Kjernåsen2010-03-092-5/+8
| | | | | | | | Reviewed-by: Kim
* | Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Rohan McGovern2010-03-061-0/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure.exe examples/multimedia/audioinput/audioinput.cpp src/corelib/io/qfsfileengine.cpp src/gui/egl/qegl_wince.cpp src/gui/egl/qeglproperties.cpp src/gui/egl/qeglproperties_p.h src/gui/embedded/directfb.pri src/gui/kernel/qapplication_win.cpp src/gui/painting/qdrawutil.cpp src/opengl/qgl_p.h src/sql/drivers/odbc/qsql_odbc.cpp src/sql/drivers/odbc/qsql_odbc.h tests/auto/auto.pro tests/auto/qgl/tst_qgl.cpp translations/assistant_adp_ru.ts
| * Fixed an exit crash that could occur in the GL 2 engine under X11.Trond Kjernåsen2010-03-041-0/+1
| | | | | | | | | | | | | | | | | | The global destructor for the clean up hooks might be called before the global destructor for QPixmap objects. We shouldn't leave pixmaps around that is destroyed after the QApplication destructor is called. Task-number: QTBUG-8681 Reviewed-by: Tom Cooksey
* | Remove comment in drawStaticTextItem() in GL engineEskil Abrahamsen Blomfeldt2010-02-241-1/+0
| | | | | | | | | | | | | | | | | | | | Removing this comment, as a decision was made. QStaticText is an optimization class. Forcing a fallback for all fonts over a certain size would be to intrusive. People should get to decide for themselves whether to cache the text or not when using QStaticText. They can always fall back to drawText() themselves. Reviewed-by: TrustMe