diff options
-rw-r--r-- | .SRCINFO | 59 | ||||
-rw-r--r-- | 0001-configure-meson-Tmp-fix-for-gobject-2.0-libs-missing.patch | 54 | ||||
-rw-r--r-- | 0002-gl-renderer-Add-EGLDevice-enumeration-support.patch (renamed from 0001-gl-renderer-Add-EGLDevice-enumeration-support.patch) | 20 | ||||
-rw-r--r-- | 0003-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch (renamed from 0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch) | 55 | ||||
-rw-r--r-- | 0004-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch (renamed from 0003-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch) | 42 | ||||
-rw-r--r-- | 0005-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch (renamed from 0004-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch) | 20 | ||||
-rw-r--r-- | 0006-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch (renamed from 0005-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch) | 112 | ||||
-rw-r--r-- | 0007-compositor-Process-stream-attach-requests-with-wl_eg.patch (renamed from 0006-compositor-Process-stream-attach-requests-with-wl_eg.patch) | 102 | ||||
-rw-r--r-- | 0008-gl-renderer-Use-mailbox-streams-for-scanout.patch | 34 | ||||
-rw-r--r-- | 0008-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch (renamed from 0007-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch) | 48 | ||||
-rw-r--r-- | 0009-configure-Temporary-fix-for-gobject-2.0-libs-missing.patch | 36 | ||||
-rw-r--r-- | PKGBUILD | 93 |
12 files changed, 343 insertions, 332 deletions
@@ -1,61 +1,44 @@ pkgbase = weston-eglstream pkgdesc = Reference implementation of a Wayland compositor with EGLStream support - pkgver = 5.0.0 - pkgrel = 5 + pkgver = 6.0.0 + pkgrel = 1 url = https://wayland.freedesktop.org/ - arch = i686 arch = x86_64 license = MIT + makedepends = meson makedepends = wayland-protocols - depends = glibc depends = wayland depends = libxkbcommon depends = libinput - depends = libunwind - depends = pixman - depends = libdrm - depends = pam - depends = libsystemd - depends = cairo - depends = libpng depends = libjpeg-turbo depends = libwebp depends = libegl depends = libgles - depends = glib2 depends = pango - depends = lcms2 - depends = mtdev - depends = libx11 - depends = libxcb - depends = dbus depends = libva depends = libxcursor depends = colord depends = egl-wayland - depends = autoconf provides = weston conflicts = weston - source = https://wayland.freedesktop.org/releases/weston-5.0.0.tar.xz - source = 0001-gl-renderer-Add-EGLDevice-enumeration-support.patch - source = 0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch - source = 0003-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch - source = 0004-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch - source = 0005-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch - source = 0006-compositor-Process-stream-attach-requests-with-wl_eg.patch - source = 0007-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch - source = 0008-gl-renderer-Use-mailbox-streams-for-scanout.patch - source = 0009-configure-Temporary-fix-for-gobject-2.0-libs-missing.patch - sha256sums = 15a23423bcfa45e31e1dedc0cd524ba71e2930df174fde9c99b71a537c4e4caf - sha256sums = 270c2f68bb84a0f1f670eddb44b3f77729cf29ceecddbe4e62a5ced80fb1d1df - sha256sums = f4f79611d00847c722e476469f74dc8fce812afdf2fed58ca91235b04bfe0107 - sha256sums = 17c8d59665ad33d3dbfea39d8c32634dac660cf528313b51c7064ce27b93ddec - sha256sums = f5c7ae1142b2cb0dcf28c4b217c7cac42ab98fb1bb5ee14a2978fa8cc9bc6ea7 - sha256sums = 59287416cf0a57b76f7e77b7eadf0cf9c91afe480b0c400998abafe2deeb3126 - sha256sums = 5917fe7b0b49a1d66c3262958c004ffe22de7bb5026856f92cf5be46e81f9b1e - sha256sums = 9b910c9b7176a4caea796a11ffd5086a54fe7b3c02336d494b8ea050933cfcbe - sha256sums = 840166cc83641e6502c119ea1ff060be3afc1c99c0da792e7e43364ad29e799d - sha256sums = d84cea4d89f79215adb148e5ed2afe7e94f3ef66df10e2bbecfddf9f04bd13e4 + source = https://wayland.freedesktop.org/releases/weston-6.0.0.tar.xz + source = 0001-configure-meson-Tmp-fix-for-gobject-2.0-libs-missing.patch + source = 0002-gl-renderer-Add-EGLDevice-enumeration-support.patch + source = 0003-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch + source = 0004-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch + source = 0005-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch + source = 0006-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch + source = 0007-compositor-Process-stream-attach-requests-with-wl_eg.patch + source = 0008-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch + sha256sums = 546323a90607b3bd7f48809ea9d76e64cd09718102f2deca6d95aa59a882e612 + sha256sums = d6e78c5bfc2118f1955f8c3eb30aedf7dc01cab9e21271b135dc32be1b895607 + sha256sums = f4b5222e0a8ee1c895f0e60e34d9d7c0a371012c5aab4d7e896e4c6f0df514b7 + sha256sums = 8e778e55a2268cf932d57e4a6bbedcc7e24b1e223583cb238091dd426217198b + sha256sums = 01ecdb0363d36e11365ffe77056e9ec282d1928b007023ac7450aa2812a5018f + sha256sums = f14e27d58b7b0ec72b5aa722db95bd62e9b316e91907070cfeed236e65fe5c17 + sha256sums = 77b1633c0162ac0b6f8126a1e614b8fa54a672927c04c1cacc5486b534ebd4ec + sha256sums = 36f05125a0be58d2ce840c8de2b8d42cfeeae8362e5b95861669b85d0f876816 + sha256sums = a2acbc92962d2ae2c1690398af67eac35c5bbe06f0ff03a94f1aa1f12385ea12 pkgname = weston-eglstream diff --git a/0001-configure-meson-Tmp-fix-for-gobject-2.0-libs-missing.patch b/0001-configure-meson-Tmp-fix-for-gobject-2.0-libs-missing.patch new file mode 100644 index 000000000000..0f67b36e4bc6 --- /dev/null +++ b/0001-configure-meson-Tmp-fix-for-gobject-2.0-libs-missing.patch @@ -0,0 +1,54 @@ +From e1486fee47785c094e93eca336684ab38bcb16bc Mon Sep 17 00:00:00 2001 +From: "Miguel A. Vico" <mvicomoya@nvidia.com> +Date: Tue, 26 Mar 2019 15:34:12 -0700 +Subject: [PATCH 1/8] configure/meson: Tmp fix for gobject-2.0 libs missing in + pango pkgconfig +X-NVConfidentiality: public + +This fixes the following build error, until the pango pkgconfig is +restored to also include the corresponding flags to link against +gobject-2.0: + + /usr/bin/ld: clients/weston_editor-editor.o: undefined reference to symbol 'g_object_unref' + /usr/bin/ld: /usr/lib/libgobject-2.0.so.0: error adding symbols: DSO missing from command line + collect2: error: ld returned 1 exit status + +Signed-off-by: Miguel A Vico Moya <mvicomoya@nvidia.com> +--- + configure.ac | 2 +- + shared/meson.build | 5 +++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c05ad011..425ba238 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -503,7 +503,7 @@ if test x$enable_clients = xyes; then + [AC_ERROR([cairo-egl not used because $CAIRO_EGL_PKG_ERRORS])])], + [have_cairo_egl=no]) + +- PKG_CHECK_MODULES(PANGO, [pangocairo pango glib-2.0 >= 2.36], [have_pango=yes], [have_pango=no]) ++ PKG_CHECK_MODULES(PANGO, [pangocairo pango glib-2.0 >= 2.36 gobject-2.0 >= 2.36], [have_pango=yes], [have_pango=no]) + fi + + AC_ARG_ENABLE(resize-optimization, +diff --git a/shared/meson.build b/shared/meson.build +index 5b0d8d13..c90be7de 100644 +--- a/shared/meson.build ++++ b/shared/meson.build +@@ -37,9 +37,10 @@ deps_cairo_shared = [ + dep_pango = dependency('pango', required: false) + dep_pangocairo = dependency('pangocairo', required: false) + dep_glib = dependency('glib-2.0', version: '>= 2.36', required: false) ++dep_gobject = dependency('gobject-2.0', version: '>= 2.36', required: false) + +-if dep_pango.found() and dep_pangocairo.found() and dep_glib.found() +- deps_cairo_shared += [ dep_pango, dep_pangocairo, dep_glib ] ++if dep_pango.found() and dep_pangocairo.found() and dep_glib.found() and dep_gobject.found() ++ deps_cairo_shared += [ dep_pango, dep_pangocairo, dep_glib, dep_gobject ] + config_h.set('HAVE_PANGO', '1') + endif + +-- +2.21.0 + diff --git a/0001-gl-renderer-Add-EGLDevice-enumeration-support.patch b/0002-gl-renderer-Add-EGLDevice-enumeration-support.patch index 99279dd08d30..99c3da9c3d3c 100644 --- a/0001-gl-renderer-Add-EGLDevice-enumeration-support.patch +++ b/0002-gl-renderer-Add-EGLDevice-enumeration-support.patch @@ -1,7 +1,7 @@ -From 0592a2a1b337880ce74d621297d10c988972efd1 Mon Sep 17 00:00:00 2001 +From ed68f6d00e47bdca93859b36a3c78f6fb555cd25 Mon Sep 17 00:00:00 2001 From: "Miguel A. Vico" <mvicomoya@nvidia.com> Date: Mon, 2 May 2016 15:56:37 +0200 -Subject: [PATCH 1/9] gl-renderer: Add EGLDevice enumeration support +Subject: [PATCH 2/8] gl-renderer: Add EGLDevice enumeration support X-NVConfidentiality: public EGLDevice provides means to enumerate native devices. @@ -22,10 +22,10 @@ Reviewed-by: James Jones <jajones@nvidia.com> 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c -index 2c50d2da..b681668b 100644 +index a03e45ea..74315347 100644 --- a/libweston/gl-renderer.c +++ b/libweston/gl-renderer.c -@@ -3775,6 +3775,90 @@ gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface) +@@ -3990,6 +3990,90 @@ gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface) return 0; } @@ -116,10 +116,10 @@ index 2c50d2da..b681668b 100644 WL_EXPORT struct gl_renderer_interface gl_renderer_interface = { .opaque_attribs = gl_renderer_opaque_attribs, .alpha_attribs = gl_renderer_alpha_attribs, -@@ -3785,5 +3869,8 @@ WL_EXPORT struct gl_renderer_interface gl_renderer_interface = { - .output_destroy = gl_renderer_output_destroy, +@@ -4001,5 +4085,8 @@ WL_EXPORT struct gl_renderer_interface gl_renderer_interface = { .output_surface = gl_renderer_output_surface, .output_set_border = gl_renderer_output_set_border, + .create_fence_fd = gl_renderer_create_fence_fd, - .print_egl_error_state = gl_renderer_print_egl_error_state + .print_egl_error_state = gl_renderer_print_egl_error_state, + @@ -127,7 +127,7 @@ index 2c50d2da..b681668b 100644 + .get_drm_device_file = gl_renderer_get_drm_device_file }; diff --git a/libweston/gl-renderer.h b/libweston/gl-renderer.h -index b47ea07f..9ff4e21e 100644 +index 202702b5..151879da 100644 --- a/libweston/gl-renderer.h +++ b/libweston/gl-renderer.h @@ -38,6 +38,7 @@ @@ -138,8 +138,8 @@ index b47ea07f..9ff4e21e 100644 typedef void *EGLDisplay; typedef void *EGLSurface; typedef void *EGLConfig; -@@ -114,5 +115,12 @@ struct gl_renderer_interface { - int32_t tex_width, unsigned char *data); +@@ -121,5 +122,12 @@ struct gl_renderer_interface { + int (*create_fence_fd)(struct weston_output *output); void (*print_egl_error_state)(void); + @@ -152,5 +152,5 @@ index b47ea07f..9ff4e21e 100644 }; -- -2.18.0 +2.21.0 diff --git a/0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch b/0003-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch index fd5b7e19261d..359418ff489a 100644 --- a/0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch +++ b/0003-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch @@ -1,7 +1,7 @@ -From db0add622cd4f8594222e493e164bfb3224230e5 Mon Sep 17 00:00:00 2001 +From 1df7a9d5e4222a40885bd8e46b33f5dd4525e93b Mon Sep 17 00:00:00 2001 From: "Miguel A. Vico" <mvicomoya@nvidia.com> Date: Mon, 2 May 2016 16:34:01 +0200 -Subject: [PATCH 2/9] gl-renderer: Add support for EGLDevice composited frame +Subject: [PATCH 3/8] gl-renderer: Add support for EGLDevice composited frame presentation X-NVConfidentiality: public @@ -48,10 +48,10 @@ Reviewed-by: James Jones <jajones@nvidia.com> 3 files changed, 315 insertions(+), 3 deletions(-) diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c -index b681668b..27794b60 100644 +index 74315347..f3fb2c65 100644 --- a/libweston/gl-renderer.c +++ b/libweston/gl-renderer.c -@@ -103,6 +103,8 @@ struct gl_output_state { +@@ -101,6 +101,8 @@ struct gl_output_state { struct gl_border_image borders[4]; enum gl_border_status border_status; @@ -59,8 +59,8 @@ index b681668b..27794b60 100644 + struct weston_matrix output_matrix; - /* struct timeline_render_point::link */ -@@ -233,6 +235,28 @@ struct gl_renderer { + EGLSyncKHR begin_render_sync, end_render_sync; +@@ -238,6 +240,28 @@ struct gl_renderer { int has_surfaceless_context; @@ -89,8 +89,8 @@ index b681668b..27794b60 100644 int has_dmabuf_import; struct wl_list dmabuf_images; -@@ -1365,6 +1389,38 @@ gl_renderer_repaint_output(struct weston_output *output, - TIMELINE_RENDER_POINT_TYPE_END); +@@ -1503,6 +1527,38 @@ gl_renderer_repaint_output(struct weston_output *output, + update_buffer_release_fences(compositor, output); } +static int @@ -128,7 +128,7 @@ index b681668b..27794b60 100644 static int gl_renderer_read_pixels(struct weston_output *output, pixman_format_code_t format, void *pixels, -@@ -3011,9 +3067,93 @@ gl_renderer_create_window_surface(struct gl_renderer *gr, +@@ -3195,9 +3251,93 @@ gl_renderer_create_window_surface(struct gl_renderer *gr, return egl_surface; } @@ -140,7 +140,7 @@ index b681668b..27794b60 100644 + EGLStreamKHR *egl_stream) +{ + EGLint stream_attribs[] = { -+ EGL_STREAM_FIFO_LENGTH_KHR, 1, ++ EGL_STREAM_FIFO_LENGTH_KHR, 0, /* Mailbox mode */ +#ifdef EGL_EXT_stream_acquire_mode + EGL_CONSUMER_AUTO_ACQUIRE_EXT, EGL_FALSE, +#endif @@ -223,7 +223,7 @@ index b681668b..27794b60 100644 { struct gl_output_state *go; int i; -@@ -3023,6 +3163,7 @@ gl_renderer_output_create(struct weston_output *output, +@@ -3207,6 +3347,7 @@ gl_renderer_output_create(struct weston_output *output, return -1; go->egl_surface = surface; @@ -231,7 +231,7 @@ index b681668b..27794b60 100644 for (i = 0; i < BUFFER_DAMAGE_COUNT; i++) pixman_region32_init(&go->buffer_damage[i]); -@@ -3057,13 +3198,41 @@ gl_renderer_output_window_create(struct weston_output *output, +@@ -3244,13 +3385,41 @@ gl_renderer_output_window_create(struct weston_output *output, return -1; } @@ -274,9 +274,9 @@ index b681668b..27794b60 100644 static void gl_renderer_output_destroy(struct weston_output *output) { -@@ -3088,6 +3257,9 @@ gl_renderer_output_destroy(struct weston_output *output) - wl_list_for_each_safe(trp, tmp, &go->timeline_render_point_list, link) - timeline_render_point_destroy(trp); +@@ -3280,6 +3449,9 @@ gl_renderer_output_destroy(struct weston_output *output) + if (go->end_render_sync != EGL_NO_SYNC_KHR) + gr->destroy_sync(gr->egl_display, go->end_render_sync); + if (go->egl_stream != EGL_NO_STREAM_KHR) + gr->destroy_stream(gr->egl_display, go->egl_stream); @@ -284,7 +284,7 @@ index b681668b..27794b60 100644 free(go); } -@@ -3184,6 +3356,19 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec) +@@ -3393,6 +3565,19 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec) (void *) eglGetProcAddress("eglUnbindWaylandDisplayWL"); gr->query_buffer = (void *) eglGetProcAddress("eglQueryWaylandBufferWL"); @@ -304,8 +304,8 @@ index b681668b..27794b60 100644 extensions = (const char *) eglQueryString(gr->egl_display, EGL_EXTENSIONS); -@@ -3257,6 +3442,30 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec) - "missing EGL_ANDROID_native_fence_sync extension\n"); +@@ -3467,6 +3652,30 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec) + "to missing EGL_KHR_wait_sync extension\n"); } + if (weston_check_egl_extension(extensions, "EGL_EXT_output_base")) @@ -335,7 +335,7 @@ index b681668b..27794b60 100644 renderer_setup_egl_client_extensions(gr); return 0; -@@ -3282,6 +3491,15 @@ static const EGLint gl_renderer_alpha_attribs[] = { +@@ -3492,6 +3701,15 @@ static const EGLint gl_renderer_alpha_attribs[] = { EGL_NONE }; @@ -351,7 +351,7 @@ index b681668b..27794b60 100644 /** Checks whether a platform EGL client extension is supported * -@@ -3355,6 +3573,8 @@ platform_to_extension(EGLenum platform) +@@ -3565,6 +3783,8 @@ platform_to_extension(EGLenum platform) return "wayland"; case EGL_PLATFORM_X11_KHR: return "x11"; @@ -360,9 +360,9 @@ index b681668b..27794b60 100644 default: assert(0 && "bad EGL platform enum"); } -@@ -3491,6 +3711,38 @@ gl_renderer_display_create(struct weston_compositor *ec, EGLenum platform, - if (gl_renderer_setup_egl_extensions(ec) < 0) - goto fail_with_error; +@@ -3706,6 +3926,38 @@ gl_renderer_display_create(struct weston_compositor *ec, EGLenum platform, + if (gr->has_native_fence_sync && gr->has_wait_sync) + ec->capabilities |= WESTON_CAP_EXPLICIT_SYNC; + if (platform == EGL_PLATFORM_DEVICE_EXT) { + if (!gr->has_egl_output_base || @@ -399,7 +399,7 @@ index b681668b..27794b60 100644 wl_list_init(&gr->dmabuf_images); if (gr->has_dmabuf_import) { gr->base.import_dmabuf = gl_renderer_import_dmabuf; -@@ -3862,15 +4114,19 @@ gl_renderer_get_drm_device_file(EGLDeviceEXT device, +@@ -4077,10 +4329,12 @@ gl_renderer_get_drm_device_file(EGLDeviceEXT device, WL_EXPORT struct gl_renderer_interface gl_renderer_interface = { .opaque_attribs = gl_renderer_opaque_attribs, .alpha_attribs = gl_renderer_alpha_attribs, @@ -412,6 +412,7 @@ index b681668b..27794b60 100644 .output_destroy = gl_renderer_output_destroy, .output_surface = gl_renderer_output_surface, .output_set_border = gl_renderer_output_set_border, +@@ -4088,5 +4342,7 @@ WL_EXPORT struct gl_renderer_interface gl_renderer_interface = { .print_egl_error_state = gl_renderer_print_egl_error_state, .get_devices = gl_renderer_get_devices, @@ -421,7 +422,7 @@ index b681668b..27794b60 100644 + .output_stream_flip = gl_renderer_output_stream_flip }; diff --git a/libweston/gl-renderer.h b/libweston/gl-renderer.h -index 9ff4e21e..39ea3b42 100644 +index 151879da..973097bf 100644 --- a/libweston/gl-renderer.h +++ b/libweston/gl-renderer.h @@ -60,6 +60,7 @@ enum gl_renderer_border_side { @@ -442,7 +443,7 @@ index 9ff4e21e..39ea3b42 100644 void (*output_destroy)(struct weston_output *output); EGLSurface (*output_surface)(struct weston_output *output); -@@ -122,5 +126,17 @@ struct gl_renderer_interface { +@@ -129,5 +133,17 @@ struct gl_renderer_interface { int (*get_drm_device_file)(EGLDeviceEXT device, const char **drm_device_file); @@ -518,5 +519,5 @@ index 0784ea2d..f39990ed 100644 #endif /* ENABLE_EGL */ -- -2.18.0 +2.21.0 diff --git a/0003-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch b/0004-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch index 6d815d1c15aa..2f2a7a9c5377 100644 --- a/0003-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch +++ b/0004-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch @@ -1,7 +1,7 @@ -From 1ec5af6e4f51004856d7aee2184d7e4fe11ef086 Mon Sep 17 00:00:00 2001 +From 1c422fb24eadccabd3ed07de15923acc982aa6a1 Mon Sep 17 00:00:00 2001 From: "Miguel A. Vico" <mvicomoya@nvidia.com> Date: Thu, 29 Mar 2018 00:15:49 -0700 -Subject: [PATCH 3/9] gl-renderer: Add EGL client support for EGLStream frame +Subject: [PATCH 4/8] gl-renderer: Add EGL client support for EGLStream frame presentation X-NVConfidentiality: public @@ -29,10 +29,10 @@ Reviewed-by: James Jones <jajones@nvidia.com> 2 files changed, 187 insertions(+), 1 deletion(-) diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c -index 27794b60..39e33350 100644 +index f3fb2c65..5e594535 100644 --- a/libweston/gl-renderer.c +++ b/libweston/gl-renderer.c -@@ -188,6 +188,9 @@ struct gl_surface_state { +@@ -189,6 +189,9 @@ struct gl_surface_state { int hsub[3]; /* horizontal subsampling per plane */ int vsub[3]; /* vertical subsampling per plane */ @@ -41,8 +41,8 @@ index 27794b60..39e33350 100644 + struct weston_surface *surface; - struct wl_listener surface_destroy_listener; -@@ -243,6 +246,7 @@ struct gl_renderer { + /* Whether this surface was used in the current output repaint. +@@ -248,6 +251,7 @@ struct gl_renderer { PFNEGLCREATESTREAMKHRPROC create_stream; PFNEGLDESTROYSTREAMKHRPROC destroy_stream; @@ -50,7 +50,7 @@ index 27794b60..39e33350 100644 int has_egl_stream; PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC create_stream_producer_surface; -@@ -252,11 +256,16 @@ struct gl_renderer { +@@ -257,11 +261,16 @@ struct gl_renderer { int has_egl_stream_consumer_egloutput; #ifdef EGL_NV_stream_attrib @@ -67,8 +67,8 @@ index 27794b60..39e33350 100644 int has_dmabuf_import; struct wl_list dmabuf_images; -@@ -2362,6 +2371,145 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface, - gs->y_inverted = buffer->y_inverted; +@@ -2528,6 +2537,145 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface, + surface->is_opaque = dmabuf_is_opaque(dmabuf); } +/* @@ -213,10 +213,10 @@ index 27794b60..39e33350 100644 static void gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer) { -@@ -2385,6 +2533,12 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer) - gs->num_textures = 0; +@@ -2554,6 +2702,12 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer) gs->buffer_type = BUFFER_TYPE_NULL; gs->y_inverted = 1; + es->is_opaque = false; + + if (gs->egl_stream != EGL_NO_STREAM_KHR) { + gr->destroy_stream(gr->egl_display, gs->egl_stream); @@ -226,18 +226,18 @@ index 27794b60..39e33350 100644 return; } -@@ -2398,7 +2552,7 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer) +@@ -2567,7 +2721,7 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer) gl_renderer_attach_egl(es, buffer, format); else if ((dmabuf = linux_dmabuf_buffer_get(buffer->resource))) gl_renderer_attach_dmabuf(es, buffer, dmabuf); - else { + else if (!gl_renderer_attach_stream_texture(es, buffer)) { weston_log("unhandled buffer type!\n"); - weston_buffer_reference(&gs->buffer_ref, NULL); - gs->buffer_type = BUFFER_TYPE_NULL; -@@ -2586,6 +2740,10 @@ surface_state_destroy(struct gl_surface_state *gs, struct gl_renderer *gr) - + if (gr->has_bind_display) { + weston_log("eglQueryWaylandBufferWL failed\n"); +@@ -2764,6 +2918,10 @@ surface_state_destroy(struct gl_surface_state *gs, struct gl_renderer *gr) weston_buffer_reference(&gs->buffer_ref, NULL); + weston_buffer_release_reference(&gs->buffer_release_ref, NULL); pixman_region32_fini(&gs->texture_damage); + + if (gs->egl_stream != EGL_NO_STREAM_KHR) @@ -246,7 +246,7 @@ index 27794b60..39e33350 100644 free(gs); } -@@ -2636,6 +2794,8 @@ gl_renderer_create_surface(struct weston_surface *surface) +@@ -2814,6 +2972,8 @@ gl_renderer_create_surface(struct weston_surface *surface) gs->surface = surface; @@ -255,7 +255,7 @@ index 27794b60..39e33350 100644 pixman_region32_init(&gs->texture_damage); surface->renderer_state = gs; -@@ -3361,14 +3521,19 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec) +@@ -3570,14 +3730,19 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec) (void *) eglGetProcAddress("eglQueryOutputLayerAttribEXT"); gr->create_stream = (void *) eglGetProcAddress("eglCreateStreamKHR"); gr->destroy_stream = (void *) eglGetProcAddress("eglDestroyStreamKHR"); @@ -275,7 +275,7 @@ index 27794b60..39e33350 100644 extensions = (const char *) eglQueryString(gr->egl_display, EGL_EXTENSIONS); -@@ -3466,6 +3631,12 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec) +@@ -3676,6 +3841,12 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec) if (weston_check_egl_extension(extensions, "EGL_EXT_stream_acquire_mode")) gr->has_egl_stream_acquire_mode = 1; @@ -288,7 +288,7 @@ index 27794b60..39e33350 100644 renderer_setup_egl_client_extensions(gr); return 0; -@@ -3738,6 +3909,16 @@ gl_renderer_display_create(struct weston_compositor *ec, EGLenum platform, +@@ -3953,6 +4124,16 @@ gl_renderer_display_create(struct weston_compositor *ec, EGLenum platform, goto fail_terminate; } @@ -322,5 +322,5 @@ index f39990ed..96982e2d 100644 /* EGL platform definition are keept to allow compositor-xx.c to build */ -- -2.18.0 +2.21.0 diff --git a/0004-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch b/0005-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch index 06be3432166c..83c26ca11f0c 100644 --- a/0004-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch +++ b/0005-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch @@ -1,7 +1,7 @@ -From 51f88599bea32521399f572e02da6f7ff1557172 Mon Sep 17 00:00:00 2001 +From 85e804380738537bbc9afeb658c1218040c68cfa Mon Sep 17 00:00:00 2001 From: "Miguel A. Vico" <mvicomoya@nvidia.com> Date: Tue, 1 Mar 2016 22:19:14 +0100 -Subject: [PATCH 4/9] compositor-drm: Gracefully handle vblank and flip invalid +Subject: [PATCH 5/8] compositor-drm: Gracefully handle vblank and flip invalid timestamps X-NVConfidentiality: public @@ -22,18 +22,18 @@ Reviewed-by: Andy Ritger <aritger@nvidia.com> 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c -index 38911763..577d2e2f 100644 +index c1101105..77dbb077 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c -@@ -3,6 +3,7 @@ - * Copyright © 2011 Intel Corporation +@@ -4,6 +4,7 @@ * Copyright © 2017, 2018 Collabora, Ltd. * Copyright © 2017, 2018 General Electric Company -+ * Copyright © 2016-2018 NVIDIA Corporation + * Copyright (c) 2018 DisplayLink (UK) Ltd. ++ * Copyright © 2016-2019 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the -@@ -1860,6 +1861,19 @@ drm_output_update_complete(struct drm_output *output, uint32_t flags, +@@ -1937,6 +1938,19 @@ drm_output_update_complete(struct drm_output *output, uint32_t flags, ts.tv_sec = sec; ts.tv_nsec = usec * 1000; @@ -53,7 +53,7 @@ index 38911763..577d2e2f 100644 weston_output_finish_frame(&output->base, &ts, flags); /* We can't call this from frame_notify, because the output's -@@ -2849,8 +2863,16 @@ drm_output_start_repaint_loop(struct weston_output *output_base) +@@ -3010,8 +3024,16 @@ drm_output_start_repaint_loop(struct weston_output *output_base) vbl.request.type |= drm_waitvblank_pipe(output); ret = drmWaitVBlank(backend->drm.fd, &vbl); @@ -72,7 +72,7 @@ index 38911763..577d2e2f 100644 ts.tv_sec = vbl.reply.tval_sec; ts.tv_nsec = vbl.reply.tval_usec * 1000; -@@ -2871,7 +2893,7 @@ drm_output_start_repaint_loop(struct weston_output *output_base) +@@ -3032,7 +3054,7 @@ drm_output_start_repaint_loop(struct weston_output *output_base) } } @@ -82,5 +82,5 @@ index 38911763..577d2e2f 100644 */ -- -2.18.0 +2.21.0 diff --git a/0005-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch b/0006-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch index 5c17f3c834de..84680572627b 100644 --- a/0005-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch +++ b/0006-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch @@ -1,7 +1,7 @@ -From a2a230463cf0bbbf452d40019f7e2aa31f6c7f1d Mon Sep 17 00:00:00 2001 +From 73bc85fbde7c65d3a667982301877238d3c02bf8 Mon Sep 17 00:00:00 2001 From: "Miguel A. Vico" <mvicomoya@nvidia.com> Date: Thu, 28 Jan 2016 19:37:10 +0100 -Subject: [PATCH 5/9] compositor-drm: Add support for EGLDevice+EGLOutput +Subject: [PATCH 6/8] compositor-drm: Add support for EGLDevice+EGLOutput X-NVConfidentiality: public As previously stated, EGLDevice and EGLOutput will provide means @@ -26,17 +26,17 @@ Reviewed-by: Adam Cheney <acheney@nvidia.com> Reviewed-by: James Jones <jajones@nvidia.com> --- compositor/main.c | 2 + - libweston/compositor-drm.c | 319 +++++++++++++++++++++++++------------ + libweston/compositor-drm.c | 336 +++++++++++++++++++++++++------------ libweston/compositor-drm.h | 4 + libweston/gl-renderer.h | 1 + - shared/weston-egl-ext.h | 9 ++ - 5 files changed, 236 insertions(+), 99 deletions(-) + shared/weston-egl-ext.h | 9 + + 5 files changed, 245 insertions(+), 107 deletions(-) diff --git a/compositor/main.c b/compositor/main.c -index b5b4fc59..73b6fce1 100644 +index c3206783..103305e3 100644 --- a/compositor/main.c +++ b/compositor/main.c -@@ -517,6 +517,7 @@ usage(int error_code) +@@ -664,6 +664,7 @@ usage(int error_code) " --tty=TTY\t\tThe tty to use\n" " --drm-device=CARD\tThe DRM device to use, e.g. \"card0\".\n" " --use-pixman\t\tUse the pixman (CPU) renderer\n" @@ -44,19 +44,19 @@ index b5b4fc59..73b6fce1 100644 " --current-mode\tPrefer current KMS mode over EDID preferred mode\n\n"); #endif -@@ -1845,6 +1846,7 @@ load_drm_backend(struct weston_compositor *c, +@@ -2341,6 +2342,7 @@ load_drm_backend(struct weston_compositor *c, { WESTON_OPTION_STRING, "drm-device", 0, &config.specific_device }, { WESTON_OPTION_BOOLEAN, "current-mode", 0, &wet->drm_use_current_mode }, - { WESTON_OPTION_BOOLEAN, "use-pixman", 0, &config.use_pixman }, + { WESTON_OPTION_BOOLEAN, "use-pixman", 0, &use_pixman_ }, + { WESTON_OPTION_BOOLEAN, "use-egldevice", 0, &config.use_egldevice }, }; parse_options(options, ARRAY_LENGTH(options), argc, argv); diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c -index 577d2e2f..1352a38e 100644 +index 77dbb077..100b3050 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c -@@ -263,7 +263,10 @@ struct drm_backend { +@@ -310,7 +310,10 @@ struct drm_backend { int fd; char *filename; } drm; @@ -67,8 +67,8 @@ index 577d2e2f..1352a38e 100644 struct wl_listener session_listener; uint32_t gbm_format; -@@ -293,6 +296,8 @@ struct drm_backend { - int use_pixman; +@@ -340,6 +343,8 @@ struct drm_backend { + bool use_pixman; bool use_pixman_shadow; + int use_egldevice; @@ -76,7 +76,7 @@ index 577d2e2f..1352a38e 100644 struct udev_input input; int32_t cursor_width; -@@ -2027,20 +2032,24 @@ drm_output_render_gl(struct drm_output_state *state, pixman_region32_t *damage) +@@ -2109,20 +2114,24 @@ drm_output_render_gl(struct drm_output_state *state, pixman_region32_t *damage) output->base.compositor->renderer->repaint_output(&output->base, damage); @@ -113,7 +113,7 @@ index 577d2e2f..1352a38e 100644 return ret; } -@@ -2083,7 +2092,9 @@ drm_output_render(struct drm_output_state *state, pixman_region32_t *damage) +@@ -2165,7 +2174,9 @@ drm_output_render(struct drm_output_state *state, pixman_region32_t *damage) if (scanout_state->fb) return; @@ -124,9 +124,9 @@ index 577d2e2f..1352a38e 100644 scanout_plane->state_cur->fb && (scanout_plane->state_cur->fb->type == BUFFER_GBM_SURFACE || scanout_plane->state_cur->fb->type == BUFFER_PIXMAN_DUMB) && -@@ -2267,9 +2278,14 @@ drm_output_apply_state_legacy(struct drm_output_state *state) - } - } +@@ -2358,9 +2369,14 @@ drm_output_apply_state_legacy(struct drm_output_state *state) + output->crtc_id, scanout_state->plane->plane_id, + pinfo ? pinfo->drm_format_name : "UNKNOWN"); - if (drmModePageFlip(backend->drm.fd, output->crtc_id, - scanout_state->fb->fb_id, @@ -142,7 +142,7 @@ index 577d2e2f..1352a38e 100644 weston_log("queueing pageflip failed: %m\n"); goto err; } -@@ -3833,7 +3849,8 @@ init_kms_caps(struct drm_backend *b) +@@ -4174,7 +4190,8 @@ init_kms_caps(struct drm_backend *b) b->universal_planes ? "supports" : "does not support"); #ifdef HAVE_DRM_ATOMIC @@ -152,7 +152,7 @@ index 577d2e2f..1352a38e 100644 ret = drmGetCap(b->drm.fd, DRM_CAP_CRTC_IN_VBLANK_EVENT, &cap); if (ret != 0) cap = 0; -@@ -3868,11 +3885,6 @@ create_gbm_device(int fd) +@@ -4217,11 +4234,6 @@ create_gbm_device(int fd) { struct gbm_device *gbm; @@ -164,7 +164,7 @@ index 577d2e2f..1352a38e 100644 /* GBM will load a dri driver, but even though they need symbols from * libglapi, in some version of Mesa they are not linked to it. Since * only the gl-renderer module links to it, the call above won't make -@@ -3885,6 +3897,40 @@ create_gbm_device(int fd) +@@ -4234,6 +4246,40 @@ create_gbm_device(int fd) return gbm; } @@ -205,7 +205,7 @@ index 577d2e2f..1352a38e 100644 /* When initializing EGL, if the preferred buffer format isn't available * we may be able to substitute an ARGB format for an XRGB one. * -@@ -3911,38 +3957,62 @@ fallback_format_for(uint32_t format) +@@ -4260,38 +4306,62 @@ fallback_format_for(uint32_t format) static int drm_backend_create_gl_renderer(struct drm_backend *b) { @@ -289,7 +289,7 @@ index 577d2e2f..1352a38e 100644 return -1; } -@@ -4653,63 +4723,90 @@ err: +@@ -5058,71 +5128,98 @@ err: static int drm_output_init_egl(struct drm_output *output, struct drm_backend *b) { @@ -305,10 +305,7 @@ index 577d2e2f..1352a38e 100644 + int w = output->base.current_mode->width; + int h = output->base.current_mode->height; -- for (i = 0; i < plane->count_formats; i++) { -- if (plane->formats[i].format == output->gbm_format) -- break; -- } +- assert(output->gbm_surface == NULL); + /* Create a black dumb fb for modesetting */ + output->dumb[0] = drm_fb_create_dumb(b, w, h, + DRM_FORMAT_XRGB8888); @@ -327,10 +324,9 @@ index 577d2e2f..1352a38e 100644 + return -1; + } -- if (i == plane->count_formats) { -- weston_log("format 0x%x not supported by output %s\n", -- output->gbm_format, output->base.name); -- return -1; +- for (i = 0; i < plane->count_formats; i++) { +- if (plane->formats[i].format == output->gbm_format) +- break; - } + /* FIXME: Add hw planes and cursors for EGL device when supported */ + b->sprites_are_broken = 1; @@ -344,6 +340,13 @@ index 577d2e2f..1352a38e 100644 + struct weston_mode *mode = output->base.current_mode; + struct drm_plane *plane = output->scanout_plane; + unsigned int i; + +- if (i == plane->count_formats) { +- weston_log("format 0x%x not supported by output %s\n", +- output->gbm_format, output->base.name); +- return -1; +- } ++ assert(output->gbm_surface == NULL); + + for (i = 0; i < plane->count_formats; i++) { + if (plane->formats[i].format == output->gbm_format) @@ -365,7 +368,12 @@ index 577d2e2f..1352a38e 100644 - output->gbm_format, - plane->formats[i].modifiers, - plane->formats[i].count_modifiers); -- } else +- } +- +- /* If allocating with modifiers fails, try again without. This can +- * happen when the KMS display device supports modifiers but the +- * GBM driver does not, e.g. the old i915 Mesa driver. */ +- if (!output->gbm_surface) + if (plane->formats[i].count_modifiers > 0) { + output->gbm_surface = + gbm_surface_create_with_modifiers(b->gbm, @@ -374,19 +382,24 @@ index 577d2e2f..1352a38e 100644 + output->gbm_format, + plane->formats[i].modifiers, + plane->formats[i].count_modifiers); -+ } else ++ } ++ ++ /* If allocating with modifiers fails, try again without. This can ++ * happen when the KMS display device supports modifiers but the ++ * GBM driver does not, e.g. the old i915 Mesa driver. */ ++ if (!output->gbm_surface) #endif - { - output->gbm_surface = - gbm_surface_create(b->gbm, mode->width, mode->height, - output->gbm_format, -- GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT); +- output->gbm_bo_flags); - } + { + output->gbm_surface = + gbm_surface_create(b->gbm, mode->width, mode->height, + output->gbm_format, -+ GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT); ++ output->gbm_bo_flags); + } - if (!output->gbm_surface) { @@ -408,6 +421,7 @@ index 577d2e2f..1352a38e 100644 - n_formats) < 0) { - weston_log("failed to create gl renderer output state\n"); - gbm_surface_destroy(output->gbm_surface); +- output->gbm_surface = NULL; - return -1; - } + if (format[1]) @@ -420,6 +434,7 @@ index 577d2e2f..1352a38e 100644 + n_formats) < 0) { + weston_log("failed to create gl renderer output state\n"); + gbm_surface_destroy(output->gbm_surface); ++ output->gbm_surface = NULL; + return -1; + } @@ -429,24 +444,27 @@ index 577d2e2f..1352a38e 100644 return 0; } -@@ -4731,7 +4828,15 @@ drm_output_fini_egl(struct drm_output *output) +@@ -5144,8 +5241,17 @@ drm_output_fini_egl(struct drm_output *output) } gl_renderer->output_destroy(&output->base); - gbm_surface_destroy(output->gbm_surface); +- output->gbm_surface = NULL; + + if (output->dumb[0]) { + drm_fb_unref(output->dumb[0]); + output->dumb[0] = NULL; + } + -+ if (output->gbm_surface) ++ if (output->gbm_surface) { + gbm_surface_destroy(output->gbm_surface); ++ output->gbm_surface = NULL; ++ } + drm_output_fini_cursor_egl(output); } -@@ -6608,6 +6713,11 @@ recorder_binding(struct weston_keyboard *keyboard, const struct timespec *time, +@@ -7050,6 +7156,11 @@ recorder_binding(struct weston_keyboard *keyboard, const struct timespec *time, struct drm_output *output; int width, height; @@ -458,7 +476,7 @@ index 577d2e2f..1352a38e 100644 output = container_of(b->compositor->output_list.next, struct drm_output, base.link); -@@ -6663,11 +6773,20 @@ switch_to_gl_renderer(struct drm_backend *b) +@@ -7108,11 +7219,20 @@ switch_to_gl_renderer(struct drm_backend *b) weston_log("Switching to GL renderer\n"); @@ -484,7 +502,7 @@ index 577d2e2f..1352a38e 100644 } wl_list_for_each(output, &b->compositor->output_list, base.link) -@@ -6676,7 +6795,8 @@ switch_to_gl_renderer(struct drm_backend *b) +@@ -7121,7 +7241,8 @@ switch_to_gl_renderer(struct drm_backend *b) b->compositor->renderer->destroy(b->compositor); if (drm_backend_create_gl_renderer(b) < 0) { @@ -494,19 +512,19 @@ index 577d2e2f..1352a38e 100644 weston_log("Failed to create GL renderer. Quitting.\n"); /* FIXME: we need a function to shutdown cleanly */ assert(0); -@@ -6742,6 +6862,7 @@ drm_backend_create(struct weston_compositor *compositor, +@@ -7451,6 +7572,7 @@ drm_backend_create(struct weston_compositor *compositor, b->use_pixman = config->use_pixman; b->pageflip_timeout = config->pageflip_timeout; b->use_pixman_shadow = config->use_pixman_shadow; + b->use_egldevice = config->use_egldevice; - compositor->backend = &b->base; - + b->debug = weston_compositor_add_debug_scope(compositor, "drm-backend", + "Debug messages from DRM/KMS backend\n", diff --git a/libweston/compositor-drm.h b/libweston/compositor-drm.h -index 9c37c153..a9d69e5e 100644 +index 71a306fd..435581d9 100644 --- a/libweston/compositor-drm.h +++ b/libweston/compositor-drm.h -@@ -104,6 +104,10 @@ struct weston_drm_backend_config { +@@ -177,6 +177,10 @@ struct weston_drm_backend_config { /** Whether to use the pixman renderer instead of the OpenGL ES renderer. */ bool use_pixman; @@ -518,7 +536,7 @@ index 9c37c153..a9d69e5e 100644 * * If seat_id is NULL, the seat is taken from XDG_SEAT environment diff --git a/libweston/gl-renderer.h b/libweston/gl-renderer.h -index 39ea3b42..37252492 100644 +index 973097bf..233c9282 100644 --- a/libweston/gl-renderer.h +++ b/libweston/gl-renderer.h @@ -45,6 +45,7 @@ typedef void *EGLConfig; @@ -557,5 +575,5 @@ index 96982e2d..e4e10ef9 100644 #endif -- -2.18.0 +2.21.0 diff --git a/0006-compositor-Process-stream-attach-requests-with-wl_eg.patch b/0007-compositor-Process-stream-attach-requests-with-wl_eg.patch index a05dc4b75a55..247fd1c11607 100644 --- a/0006-compositor-Process-stream-attach-requests-with-wl_eg.patch +++ b/0007-compositor-Process-stream-attach-requests-with-wl_eg.patch @@ -1,7 +1,7 @@ -From 9036a214efffea4c2eb13e1d275c59621ee17a52 Mon Sep 17 00:00:00 2001 +From 5076208fd90be98deff790f0f4429cfe54f1457a Mon Sep 17 00:00:00 2001 From: "Miguel A. Vico" <mvicomoya@nvidia.com> Date: Thu, 18 May 2017 14:35:36 -0700 -Subject: [PATCH 6/9] compositor: Process stream attach requests with +Subject: [PATCH 7/8] compositor: Process stream attach requests with wl_eglstream_controller X-NVConfidentiality: public @@ -25,37 +25,39 @@ requests. [mvicomoya: - Dynamically load libnvidia-egl-wayland.so.1 instead linking against it - - add a copy of wayland-eglstream-controller protocol, and - generate the server header at build time] + - Add wayland-eglstream-protocols package dependency and + generate server header for wayland-eglstream-controller at + build time] Signed-off-by: Ashutosh Agarwal <asagarwal@nvidia.com> Signed-off-by: Miguel A Vico Moya <mvicomoya@nvidia.com> --- - Makefile.am | 15 ++++ + Makefile.am | 14 ++++ + compositor/meson.build | 1 + configure.ac | 4 ++ libweston/compositor.c | 78 +++++++++++++++++++++ libweston/compositor.h | 4 ++ libweston/gl-renderer.c | 147 +++++++++++++++++++++++++--------------- - 5 files changed, 194 insertions(+), 54 deletions(-) + protocol/meson.build | 7 ++ + 7 files changed, 201 insertions(+), 54 deletions(-) diff --git a/Makefile.am b/Makefile.am -index 83bb2533..c15bca01 100644 +index 5407b593..0bad6976 100644 --- a/Makefile.am +++ b/Makefile.am -@@ -173,6 +173,12 @@ nodist_libweston_@LIBWESTON_MAJOR@_la_SOURCES = \ +@@ -192,6 +192,11 @@ nodist_libweston_@LIBWESTON_MAJOR@_la_SOURCES = \ BUILT_SOURCES += $(nodist_libweston_@LIBWESTON_MAJOR@_la_SOURCES) -+libweston_eglstreams_@LIBWESTON_MAJOR@dir = $(top_builddir)/protocol -+nodist_libweston_eglstreams_@LIBWESTON_MAJOR@_HEADERS = \ ++nodist_libweston_eglstreams_@LIBWESTON_MAJOR@_la_SOURCES = \ + protocol/wayland-eglstream-controller-server-protocol.h + -+BUILT_SOURCES += $(nodist_libweston_eglstreams_@LIBWESTON_MAJOR@_HEADERS) ++BUILT_SOURCES += $(nodist_libweston_eglstreams_@LIBWESTON_MAJOR@_la_SOURCES) + bin_PROGRAMS += weston weston_LDFLAGS = -export-dynamic -@@ -1658,6 +1664,15 @@ protocol/%-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostabili +@@ -1736,6 +1741,15 @@ protocol/%-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostabili protocol/%-client-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(wayland_scanner) client-header < $< > $@ @@ -71,11 +73,23 @@ index 83bb2533..c15bca01 100644 protocol/%-protocol.c : $(top_srcdir)/protocol/%.xml $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(wayland_scanner) code < $< > $@ +diff --git a/compositor/meson.build b/compositor/meson.build +index d5d7282f..7655ef5a 100644 +--- a/compositor/meson.build ++++ b/compositor/meson.build +@@ -9,6 +9,7 @@ srcs_weston = [ + input_method_unstable_v1_protocol_c, + weston_screenshooter_server_protocol_h, + weston_screenshooter_protocol_c, ++ wayland_eglstream_controller_server_protocol_h, + ] + deps_weston = [ + dep_libshared, diff --git a/configure.ac b/configure.ac -index 50f8e013..b219d2e2 100644 +index 425ba238..5c1932bc 100644 --- a/configure.ac +++ b/configure.ac -@@ -231,6 +231,10 @@ PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.13], +@@ -261,6 +261,10 @@ PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.17], [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`]) AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir) @@ -87,7 +101,7 @@ index 50f8e013..b219d2e2 100644 enable_wayland_compositor=yes) AM_CONDITIONAL(ENABLE_WAYLAND_COMPOSITOR, diff --git a/libweston/compositor.c b/libweston/compositor.c -index 9deb7817..a2941788 100644 +index d87522e7..947739f8 100644 --- a/libweston/compositor.c +++ b/libweston/compositor.c @@ -3,6 +3,7 @@ @@ -98,15 +112,15 @@ index 9deb7817..a2941788 100644 * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the -@@ -64,6 +65,7 @@ - #include "git-version.h" +@@ -71,6 +72,7 @@ #include "version.h" #include "plugin-registry.h" + #include "pixel-formats.h" +#include "wayland-eglstream-controller-server-protocol.h" #define DEFAULT_REPAINT_WINDOW 7 /* milliseconds */ -@@ -6246,6 +6248,80 @@ bind_presentation(struct wl_client *client, +@@ -6473,6 +6475,80 @@ bind_presentation(struct wl_client *client, wp_presentation_send_clock_id(resource, compositor->presentation_clock); } @@ -187,20 +201,20 @@ index 9deb7817..a2941788 100644 static void compositor_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id) -@@ -6361,6 +6437,8 @@ weston_compositor_create(struct wl_display *display, void *user_data) +@@ -6836,6 +6912,8 @@ weston_compositor_create(struct wl_display *display, void *user_data) ec, bind_presentation)) goto fail; + init_eglstream_controller(ec->wl_display); + - if (weston_input_init(ec) != 0) + if (weston_debug_compositor_create(ec) < 0) goto fail; diff --git a/libweston/compositor.h b/libweston/compositor.h -index 8b7a1020..2edce664 100644 +index a5223c28..1c39c50c 100644 --- a/libweston/compositor.h +++ b/libweston/compositor.h -@@ -924,6 +924,10 @@ struct weston_renderer { +@@ -925,6 +925,10 @@ struct weston_renderer { void (*query_dmabuf_modifiers)(struct weston_compositor *ec, int format, uint64_t **modifiers, int *num_modifiers); @@ -212,7 +226,7 @@ index 8b7a1020..2edce664 100644 enum weston_capability { diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c -index 39e33350..c89c7965 100644 +index 5e594535..8265a712 100644 --- a/libweston/gl-renderer.c +++ b/libweston/gl-renderer.c @@ -1,7 +1,7 @@ @@ -224,8 +238,8 @@ index 39e33350..c89c7965 100644 * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the -@@ -2371,18 +2371,9 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface, - gs->y_inverted = buffer->y_inverted; +@@ -2537,18 +2537,9 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface, + surface->is_opaque = dmabuf_is_opaque(dmabuf); } -/* @@ -246,7 +260,7 @@ index 39e33350..c89c7965 100644 { #ifdef EGL_NV_stream_attrib struct weston_compositor *ec = es->compositor; -@@ -2391,65 +2382,111 @@ gl_renderer_attach_stream_texture(struct weston_surface *es, +@@ -2557,65 +2548,111 @@ gl_renderer_attach_stream_texture(struct weston_surface *es, EGLStreamKHR stream = EGL_NO_STREAM_KHR; EGLAttrib stream_attribs[] = { #ifdef EGL_WL_wayland_eglstream @@ -399,7 +413,7 @@ index 39e33350..c89c7965 100644 } /* At this point we should have a valid stream handle */ -@@ -3831,6 +3868,8 @@ gl_renderer_display_create(struct weston_compositor *ec, EGLenum platform, +@@ -4041,6 +4078,8 @@ gl_renderer_display_create(struct weston_compositor *ec, EGLenum platform, gr->base.surface_get_content_size = gl_renderer_surface_get_content_size; gr->base.surface_copy_content = gl_renderer_surface_copy_content; @@ -408,6 +422,38 @@ index 39e33350..c89c7965 100644 gr->egl_display = NULL; /* extension_suffix is supported */ +diff --git a/protocol/meson.build b/protocol/meson.build +index 34026ff9..37642298 100644 +--- a/protocol/meson.build ++++ b/protocol/meson.build +@@ -7,6 +7,9 @@ prog_scanner = find_program(dep_scanner.get_pkgconfig_variable('wayland_scanner' + dep_wp = dependency('wayland-protocols', version: '>= 1.17') + dir_wp_base = dep_wp.get_pkgconfig_variable('pkgdatadir') + ++dep_wep = dependency('wayland-eglstream-protocols') ++dir_wep_base = dep_wep.get_pkgconfig_variable('pkgdatadir') ++ + install_data( + [ + 'weston-debug.xml', +@@ -37,6 +40,7 @@ generated_protocols = [ + [ 'xdg-output', 'v1' ], + [ 'xdg-shell', 'v6' ], + [ 'xdg-shell', 'stable' ], ++ [ 'wayland-eglstream-controller', '3rdparty', dir_wep_base ], + ] + + foreach proto: generated_protocols +@@ -44,6 +48,9 @@ foreach proto: generated_protocols + if proto[1] == 'internal' + base_file = proto_name + xml_path = '@0@.xml'.format(proto_name) ++ elif proto[1] == '3rdparty' ++ base_file = proto_name ++ xml_path = '@0@/@1@.xml'.format(proto[2], base_file) + elif proto[1] == 'stable' + base_file = proto_name + xml_path = '@0@/stable/@1@/@1@.xml'.format(dir_wp_base, base_file) -- -2.18.0 +2.21.0 diff --git a/0008-gl-renderer-Use-mailbox-streams-for-scanout.patch b/0008-gl-renderer-Use-mailbox-streams-for-scanout.patch deleted file mode 100644 index aa31348a82b8..000000000000 --- a/0008-gl-renderer-Use-mailbox-streams-for-scanout.patch +++ /dev/null @@ -1,34 +0,0 @@ -From db3147b5446334d69d1ffdb07234babc292dec2e Mon Sep 17 00:00:00 2001 -From: "Miguel A. Vico" <mvicomoya@nvidia.com> -Date: Wed, 16 Jan 2019 14:16:30 -0800 -Subject: [PATCH 8/9] gl-renderer: Use mailbox streams for scanout -X-NVConfidentiality: public - -Ever since flip-event-based output repaints have been used, FIFO mode -for EGLOutput streams was not necessary. - -Make the streams operate in mailbox mode. This also fixes certain -interaction issues when recovering from power-saving mode or -vt-switches. - -Signed-off-by: Miguel A Vico Moya <mvicomoya@nvidia.com> ---- - libweston/gl-renderer.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c -index c89c7965..95690108 100644 ---- a/libweston/gl-renderer.c -+++ b/libweston/gl-renderer.c -@@ -3272,7 +3272,7 @@ gl_renderer_create_stream_surface(struct gl_renderer *gr, - EGLStreamKHR *egl_stream) - { - EGLint stream_attribs[] = { -- EGL_STREAM_FIFO_LENGTH_KHR, 1, -+ EGL_STREAM_FIFO_LENGTH_KHR, 0, /* Mailbox mode */ - #ifdef EGL_EXT_stream_acquire_mode - EGL_CONSUMER_AUTO_ACQUIRE_EXT, EGL_FALSE, - #endif --- -2.18.0 - diff --git a/0007-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch b/0008-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch index 474ff386712f..e0bd3cc828d3 100644 --- a/0007-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch +++ b/0008-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch @@ -1,7 +1,7 @@ -From 27266e389b238f023f8789fec40ae661541372e4 Mon Sep 17 00:00:00 2001 +From a49fdfc86296f3e6a05388c7bc7ea806be49d919 Mon Sep 17 00:00:00 2001 From: "Miguel A. Vico" <mvicomoya@nvidia.com> Date: Mon, 27 Feb 2017 15:31:35 -0800 -Subject: [PATCH 7/9] simple-egl: Do not set EGL up until XDG setup is complete +Subject: [PATCH 8/8] simple-egl: Do not set EGL up until XDG setup is complete X-NVConfidentiality: public There is nothing that prohibits the underlying EGL_PLATFORM_WAYLAND @@ -18,14 +18,14 @@ Related bug: Signed-off-by: Miguel A Vico Moya <mvicomoya@nvidia.com> --- - clients/simple-egl.c | 67 +++++++++++++++++++++++--------------------- - 1 file changed, 35 insertions(+), 32 deletions(-) + clients/simple-egl.c | 64 +++++++++++++++++++++++--------------------- + 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/clients/simple-egl.c b/clients/simple-egl.c -index a1e57aef..0ca66415 100644 +index 8a086ef0..2d409c70 100644 --- a/clients/simple-egl.c +++ b/clients/simple-egl.c -@@ -221,11 +221,32 @@ init_egl(struct display *display, struct window *window) +@@ -217,11 +217,32 @@ init_egl(struct display *display, struct window *window) if (display->swap_buffers_with_damage) printf("has EGL_EXT_buffer_age and %s\n", swap_damage_ext_to_entrypoint[i].extension); @@ -59,17 +59,7 @@ index a1e57aef..0ca66415 100644 eglTerminate(display->egl.dpy); eglReleaseThread(); } -@@ -364,7 +385,8 @@ handle_ivi_surface_configure(void *data, struct ivi_surface *ivi_surface, - { - struct window *window = data; - -- wl_egl_window_resize(window->native, width, height, 0, 0); -+ if (window->native) -+ wl_egl_window_resize(window->native, width, height, 0, 0); - - window->geometry.width = width; - window->geometry.height = height; -@@ -417,7 +439,6 @@ static void +@@ -358,7 +379,6 @@ static void create_surface(struct window *window) { struct display *display = window->display; @@ -77,7 +67,7 @@ index a1e57aef..0ca66415 100644 window->surface = wl_compositor_create_surface(display->compositor); -@@ -425,10 +446,6 @@ create_surface(struct window *window) +@@ -366,10 +386,6 @@ create_surface(struct window *window) wl_egl_window_create(window->surface, window->geometry.width, window->geometry.height); @@ -86,11 +76,11 @@ index a1e57aef..0ca66415 100644 - display->egl.conf, - window->native, NULL); - - if (display->shell) { -@@ -439,13 +456,6 @@ create_surface(struct window *window) - assert(0); - } + window->xdg_surface = xdg_wm_base_get_xdg_surface(display->wm_base, + window->surface); +@@ -386,13 +402,6 @@ create_surface(struct window *window) + window->wait_for_configure = true; + wl_surface_commit(window->surface); - ret = eglMakeCurrent(window->display->egl.dpy, window->egl_surface, - window->egl_surface, window->display->egl.ctx); @@ -99,10 +89,10 @@ index a1e57aef..0ca66415 100644 - if (!window->frame_sync) - eglSwapInterval(display->egl.dpy, 0); - - if (!display->shell) + if (!display->wm_base) return; -@@ -456,15 +466,6 @@ create_surface(struct window *window) +@@ -403,15 +412,6 @@ create_surface(struct window *window) static void destroy_surface(struct window *window) { @@ -116,9 +106,9 @@ index a1e57aef..0ca66415 100644 - wl_egl_window_destroy(window->native); - if (window->xdg_toplevel) - zxdg_toplevel_v6_destroy(window->xdg_toplevel); + xdg_toplevel_destroy(window->xdg_toplevel); if (window->xdg_surface) -@@ -906,9 +907,7 @@ main(int argc, char **argv) +@@ -846,9 +846,7 @@ main(int argc, char **argv) wl_display_roundtrip(display.display); @@ -128,7 +118,7 @@ index a1e57aef..0ca66415 100644 display.cursor_surface = wl_compositor_create_surface(display.compositor); -@@ -918,23 +917,27 @@ main(int argc, char **argv) +@@ -858,23 +856,27 @@ main(int argc, char **argv) sigint.sa_flags = SA_RESETHAND; sigaction(SIGINT, &sigint, NULL); @@ -164,5 +154,5 @@ index a1e57aef..0ca66415 100644 wl_surface_destroy(display.cursor_surface); if (display.cursor_theme) -- -2.18.0 +2.21.0 diff --git a/0009-configure-Temporary-fix-for-gobject-2.0-libs-missing.patch b/0009-configure-Temporary-fix-for-gobject-2.0-libs-missing.patch deleted file mode 100644 index 15990c07a354..000000000000 --- a/0009-configure-Temporary-fix-for-gobject-2.0-libs-missing.patch +++ /dev/null @@ -1,36 +0,0 @@ -From c5c8d75dd72b44076af00fa4f0dcfbdb5b9c9f2f Mon Sep 17 00:00:00 2001 -From: "Miguel A. Vico" <mvicomoya@nvidia.com> -Date: Tue, 26 Mar 2019 15:44:26 -0700 -Subject: [PATCH 9/9] configure: Temporary fix for gobject-2.0 libs missing in - pango pkgconfig -X-NVConfidentiality: public - -This fixes the following build error, until the pango pkgconfig is -restored to also include the corresponding flags to link against -gobject-2.0: - - /usr/bin/ld: clients/weston_editor-editor.o: undefined reference to symbol 'g_object_unref' - /usr/bin/ld: /usr/lib/libgobject-2.0.so.0: error adding symbols: DSO missing from command line - collect2: error: ld returned 1 exit status - -Signed-off-by: Miguel A Vico Moya <mvicomoya@nvidia.com> ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index b219d2e2..18cdfecb 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -462,7 +462,7 @@ if test x$enable_clients = xyes; then - [AC_ERROR([cairo-egl not used because $CAIRO_EGL_PKG_ERRORS])])], - [have_cairo_egl=no]) - -- PKG_CHECK_MODULES(PANGO, [pangocairo pango glib-2.0 >= 2.36], [have_pango=yes], [have_pango=no]) -+ PKG_CHECK_MODULES(PANGO, [pangocairo pango glib-2.0 >= 2.36 gobject-2.0 >= 2.36], [have_pango=yes], [have_pango=no]) - fi - - AC_ARG_ENABLE(resize-optimization, --- -2.18.0 - @@ -1,72 +1,61 @@ # Maintainer: Aaron Plattner <aplattner@nvidia.com> # Maintainer: Miguel A. Vico <mvicomoya@nvidia.com> -# Contributor: Sébastien Luttringer +# Contributor: Eric Toombs # Contributor: Joel Teichroeb <joel@teichroeb.net> +# Contributor: Sébastien Luttringer +# Contributor: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> pkgname=weston-eglstream -pkgver=5.0.0 -pkgrel=5 +pkgver=6.0.0 +pkgrel=1 pkgdesc='Reference implementation of a Wayland compositor with EGLStream support' -arch=('i686' 'x86_64') +arch=('x86_64') url='https://wayland.freedesktop.org/' license=('MIT') -depends=('glibc' 'wayland' 'libxkbcommon' 'libinput' 'libunwind' 'pixman' - 'libdrm' 'pam' 'libsystemd' 'cairo' 'libpng' 'libjpeg-turbo' 'libwebp' - 'libegl' 'libgles' 'glib2' 'pango' 'lcms2' 'mtdev' 'libx11' - 'libxcb' 'dbus' 'libva' 'libxcursor' 'colord' 'egl-wayland' 'autoconf') -makedepends=('wayland-protocols') +depends=('wayland' 'libxkbcommon' 'libinput' 'libjpeg-turbo' 'libwebp' + 'libegl' 'libgles' 'pango' 'libva' 'libxcursor' 'colord' 'egl-wayland') +makedepends=('meson' 'wayland-protocols') provides=('weston') conflicts=('weston') source=("https://wayland.freedesktop.org/releases/weston-$pkgver.tar.xz" - '0001-gl-renderer-Add-EGLDevice-enumeration-support.patch' - '0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch' - '0003-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch' - '0004-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch' - '0005-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch' - '0006-compositor-Process-stream-attach-requests-with-wl_eg.patch' - '0007-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch' - '0008-gl-renderer-Use-mailbox-streams-for-scanout.patch' - '0009-configure-Temporary-fix-for-gobject-2.0-libs-missing.patch') -sha256sums=('15a23423bcfa45e31e1dedc0cd524ba71e2930df174fde9c99b71a537c4e4caf' - '270c2f68bb84a0f1f670eddb44b3f77729cf29ceecddbe4e62a5ced80fb1d1df' - 'f4f79611d00847c722e476469f74dc8fce812afdf2fed58ca91235b04bfe0107' - '17c8d59665ad33d3dbfea39d8c32634dac660cf528313b51c7064ce27b93ddec' - 'f5c7ae1142b2cb0dcf28c4b217c7cac42ab98fb1bb5ee14a2978fa8cc9bc6ea7' - '59287416cf0a57b76f7e77b7eadf0cf9c91afe480b0c400998abafe2deeb3126' - '5917fe7b0b49a1d66c3262958c004ffe22de7bb5026856f92cf5be46e81f9b1e' - '9b910c9b7176a4caea796a11ffd5086a54fe7b3c02336d494b8ea050933cfcbe' - '840166cc83641e6502c119ea1ff060be3afc1c99c0da792e7e43364ad29e799d' - 'd84cea4d89f79215adb148e5ed2afe7e94f3ef66df10e2bbecfddf9f04bd13e4') + '0001-configure-meson-Tmp-fix-for-gobject-2.0-libs-missing.patch' + '0002-gl-renderer-Add-EGLDevice-enumeration-support.patch' + '0003-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch' + '0004-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch' + '0005-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch' + '0006-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch' + '0007-compositor-Process-stream-attach-requests-with-wl_eg.patch' + '0008-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch') +sha256sums=('546323a90607b3bd7f48809ea9d76e64cd09718102f2deca6d95aa59a882e612' + 'd6e78c5bfc2118f1955f8c3eb30aedf7dc01cab9e21271b135dc32be1b895607' + 'f4b5222e0a8ee1c895f0e60e34d9d7c0a371012c5aab4d7e896e4c6f0df514b7' + '8e778e55a2268cf932d57e4a6bbedcc7e24b1e223583cb238091dd426217198b' + '01ecdb0363d36e11365ffe77056e9ec282d1928b007023ac7450aa2812a5018f' + 'f14e27d58b7b0ec72b5aa722db95bd62e9b316e91907070cfeed236e65fe5c17' + '77b1633c0162ac0b6f8126a1e614b8fa54a672927c04c1cacc5486b534ebd4ec' + '36f05125a0be58d2ce840c8de2b8d42cfeeae8362e5b95861669b85d0f876816' + 'a2acbc92962d2ae2c1690398af67eac35c5bbe06f0ff03a94f1aa1f12385ea12') prepare() { - cd weston-$pkgver + cd weston-$pkgver - patch -Np1 -i "${srcdir}/0001-gl-renderer-Add-EGLDevice-enumeration-support.patch" - patch -Np1 -i "${srcdir}/0002-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch" - patch -Np1 -i "${srcdir}/0003-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch" - patch -Np1 -i "${srcdir}/0004-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch" - patch -Np1 -i "${srcdir}/0005-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch" - patch -Np1 -i "${srcdir}/0006-compositor-Process-stream-attach-requests-with-wl_eg.patch" - patch -Np1 -i "${srcdir}/0007-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch" - patch -Np1 -i "${srcdir}/0008-gl-renderer-Use-mailbox-streams-for-scanout.patch" - patch -Np1 -i "${srcdir}/0009-configure-Temporary-fix-for-gobject-2.0-libs-missing.patch" + patch -Np1 -i "${srcdir}/0001-configure-meson-Tmp-fix-for-gobject-2.0-libs-missing.patch" + patch -Np1 -i "${srcdir}/0002-gl-renderer-Add-EGLDevice-enumeration-support.patch" + patch -Np1 -i "${srcdir}/0003-gl-renderer-Add-support-for-EGLDevice-composited-fra.patch" + patch -Np1 -i "${srcdir}/0004-gl-renderer-Add-EGL-client-support-for-EGLStream-fra.patch" + patch -Np1 -i "${srcdir}/0005-compositor-drm-Gracefully-handle-vblank-and-flip-inv.patch" + patch -Np1 -i "${srcdir}/0006-compositor-drm-Add-support-for-EGLDevice-EGLOutput.patch" + patch -Np1 -i "${srcdir}/0007-compositor-Process-stream-attach-requests-with-wl_eg.patch" + patch -Np1 -i "${srcdir}/0008-simple-egl-Do-not-set-EGL-up-until-XDG-setup-is-comp.patch" } build() { - cd weston-$pkgver - autoreconf --force -v --install - ./configure \ - --prefix=/usr \ - --libexecdir=/usr/lib/weston \ - --enable-systemd-login \ - --enable-systemd-notify \ - --enable-xwayland \ - --enable-demo-clients-install - make + arch-meson "build" "weston-$pkgver" -Dbackend-drm-screencast-vaapi=false \ + -Dscreenshare=false -Dbackend-rdp=false -Dshell-ivi=false \ + -Dsimple-dmabuf-drm= -Dremoting=false + ninja -C "build" } package() { - cd weston-$pkgver - make DESTDIR="$pkgdir" install - # license - install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING" + DESTDIR="$pkgdir" ninja -C "build" install + install -Dm644 weston-$pkgver/COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING" } |