summaryrefslogtreecommitdiffstats
path: root/src/opengl/qgl_p.h
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote branch 'origin/master' into qt-master-from-4.7Thiago Macieira2010-07-151-1/+1
|\ | | | | | | | | Conflicts: src/opengl/qgl_p.h
| * Compile with qmlscene.Bjørn Erik Nilsen2010-07-151-1/+1
| | | | | | | | Reviewed-by: kim
* | Merge remote branch 'origin/4.7' into qt-master-from-4.7Thiago Macieira2010-07-151-1/+2
|\ \ | |/ |/| | | | | Conflicts: src/gui/kernel/qapplication.h
| * QGLWindowSurface support for partial updates via EGL_NOK_swap_region2Michael Dominic K2010-07-011-0/+1
| | | | | | | | | | | | | | (if extension available). Merge-request: 712 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
| * Export various symbols needed to make a custom GL graphicssystem.Michael Dominic K2010-06-301-1/+1
| | | | | | | | | | Merge-request: 2422 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
| * Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-06-281-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (24 commits) Fix an assertion in comp_func_SourceOver_sse2() if const_alpha == 0 Add a manual test for regular widget interaction with the table. New variant of ::createPixmapData with origin for QGraphicsSystem. EGL plane levels are the same as all other GL backends. Need to access extensionFuncs in subclasses too. Export QGLWindowSurface too. Export the QGLPixmapData so that we can override it in a custom graphics system. Fixed autotest failure in QPathClipper on N900. Fixed autotest failure in QPainter::setOpacity when NEON is used. Fix compilation when configured with -no-xrender Add a new (internal) flag QGraphicsItem::ItemStopsClickFocusPropagation. Fixed some potential index-out-of-bounds issues in QImage. Fixed autotest failure in fillRect_stretchToDeviceMode Adding a known issue for VC2010 64 bit Added a note to desupport VC2010 64-bit Normalize integers when calling glVertexAttribPointer() Add an implementation of comp_func_solid_SourceOver_neon() with Neon. Fix the casts of qdrawhelper_sse2 Add a SSE2 implementation of comp_func_solid_SourceOver() Add a SSE2 version of comp_func_SourceOver() ...
| | * Need to access extensionFuncs in subclasses too.Michael Dominic K2010-06-251-1/+1
| | | | | | | | | | | | | | | Merge-request: 2422 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* | | Track the GL DCs we use across different threads under Windows.Trond Kjernåsen2010-07-081-0/+1
| | | | | | | | | | | | | | | | | | | | | A DC returned by GetDC() is only valid within the context of the calling thread, so we need to track which tread a DC belongs to. Reviewed-by: Kim
* | | Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-07-061-18/+143
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | master-integration * 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (24 commits) QGLPixelBuffer should not rely on temporary QGLWidgets. Initialize pex. Remove warning. Fix the tests for the internal GL resource system. Rework how QGLTextureGlyphCache makes use of the resource system. The group pointer should no longer be a part of the 64 bit int. Enable glyph uploads from a thread in the X11 font engine. Make qt_pixmap_serial thread-safe. Clean up debug output. Clarification regarding the WA_X11InitThreads flag. Rework the internal GL resource system yet again. Check Qt::AA_X11InitThreads to determine pixmap usage in threads. Add an application attribute to control XInitThreads(). Unnecessary alloc + remove unused headers. QGLPixelBuffer should manage its own paint engines. Remove the DDS texture cache. Make the GL texture cache share textures between shared contexts. Redesigned how GL resource management works. Don't use the QGLSignalProxy to clean up the thread-local shaders. Simplify how the QGLEngineSharedShaders object is cleaned up. ...
| * | Fix the tests for the internal GL resource system.Trond Kjernåsen2010-07-021-2/+2
| | |
| * | Rework the internal GL resource system yet again.Trond Kjernåsen2010-07-021-14/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of having to sub-class QGLContextResource, we now have two template classes: 1. 'QGLContextResource' to handle context specific resources that are *not* shared in a group, even though the context itself is in a sharing group 2. 'QGLContextGroupResource' to handle resources shared in a context group. Classes used as the template class type must have a constructor with the following signature: T(const QGLContext *); The resources that the templates wrap are freed up when the context or context group it is tied to is destroyed. The resource is also freed when the QGLContext<Group>Resource object is destroyed, which might lead to context switches, depending on where and in how many non-sharing contexts the resource is used. The templates wrap some boiler plate code that were common for all the use cases.
| * | Unnecessary alloc + remove unused headers.Trond Kjernåsen2010-07-021-6/+2
| | |
| * | Remove the DDS texture cache.Trond Kjernåsen2010-07-021-3/+0
| | | | | | | | | | | | | | | It has no practical use and is a leftover from when pixmap/image textures and dds textures used the same cache.
| * | Redesigned how GL resource management works.Trond Kjernåsen2010-07-021-7/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The usage of QGLContextResource has changed: You're now have to subclass QGLContextResource and reimplement the freeResource() function and add your cleanup code there instead of using a plain callback function. It's now also possible to delete a QGLContextResource *before* the QGLContextGroup it refers to is destroyed, as the resource will remove itself from the context groups it's a member of. The QGLTextureGlyphCache is no longer a QObject, and it no longer depends on the aboutToDestroyContext() signal. That concept doesn't work in a threaded environment, as it relies on an eventloop to dispatch the signal to the thread. It's common to *not* have an eventloop running in a thread, which means the signal might never be delivered. QGLTextureGlyphCache now inherits from QGLContextResource, and gets cleaned up correctly when the group context is destroyed. Note that up until now the glyph cache has never been shared among sharing contexts for the GL 2 engine. Made the gradient and pixmap blur caches use the new QGLContextResource scheme. Added a template that wraps the common init code for paintEngine() function implementations for QGLWidget, QGLPixelBuffer and QGLFramebufferObject. Fixed a bug in QFontCache where the font caches weren't cleared when a thread other than the main thread exited (backported to 4.6.3), which caused resource leaks.
| * | Don't use the QGLSignalProxy to clean up the thread-local shaders.Trond Kjernåsen2010-07-021-0/+2
| | | | | | | | | | | | | | | | | | After much back and forth I think we can use this approach for cleaning up thread-local, shared resources. Main problem has been dealing with dangling pointers and references, but they should be solved now.
| * | More work on GL threading.Trond Kjernåsen2010-07-021-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removed QObject inheritance from QGLEngineSharedShaders and made it thread-local, so that paintengines in different threads can use programs without clashing. Lifted some restrictions on QPixmap so that they may be used in threads when the GL2 engine is active. Made the QGLContextGroup a part of the pixmap and image cache keys.
* | | Merge branch '4.6-s60' into 4.7-s60axis2010-06-241-1/+1
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/phonon/qt7/mediaobject.mm src/3rdparty/webkit/VERSION src/3rdparty/webkit/WebCore/ChangeLog src/plugins/phonon/mmf/mmf.pro
| * | Ensure that compiling with the no debug/warning output defines worksAndy Shaw2010-06-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The defines that can be used are QT_NO_DEBUG_OUTPUT and QT_NO_WARNING_OUTPUT in order to turn off qDebug and qWarning output. Reviewed-by: cduclos Reviewed-by: Markus Goetz
* | | Fixed an on-exit crash for apps using GL.Trond Kjernåsen2010-06-111-0/+4
| |/ |/| | | | | | | | | | | | | | | | | | | | | If a QGLWidget is left on the heap when the QApplication destructor is called, it will leave the QGLWidget in a broken state. The widget itself is released and set to a non-created state, which the associated QGLContext doesn't get notified about. With this patch the QGLWidget knows when QWidget::destroy() is called and can act acordingly. Task-number: QT-3498, QTBUG-10995 Reviewed-by: Paul
* | Fixed a problem where QPixmaps where re-bound in non-sharing contexts.Trond Kjernåsen2010-06-011-13/+23
| | | | | | | | | | | | | | | | | | | | If you have two non-sharing GL contexts and try to draw the same QPixmap in both of them, they will wind up competing for a spot in the texture cache. Make the context group a part of the cache key to avoid that. Task-number: QT-3462 Reviewed-by: Kim
* | Added workarounds for two MBX/SGX specific GL ES bugs/problems.Trond Kjernåsen2010-05-141-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Make sure recreateEglSurface creates a surface if there isn't oneTom Cooksey2010-04-221-1/+1
| | | | | | | | | | | | | | | | If QGLWidgetPrivate::recreateEglSurface is called after a surface has been deleted, it should always create a new surface and ignore the fact that the window ID may not have changed. Reviewed-By: Trond
* | Support building with desktop OpenGL managed via EGLTom Cooksey2010-04-141-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This mostly replaces lots of QT_OPENGL_ES defines with QT_NO_EGL instead. It also switches off EGL auto-detection by default. This is to make sure we default to using GLX on systems with both EGL and desktop OpenGL. If -opengl es1|es2 or -openvg is specified, then EGL auto-detection is switched back on (as a requirement. If configure auto-detects OpenGL ES it also switches on EGL auto-detection, but failue then just disables both EGL & OpenGL. As a side effect, this patch also fixes building Qt when both EGL and glx are avaliable, as they are in Mesa >= 7.8.0. Reviewed-by: Trond Task-number: QTBUG-9691
* | Merge branch '4.7' of git@scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7David Boddie2010-03-301-41/+56
|\ \ | |/ |/| | | | | | | | | | | | | | | Conflicts: doc/src/modules.qdoc mkspecs/common/symbian/symbian.conf src/gui/graphicsview/qgraphicswidget.h src/s60installs/bwins/QtGuiu.def src/s60installs/eabi/QtGuiu.def
| * Avoid having to create temporary QPixmaps when binding to textureTom Cooksey2010-03-261-1/+1
| | | | | | | | Reviewed-By: TrustMe
| * Made QGLExtensions::glExtensions() thread-safe.Trond Kjernåsen2010-03-121-2/+0
| | | | | | | | Reviewed-by: Gunnar
| * Delete the QGLContext in ~QX11GLPixmapDataTom Cooksey2010-03-111-0/+1
| | | | | | | | | | | | | | | | This also includes changes which allow QGLContext to not own it's own QEglContext. With X11GL, the QEglContext gets reused by multiple QGLContexts so it is important QGLContext doesn't delete it. Reviewed-By: TrustMe
| * Made QGLTextureCache::instance() threadsafe.Trond Kjernåsen2010-03-111-1/+0
| | | | | | | | Reviewed-by: Tom Cooksey
| * Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Rohan McGovern2010-03-061-1/+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
| * | Fix build when egl.h includes X11 headers & pollutes namespaceTom Cooksey2010-03-041-7/+1
| | | | | | | | | | | | | | | | | | | | | At some point we should fix the include order in all the .cpp files, however #udef'ing the defines we use elsewhere seems to work for now. Reviewed-By: TrustMe
| * | Add and use QGLContextPrivate::eglSurfaceForDevice()Tom Cooksey2010-03-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | The QGLContext only stores the EGLSurface for QWidgets & QGLWidgets, other device types like QPixmap & QGLPixelBuffer store the surface themsselves. With this patch it is possible to create a QGLContext on a QPixmap, make it current and render GL to that QPixmap on X11. Reviewed-By: TrustMe
| * | Merge remote branch 'origin/master' into qt-master-from-4.6Thiago Macieira2010-02-201-6/+36
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure.exe src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp src/opengl/qgl.cpp
| | * | Some threading improvements to the GL moduleGunnar Sletta2010-02-171-6/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Make bindTexture threadsafe - Document which areas of QGLWidget needs locking in order to do out-of-gui thread rendering - Testcases to prove that these cases work Reviewed-by: Trond
| * | | Merge branch '4.6' into qt-master-from-4.6Thiago Macieira2010-02-171-2/+2
| |\ \ \ | | |/ / | |/| | | | | | | | | | | | | | | | | | Conflicts: mkspecs/common/symbian/symbian.conf src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp tools/assistant/tools/assistant/helpviewer.cpp
| * | | Merge remote branch 'origin/4.6' into qt-master-from-4.6Thiago Macieira2010-02-121-1/+3
| |\ \ \
| * \ \ \ Merge remote branch 'qt/4.6' into qt-master-from-4.6Qt Continuous Integration System2010-02-091-6/+3
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qcocoapanel_mac.mm src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
| * | | | | Remove obsolete OpenGL/ES CommonLite (fixed-point) supportRhys Weatherley2010-02-041-16/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-7683 Reviewed-by: Tom Cooksey
| * | | | | Merge branch '4.6'Thiago Macieira2010-01-181-36/+59
| |\ \ \ \ \
| * \ \ \ \ \ Merge branch '4.6'Thiago Macieira2010-01-131-1/+1
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: bin/syncqt doc/src/deployment/deployment.qdoc src/corelib/io/qfsfileengine_win.cpp src/corelib/xml/qxmlstream.cpp src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h tools/assistant/tools/assistant/centralwidget.cpp tools/linguist/lupdate/main.cpp
| * \ \ \ \ \ \ Merge branch '4.6'Thiago Macieira2010-01-081-16/+18
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qfsfileengine.cpp src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp src/opengl/opengl.pro
| * | | | | | | | Added support for OpenGL up to version 3.2 on Windows.Kim Motoyoshi Kalland2009-12-301-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-4438, QT-2662, QT-2663 Reviewed-by: Tom
* | | | | | | | | Export QGLContextResource for use with Qt/3DRhys Weatherley2010-03-291-1/+1
| |_|_|_|_|_|_|/ |/| | | | | | |
* | | | | | | | Preparation to enable OpenGLES 2.0 for Windows Mobile.ninerider2010-02-271-3/+9
| |_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As there are no SDKs available for our test device (HTC HD2) that support OpenGL, we had to construct the libraries by extracting them from the ROM image. This is still work in progress at this time.
* | | | | | | Fix several bugs with GL texture cacheTom Cooksey2010-02-121-2/+2
| |_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | Reviewed-By: Trond Autotest: tst_QGL::qglContextDefaultBindTexture
* | | | | | Merge branch '4.5' of scm.dev.nokia.troll.no:qt/qt into 4.6Kim Motoyoshi Kalland2010-02-091-1/+3
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qapplication_win.cpp src/gui/kernel/qwidget.cpp src/gui/kernel/qwidget_p.h
| * | | | | Fixed bug where GL widget was not fully updated on Vista.Kim Motoyoshi Kalland2010-02-041-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were cases where the QGLWidget would not be fully updated on screen on Windows Vista and Windows 7 with Aero disabled. Task-number: QTBUG-7865 Reviewed-by: Prasanth
| * | | | | Update license headers again.Jason McDonald2009-09-081-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Reviewed-by: Trust Me
* | | | | | Fix GL texture leaks when pixmaps are deletedTom Cooksey2010-01-291-6/+3
| |_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes quite a lot of issues: * QtOpenGL only registered qpixmap destruction hooks on X11 and those only cleanup the EGL/GLX surface, not the texture object. * The QPixmap destruction hooks were only being called from the QPixmap destructor. However, this means when a QPixmap is assigned to another QPixmap, the hooks don't get called. Task-number: QTBUG-7647 Reviewed-By: Samuel Reviewed-By: Trond
* | | | | Rework how Qt handles GL extensions.Trond Kjernåsen2010-01-131-36/+59
| |_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt used to store the GL extensions a particular implementation supported in a global cache, which was initialized once and never updated. This could cause problems because different types of context might support different kinds of extensions (e.g. the difference between sw and hw contexts). With this patch, the GL extensions are cached and updated within each QGLContext. It also makes the extension initialization lazy, which saves application initialization costs for embedded platforms. The patch introduces a internal cross platform QGLTemporaryContext class that is used to create a light-weight GL context without going via QGLWidget and friends (QWS and WinCE still have QGLWidget fallbacks for now). Reviewed-by: Kim Reviewed-by: Samuel
* | | | Merge branch '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into ↵Qt Continuous Integration System2010-01-071-1/+1
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.6-integration * '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-1: QIODevice: Fix readAll() Temporary hackiesh solution to prevent BOM in the xml data. Fixed qxmlstream autotest when using shadow builds. Attempt at readding the capital P headers for Phonon Remove special Phonon processing from syncqt. Use the lowercase/shortname.h headers for Phonon includes Fixes a crash when setting focus on a widget with a focus proxy. Update copyright year to 2010 doc: Clarified activeSubControls and subControls. Remove warning "statement with no effect" doc: Clarified that .lnk files are System files on Windows.