summaryrefslogtreecommitdiffstats
path: root/src/opengl/qpixmapdata_x11gl_egl.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Don't leak objects if QX11GLSharedContexts is instanciated twiceTom Cooksey2010-04-261-3/+6
| | | | | | | | If two threads call the Q_GLOBAL_STATIC accessor at the same time, two QX11GLSharedContexts objects can be created with one being destroyed. Reviewed-By: TrustMe
* Enable QX11GLWindowSurface using "-graphicssystem x11gl" optionTom Cooksey2010-04-261-9/+7
| | | | | | | | | | | | | | | When the OpenGL graphics system is in X11GL mode, it will use the QX11GLWindowSurface for all widgets except QGraphicsViews with the FullViewportUpdate update mode set, where it will use the regular QGLWindowSurface, as this is probabbly faster. QX11GLWindowSurface differs from QGLWindowSurface because it allows accelerated scrolling and partial updates, while still being using opengl to do rendering. Task-number: QT-280 Task-number: QT-2625 Reviewed-By: Trond
* QX11GL: Move the shared context ownership into a seperate classTom Cooksey2010-04-221-97/+144
| | | | | | | | | | | | | This patch moves initialisation into a new QX11GLSharedContexts class which is created as a Q_GLOBAL_STATIC. This class owns both the RGB/ARGB EGL contexts and the QGLContext used for sharing. Finally, the shared QGLContext is make a valid context wrapping the RGB EGL context and a small pixmap surface. This makes the shared QGLContext the QGLContextGroup master, so when it is deleted, it can be made current to delete the GL resources. Among other benefits, this patch stops apps seg-faulting when they gracefully quit. Reviewed-By: TrustMe
* QX11GL: Don't do glFinish in endPaintTom Cooksey2010-04-221-6/+0
| | | | | | | | | | | | | | It's better to defer the synchronisation to just before the point it is actually needed. When used as a window surface, this is in flush and scroll. If the QX11GLPixmapData is used as the defaut backend for QPixmaps, it might need to be put back into endPaint. However, the GL driver will hopefully make sure rendering to the pixmap is complete before binding it as a texture via texture-from-pixmap. Also, it's probably better to use eglWaitClient rather than glFinish for synchronisation as it is potentially slightly more optimal. Reviewed-By: TrustMe
* QX11GL: Fix bug with pixmaps drawn on multiple top-levelsTom Cooksey2010-04-191-2/+17
| | | | Reviewed-By: TrustMe
* Make QX11GLPixmapData::scroll() return a valueTom Cooksey2010-03-171-1/+3
| | | | Reviewed-By: TrustMe
* Fix some rendering/scrolling artifacts with QX11GLWindowSurfaceTom Cooksey2010-03-171-0/+4
| | | | | | | | | | The GL2 paint engine sometimes adds a 0.49,0.49 offset when rendering into a multi-sampled QGLPaintDevice. The problem was that we weren't updating the QGLContext's QGLFormat with the EGLConfig so the paint engine thought it was rendering into an surface without multisampling and thus added the offset. Reviewed-By: TrustMe
* Add ultra-paranoid synchronization to QX11GLPixmapDataTom Cooksey2010-03-171-6/+60
| | | | | | | | | This is completely over the top and many of these synchronisation points should be removed before doing any serious benchmarking. However, it makes sure any remaining bugs are not due to GPU & CPU being out of sync. Reviewed-By: TrustMe
* Delete the QGLContext in ~QX11GLPixmapDataTom Cooksey2010-03-111-0/+3
| | | | | | | | 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
* Make the EGL contexts in QX11GLPixmapData Q_GLOBAL_STATICTom Cooksey2010-03-101-3/+13
| | | | | | Still not ideal, but this should do for now. Reviewed-By: TrustMe
* Handle EGLSurfaces better, including more error detectionTom Cooksey2010-03-101-2/+8
| | | | | | | Note: This changes QX11PixmapData::gl_surface to a void* to enable build on 64-bit systems where EGLSurface is a pointer. Reviewed-By: TrustMe
* Make sure pixmap hooks get installed so EGL surfaces are cleaned upTom Cooksey2010-03-101-0/+4
| | | | Reviewed-By: TrustMe
* Port QX11GLPixmapData & QX11GLWindowSurface to new QEgl APITom Cooksey2010-03-051-82/+56
| | | | | | | It's still just as buggy, but at least it allows us to remove a lot of crud from qgl_x11egl.cpp. Reviewed-By: TrustMe
* Move static methods from QEglContext to QEgl namespaceTom Cooksey2010-03-021-11/+9
| | | | Reviewed-By: Aleksandar Sasha Babic
* Move qegl_p.h -> qeglcontext_p.h and add a new qegl_p.hTom Cooksey2010-03-021-0/+1
| | | | | | | | This puts the QEgl namespace in a single file which can be used by both qeglcontext and qeglproperties. Files which need QEglContext should now include qeglcontext_p.h. Reviewed-By: Aleksandar Sasha Babic
* Merge branch '4.6' into qt-master-from-4.6Thiago Macieira2010-02-171-8/+7
|\ | | | | | | | | | | | | Conflicts: mkspecs/common/symbian/symbian.conf src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp tools/assistant/tools/assistant/helpviewer.cpp
| * Cleanup QEglContext & EGLDisplaysTom Cooksey2010-02-121-8/+7
| | | | | | | | | | | | | | | | | | This basicaly replaces display(), openDisplay() & defaultDisplay() methods with a single display() and nativeDisplay(), the latter being implemented in the platform-specific files and everything else being cross-platform code. Reviewed-By: Trond
* | Remove obsolete OpenGL/ES CommonLite (fixed-point) supportRhys Weatherley2010-02-041-4/+4
|/ | | | | Task-number: QTBUG-7683 Reviewed-by: Tom Cooksey
* Fix X11/EGL builds using OpenGL ES 1.1Tom Cooksey2010-01-191-6/+45
| | | | | Task-number: QTBUG-7399 Reviewed-By: TrustMe
* Update copyright year to 2010Jason McDonald2010-01-061-1/+1
| | | | Reviewed-by: Trust Me
* Use different GL contexts for ARGB & RGB pixmapsTom Cooksey2009-10-191-31/+100
| | | | | | | | | On 16 bpp systems, RGB pixmaps are 16-bit whereas ARGB pixmaps are 32-bit. This means two different EGL configs are used which are incompatable with each other. As a result, we have to use 2 different EGL contexts - one for each config. Reviewed-By: Trustme
* Add a new QX11GLPixmapData which renders to X pixmaps using GLTom Cooksey2009-10-191-0/+183
Enable it by setting QT_USE_X11GL_PIXMAPS environment variable while using the -graphicssystem opengl