1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- From 856f9849763535d62ed01b538ba23905875c93f4 Mon Sep 17 00:00:00 2001
- From: "Yann E. MORIN" <yann.morin.1998@free.fr>
- Date: Tue, 26 Sep 2023 20:31:17 +0200
- Subject: [PATCH] src/egl_gbm_render_surface: properly fallback to surface with
- no modifier
- In 869fa7fcfbeb, we added a fallback to be able to create an EGL sruface
- when the driver do not support modifiers, like the llvmpipe software
- renderer (or like some proprietary drivers, like the MALI ones), as
- reported in #269 [0].
- However, in c6537673c9b6, there was a big overhaul of renderer
- infrastructure. That commit lost the with-modifiers code path and only
- kept the without-modifiers fallback one (i.e. it only kept the call to
- gbm_surface_create(), not to gbm_surface_create_with_modifiers()).
- Then in b0d09f5032a4, the with-modifier code path was re-instated, but
- in a way that made it exclusive with the without-modifiers one. That is,
- the without-modifiers code path was not a fallback to when the other
- failed.
- Re-instate the fallback mechanism as intiially implemented.
- [0] https://github.com/ardera/flutter-pi/issues/269
- Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
- Upstream: https://github.com/ardera/flutter-pi/pull/367
- ---
- src/egl_gbm_render_surface.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
- diff --git a/src/egl_gbm_render_surface.c b/src/egl_gbm_render_surface.c
- index ce9e5e7..8a58667 100644
- --- a/src/egl_gbm_render_surface.c
- +++ b/src/egl_gbm_render_surface.c
- @@ -146,6 +146,7 @@ static int egl_gbm_render_surface_init(
- }
- #endif
-
- + gbm_surface = NULL;
- if (allowed_modifiers != NULL) {
- gbm_surface = gbm_surface_create_with_modifiers(
- gbm_device,
- @@ -158,9 +159,10 @@ static int egl_gbm_render_surface_init(
- if (gbm_surface == NULL) {
- ok = errno;
- LOG_ERROR("Couldn't create GBM surface for rendering. gbm_surface_create_with_modifiers: %s\n", strerror(ok));
- - return ok;
- + LOG_ERROR("Will retry without modifiers\n");
- }
- - } else {
- + }
- + if (gbm_surface == NULL) {
- gbm_surface = gbm_surface_create(
- gbm_device,
- size.x,
- --
- 2.25.1
|