summaryrefslogtreecommitdiffstats
path: root/src/3rdparty
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@qt.io>2019-01-07 15:01:20 +0100
committerJani Heikkinen <jani.heikkinen@qt.io>2019-01-08 11:57:40 +0000
commitc584db87cf924f3a3d883288de8c2f4210186af6 (patch)
tree78b91ca235fa7f881786160949744c6db1071060 /src/3rdparty
parent024be9dcae26a0d88ffb76f9fca252f2135ad7c9 (diff)
wl_eglstream_controller implementation for NVIDIA
This adds a new client buffer integration: wayland-eglstream-controller, which contains the EGLStream logic from wayland-egl, and additionally uses NVIDIA's wayland-eglstream-controller protocol to avoid the issue where the stream is not ready at the time of first buffer attach. This is not enabled by default. Can be used like this: QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=wayland-eglstream-controller ./pure-qml Fixes: QTBUG-71697 Change-Id: I73bb2a8fe9852afe1b5807cbb8c35dc4c7624dad Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Diffstat (limited to 'src/3rdparty')
-rw-r--r--src/3rdparty/protocol/qt_attribution.json17
-rw-r--r--src/3rdparty/protocol/wl-eglstream-controller.xml37
2 files changed, 53 insertions, 1 deletions
diff --git a/src/3rdparty/protocol/qt_attribution.json b/src/3rdparty/protocol/qt_attribution.json
index e5bf91e10..7881e6b0d 100644
--- a/src/3rdparty/protocol/qt_attribution.json
+++ b/src/3rdparty/protocol/qt_attribution.json
@@ -103,5 +103,20 @@ Copyright © 2010-2013 Intel Corporation"
"LicenseFile": "HPND_LICENSE.txt",
"Copyright": "Copyright © 2012, 2013 Intel Corporation
Copyright © 2015, 2016 Jan Arne Petersen"
- }
+ },
+
+ {
+ "Id": "wayland-eglstream-controller",
+ "Name": "Wayland EGLStream Controller Protocol",
+ "QDocModule": "qtwaylandcompositor",
+ "QtUsage": "Used in the Qt Wayland Compositor",
+ "Files": "wayland-eglstream-controller.xml",
+
+ "Description": "Allows clients to request that the compositor creates its EGLStream.",
+ "Homepage": "https://github.com/NVIDIA/egl-wayland",
+ "LicenseId": "MIT",
+ "License": "MIT License",
+ "LicenseFile": "MIT_LICENSE.txt",
+ "Copyright": "Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved."
+ }
]
diff --git a/src/3rdparty/protocol/wl-eglstream-controller.xml b/src/3rdparty/protocol/wl-eglstream-controller.xml
new file mode 100644
index 000000000..dea072e64
--- /dev/null
+++ b/src/3rdparty/protocol/wl-eglstream-controller.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="wl_eglstream_controller">
+ <copyright>
+ Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+ </copyright>
+ <interface name="wl_eglstream_controller" version="1">
+ <request name="attach_eglstream_consumer">
+ <description summary="Create server stream and attach consumer">
+ Creates the corresponding server side EGLStream from the given wl_buffer
+ and attaches a consumer to it.
+ </description>
+ <arg name="wl_surface" type="object" interface="wl_surface"
+ summary="wl_surface corresponds to the client surface associated with
+ newly created eglstream"/>
+ <arg name="wl_resource" type="object" interface="wl_buffer"
+ summary="wl_resource corresponding to an EGLStream"/>
+ </request>
+ </interface>
+</protocol>