| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is a bug in some versions of the Vivante driver, causing clients
to crash when a window is closed. This patch avoids a crash on startup,
confirmed with GL version "OpenGL ES 3.0 V5.0.11.p4.25762". The crash
happens with both Weston and Qt-based compositors.
Since we do not yet know exactly which versions are affected, we
avoid destroying the temporary surface for all Vivante versions.
Change-Id: I4b5b0ebb04b8441559aebb54a6ec3eb534c5c8e0
Reviewed-by: Jan Arne Petersen <jan.petersen@kdab.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous fix (93ca929fb9caf347150) would always crash on client exit.
It tried use the same destroy_listener on several buffers. Due to the
way linked lists are implemented in Wayland, a listener can only
be listening to one signal at the time.
The correct way to do this is to create a new listener for each buffer.
Change-Id: Ie94dd8cd2d3dc7f93a0526c5c585a8feab3b7354
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
(cherry picked from commit d6fe7b6165859e17f0308cd28ab0cd2e2e3db294)
|
|
|
|
|
|
|
|
|
|
| |
Remove it from the list in the callback, not when a new buffer
is created later on.
Change-Id: I2328edec9728752d18efaecede19eb4527d0f578
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
(cherry picked from commit 93ca929fb9caf34715012dec608afd42e6ccf1e5)
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|\
| |
| |
| | |
Change-Id: Ie70fdd03e1259a8cb75bbdbf1324e3e4a2b51807
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
contains(QT_CONFIG, egl) and CONFIG += egl is the only sane way to test
for and pull in EGL headers and libs. This is particularly important when
trying to be robust and guard against half-broken sysroots on embedded
where a naive PKGCONFIG += egl breaks.
Also add an EGL_WAYLAND_BUFFER_WL define to keep wayland-egl compiling.
We are not testing for that in any config tests may cause a failure in sysroots
that have parts of Mesa thrown in but pick ip an older EGL header from the
vendor's driver.
Change-Id: I7b7e6a7a91e78dbda5b6954ad08761298c538efc
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Directly calling eglCreateGlobalImageBRCM and friends is not ideal due to the
messy RPi distro setups: shipping Mesa (sw rasterizer only) in standard locations
may cause picking up those EGL/GLES libs instead of the Broadcom ones from /opt/vc
when building Qt. While this is something that should be fixed in the sysroot (since
it is a problem at runtime anyway), let's make life easier by resolving via
eglGetProcAddress, which is the right approach in any case.
Change-Id: I73f7698b638691d97743a6f819bc7c8ee6ebd245
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Wayland linked lists are implemented by having next and prev pointers
in the objects themselves. This means that an object can only be in
one list at the time. If the object is not removed from a list before
being inserted into another, the original list is corrupted.
Change-Id: Idc6cfc507f7d7ff30a365fda01c4f9729335ae09
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
qwindow-compositor changes from 5.6 will be adapted separately.
The traditional wayland-egl path is tested and is functional like before.
The EGLStream support will be verified separately once the qwindow-compositor
changes are ready.
Conflicts:
examples/wayland/qwindow-compositor/qwindowcompositor.cpp
examples/wayland/qwindow-compositor/textureblitter.cpp
examples/wayland/qwindow-compositor/textureblitter.h
examples/wayland/server-buffer/client/client.pro
examples/wayland/server-buffer/compositor/compositor.pro
src/compositor/compositor_api/qwaylandbufferref.cpp
src/compositor/compositor_api/qwaylandbufferref.h
src/compositor/hardware_integration/qwlclientbufferintegration_p.h
src/compositor/wayland_wrapper/qwlkeyboard.cpp
src/compositor/wayland_wrapper/qwlkeyboard_p.h
src/compositor/wayland_wrapper/qwlsurfacebuffer.cpp
src/compositor/wayland_wrapper/qwlsurfacebuffer_p.h
src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp
src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.h
src/plugins/hardwareintegration/compositor/wayland-egl/wayland-egl.pro
Change-Id: Ic2e3a6e8f74606c35b1e27cd4016fa133527d7ba
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For Wayland on NVIDIA. Tested with a Jetson TK1 Pro and Vibrante Linux.
With just the hw integration no compositors would work out of the box
since EGL_KHR_stream_consumer_gltexture only allows connecting to the
texture bound to GL_TEXTURE_EXTERNAL_OES, meaning that assumptions about
the target always being GL_TEXTURE_2D break horribly both in C++ and in
shader code.
In addition, buffers have to be extended with an additional updateTexture()
operation as EGLStream requires to call ConsumerAcquire on every
frame. Previously there was no concept of this as calling
createTexture() on attach() was sufficient.
Qt Quick bits are omitted since the refactored compositor API is pretty
different. This means that QML compositors will not currently function
in this environment.
The qwindow-compositor example is enhanced to support the external
texture target, but this won't apply for the refactored branch
either. It is provided for testing purposes for the time being, and to
show how C++ compositors can support different texture targets and
correct operation with EGLStreams.
Done-with: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Change-Id: I0e209fc0cbcf435cca83528d938eb50e4bdceb82
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
examples/wayland/pure-qml/main.cpp
examples/wayland/pure-qml/qml/Chrome.qml
examples/wayland/pure-qml/qml/main.qml
src/client/qwaylanddnd_p.h
src/compositor/compositor_api/qwaylandquicksurface.cpp
src/compositor/compositor_api/qwaylandsurface_p.h
src/compositor/compositor_api/qwaylandsurfaceitem.cpp
src/compositor/extensions/qwlinputmethodcontext_p.h
src/compositor/hardware_integration/qwlclientbufferintegration_p.h
src/compositor/hardware_integration/qwlclientbufferintegrationfactory_p.h
src/compositor/hardware_integration/qwlclientbufferintegrationplugin_p.h
src/compositor/hardware_integration/qwlhwintegration_p.h
src/compositor/hardware_integration/qwlserverbufferintegrationfactory_p.h
src/compositor/hardware_integration/qwlserverbufferintegrationplugin_p.h
src/compositor/wayland_wrapper/qwlcompositor_p.h
src/compositor/wayland_wrapper/qwldatadevice_p.h
src/compositor/wayland_wrapper/qwldatadevicemanager_p.h
src/compositor/wayland_wrapper/qwldatasource_p.h
src/compositor/wayland_wrapper/qwlextendedsurface_p.h
src/compositor/wayland_wrapper/qwlinputdevice_p.h
src/compositor/wayland_wrapper/qwlinputmethod_p.h
src/compositor/wayland_wrapper/qwlinputpanel_p.h
src/compositor/wayland_wrapper/qwlinputpanelsurface_p.h
src/compositor/wayland_wrapper/qwlkeyboard.cpp
src/compositor/wayland_wrapper/qwlkeyboard_p.h
src/compositor/wayland_wrapper/qwloutput_p.h
src/compositor/wayland_wrapper/qwlpointer_p.h
src/compositor/wayland_wrapper/qwlregion_p.h
src/compositor/wayland_wrapper/qwlshellsurface_p.h
src/compositor/wayland_wrapper/qwlsubsurface_p.h
src/compositor/wayland_wrapper/qwlsurface.cpp
src/compositor/wayland_wrapper/qwlsurface_p.h
src/compositor/wayland_wrapper/qwltextinput_p.h
src/compositor/wayland_wrapper/qwltextinputmanager_p.h
src/compositor/wayland_wrapper/qwltouch_p.h
src/compositor/windowmanagerprotocol/waylandwindowmanagerintegration_p.h
src/imports/compositor/WaylandCursorItem.qml
Change-Id: I4e63ef295b297022d4970b3c68b3d565843086bd
|
| |
| |
| |
| |
| | |
Change-Id: I75eda7e766182025b54f8df851ff1d5a72eefb17
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When hiding a window we attach a NULL buffer, which means that any
frame callback that is still waiting will not be sent. In the SHM
case we just destroy it, but we cannot do that in the EGL case, since
we don't have a hold of it. So destroy the EGLSurface, which will
in turn destroy the callback.
Task-number: QTBUG-46921
Change-Id: I20e0d1ca7b53fb88096101d46979996dd944d429
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
| |
| |
| |
| |
| | |
Change-Id: Ic6aad5c0d51b2ae9ee078d3935db3daa642f9b32
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| | |
enable building QtWaylandCompositor by default
Change-Id: I7cf34052b304ca9fef55b7e30ef6a6367b5d75f1
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
| |
| |
| |
| |
| |
| | |
and other api adjustments
Change-Id: Idda1bfa314d401f59029f2adafbb245a47c267ac
|
| |
| |
| |
| | |
Change-Id: I09f34fe3ea6bb3b57e49c63284f48d8af908ec1a
|
| |
| |
| |
| |
| |
| | |
Embrace PIMPL
Change-Id: I8c8b5971e15c208317ff33231bda1513e7b8d489
|
| |
| |
| |
| |
| |
| |
| |
| | |
Its enough to have QWaylandSurface and QWaylandSurfacePrivate. Also
don't pass QWaylandSurfacePrivate around, but pass QWaylandSurface and
then use the QWaylandSurfacePrivate::get function.
Change-Id: I915cc9d7b4497ad1c6f1f2dee61d9d0db069ba6b
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
to the respective QWaylandSurfaceView. For all GL applications this will have no
significant impact, but will cause a memory regression for shm surfaces
with multiple views.
This is done to simplify the creation and destruction of textures,
especially in multi-threaded environments.
Also the same patch removes the y_inverted property and replaces it with
a origin property. Its done in the same patch as a lot of the code was
overlapping.
Change-Id: I4bce50c614c9ac3ba0580e0560339476eac03433
|
|/
|
|
| |
Change-Id: I84ed248b471464214d935352768f300d4b90dec3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This occurs for example when a Qt Quick2 application calls
showFullScreen() while a rendering is already in progress.
The GUI thread was calling destroyEglSurfaces() from setGeometry() and
thus destroying the buffers, while the render thread was trying to use
the buffers from swapBuffers().
There was a division by zero in swapBuffers() with the modulo m_count
operation, because EGL surfaces were destroyed and m_count was 0.
This fix is quite fragile, proper locking on buffers would be better.
Change-Id: I41fcb2fcebec84c0dfc82ce56c6e323d3722b30a
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
| |
Change-Id: I0c6b59eb9d59d6db4a71811562cdf740bfb0a06e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
They were not destroyed until the client quit, so this could be
significant after many resize operations.
This was also leaked server-side as a result.
Change-Id: If9b84a06e3f9c79af92a949bc67e81ef9e00a230
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
| |
Change-Id: I8944c176f12932eb51e867bc39820b2553a5d3ba
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
eglBindAPI's docs says "defines the current rendering API for EGL in the
thread it is called from". We were instead just calling it in the thread
the context was created in, not in the thread used for rendering.
Change-Id: Iba8ffe75a6f4f8b9d1bba59c0e7cce34499e9c48
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/client/qwaylandshmbackingstore.cpp
src/client/qwaylandwindow.cpp
Change-Id: I795fd08f0fc5d3cb5ed55bf16e724f66b7567723
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
qopengl.h includes GLES3 which conflicts with GLES2 declarations.
Might happen because Qt is built with desktop GL.
This patch fixes the following build error.
In file included from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp:61:0:
/opt/vc/include/GLES2/gl2.h:600:125: error: conflicting declaration of C function 'void glShaderSource(GLuint, GLsizei, const GLchar**, const GLint*)'
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
^
In file included from /usr/include/qt/QtGui/qopengl.h:97:0,
from ../../../../../include/QtCompositor/5.5.0/QtCompositor/private/../../../../../src/compositor/hardware_integration/qwlclientbufferintegration_p.h:46,
from ../../../../../include/QtCompositor/5.5.0/QtCompositor/private/qwlclientbufferintegration_p.h:1,
from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.h:44,
from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp:44:
/usr/include/GLES3/gl3.h:475:29: note: previous declaration 'void glShaderSource(GLuint, GLsizei, const GLchar* const*, const GLint*)'
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
Change-Id: I49ae11457b70b05f740ce70b8c1cfa5d6aa554bb
Reviewed-by: Olivier Blin <qt@blino.org>
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I5540dfb8e115ab6b3c90bb78618b277783a912f3
Reviewed-by: Olivier Blin <qt@blino.org>
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Include wayland-client.h to disambiguate between QtWaylandClient::wl_registry
and wl_registry.
Change-Id: Idf33fd56a6b2c2436f5cbabc953980d05826ebba
Reviewed-by: Olivier Blin <qt@blino.org>
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It got broken after commit b332630c86014eada07990acf66c13e000b3482b:
Fix generated code for interface names not starting with qt_ or wl_
Like done in xcompositebuffer.h
Change-Id: Ib9b44536d4214737d8d68d62c8512e18a80d5b5d
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.
Change-Id: I5a74d32515c3f1fe7aa1916f4241c92832510f8c
Reviewed-by: Antti Kokko <antti.kokko@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a new QWaylandOutput class to support multiple outputs.
Each QWaylandOutput need a window for rendering.
Rename OutputGlobal to Output and Output to OutputResource.
Add support for physical size, mode and available geometry.
Use better defaults for geometry and refreshRate from the QWindow
if available.
A window is no longer passed to QWaylandCompositor constructor
and all output related methods are removed, however one or more
outputs are required for hardware integration.
QWaylandCompositor returns a list of outputs and offers an API to add
or remove outputs.
Hardware integrations can run headless.
Change-Id: I742996571ddb78328f7bfa4f79b25a81995279e1
Done-with: Jan Arne Petersen <jan.petersen@kdab.com>
Done-with: Jørgen Lind <jorgen.lind@theqtcompany.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There currently is a QWaylandInputDevice class both in the wayland QPA
plugin and in the QtCompositor API. This causes the qwindow-compositor
example to crash when running nested in a wayland session due to a
mismatch between the two classes.
By namespacing all the plugin code we make sure that name clashes
will not happen anymore.
Change-Id: I17497cff697599200bea68bf01dfde474526390f
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Wayland 1.2 added support for display scaling, where wl_output
has a "scale" event informing the the client that the compositor
will scale the output surfaces by the given factor. The client
then has the option of providing large surfaces to match the
target pixel densety and bypass the compositor's scaling. This
is done by calling wl_surface::set_buffer_scale.
Re-use the current high-dpi support in Qt by implementing
devicePixelRatio() for QWaylandScreen and QWaylandWindow.
Provide high resolution buffers both for raster and OpenGL
graphics.
Introduce a new coordinate system: buffer coordinates, which
is related to the window coordinate system via an "int scale"
scale factor. This scale factor corresponds to Qts qreal
devicePixelRatio, but we keep the name and the type in the
QtWayland implementation.
Change-Id: Ie10d7e5b4833480a9a25d96a26ad02150eb6e83f
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
|/
|
|
|
|
|
|
|
| |
The native resource getters that are supported by eglfs will have to be
supported by the wayland platform plugin too. (on wayland-egl at least)
Change-Id: Ibbab649c04785dbde177342c45b9bc6f1edd954d
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
We cannot just assume all clients implement the same version of the
various interfaces as the compositor does. Keep track of them, and
react accordingly when creating a resource or sending an event.
Change-Id: I9792433a14d49c5c4df0c892fc1349ce0dfb0d43
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
|
| |
Use the EGL_KHR_create_context extension if available to create modern gl
contexts. We disable window decorations on core profiles because that
mandates a VAO to be used.
Change-Id: Id6044e64f6736244ae9d593af4d68c4000a31de6
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
|
|
| |
This is in preparation for decoration plugins.
Change-Id: Idb322a7a5cbc2eb5bf2cce019073f9f4fb46297f
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
|
|
|
|
|
|
|
|
|
|
|
| |
You cannot have rounded corners with an alpha-less config. To make OpenGL
applications appearing with the correct decoration, alpha must be enabled.
With this fix the OpenGL apps' decoration will now look identical to the
SHM apps'.
Change-Id: I24431ddab63146f7f697c85277f00f41e5c55e85
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
|
|
|
|
| |
Change-Id: Id840ace3d762e47c0076745301e8012755077770
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
|
|
|
|
|
|
| |
Nothing relies on it and we are anyway passing null.
Change-Id: I2543650441c7f97d23b52bc7a4caa555b0777676
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
|
|
|
|
| |
Change-Id: Ibc8eae85219da044812d22967c46b4bebb5e27bf
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Custom client buffer integrations may not care about window decorations.
Setting QT_WAYLAND_DISABLE_WINDOWDECORATION is tedious and error-prone.
And it cannot be omitted since things like input events will be off if the
common client code thinks decorations are in use but the client buffer
integration does not render them at all.
Therefore add a supportsWindowDecoration() virtual in addition to the
environment variable.
Change-Id: If8f621182d5c230f4d8d679c050f5d27aed6c2fb
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In an attempt to make QOpenGLWidget and QQuickWidget working on Wayland.
Since Qt 5.3 all widget windows are of type RasterGLSurface (given that
the plugin reports this capability which wayland will, with this patch).
Such a window can behave either like a raster or an OpenGL window.
This concept maps badly to platform plugins that have a rigid separation
between raster and OpenGL platform window implementations. From now on,
the OpenGL window implementation, that is used pretty much always,
except for raw RasterSurface windows, must be prepared to behave like
a raster window too, which involves having a backingstore.
Change-Id: I0226704b8d5893843fcae68059c5fe9ad2f5e761
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
|
|
|
|
|
|
|
|
|
| |
The return type in 'PFNEGLHYBRISGETNATIVEBUFFERINFOPROC' and
'PFNEGLHYBRISSERIALIZENATIVEBUFFERPROC' conflict with hybris_native.h,
it is void while it should be EGLBoolean.
Change-Id: Ia23ab4da59b3a904eb5b2884398ab5dd207f415b
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
Reviewed-by: Yen-Chin Lee <coldnew.tw@gmail.com>
|
|
|
|
|
| |
Change-Id: I6a21f447f31e9eeeafed81275c33b0c2c79e1c8a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
Currently a global is bound with the version the interface has in the xml
file. This is a problem for apps that explicitly link to libwayland-client
because they may link to a newer libwayland, so the version of some interface
may be higher than the one that it is actually implemented.
Change-Id: Id0dbe6c0f1e05fe91954b9d8d9472d42d2053cdc
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The idea that swapBuffers() randomly changes the state is ridiculous and
breaks even Qt's own OpenGL examples. An application, that has full control
over its context and rendering, is not necessarily prepared for random state
changes in its context.
To overcome this, save and restore all the interesting state. This is fragile
and applications can break it in different ways by setting all sorts of
exotic state, esp. when using modern OpenGL. For GLES2 level stuff it should
be sufficient, though.
Change-Id: I52e7ba4072b241eb92f5f04b81d707ad5bc68f6d
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
That third parameter is dangerous and should never be set to true,
unless you know what you are doing. eglfs does not set this flag either.
Do the same in wayland-egl, otherwise certain context/window creation
patterns (in particular with QOffscrenSurface, which is often created with
an existing context's format()) will end up with incompatible contexts
and surfaces on systems that offer both 565 and 888 configs.
Long story short, setting the flag ignores the extra check in the EGL config
selection logic that ensures that you get a config you asked for, i.e. that
a 888 config will not be returned (unless there is no other choice) if 565
was explicitly requested in the input QSurfaceFormat.
The result is that we may get a 888 config even when explicitly asking for 565.
However asking for unspecified will give 565. In the QOffscreenSurface case
this means having an 565 context and a 888 window -> bad match.
Not setting the flag brings the expected behavior: not specifying the color buffer
sizes chooses the lower buffer size (565), explicitly specifying 565 chooses 565,
while explicitly specifying 888 prioritizes 888 configs.
Change-Id: Ia78086a9f255f2933cda7de4f5787d71d58a1356
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
|
|
|
|
|
|
|
|
|
| |
There is no reason we should be allocating and managing our own set of
window decorations. This is only going to add to the total texture
memory used and because it is managed as a shared GL resource, it
would have needed some care during cleanup to clean it up correctly.
Change-Id: I19651837da6b3dfde0f78a964982f3f67e577493
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|