blob: 871222a7477cd9192e38e987abfa9c9a929c25dd [file] [log] [blame]
From 5ecd39911b5ffb7e3aac09a073dde687b53389d0 Mon Sep 17 00:00:00 2001
From: renchenglei <chenglei.ren@intel.com>
Date: Fri, 28 Jun 2019 15:21:08 +0800
Subject: [PATCH] BACKPORT: egl: Enable eglGetPlatformDisplay on Android
Platform
This helps to add eglGetPlatformDisplay support on Android
Platform.
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
(cherry picked from commit 500b45a98a6183ff8ab7bae77e0a750a3cd45adc)
Resolved backport conflicts:
src/egl/main/eglapi.c(changed variable disp to dpy)
src/egl/main/egldisplay.c(Drop attrib_list from _eglFindDisplay)
src/egl/main/egldisplay.h
Change-Id: I9eab42034aace7d6ac9896a070305557812669db
---
src/egl/main/eglapi.c | 5 +++++
src/egl/main/egldisplay.c | 16 ++++++++++++++++
src/egl/main/egldisplay.h | 6 ++++++
3 files changed, 27 insertions(+)
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
index dd9b5b989cb..780633ae3cb 100644
--- a/src/egl/main/eglapi.c
+++ b/src/egl/main/eglapi.c
@@ -405,6 +405,11 @@ _eglGetPlatformDisplayCommon(EGLenum platform, void *native_display,
case EGL_PLATFORM_SURFACELESS_MESA:
dpy = _eglGetSurfacelessDisplay(native_display, attrib_list);
break;
+#endif
+#ifdef HAVE_ANDROID_PLATFORM
+ case EGL_PLATFORM_ANDROID_KHR:
+ dpy = _eglGetAndroidDisplay(native_display, attrib_list);
+ break;
#endif
default:
RETURN_EGL_ERROR(NULL, EGL_BAD_PARAMETER, NULL);
diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c
index 387df6a66d0..3d3ee8860d7 100644
--- a/src/egl/main/egldisplay.c
+++ b/src/egl/main/egldisplay.c
@@ -542,3 +542,19 @@ _eglGetSurfacelessDisplay(void *native_display,
return _eglFindDisplay(_EGL_PLATFORM_SURFACELESS, native_display);
}
#endif /* HAVE_SURFACELESS_PLATFORM */
+
+#ifdef HAVE_ANDROID_PLATFORM
+_EGLDisplay*
+_eglGetAndroidDisplay(void *native_display,
+ const EGLAttrib *attrib_list)
+{
+
+ /* This platform recognizes no display attributes. */
+ if (attrib_list != NULL && attrib_list[0] != EGL_NONE) {
+ _eglError(EGL_BAD_ATTRIBUTE, "eglGetPlatformDisplay");
+ return NULL;
+ }
+
+ return _eglFindDisplay(_EGL_PLATFORM_ANDROID, native_display);
+}
+#endif /* HAVE_ANDROID_PLATFORM */
diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h
index 5cc503734bc..cb1fd80688f 100644
--- a/src/egl/main/egldisplay.h
+++ b/src/egl/main/egldisplay.h
@@ -301,6 +301,12 @@ _eglGetSurfacelessDisplay(void *native_display,
const EGLAttrib *attrib_list);
#endif
+#ifdef HAVE_ANDROID_PLATFORM
+_EGLDisplay*
+_eglGetAndroidDisplay(void *native_display,
+ const EGLAttrib *attrib_list);
+#endif
+
#ifdef __cplusplus
}
#endif
--
2.20.1