| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
every window surface created.
Conflicts:
src/opengl/qgl_egl.cpp
src/opengl/qgl_p.h
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
examples/webkit/imageanalyzer/imageanalyzer.h
examples/webkit/imageanalyzer/mainwindow.h
mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h
src/corelib/io/qfsfileengine_iterator_unix.cpp
src/corelib/io/qfsfileengine_iterator_win.cpp
src/corelib/kernel/qcoreapplication.cpp
src/network/access/qnetworkaccessdatabackend.cpp
src/plugins/bearer/connman/qconnmanservice_linux.cpp
src/plugins/platforms/openvglite/qwindowsurface_vglite.h
src/s60installs/bwins/QtCoreu.def
src/s60installs/eabi/QtCoreu.def
src/s60installs/s60installs.pro
tools/assistant/tools/assistant/helpviewer_qwv.h
tools/qdoc3/test/qt-html-templates.qdocconf
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
configure
qmake/generators/win32/msbuild_objectmodel.cpp
src/gui/image/qpnghandler.cpp
src/network/access/qnetworkaccessdatabackend.cpp
src/opengl/qgl_x11egl.cpp
tests/auto/qnetworkreply/tst_qnetworkreply.cpp
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Just add some Q_UNUSED for parameters or remove the variable we don't
need for the others.
Reviewed-by: Trust Me
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
configure
doc/src/snippets/code/doc_src_qmake-manual.qdoc
mkspecs/features/symbian/application_icon.prf
mkspecs/features/symbian/default_post.prf
mkspecs/features/symbian/symbian_building.prf
qmake/generators/symbian/initprojectdeploy_symbian.cpp
src/multimedia/audio/audio.pri
src/network/access/qnetworkaccessmanager.cpp
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
src/opengl/qgl_p.h
src/plugins/bearer/corewlan/qcorewlanengine.mm
src/plugins/phonon/mmf/mmf.pro
tests/auto/qscriptvalue/tst_qscriptvalue.cpp
tests/auto/qscriptvalue/tst_qscriptvalue.h
tools/qdoc3/doc/qdoc-manual.qdocconf
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
| |
In Qt we track the current context in a thread via a QThreadStorage.
The thread storage contents are deleted in the thread context, just
before it's destroyed. This means we can safely call eglReleaseThread()
in the QGLThreadContext destructor. We can then get rid of unnecessary
context swaps, since we don't need to take care to reset a thread
context back to 0 after having used e.g. the QGLShareContextScope
mechanism, which is good.
Reviewed-by: Samuel
|
|
|
|
| |
Reviewed-By: TrustMe
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
QGLWidgets are assumed to be buffer destroyed, however regular
QWidgets assume they can to partial updates and thus need the
preserved swap behaviour.
Reviewed-By: Trond
Task-number: QTBUG-9554
|
|
|
|
|
|
|
| |
QtGui exporting a symbol called eglCreateImageKHR seems a pretty
silly idea. Much better to have them in the QEgl namespace.
Reviewed-By: Iain
|
|
|
|
| |
Reviewed-By: TrustMe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There's lots of EGLImage extensions, split between EGL and client
rendering APIs like OpenGL ES & OpenVG. To implement texture-from-
pixmap using EGLImage, both EGL extensions and OpenGL ES extensions
are needed. This patch resolves the EGL extension function pointers
after the display is initialized in QEgl::display(). These are then
exported from QtGui so they can be used in QtOpenGL. The OpenGL ES
extension function pointers are resolved using the usual
qglextensions.cpp mechanism.
Using EGLImage seems to remove a fixed ~10 millisecond overhead per
pixmap bind when compared to using EGLSurface. Exact results per bind
for 100 QPixmaps are:
8x8 Pixmap: 12 -> 1.71 msecs (EGLSurface -> EGLImage)
64x64 Pixmap: 11.6 -> 1.83 msecs (EGLSurface -> EGLImage)
128x128 Pixmap: 12.8 -> 2.74 msecs (EGLSurface -> EGLImage)
256x256 Pixmap: 16 -> 6.20 msecs (EGLSurface -> EGLImage)
Reviewed-By: Trond
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Previously, some members of QGLFormat (like alphaBufferSize) would
be left to the initial -1 value.
Reviewed-By: TrustMe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We want to make sure 16-bit configs are chosen over 32-bit configs as
they will provide the best performance. The EGL config selection
algorithm is a bit stange in this regard: The selection criteria for
EGL_BUFFER_SIZE is "AtLeast", so we can't use it to discard 32-bit
configs completely from the selection. So it then comes to the
sorting algorithm. The red/green/blue sizes have a sort priority of
3, so they are sorted by first. The sort order is special and
described as "by larger _total_ number of color bits.". So EGL will
put 32-bit configs in the list before the 16-bit configs. However,
the spec also goes on to say "If the requested number of bits in
attrib_list for a particular component is 0, then the number of bits
for that component is not considered". This part of the spec also
seems to imply that setting the red/green/blue bits to zero means
none of the components are considered and EGL disregards the entire
sorting rule. It then looks to the next highest priority rule, which
is EGL_BUFFER_SIZE. Despite the selection criteria being "AtLeast"
for EGL_BUFFER_SIZE, it's sort order is "smaller" meaning 16-bit
configs are put in the list before 32-bit configs. So, to make sure
16-bit is preffered over 32-bit, we must set the red/green/blue
sizes to zero. This has an unfortunate consequence that if the
application sets the red/green/blue size to 5/6/5 on the QGLFormat,
they will probably get a 32-bit config, even when there's an RGB565
config avaliable. Oh well.
Reviewed-By: TrustMe
|
|
|
|
|
|
|
| |
Note: This changes QX11PixmapData::gl_surface to a void* to enable
build on 64-bit systems where EGLSurface is a pointer.
Reviewed-By: TrustMe
|
|
|
|
| |
Reviewed-By: TrustMe
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
EGLConfig is an opaque type which we really shouldn't cast to an int.
Instead, we get the config id for the EGLConfig.
Reviewed-By: TrustMe
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
The old qt_chooseEGLConfigForPixmap & qt_createEGLSurfaceForPixmap
code will remain until QX11GLPixmapData can be re-written properly.
Reviewed-By: TrustMe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QEgl::createSurface() on X11 will now check to see if the device's
X11 Visual is compatible with the EGLConfig passed in. If it is not
compatible, the function will re-create the QPaintDevice's native
drawable with a different Visual (one which is compatable with the
EGLConfig). This represented the bulk of the QGLWidget::setContext
method which is now much simpler.
As a consequense of this change, QWidgets with graphicssystem opengl
will behave much more like QGLWidget as most of the code is re-used.
So things like WA_TranslucentBackground should now work with opengl
graphicssystem too.
Reviewed-By: TrustMe
|
|
|
|
|
|
| |
Also renamed qt_egl_set_format->qt_eglproperties_set_glformat
Reviewed-By: TrustMe
|
|
|
|
|
|
|
| |
QEglProperties::setPaintDeviceFormat() seems to be a copy & paste
of qt_egl_add_platform_config for every platform anyway.
Reviewed-By: TrustMe
|
|
|
|
| |
Reviewed-By: Trond Kjernåsen
|
|
|
|
|
|
|
| |
This method has been re-written as QEgl::getCompatibleVisualId()
which is much cleaner code.
Reviewed-By: TrustMe
|
|
|
|
| |
Reviewed-By: TrustMe
|
|
|
|
| |
Reviewed-By: Aleksandar Sasha Babic
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|\
| |
| |
| |
| | |
Conflicts:
src/multimedia/audio/qaudioformat.cpp
|
| |
| |
| |
| | |
Reviewed-by: TrustMe
|
|\ \
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|/
|
|
|
|
|
| |
Exchanged the temporary QGLWidget with a lightweight internal class.
Measured on a device it can be upto 20 ms faster to construct.
Reviewed-by: Tom Cooksey
|
|
|
|
|
|
|
|
| |
If the QGLWidget's QGLFormat says it should have an alpha
channel, try to find an ARGB Visual.
Reviewed-By: Trond
Task-number: QT-2602
|
| |
|
|
|
|
|
|
|
| |
Also check for existing QEglContext before creating a new one and
leaking a context.
Reviewed-by: TrustMe
|
|
|
|
|
|
|
| |
If we succeed in creating a shared context, then mark the original
as shared as well.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
| |
Context sharing was enabled on EGL systems, but QGLContext::isSharing()
was still returning false because the flag in QGLContextPrivate
was not updated.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
| |
Better than having to befriend QPixmapData and setting is_cached
manually.
Reviewed-by: Tom Cooksey
|
|
|
|
|
|
|
|
|
|
|
|
| |
The error message come from the QGLContextPrivate::bindTexture.
But since OpenGl errors are retains until glGetError is called the
actual error was happening somewhere else.
After adding in all the gl* call a check for a gl error, I was able
to get the place where opengl fail with a GL_INVALID_ENUM.
This happen in the call of glEnable(GL_TEXTURE_2D) in the file
qgl_x11egl.cpp. This glEnable call does not need: removed.
Reviewed-by: Tom Cooksey
|
|
|
|
|
|
|
| |
QGLTextureCache installs pixmap cleanup hooks which are used to clean up
the EGL surfaces.
Reviewed-By: Trustme
|
|
|
|
|
| |
Enable it by setting QT_USE_X11GL_PIXMAPS environment variable while
using the -graphicssystem opengl
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We need this in qwindowsurface_gl.cpp.
This patch was modified slightly by Tom, who stole it from another
branch. :-)
Reviewed-by: Gunnar
|
| |
| |
| |
| |
| | |
This is needed to implement render-to-pixmap on x11/EGL, which will also
need to create an EGL surface for pixmaps.
|