From f61337b54923fcfe4837ee9f555857268130dd95 Mon Sep 17 00:00:00 2001
From: Yiwei Zhang <zzyiwei@chromium.org>
Date: Thu, 13 May 2021 22:57:44 +0000
Subject: [PATCH 3/3] egl/android: check front rendering support for cros
 gralloc

Enable EGL_KHR_mutable_render_buffer when below conditions are met:
1. Driver part implementation of this extension is available
2. Loader part implementation of this extension is available
3. ClientAPIs must be OpenGL ES bits (ES, ES2 or ES3)
4. Gralloc is cros gralloc and it supports front render usage query

(4) is optional as long as another gralloc supports similar query.

Upon window surface creation, if the surface type has mutable render
buffer, then append the cached front rendering usage to the existing
usage and properly set to the ANativeWindow.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10685>
---
 src/egl/drivers/dri2/egl_dri2.h         |  2 ++
 src/egl/drivers/dri2/platform_android.c | 47 +++++++++++++++++++++++--
 2 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
index d7f9696da93..7d328040c2c 100644
--- a/src/egl/drivers/dri2/egl_dri2.h
+++ b/src/egl/drivers/dri2/egl_dri2.h
@@ -247,6 +247,8 @@ struct dri2_egl_display
 
 #ifdef HAVE_ANDROID_PLATFORM
    const gralloc_module_t *gralloc;
+   /* gralloc vendor usage bit for front rendering */
+   uint32_t front_rendering_usage;
 #endif
 
    bool                      is_render_node;
diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
index 2fff5ac4dc4..585c4432a37 100644
--- a/src/egl/drivers/dri2/platform_android.c
+++ b/src/egl/drivers/dri2/platform_android.c
@@ -346,6 +346,8 @@ droid_create_image_from_prime_fds(_EGLDisplay *disp,
 static const char cros_gralloc_module_name[] = "CrOS Gralloc";
 
 #define CROS_GRALLOC_DRM_GET_BUFFER_INFO 4
+#define CROS_GRALLOC_DRM_GET_USAGE 5
+#define CROS_GRALLOC_DRM_GET_USAGE_FRONT_RENDERING_BIT 0x1
 
 struct cros_gralloc0_buffer_info {
    uint32_t drm_fourcc;
@@ -632,6 +634,10 @@ droid_create_surface(_EGLDisplay *disp, EGLint type, _EGLConfig *conf,
       uint32_t usage = strcmp(dri2_dpy->driver_name, "kms_swrast") == 0
             ? GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN
             : GRALLOC_USAGE_HW_RENDER;
+
+      if (conf->SurfaceType & EGL_MUTABLE_RENDER_BUFFER_BIT_KHR)
+         usage |= dri2_dpy->front_rendering_usage;
+
       native_window_set_usage(window, usage);
    }
 
@@ -1671,10 +1677,47 @@ dri2_initialize_android(_EGLDisplay *disp)
    }
 
    disp->Extensions.KHR_image = EGL_TRUE;
+
+   dri2_dpy->front_rendering_usage = 0;
 #if ANDROID_API_LEVEL >= 24
    if (dri2_dpy->mutable_render_buffer &&
-       dri2_dpy->loader_extensions == droid_image_loader_extensions) {
-      disp->Extensions.KHR_mutable_render_buffer = EGL_TRUE;
+       dri2_dpy->loader_extensions == droid_image_loader_extensions &&
+       /* In big GL, front rendering is done at the core API level by directly
+        * rendering on the front buffer. However, in ES, the front buffer is
+        * completely inaccessible through the core ES API.
+        *
+        * EGL_KHR_mutable_render_buffer is Android's attempt to re-introduce
+        * front rendering into ES by squeezing into EGL. Unlike big GL, this
+        * extension redirects GL_BACK used by ES for front rendering. Thus we
+        * restrict the enabling of this extension to ES only.
+        */
+       (disp->ClientAPIs & ~(EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT |
+                             EGL_OPENGL_ES3_BIT_KHR)) == 0) {
+      /* For cros gralloc, if the front rendering query is supported, then all
+       * available window surface configs support front rendering because:
+       *
+       * 1) EGL queries cros gralloc for the front rendering usage bit here
+       * 2) EGL combines the front rendering usage bit with the existing usage
+       *    if the window surface requests mutable render buffer
+       * 3) EGL sets the combined usage onto the ANativeWindow and the next
+       *    dequeueBuffer will ask gralloc for an allocation/re-allocation with
+       *    the new combined usage
+       * 4) cros gralloc(on top of minigbm) resolves the front rendering usage
+       *    bit into either BO_USE_FRONT_RENDERING or BO_USE_LINEAR based on
+       *    the format support checking.
+       *
+       * So at least we can force BO_USE_LINEAR as the fallback.
+       */
+      uint32_t front_rendering_usage = 0;
+      if (!strcmp(dri2_dpy->gralloc->common.name, cros_gralloc_module_name) &&
+          dri2_dpy->gralloc->perform &&
+          dri2_dpy->gralloc->perform(
+                dri2_dpy->gralloc, CROS_GRALLOC_DRM_GET_USAGE,
+                CROS_GRALLOC_DRM_GET_USAGE_FRONT_RENDERING_BIT,
+                &front_rendering_usage) == 0) {
+         dri2_dpy->front_rendering_usage = front_rendering_usage;
+         disp->Extensions.KHR_mutable_render_buffer = EGL_TRUE;
+      }
    }
 #endif
 
-- 
2.32.0.rc0.204.g9fa02ecfa5-goog

