diff options
Diffstat (limited to 'recipes-multimedia/onevpl')
-rw-r--r-- | recipes-multimedia/onevpl/onevpl/0001-Enable-xdg_shell-for-weston10.patch | 291 | ||||
-rw-r--r-- | recipes-multimedia/onevpl/onevpl/0001-Fix-missing-UYVY-VA_FOURCC-causing-encode-failure.patch | 28 | ||||
-rw-r--r-- | recipes-multimedia/onevpl/onevpl_2023.1.1.bb (renamed from recipes-multimedia/onevpl/onevpl_2022.2.2.bb) | 4 |
3 files changed, 1 insertions, 322 deletions
diff --git a/recipes-multimedia/onevpl/onevpl/0001-Enable-xdg_shell-for-weston10.patch b/recipes-multimedia/onevpl/onevpl/0001-Enable-xdg_shell-for-weston10.patch deleted file mode 100644 index 17e4e380..00000000 --- a/recipes-multimedia/onevpl/onevpl/0001-Enable-xdg_shell-for-weston10.patch +++ /dev/null | |||
@@ -1,291 +0,0 @@ | |||
1 | From 38bd0f212bf6cfd65f836913dca1098113fa2e8d Mon Sep 17 00:00:00 2001 | ||
2 | From: "Cheah, Vincent Beng Keat" <vincent.beng.keat.cheah@intel.com> | ||
3 | Date: Mon, 3 Oct 2022 16:06:38 +0800 | ||
4 | Subject: [PATCH] Enable xdg_shell for weston10 | ||
5 | |||
6 | Tested command: ./sample_decode h264 -vaapi -hw -i test.h264 -rwld | ||
7 | |||
8 | Upstream-Status: Submitted [innersource PR: #518 ] | ||
9 | |||
10 | Signed-off-by: Cheah, Vincent Beng Keat <vincent.beng.keat.cheah@intel.com> | ||
11 | --- | ||
12 | tools/legacy/sample_common/CMakeLists.txt | 15 +++++ | ||
13 | .../legacy/sample_misc/wayland/CMakeLists.txt | 34 ++++++++++ | ||
14 | .../wayland/include/class_wayland.h | 8 +++ | ||
15 | .../wayland/include/listener_wayland.h | 16 +++++ | ||
16 | .../sample_misc/wayland/src/class_wayland.cpp | 66 ++++++++++++++++--- | ||
17 | .../wayland/src/listener_wayland.cpp | 23 +++++++ | ||
18 | 6 files changed, 153 insertions(+), 9 deletions(-) | ||
19 | |||
20 | diff --git a/tools/legacy/sample_common/CMakeLists.txt b/tools/legacy/sample_common/CMakeLists.txt | ||
21 | index c13749a..3f70465 100644 | ||
22 | --- a/tools/legacy/sample_common/CMakeLists.txt | ||
23 | +++ b/tools/legacy/sample_common/CMakeLists.txt | ||
24 | @@ -200,6 +200,12 @@ if(CMAKE_SYSTEM_NAME MATCHES Linux) | ||
25 | WAYLAND_LINUX_DMABUF_XML_PATH linux-dmabuf-unstable-v1.xml | ||
26 | PATHS ${WAYLAND_PROTOCOLS_PATH}/unstable/linux-dmabuf | ||
27 | NO_DEFAULT_PATH) | ||
28 | + | ||
29 | + find_file( | ||
30 | + WAYLAND_LINUX_XDG_SHELL_XML_PATH xdg-shell.xml | ||
31 | + PATHS ${WAYLAND_PROTOCOLS_PATH}/stable/xdg-shell | ||
32 | + NO_DEFAULT_PATH) | ||
33 | + | ||
34 | endif() | ||
35 | else() | ||
36 | message( | ||
37 | @@ -216,6 +222,15 @@ if(CMAKE_SYSTEM_NAME MATCHES Linux) | ||
38 | PUBLIC ${CMAKE_BINARY_DIR}/tools/legacy/sample_misc/wayland) | ||
39 | endif() | ||
40 | |||
41 | + if(WAYLAND_LINUX_XDG_SHELL_XML_PATH) | ||
42 | + target_compile_definitions(${TARGET} | ||
43 | + PUBLIC WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
44 | + | ||
45 | + target_include_directories( | ||
46 | + ${TARGET} | ||
47 | + PUBLIC ${CMAKE_BINARY_DIR}/tools/legacy/sample_misc/wayland) | ||
48 | + endif() | ||
49 | + | ||
50 | else() | ||
51 | message( | ||
52 | SEND_ERROR | ||
53 | diff --git a/tools/legacy/sample_misc/wayland/CMakeLists.txt b/tools/legacy/sample_misc/wayland/CMakeLists.txt | ||
54 | index 9a272f9..470a763 100644 | ||
55 | --- a/tools/legacy/sample_misc/wayland/CMakeLists.txt | ||
56 | +++ b/tools/legacy/sample_misc/wayland/CMakeLists.txt | ||
57 | @@ -36,6 +36,40 @@ if(PKGConfig_LIBDRM_FOUND) | ||
58 | ${CMAKE_CURRENT_SOURCE_DIR}/src/listener_wayland.cpp | ||
59 | ${CMAKE_CURRENT_SOURCE_DIR}/src/wayland-drm-protocol.c) | ||
60 | |||
61 | + if(WAYLAND_SCANNER_BIN | ||
62 | + AND PKG_WAYLAND_PROTCOLS_FOUND | ||
63 | + AND WAYLAND_LINUX_XDG_SHELL_XML_PATH) | ||
64 | + execute_process( | ||
65 | + COMMAND | ||
66 | + "${WAYLAND_SCANNER_BIN_PATH}\/${WAYLAND_SCANNER_BIN}" "client-header" | ||
67 | + "${WAYLAND_LINUX_XDG_SHELL_XML_PATH}" | ||
68 | + "tools/legacy/sample_misc/wayland/xdg-shell-client-protocol.h" | ||
69 | + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" | ||
70 | + RESULT_VARIABLE WAYLAND_SCANNER_RESULT) | ||
71 | + if(WAYLAND_SCANNER_RESULT) | ||
72 | + message(FATAL_ERROR "Failed to generate xdg-shell-client-protocol.h") | ||
73 | + endif() | ||
74 | + | ||
75 | + execute_process( | ||
76 | + COMMAND | ||
77 | + "${WAYLAND_SCANNER_BIN_PATH}\/${WAYLAND_SCANNER_BIN}" "private-code" | ||
78 | + "${WAYLAND_LINUX_XDG_SHELL_XML_PATH}" | ||
79 | + "tools/legacy/sample_misc/wayland/xdg-shell-protocol.c" | ||
80 | + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" | ||
81 | + RESULT_VARIABLE WAYLAND_SCANNER_RESULT) | ||
82 | + if(WAYLAND_SCANNER_RESULT) | ||
83 | + message(FATAL_ERROR "Failed to generate xdg-shell-protocol.c") | ||
84 | + endif() | ||
85 | + | ||
86 | + target_include_directories( | ||
87 | + ${TARGET} PRIVATE ${CMAKE_BINARY_DIR}/tools/legacy/sample_misc/wayland) | ||
88 | + target_sources( | ||
89 | + ${TARGET} | ||
90 | + PRIVATE | ||
91 | + ${CMAKE_BINARY_DIR}/tools/legacy/sample_misc/wayland/xdg-shell-protocol.c | ||
92 | + ) | ||
93 | + endif() | ||
94 | + | ||
95 | if(WAYLAND_SCANNER_BIN | ||
96 | AND PKG_WAYLAND_PROTCOLS_FOUND | ||
97 | AND WAYLAND_LINUX_DMABUF_XML_PATH) | ||
98 | diff --git a/tools/legacy/sample_misc/wayland/include/class_wayland.h b/tools/legacy/sample_misc/wayland/include/class_wayland.h | ||
99 | index edaeefd..02c361c 100644 | ||
100 | --- a/tools/legacy/sample_misc/wayland/include/class_wayland.h | ||
101 | +++ b/tools/legacy/sample_misc/wayland/include/class_wayland.h | ||
102 | @@ -22,6 +22,9 @@ extern "C" { | ||
103 | #if defined(WAYLAND_LINUX_DMABUF_SUPPORT) | ||
104 | #include "linux-dmabuf-unstable-v1.h" | ||
105 | #endif | ||
106 | + #if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
107 | + #include "xdg-shell-client-protocol.h" | ||
108 | + #endif | ||
109 | |||
110 | typedef struct buffer wld_buffer; | ||
111 | |||
112 | @@ -158,6 +161,11 @@ private: | ||
113 | struct wl_event_queue* m_event_queue; | ||
114 | volatile int m_pending_frame; | ||
115 | struct ShmPool* m_shm_pool; | ||
116 | + #if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
117 | + struct xdg_wm_base* m_xdg_wm_base; | ||
118 | + struct xdg_surface* m_xdg_surface; | ||
119 | + struct xdg_toplevel* m_xdg_toplevel; | ||
120 | + #endif | ||
121 | int m_display_fd; | ||
122 | int m_fd; | ||
123 | struct pollfd m_poll; | ||
124 | diff --git a/tools/legacy/sample_misc/wayland/include/listener_wayland.h b/tools/legacy/sample_misc/wayland/include/listener_wayland.h | ||
125 | index 25ee3a1..8401e2b 100644 | ||
126 | --- a/tools/legacy/sample_misc/wayland/include/listener_wayland.h | ||
127 | +++ b/tools/legacy/sample_misc/wayland/include/listener_wayland.h | ||
128 | @@ -40,4 +40,20 @@ void shell_surface_configure(void* data, | ||
129 | void handle_done(void* data, struct wl_callback* callback, uint32_t time); | ||
130 | |||
131 | void buffer_release(void* data, struct wl_buffer* buffer); | ||
132 | + | ||
133 | +#if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
134 | +/* xdg shell */ | ||
135 | +void xdg_wm_base_ping(void* data, struct xdg_wm_base* xdg_wm_base, uint32_t serial); | ||
136 | + | ||
137 | +void xdg_surface_configure(void* data, struct xdg_surface* xdg_surface, uint32_t serial); | ||
138 | + | ||
139 | +void xdg_toplevel_configure(void* data, | ||
140 | + struct xdg_toplevel* xdg_toplevel, | ||
141 | + int32_t width, | ||
142 | + int32_t height, | ||
143 | + struct wl_array* states); | ||
144 | + | ||
145 | +void xdg_toplevel_close(void* data, struct xdg_toplevel* xdg_toplevel); | ||
146 | +#endif | ||
147 | + | ||
148 | #endif /* LISTENER_WAYLAND_H */ | ||
149 | diff --git a/tools/legacy/sample_misc/wayland/src/class_wayland.cpp b/tools/legacy/sample_misc/wayland/src/class_wayland.cpp | ||
150 | index 41b7969..428b844 100644 | ||
151 | --- a/tools/legacy/sample_misc/wayland/src/class_wayland.cpp | ||
152 | +++ b/tools/legacy/sample_misc/wayland/src/class_wayland.cpp | ||
153 | @@ -49,6 +49,11 @@ Wayland::Wayland() | ||
154 | m_event_queue(NULL), | ||
155 | m_pending_frame(0), | ||
156 | m_shm_pool(NULL), | ||
157 | +#if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
158 | + m_xdg_wm_base(NULL), | ||
159 | + m_xdg_surface(NULL), | ||
160 | + m_xdg_toplevel(NULL), | ||
161 | +#endif | ||
162 | m_display_fd(-1), | ||
163 | m_fd(-1), | ||
164 | m_bufmgr(NULL), | ||
165 | @@ -89,6 +94,11 @@ int Wayland::DisplayRoundtrip() { | ||
166 | } | ||
167 | |||
168 | bool Wayland::CreateSurface() { | ||
169 | +#if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
170 | + static struct xdg_surface_listener xdg_surface_listener = { xdg_surface_configure }; | ||
171 | + static struct xdg_toplevel_listener xdg_toplevel_listener = { xdg_toplevel_configure, | ||
172 | + xdg_toplevel_close }; | ||
173 | +#endif | ||
174 | static const struct wl_shell_surface_listener shell_surface_listener = { | ||
175 | shell_surface_ping, | ||
176 | shell_surface_configure | ||
177 | @@ -98,16 +108,38 @@ bool Wayland::CreateSurface() { | ||
178 | if (NULL == m_surface) | ||
179 | return false; | ||
180 | |||
181 | - m_shell_surface = wl_shell_get_shell_surface(m_shell, m_surface); | ||
182 | - if (NULL == m_shell_surface) { | ||
183 | - wl_surface_destroy(m_surface); | ||
184 | - return false; | ||
185 | +#if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
186 | + if (m_xdg_wm_base) { | ||
187 | + m_shell = NULL; | ||
188 | + m_xdg_surface = xdg_wm_base_get_xdg_surface(m_xdg_wm_base, m_surface); | ||
189 | + if (nullptr == m_xdg_surface) { | ||
190 | + xdg_surface_destroy(m_xdg_surface); | ||
191 | + return false; | ||
192 | + } | ||
193 | + | ||
194 | + xdg_surface_add_listener(m_xdg_surface, &xdg_surface_listener, 0); | ||
195 | + m_xdg_toplevel = xdg_surface_get_toplevel(m_xdg_surface); | ||
196 | + if (nullptr == m_xdg_toplevel) | ||
197 | + return false; | ||
198 | + | ||
199 | + xdg_toplevel_add_listener(m_xdg_toplevel, &xdg_toplevel_listener, 0); | ||
200 | + wl_surface_commit(m_surface); | ||
201 | + wl_display_dispatch(m_display); | ||
202 | } | ||
203 | +#endif | ||
204 | |||
205 | - wl_shell_surface_add_listener(m_shell_surface, &shell_surface_listener, 0); | ||
206 | - wl_shell_surface_set_toplevel(m_shell_surface); | ||
207 | - wl_shell_surface_set_user_data(m_shell_surface, m_surface); | ||
208 | - wl_surface_set_user_data(m_surface, NULL); | ||
209 | + if (m_shell) { | ||
210 | + m_shell_surface = wl_shell_get_shell_surface(m_shell, m_surface); | ||
211 | + if (NULL == m_shell_surface) { | ||
212 | + wl_surface_destroy(m_surface); | ||
213 | + return false; | ||
214 | + } | ||
215 | + | ||
216 | + wl_shell_surface_add_listener(m_shell_surface, &shell_surface_listener, 0); | ||
217 | + wl_shell_surface_set_toplevel(m_shell_surface); | ||
218 | + wl_shell_surface_set_user_data(m_shell_surface, m_surface); | ||
219 | + wl_surface_set_user_data(m_surface, NULL); | ||
220 | + } | ||
221 | return true; | ||
222 | } | ||
223 | |||
224 | @@ -116,6 +148,12 @@ void Wayland::FreeSurface() { | ||
225 | wl_shell_surface_destroy(m_shell_surface); | ||
226 | if (NULL != m_surface) | ||
227 | wl_surface_destroy(m_surface); | ||
228 | +#if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
229 | + if (nullptr != m_xdg_toplevel) | ||
230 | + xdg_toplevel_destroy(m_xdg_toplevel); | ||
231 | + if (nullptr != m_xdg_surface) | ||
232 | + xdg_surface_destroy(m_xdg_surface); | ||
233 | +#endif | ||
234 | } | ||
235 | |||
236 | void Wayland::Sync() { | ||
237 | @@ -370,9 +408,19 @@ void Wayland::RegistryGlobal(struct wl_registry* registry, | ||
238 | if (0 == strcmp(interface, "wl_compositor")) | ||
239 | m_compositor = static_cast<wl_compositor*>( | ||
240 | wl_registry_bind(registry, name, &wl_compositor_interface, version)); | ||
241 | - else if (0 == strcmp(interface, "wl_shell")) | ||
242 | + else if (0 == strcmp(interface, "wl_shell")) { | ||
243 | m_shell = | ||
244 | static_cast<wl_shell*>(wl_registry_bind(registry, name, &wl_shell_interface, version)); | ||
245 | + } | ||
246 | +#if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
247 | + else if (0 == strcmp(interface, "xdg_wm_base")) { | ||
248 | + static const struct xdg_wm_base_listener xdg_wm_base_listener = { xdg_wm_base_ping }; | ||
249 | + m_xdg_wm_base = | ||
250 | + static_cast<xdg_wm_base*>(wl_registry_bind(registry, name, &xdg_wm_base_interface, 1)); | ||
251 | + | ||
252 | + xdg_wm_base_add_listener(m_xdg_wm_base, &xdg_wm_base_listener, this); | ||
253 | + } | ||
254 | +#endif | ||
255 | else if (0 == strcmp(interface, "wl_drm")) { | ||
256 | static const struct wl_drm_listener drm_listener = { drm_handle_device, | ||
257 | drm_handle_format, | ||
258 | diff --git a/tools/legacy/sample_misc/wayland/src/listener_wayland.cpp b/tools/legacy/sample_misc/wayland/src/listener_wayland.cpp | ||
259 | index 71d617e..b62cd70 100644 | ||
260 | --- a/tools/legacy/sample_misc/wayland/src/listener_wayland.cpp | ||
261 | +++ b/tools/legacy/sample_misc/wayland/src/listener_wayland.cpp | ||
262 | @@ -65,3 +65,26 @@ void buffer_release(void* data, struct wl_buffer* buffer) { | ||
263 | wl_buffer_destroy(buffer); | ||
264 | buffer = NULL; | ||
265 | } | ||
266 | + | ||
267 | +#if defined(WAYLAND_LINUX_XDG_SHELL_SUPPORT) | ||
268 | +/* xdg shell */ | ||
269 | +void xdg_wm_base_ping(void* data, struct xdg_wm_base* xdg_wm_base, uint32_t serial) { | ||
270 | + xdg_wm_base_pong(xdg_wm_base, serial); | ||
271 | +} | ||
272 | + | ||
273 | +void xdg_surface_configure(void* data, struct xdg_surface* xdg_surface, uint32_t serial) { | ||
274 | + xdg_surface_ack_configure(xdg_surface, serial); | ||
275 | +} | ||
276 | + | ||
277 | +void xdg_toplevel_configure(void* data, | ||
278 | + struct xdg_toplevel* xdg_toplevel, | ||
279 | + int32_t width, | ||
280 | + int32_t height, | ||
281 | + struct wl_array* states) { | ||
282 | + /* NOT IMPLEMENTED */ | ||
283 | +} | ||
284 | + | ||
285 | +void xdg_toplevel_close(void* data, struct xdg_toplevel* xdg_toplevel) { | ||
286 | + /* NOT IMPLEMENTED */ | ||
287 | +} | ||
288 | +#endif | ||
289 | -- | ||
290 | 2.37.2 | ||
291 | |||
diff --git a/recipes-multimedia/onevpl/onevpl/0001-Fix-missing-UYVY-VA_FOURCC-causing-encode-failure.patch b/recipes-multimedia/onevpl/onevpl/0001-Fix-missing-UYVY-VA_FOURCC-causing-encode-failure.patch deleted file mode 100644 index c748c818..00000000 --- a/recipes-multimedia/onevpl/onevpl/0001-Fix-missing-UYVY-VA_FOURCC-causing-encode-failure.patch +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | From 943f228402fa5ec3a1b4fd898e2783bb314af5a4 Mon Sep 17 00:00:00 2001 | ||
2 | From: "Mazlan, Hilman Zafri" <hilman.zafri.mazlan@intel.com> | ||
3 | Date: Thu, 8 Sep 2022 11:06:33 +0800 | ||
4 | Subject: [PATCH] Fix missing UYVY VA_FOURCC causing encode failure | ||
5 | |||
6 | Upstream-Status: Submitted [Innersource PR: #504] | ||
7 | |||
8 | Signed-off-by: Mazlan, Hilman Zafri <hilman.zafri.mazlan@intel.com> | ||
9 | --- | ||
10 | tools/legacy/sample_common/src/vaapi_allocator.cpp | 2 +- | ||
11 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
12 | |||
13 | diff --git a/tools/legacy/sample_common/src/vaapi_allocator.cpp b/tools/legacy/sample_common/src/vaapi_allocator.cpp | ||
14 | index b374a6cb..e3c286e9 100644 | ||
15 | --- a/tools/legacy/sample_common/src/vaapi_allocator.cpp | ||
16 | +++ b/tools/legacy/sample_common/src/vaapi_allocator.cpp | ||
17 | @@ -129,7 +129,7 @@ static mfxStatus GetVAFourcc(mfxU32 fourcc, unsigned int& va_fourcc) { | ||
18 | mfxU32 mfx_fourcc = ConvertVP8FourccToMfxFourcc(fourcc); | ||
19 | va_fourcc = ConvertMfxFourccToVAFormat(mfx_fourcc); | ||
20 | if (!va_fourcc || ((VA_FOURCC_NV12 != va_fourcc) && (VA_FOURCC_YV12 != va_fourcc) && | ||
21 | - (VA_FOURCC_YUY2 != va_fourcc) && (VA_FOURCC_ARGB != va_fourcc) && | ||
22 | + (VA_FOURCC_UYVY != va_fourcc) && (VA_FOURCC_ARGB != va_fourcc) && | ||
23 | (VA_FOURCC_ABGR != va_fourcc) && (VA_FOURCC_P208 != va_fourcc) && | ||
24 | (VA_FOURCC_P010 != va_fourcc) && (VA_FOURCC_YUY2 != va_fourcc) && | ||
25 | (VA_FOURCC_Y210 != va_fourcc) && (VA_FOURCC_Y410 != va_fourcc) && | ||
26 | -- | ||
27 | 2.34.1 | ||
28 | |||
diff --git a/recipes-multimedia/onevpl/onevpl_2022.2.2.bb b/recipes-multimedia/onevpl/onevpl_2023.1.1.bb index 9e0196c1..1f943e6d 100644 --- a/recipes-multimedia/onevpl/onevpl_2022.2.2.bb +++ b/recipes-multimedia/onevpl/onevpl_2023.1.1.bb | |||
@@ -9,10 +9,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=c18ea6bb4786a26bf4eee88a7424a408 \ | |||
9 | file://third-party-programs.txt;md5=f43d223f2b736e89abed9660483d0386" | 9 | file://third-party-programs.txt;md5=f43d223f2b736e89abed9660483d0386" |
10 | 10 | ||
11 | SRC_URI = "git://github.com/oneapi-src/oneVPL.git;protocol=https;branch=master \ | 11 | SRC_URI = "git://github.com/oneapi-src/oneVPL.git;protocol=https;branch=master \ |
12 | file://0001-Fix-missing-UYVY-VA_FOURCC-causing-encode-failure.patch \ | ||
13 | file://0001-Enable-xdg_shell-for-weston10.patch \ | ||
14 | " | 12 | " |
15 | SRCREV = "15b79165c30fc4a7bf6efdf261a39b128b63b896" | 13 | SRCREV = "5d7b6af5b483e6ddc0d9746efc97edfebf508e1d" |
16 | S = "${WORKDIR}/git" | 14 | S = "${WORKDIR}/git" |
17 | 15 | ||
18 | inherit cmake | 16 | inherit cmake |