From e2786ea5aec3a12d948feb85ffbb535fc89c0fe6 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Mon, 7 Aug 2017 10:36:08 -0700 Subject: libgui: support 64-bit BQ consumer usage Add NATIVE_WINDOW_GET_CONSUMER_USAGE64. Support 64-bit consumer usage flags in BufferItemConsumer and GLConsumer. In H2BGraphicBufferProducer::getConsumerUsage, however, we will issue a warning and return 32-bit consumer usage. We will need a HIDL interface version bump to fix it. Bug: 35215313 Test: manual Change-Id: I1f8884a7db71bbdb269d05b94443ddec2ff46f8a --- libs/gui/GLConsumer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libs/gui/GLConsumer.cpp') diff --git a/libs/gui/GLConsumer.cpp b/libs/gui/GLConsumer.cpp index 34c9d7805a..b1994da7d4 100644 --- a/libs/gui/GLConsumer.cpp +++ b/libs/gui/GLConsumer.cpp @@ -1115,7 +1115,7 @@ status_t GLConsumer::setDefaultBufferDataSpace( return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); } -status_t GLConsumer::setConsumerUsageBits(uint32_t usage) { +status_t GLConsumer::setConsumerUsageBits(uint64_t usage) { Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setConsumerUsageBits: GLConsumer is abandoned!"); -- cgit v1.2.3-59-g8ed1b From 00b15b8f223976d016e16536e4720771ef634695 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Thu, 10 Aug 2017 20:30:56 +0900 Subject: Mark libEGL, GLESv1_CM, GLESv2, and GLESv3 as LLNDK They are used by libRSDriver and libRS_internal which are VNDK-SP libraries. Therefore, the EGL/GLES libs must be LLNDK or VNDK-SP. We choose to make them as LLNDK since they already have stable ABIs (as they are NDK). In addition, two more functions of libEGL are exposed to vendors eglQueryStringImplementationANDROID and eglDupNativeFenceFDANDROID are non-NDK symbols but are being used by libgui, which is a library marked with vendor_available:true. In order to provide the symbols to the library, they are added to the map.txt file and tagged as "# vndk" so that they are exposed only when built for vendor libs (and hidden when built for NDK). Furthermore, eglQueryStringImplementationANDROID is changed to C-symbol in order to be mentioned in the map.txt file, where C++ mangled symbol name can't be used. Bug: 64425518 Test: BOARD_VNDK_VERSION=current m -j libRSDriver.vendor Test: BOARD_VNDK_VERSION=current m -j libRS_internal.vendor Change-Id: I4d5bcd5f72fb05a7908887f5192de70fd1d8c8f1 --- libs/gui/GLConsumer.cpp | 2 +- libs/gui/SyncFeatures.cpp | 2 +- libs/gui/tests/SurfaceTextureClient_test.cpp | 2 +- opengl/Android.bp | 24 ++++++++++++++++++++++ opengl/libs/Android.bp | 8 -------- opengl/libs/EGL/eglApi.cpp | 2 +- opengl/libs/libEGL.map.txt | 2 ++ opengl/tests/gl2_basic/gl2_basic.cpp | 2 +- opengl/tests/lib/include/EGLUtils.h | 2 +- .../surfaceflinger/RenderEngine/RenderEngine.cpp | 2 +- services/surfaceflinger/SurfaceFlinger.cpp | 2 +- services/surfaceflinger/SurfaceFlinger_hwc1.cpp | 2 +- 12 files changed, 35 insertions(+), 17 deletions(-) (limited to 'libs/gui/GLConsumer.cpp') diff --git a/libs/gui/GLConsumer.cpp b/libs/gui/GLConsumer.cpp index 34c9d7805a..679c70af4c 100644 --- a/libs/gui/GLConsumer.cpp +++ b/libs/gui/GLConsumer.cpp @@ -43,7 +43,7 @@ #include #include -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); #define CROP_EXT_STR "EGL_ANDROID_image_crop" #define PROT_CONTENT_EXT_STR "EGL_EXT_protected_content" #define EGL_PROTECTED_CONTENT_EXT 0x32C0 diff --git a/libs/gui/SyncFeatures.cpp b/libs/gui/SyncFeatures.cpp index 187b211be8..afa15c5cda 100644 --- a/libs/gui/SyncFeatures.cpp +++ b/libs/gui/SyncFeatures.cpp @@ -27,7 +27,7 @@ #include -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); namespace android { diff --git a/libs/gui/tests/SurfaceTextureClient_test.cpp b/libs/gui/tests/SurfaceTextureClient_test.cpp index bd598e419e..d5b2f004ed 100644 --- a/libs/gui/tests/SurfaceTextureClient_test.cpp +++ b/libs/gui/tests/SurfaceTextureClient_test.cpp @@ -28,7 +28,7 @@ #include #include -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); #define CROP_EXT_STR "EGL_ANDROID_image_crop" namespace android { diff --git a/opengl/Android.bp b/opengl/Android.bp index aec5a95628..9ca8b0b0fd 100644 --- a/opengl/Android.bp +++ b/opengl/Android.bp @@ -52,6 +52,30 @@ ndk_headers { license: "include/KHR/NOTICE", } +llndk_library { + name: "libEGL", + symbol_file: "libs/libEGL.map.txt", + export_include_dirs: ["include"], +} + +llndk_library { + name: "libGLESv1_CM", + symbol_file: "libs/libGLESv1_CM.map.txt", + export_include_dirs: ["include"], +} + +llndk_library { + name: "libGLESv2", + symbol_file: "libs/libGLESv2.map.txt", + export_include_dirs: ["include"], +} + +llndk_library { + name: "libGLESv3", + symbol_file: "libs/libGLESv3.map.txt", + export_include_dirs: ["include"], +} + cc_library_headers { name: "gl_headers", vendor_available: true, diff --git a/opengl/libs/Android.bp b/opengl/libs/Android.bp index 1cfc5133c1..802b3b46e0 100644 --- a/opengl/libs/Android.bp +++ b/opengl/libs/Android.bp @@ -85,7 +85,6 @@ cc_defaults { cc_defaults { name: "egl_libs_defaults", defaults: ["gl_libs_defaults"], - vendor_available: true, cflags: [ "-DLOG_TAG=\"libEGL\"", ], @@ -117,9 +116,6 @@ cc_library_static { cc_library_shared { name: "libEGL", defaults: ["egl_libs_defaults"], - vndk: { - enabled: true, - }, srcs: [ "EGL/egl_tls.cpp", "EGL/egl_cache.cpp", @@ -155,7 +151,6 @@ cc_test { cc_defaults { name: "gles_libs_defaults", defaults: ["gl_libs_defaults"], - vendor_available: true, arch: { arm: { instruction_set: "arm", @@ -183,9 +178,6 @@ cc_library_shared { cc_library_shared { name: "libGLESv2", defaults: ["gles_libs_defaults"], - vndk: { - enabled: true, - }, srcs: ["GLES2/gl2.cpp"], cflags: ["-DLOG_TAG=\"libGLESv2\""], } diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index 0214b0eb56..94dfe6a9de 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -1447,7 +1447,7 @@ const char* eglQueryString(EGLDisplay dpy, EGLint name) return setError(EGL_BAD_PARAMETER, (const char *)0); } -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name) +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name) { clearError(); diff --git a/opengl/libs/libEGL.map.txt b/opengl/libs/libEGL.map.txt index 89269a0231..fa26e33f39 100644 --- a/opengl/libs/libEGL.map.txt +++ b/opengl/libs/libEGL.map.txt @@ -21,6 +21,7 @@ LIBEGL { eglDestroyStreamKHR; # introduced=23 eglDestroySurface; eglDestroySyncKHR; # introduced-arm=18 introduced-arm64=21 introduced-mips=18 introduced-mips64=21 introduced-x86=18 introduced-x86_64=21 + eglDupNativeFenceFDANDROID; # vndk eglGetConfigAttrib; eglGetConfigs; eglGetCurrentContext; @@ -44,6 +45,7 @@ LIBEGL { eglQueryStreamTimeKHR; # introduced=23 eglQueryStreamu64KHR; # introduced=23 eglQueryString; + eglQueryStringImplementationANDROID; # vndk eglQuerySurface; eglReleaseTexImage; eglReleaseThread; diff --git a/opengl/tests/gl2_basic/gl2_basic.cpp b/opengl/tests/gl2_basic/gl2_basic.cpp index ee88667328..67c0969e21 100644 --- a/opengl/tests/gl2_basic/gl2_basic.cpp +++ b/opengl/tests/gl2_basic/gl2_basic.cpp @@ -30,7 +30,7 @@ #include using namespace android; -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); static void printGLString(const char *name, GLenum s) { // fprintf(stderr, "printGLString %s, %d\n", name, s); diff --git a/opengl/tests/lib/include/EGLUtils.h b/opengl/tests/lib/include/EGLUtils.h index 29f4fe442d..9dc6bcf56a 100644 --- a/opengl/tests/lib/include/EGLUtils.h +++ b/opengl/tests/lib/include/EGLUtils.h @@ -29,7 +29,7 @@ #include #include -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); // ---------------------------------------------------------------------------- namespace android { diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.cpp b/services/surfaceflinger/RenderEngine/RenderEngine.cpp index 57f468d2fa..56e9ac07ad 100644 --- a/services/surfaceflinger/RenderEngine/RenderEngine.cpp +++ b/services/surfaceflinger/RenderEngine/RenderEngine.cpp @@ -26,7 +26,7 @@ #include #include -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); // --------------------------------------------------------------------------- namespace android { diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 06e2a7fd35..4aaa8c0b23 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -97,7 +97,7 @@ */ #define DEBUG_SCREENSHOTS false -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); namespace android { diff --git a/services/surfaceflinger/SurfaceFlinger_hwc1.cpp b/services/surfaceflinger/SurfaceFlinger_hwc1.cpp index a41d35f19d..e5bb228df1 100644 --- a/services/surfaceflinger/SurfaceFlinger_hwc1.cpp +++ b/services/surfaceflinger/SurfaceFlinger_hwc1.cpp @@ -94,7 +94,7 @@ */ #define DEBUG_SCREENSHOTS false -EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); namespace android { // --------------------------------------------------------------------------- -- cgit v1.2.3-59-g8ed1b