summaryrefslogtreecommitdiffstats
path: root/src/opengl/gl2paintengineex
Commit message (Collapse)AuthorAgeFilesLines
* Replace QGLDrawable with a new QGLPaintDeviceTom Cooksey2009-09-082-30/+38
| | | | | | | | | | | | | | | | | This patch adds a new abstract base class which inherits from QPaintDevice called QGLPaintDevice. This base class will contain everything the GL paint engines need to know about the surface they are drawing onto. As such, new surfaces can be targeted by the GL paint engines without having to modify QtOpenGL. This is very useful for plugins, specifically QGraphicsSystem plugins. To unify things a little, the GL paint engines will use the same QGLPaintDevice API to render into existing target surfaces (QGLWidget, QGLPixelBuffer & QGLFrameBufferObject). Ideally we'd make QGLPaintDevice a common ancestor for these surfaces, but obviously that wil break B/C. This patch only implements QGLWidget using the new interface. Rendering to other surfaces will be fixed in following patches.
* Fixed crash in tst_qgl.Samuel Rødal2009-09-031-3/+4
| | | | | | | The shader manager needs to be recreated since the context it was created with might not be valid any more. Reviewed-by: Kim
* Fixed a system clip issue in the GL 2 engine.Trond Kjernåsen2009-09-021-3/+9
| | | | | | | | QGraphicsView can set the system clip in order to handle clipping of QGraphicsView children, and we have to take that into account in the GL 2 engine, as we did in the GL 1 engine. Reviewed-by: Samuel
* Split QGLEngineShaderManager into a shared and a per engine part.Kim Motoyoshi Kalland2009-09-025-295/+331
| | | | | | | | | Both the shaders and the engine states were shared between OpenGL contexts, but the states should be only apply to one context, not a group of contexts. This commit separates the shaders and the states. Task-number: 257254 Reviewed-by: Samuel
* Don't seg-fault when printing error message in shader managerTom Cooksey2009-09-011-11/+25
| | | | | | | | It's very likely that some of the shader objects in required program will be null, as not all are manditory. Check to see if they exist before de-referencing them and asking for their log string. Reviewed-by: Trustme
* Fixed poor utilization of depth buffer range in GL 2 paint engine.Samuel Rødal2009-09-012-29/+41
| | | | | | | | | | | | | | | | | Before this patch we were only able to do 20 or so IntersectClips before failing, this patch instead adapts to the fixed point nature of typical depth buffer implementations and lets us do ~2^15 IntersectClip operations before failing, which should be a reasonable limit for any real-world application. Using the following mapping of old floating point depths to integer depths: -1.0 -> 0, -0.5 -> 1, 0.0 -> 2, 0.25 -> 3, 0.5 -> 4, 0.625 -> 5, etc.. Reviewed-by: Tom
* Fixed a problem with corrupted text in the GL 2 engine.Trond Kjernåsen2009-08-311-0/+1
| | | | | | | Blending should not be enabled when copying the font cache texture into the fbo. It *may* cause artifacts with some drivers. Reviewed-by: Samuel
* Update tech preview license header for files that are new in 4.6.Jason McDonald2009-08-315-65/+65
| | | | Reviewed-by: Trust Me
* Fixed inverted pixmaps when using OpenGL graphics effects.Samuel Rødal2009-08-311-1/+3
| | | | | | | QGL2PaintEngineExPrivate::drawTexture() texture coordinates have been inverted, so they need to be inverted here too. Reviewed-by: Kim
* Merge branch '4.5' into 4.6Thiago Macieira2009-08-316-78/+78
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: demos/boxes/glshaders.cpp demos/boxes/vector.h demos/embedded/fluidlauncher/pictureflow.cpp demos/embedded/fluidlauncher/pictureflow.h doc/src/desktop-integration.qdoc doc/src/distributingqt.qdoc doc/src/examples-overview.qdoc doc/src/examples.qdoc doc/src/frameworks-technologies/dbus-adaptors.qdoc doc/src/geometry.qdoc doc/src/groups.qdoc doc/src/objecttrees.qdoc doc/src/platform-notes.qdoc doc/src/plugins-howto.qdoc doc/src/qt3support.qdoc doc/src/qtdbus.qdoc doc/src/qtdesigner.qdoc doc/src/qtgui.qdoc doc/src/qtmain.qdoc doc/src/qtopengl.qdoc doc/src/qtsvg.qdoc doc/src/qtuiloader.qdoc doc/src/qundo.qdoc doc/src/richtext.qdoc doc/src/topics.qdoc src/corelib/tools/qdumper.cpp src/gui/embedded/qkbdpc101_qws.cpp src/gui/embedded/qkbdsl5000_qws.cpp src/gui/embedded/qkbdusb_qws.cpp src/gui/embedded/qkbdvr41xx_qws.cpp src/gui/embedded/qkbdyopy_qws.cpp src/gui/embedded/qmousebus_qws.cpp src/gui/embedded/qmousevr41xx_qws.cpp src/gui/embedded/qmouseyopy_qws.cpp src/gui/painting/qpaintengine_d3d.cpp src/gui/painting/qwindowsurface_d3d.cpp src/opengl/gl2paintengineex/glgc_shader_source.h src/opengl/gl2paintengineex/qglpexshadermanager.cpp src/opengl/gl2paintengineex/qglpexshadermanager_p.h src/opengl/gl2paintengineex/qglshader.cpp src/opengl/gl2paintengineex/qglshader_p.h src/opengl/util/fragmentprograms_p.h src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp src/script/parser/qscript.g src/script/qscriptarray_p.h src/script/qscriptasm_p.h src/script/qscriptbuffer_p.h src/script/qscriptclass.cpp src/script/qscriptclassdata_p.h src/script/qscriptcompiler.cpp src/script/qscriptcompiler_p.h src/script/qscriptcontext.cpp src/script/qscriptcontext_p.cpp src/script/qscriptcontext_p.h src/script/qscriptcontextfwd_p.h src/script/qscriptecmaarray.cpp src/script/qscriptecmaarray_p.h src/script/qscriptecmaboolean.cpp src/script/qscriptecmacore.cpp src/script/qscriptecmadate.cpp src/script/qscriptecmadate_p.h src/script/qscriptecmaerror.cpp src/script/qscriptecmaerror_p.h src/script/qscriptecmafunction.cpp src/script/qscriptecmafunction_p.h src/script/qscriptecmaglobal.cpp src/script/qscriptecmaglobal_p.h src/script/qscriptecmamath.cpp src/script/qscriptecmamath_p.h src/script/qscriptecmanumber.cpp src/script/qscriptecmanumber_p.h src/script/qscriptecmaobject.cpp src/script/qscriptecmaobject_p.h src/script/qscriptecmaregexp.cpp src/script/qscriptecmaregexp_p.h src/script/qscriptecmastring.cpp src/script/qscriptecmastring_p.h src/script/qscriptengine.cpp src/script/qscriptengine_p.cpp src/script/qscriptengine_p.h src/script/qscriptenginefwd_p.h src/script/qscriptextenumeration.cpp src/script/qscriptextenumeration_p.h src/script/qscriptextqobject.cpp src/script/qscriptextqobject_p.h src/script/qscriptextvariant.cpp src/script/qscriptfunction.cpp src/script/qscriptfunction_p.h src/script/qscriptgc_p.h src/script/qscriptmember_p.h src/script/qscriptobject_p.h src/script/qscriptprettypretty.cpp src/script/qscriptprettypretty_p.h src/script/qscriptvalue.cpp src/script/qscriptvalueimpl.cpp src/script/qscriptvalueimpl_p.h src/script/qscriptvalueimplfwd_p.h src/script/qscriptvalueiteratorimpl.cpp src/script/qscriptxmlgenerator.cpp src/script/qscriptxmlgenerator_p.h tests/auto/linguist/lupdate/testdata/recursivescan/project.ui tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp tests/auto/qkeyevent/tst_qkeyevent.cpp tools/linguist/shared/cpp.cpp
| * Update tech preview license header.Jason McDonald2009-08-3111-143/+143
| | | | | | | | Reviewed-by: Trust Me
| * Update license headers.Jason McDonald2009-08-1111-11/+11
| | | | | | | | Reviewed-by: Trust Me
* | Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt into 4.6Gunnar Sletta2009-08-282-18/+75
|\ \
| * | Fixed QGLWidget::renderText() when using the GL 2 paint engine.Trond Kjernåsen2009-08-282-18/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | QGLWidget::renderText() needs to respect the current depth and scissor tests that the user has set. Therefore we needs some special casing in the GL 2 paint engine to handle the custom depth testing. The private setRenderTextActive() has been added for this purpose. Reviewed-by: Samuel
* | | Attempting to make EGL compile again and fix some potentialGunnar Sletta2009-08-281-1/+3
|/ / | | | | | | issues with flipped pixmaps on X11
* | Fixed path filling in the GL2 paint engine.Kim Motoyoshi Kalland2009-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | The bounding box was not updated for moveTo-commands except the first one. Therefore, the calculated bounding box could be too small for paths with more than one subpath, and when the stencil method was used, parts of the path would not be filled. Task-number: 245803 Reviewed-by: Samuel
* | Don't flip texture coords in texture brushes in accordance with new bindTextureGunnar Sletta2009-08-271-1/+0
| | | | | | | | Reviewed-by: Trond
* | Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt into 4.6Gunnar Sletta2009-08-274-39/+55
|\ \ | | | | | | | | | | | | | | | Conflicts: src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
| * | Made GL 2 engine reset various GL state to their defaults in end().Samuel Rødal2009-08-262-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | This makes mixing GL and QPainter code safer. We need to be able to assume default GL state in begin(), and set back whatever we change to the default state in end() in the GL 2 paint engine. Reviewed-by: Trond
| * | Made brush textures in GL2 engine use correct filtering.Samuel Rødal2009-08-261-8/+10
| | | | | | | | | | | | | | | | | | | | | Only use bilinear filtering when SmoothPixmapTransform render hint is used. Reviewed-by: Kim
| * | Improved GLSL precision specifiers in GL 2 engine.Samuel Rødal2009-08-261-24/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The recommended specifiers are lowp for colors / normal vectors, mediump for texture coordinates when a limited range is sufficient, and highp for generic texture coordinates and vertex coordinates / transformation matrices. We used to use mediump for texture coordinate in some places, but since we don't control the texturing scenarios we need to handle the worst case, which is zooming in on part of a large texture (2048x2048) with bilinear filtering. To properly handle this case without color banding mediump is probably not sufficient, so we'll use highp for texture coordinates. Reviewed-by: Tom
| * | Improved QPainter API for allowing native painting in GL / VG.Samuel Rødal2009-08-262-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | Previously we were using QPaintEngine::syncState() which is not ideal naming-wise, since it actually prepares for native painting instead of syncing the painter's state to native state. Reviewed-by: Trond
| * | Added missing precision specifiers to custom shader effect.Samuel Rødal2009-08-262-2/+2
| | | | | | | | | | | | | | | | | | The precision specifiers need to be there on OpenGL ES 2.0. Reviewed-by: Tom
* | | New variant of QGLContext::bindTexture that does not require mipmap generationGunnar Sletta2009-08-271-8/+9
|/ / | | | | | | | | | | | | and y-axis inversion and overall less conversion, making significantly faster for plain usecases Reviewed-by: Trond
* | Fixed clipping bug in GL 2 paint engine (visible in arthur demos).Samuel Rødal2009-08-261-1/+1
| | | | | | | | | | | | | | | | | | | | QVectorPath::hints() is not a strict bit field, and thus can not be anded with RectangleHint. Instead, QVectorPath::shape() should be directly compared with RectangleHint to check if the vector path is a rectangle or not. In this case the first four points of a regular painter path were treated as a rectangle with dire consequences. Reviewed-by: Tom
* | Removed warnings / debug output in the GL 2 engine / pixmap filter code.Samuel Rødal2009-08-252-2/+1
| | | | | | | | Reviewed-by: Tom
* | Fix obsolete license headers.Jason McDonald2009-08-212-5/+5
| | | | | | | | Reviewed-by: Trust Me
* | compile fix with namespaces in QGLCustomShaderStagePrivatehjk2009-08-211-0/+4
| |
* | Fix drawTiledPixmap for texture_from_pixmap on X11/EGLTom Cooksey2009-08-211-0/+1
| | | | | | | | | | | | | | QGLContextPrivate::bindTextureFromNativePixmap() needs to abort if it's not allowed to return a y-inverted texture. Reviewed-by: Trustme
* | Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt into master-s60axis2009-08-217-68/+413
|\ \ | | | | | | | | | | | | | | | | | | Conflicts: src/gui/graphicsview/qgraphicsitem.cpp src/gui/kernel/qwidget.cpp src/gui/kernel/qwidget_p.h
| * \ Merge commit 'qt/master' into kinetic-graphicseffectBjørn Erik Nilsen2009-08-211-0/+1
| |\ \ | | | | | | | | | | | | | | | | Conflicts: src/gui/graphicsview/graphicsview.pri
| * \ \ Merge commit 'qt/master' into kinetic-graphicseffectBjørn Erik Nilsen2009-08-192-12/+31
| |\ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/graphicsview/qgraphicsitem_p.h
| * \ \ \ Merge commit 'qt/master' into kinetic-graphicseffectBjørn Erik Nilsen2009-08-179-14/+24
| |\ \ \ \
| * \ \ \ \ Merge commit 'qt/master' into kinetic-graphicseffectBjørn Erik Nilsen2009-08-072-17/+80
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/graphicsview/graphicsview.pri src/gui/graphicsview/qgraphicsitem.cpp src/gui/graphicsview/qgraphicsitem.h src/gui/graphicsview/qgraphicsitem_p.h src/gui/graphicsview/qgraphicsscene.cpp tests/auto/auto.pro
| * | | | | | Fixed various valgrind-reported issues in GL 2 engine.Samuel Rødal2009-07-292-3/+2
| | | | | | |
| * | | | | | Improve GL filter performance by caching custom shader programs.Samuel Rødal2009-07-282-10/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This brings performance back up to where it was pre-merge.
| * | | | | | Merge commit 'qt-graphics-team/pixmapfilters-redux' into kinetic-graphicseffectSamuel Rødal2009-07-287-34/+72
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/opengl/gl2paintengineex/qglengineshadermanager.cpp src/opengl/gl2paintengineex/qglengineshadermanager_p.h src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h Merge custom shader / GL blur pixmap filter implementation from graphics team repo with implementation from kinetic graphics-team repo.
| | * | | | | | Further optimized the GL blur filter by caching the QGLShader.Samuel Rødal2009-07-021-1/+0
| | | | | | | |
| | * | | | | | Added caching of custom shader programs as well in GL 2 shader manager.Samuel Rødal2009-07-012-15/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensures that the programs are evicted from the cache when the shaders are destroyed.
| | * | | | | | Added missing createPixmapFilter() implementation in GL 2 engine.Samuel Rødal2009-06-302-0/+10
| | | | | | | |
| | * | | | | | Added drawTexture function to GL 2 paint engine.Samuel Rødal2009-06-302-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Works just like drawImage / drawPixmap but uses the given texture id.
| | * | | | | | Added custom shader hook to the GL 2 paint engine.Samuel Rødal2009-06-305-24/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will make it easier to implement pixmap filters, YUV->RGB conversions, etc in other parts of Qt.
| * | | | | | | Reset shader stage variables when the custom shader is explicitly removed.Rhys Weatherley2009-07-241-0/+2
| | | | | | | |
| * | | | | | | Make it easier to change custom shaders.Rhys Weatherley2009-07-244-0/+26
| | | | | | | |
| * | | | | | | Make ordinary shaders work again after custom shader changes.Rhys Weatherley2009-07-241-7/+7
| | | | | | | |
| * | | | | | | Actually add the files... :-)Tom Cooksey2009-07-232-0/+196
| | | | | | | |
| * | | | | | | Initial stab at a custom shader stage APITom Cooksey2009-07-234-54/+129
| | | | | | | |
* | | | | | | | Merge commit 'qt/master'Jason Barron2009-08-201-0/+1
|\ \ \ \ \ \ \ \ | | |_|_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/painting/svgviewer/files/bubbles.svg src/corelib/kernel/qobject.cpp src/network/kernel/qhostinfo.cpp tests/auto/qhostinfo/tst_qhostinfo.cpp
| * | | | | | | Fixed an assert in debug mode when drawing text with theTrond Kjernåsen2009-08-201-0/+1
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GL 2 engine on embedded. Worked in release because we don't really use any internals in QDataBuffer that sets the internal size correctly. Reviewed-by: Samuel
* | | | | | | Merge commit 'qt/master'Jason Barron2009-08-182-12/+31
|\ \ \ \ \ \ \ | |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/src/examples.qdoc doc/src/plugins-howto.qdoc doc/src/topics.qdoc examples/phonon/musicplayer/mainwindow.cpp src/3rdparty/freetype/src/base/ftobjs.c src/corelib/global/qglobal.h src/corelib/tools/qalgorithms.h src/corelib/tools/qshareddata.cpp src/corelib/tools/qsharedpointer.cpp src/corelib/tools/tools.pri src/corelib/xml/qxmlstream.h src/gui/painting/painting.pri src/gui/widgets/qdatetimeedit.cpp tests/auto/qdesktopservices/qdesktopservices.pro tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp tests/auto/qtextcodec/test/test.pro