diff options
-rw-r--r-- | headers/media_plugin/media/openmax/OMX_VideoExt.h | 40 | ||||
-rw-r--r-- | libs/binder/ProcessState.cpp | 60 | ||||
-rw-r--r-- | libs/binder/Static.cpp | 5 | ||||
-rw-r--r-- | libs/binder/Static.h | 4 | ||||
-rw-r--r-- | libs/binder/include/binder/ProcessState.h | 4 | ||||
-rw-r--r-- | libs/binder/ndk/tests/Android.bp | 6 | ||||
-rw-r--r-- | libs/binder/tests/Android.bp | 3 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_platform_entries.cpp | 2 | ||||
-rw-r--r-- | vulkan/libvulkan/code-generator.tmpl | 4 |
9 files changed, 89 insertions, 39 deletions
diff --git a/headers/media_plugin/media/openmax/OMX_VideoExt.h b/headers/media_plugin/media/openmax/OMX_VideoExt.h index 435fcc8cca..6dea71143b 100644 --- a/headers/media_plugin/media/openmax/OMX_VideoExt.h +++ b/headers/media_plugin/media/openmax/OMX_VideoExt.h @@ -320,6 +320,46 @@ typedef enum OMX_VIDEO_DOLBYVISIONLEVELTYPE { OMX_VIDEO_DolbyVisionLevelmax = 0x7FFFFFFF } OMX_VIDEO_DOLBYVISIONLEVELTYPE; +/** AV1 Profile enum type */ +typedef enum OMX_VIDEO_AV1PROFILETYPE { + OMX_VIDEO_AV1ProfileMain8 = 0x00000001, + OMX_VIDEO_AV1ProfileMain10 = 0x00000002, + OMX_VIDEO_AV1ProfileMain10HDR10 = 0x00001000, + OMX_VIDEO_AV1ProfileMain10HDR10Plus = 0x00002000, + OMX_VIDEO_AV1ProfileUnknown = 0x6EFFFFFF, + OMX_VIDEO_AV1ProfileMax = 0x7FFFFFFF +} OMX_VIDEO_AV1PROFILETYPE; + +/** AV1 Level enum type */ +typedef enum OMX_VIDEO_AV1LEVELTYPE { + OMX_VIDEO_AV1Level2 = 0x1, + OMX_VIDEO_AV1Level21 = 0x2, + OMX_VIDEO_AV1Level22 = 0x4, + OMX_VIDEO_AV1Level23 = 0x8, + OMX_VIDEO_AV1Level3 = 0x10, + OMX_VIDEO_AV1Level31 = 0x20, + OMX_VIDEO_AV1Level32 = 0x40, + OMX_VIDEO_AV1Level33 = 0x80, + OMX_VIDEO_AV1Level4 = 0x100, + OMX_VIDEO_AV1Level41 = 0x200, + OMX_VIDEO_AV1Level42 = 0x400, + OMX_VIDEO_AV1Level43 = 0x800, + OMX_VIDEO_AV1Level5 = 0x1000, + OMX_VIDEO_AV1Level51 = 0x2000, + OMX_VIDEO_AV1Level52 = 0x4000, + OMX_VIDEO_AV1Level53 = 0x8000, + OMX_VIDEO_AV1Level6 = 0x10000, + OMX_VIDEO_AV1Level61 = 0x20000, + OMX_VIDEO_AV1Level62 = 0x40000, + OMX_VIDEO_AV1Level63 = 0x80000, + OMX_VIDEO_AV1Level7 = 0x100000, + OMX_VIDEO_AV1Level71 = 0x200000, + OMX_VIDEO_AV1Level72 = 0x400000, + OMX_VIDEO_AV1Level73 = 0x800000, + OMX_VIDEO_AV1LevelUnknown = 0x6EFFFFFF, + OMX_VIDEO_AV1LevelMax = 0x7FFFFFFF +} OMX_VIDEO_AV1LEVELTYPE; + /** * Structure for configuring video compression intra refresh period * diff --git a/libs/binder/ProcessState.cpp b/libs/binder/ProcessState.cpp index 0f81e0bef0..02e01934bb 100644 --- a/libs/binder/ProcessState.cpp +++ b/libs/binder/ProcessState.cpp @@ -32,6 +32,7 @@ #include <errno.h> #include <fcntl.h> +#include <mutex> #include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -73,38 +74,49 @@ protected: sp<ProcessState> ProcessState::self() { - Mutex::Autolock _l(gProcessMutex); - if (gProcess != nullptr) { - return gProcess; - } - gProcess = new ProcessState(kDefaultDriver); - return gProcess; + return init(kDefaultDriver, false /*requireDefault*/); } sp<ProcessState> ProcessState::initWithDriver(const char* driver) { - Mutex::Autolock _l(gProcessMutex); - if (gProcess != nullptr) { - // Allow for initWithDriver to be called repeatedly with the same - // driver. - if (!strcmp(gProcess->getDriverName().c_str(), driver)) { - return gProcess; - } - LOG_ALWAYS_FATAL("ProcessState was already initialized."); - } - - if (access(driver, R_OK) == -1) { - ALOGE("Binder driver %s is unavailable. Using /dev/binder instead.", driver); - driver = "/dev/binder"; - } - - gProcess = new ProcessState(driver); - return gProcess; + return init(driver, true /*requireDefault*/); } sp<ProcessState> ProcessState::selfOrNull() { - Mutex::Autolock _l(gProcessMutex); + return init(nullptr, false /*requireDefault*/); +} + +sp<ProcessState> ProcessState::init(const char *driver, bool requireDefault) +{ + [[clang::no_destroy]] static sp<ProcessState> gProcess; + [[clang::no_destroy]] static std::mutex gProcessMutex; + + if (driver == nullptr) { + std::lock_guard<std::mutex> l(gProcessMutex); + return gProcess; + } + + [[clang::no_destroy]] static std::once_flag gProcessOnce; + std::call_once(gProcessOnce, [&](){ + if (access(driver, R_OK) == -1) { + ALOGE("Binder driver %s is unavailable. Using /dev/binder instead.", driver); + driver = "/dev/binder"; + } + + std::lock_guard<std::mutex> l(gProcessMutex); + gProcess = new ProcessState(driver); + }); + + if (requireDefault) { + // Detect if we are trying to initialize with a different driver, and + // consider that an error. ProcessState will only be initialized once above. + LOG_ALWAYS_FATAL_IF(gProcess->getDriverName() != driver, + "ProcessState was already initialized with %s," + " can't initialize with %s.", + gProcess->getDriverName().c_str(), driver); + } + return gProcess; } diff --git a/libs/binder/Static.cpp b/libs/binder/Static.cpp index 779ed412ba..db0f1c7c3f 100644 --- a/libs/binder/Static.cpp +++ b/libs/binder/Static.cpp @@ -68,9 +68,4 @@ TextOutput& alog(*new LogTextOutput()); TextOutput& aout(*new FdTextOutput(STDOUT_FILENO)); TextOutput& aerr(*new FdTextOutput(STDERR_FILENO)); -// ------------ ProcessState.cpp - -Mutex& gProcessMutex = *new Mutex; -sp<ProcessState> gProcess; - } // namespace android diff --git a/libs/binder/Static.h b/libs/binder/Static.h index f8e0ee5f8d..83524e8575 100644 --- a/libs/binder/Static.h +++ b/libs/binder/Static.h @@ -27,8 +27,4 @@ namespace android { // For TextStream.cpp extern Vector<int32_t> gTextBuffers; -// For ProcessState.cpp -extern Mutex& gProcessMutex; -extern sp<ProcessState> gProcess; - } // namespace android diff --git a/libs/binder/include/binder/ProcessState.h b/libs/binder/include/binder/ProcessState.h index e57ff1c260..9f5346ac27 100644 --- a/libs/binder/include/binder/ProcessState.h +++ b/libs/binder/include/binder/ProcessState.h @@ -42,6 +42,8 @@ public: * any call to ProcessState::self(). The default is /dev/vndbinder * for processes built with the VNDK and /dev/binder for those * which are not. + * + * If this is called with nullptr, the behavior is the same as selfOrNull. */ static sp<ProcessState> initWithDriver(const char *driver); @@ -90,6 +92,8 @@ public: void setCallRestriction(CallRestriction restriction); private: + static sp<ProcessState> init(const char *defaultDriver, bool requireDefault); + friend class IPCThreadState; explicit ProcessState(const char* driver); diff --git a/libs/binder/ndk/tests/Android.bp b/libs/binder/ndk/tests/Android.bp index 5f5265c90e..7c271f67cb 100644 --- a/libs/binder/ndk/tests/Android.bp +++ b/libs/binder/ndk/tests/Android.bp @@ -40,6 +40,7 @@ cc_library_static { cc_defaults { name: "test_libbinder_ndk_test_defaults", defaults: ["test_libbinder_ndk_defaults"], + // critical that libbinder/libbinder_ndk are shared for VTS shared_libs: [ "libandroid_runtime_lazy", "libbase", @@ -63,7 +64,7 @@ cc_test { "IBinderNdkUnitTest-cpp", "IBinderNdkUnitTest-ndk_platform", ], - test_suites: ["general-tests"], + test_suites: ["general-tests", "vts"], require_root: true, // force since binderVendorDoubleLoadTest has its own @@ -81,13 +82,14 @@ cc_test { "IBinderVendorDoubleLoadTest-ndk_platform", "libbinder_aidl_test_stub-ndk_platform", ], + // critical that libbinder/libbinder_ndk are shared for VTS shared_libs: [ "libbase", "libbinder", "libbinder_ndk", "libutils", ], - test_suites: ["general-tests"], + test_suites: ["general-tests", "vts"], } aidl_interface { diff --git a/libs/binder/tests/Android.bp b/libs/binder/tests/Android.bp index 9dad96908c..ae761d8bab 100644 --- a/libs/binder/tests/Android.bp +++ b/libs/binder/tests/Android.bp @@ -150,6 +150,7 @@ cc_test { "binderStabilityTest.cpp", ], + // critical that libbinder/libbinder_ndk are shared for VTS shared_libs: [ "libbinder_ndk", "libbinder", @@ -161,7 +162,7 @@ cc_test { "binderStabilityTestIface-ndk_platform", ], - test_suites: ["device-tests"], + test_suites: ["device-tests", "vts"], require_root: true, } diff --git a/opengl/libs/EGL/egl_platform_entries.cpp b/opengl/libs/EGL/egl_platform_entries.cpp index a3bb6debe9..188d3ae9a6 100644 --- a/opengl/libs/EGL/egl_platform_entries.cpp +++ b/opengl/libs/EGL/egl_platform_entries.cpp @@ -98,7 +98,7 @@ char const * const gBuiltinExtensionString = "EGL_EXT_surface_CTA861_3_metadata " ; -// Whitelist of extensions exposed to applications if implemented in the vendor driver. +// Allowed list of extensions exposed to applications if implemented in the vendor driver. char const * const gExtensionString = "EGL_KHR_image " // mandatory "EGL_KHR_image_base " // mandatory diff --git a/vulkan/libvulkan/code-generator.tmpl b/vulkan/libvulkan/code-generator.tmpl index a5a0405f2d..f3e6ebd627 100644 --- a/vulkan/libvulkan/code-generator.tmpl +++ b/vulkan/libvulkan/code-generator.tmpl @@ -1137,7 +1137,7 @@ VK_KHR_bind_memory2 {{if not (GetAnnotation $ "pfn")}} {{$ext := GetAnnotation $ "extension"}} {{if not $ext}}true - {{else if not (Macro "IsExtensionBlacklisted" $ext)}}true + {{else if not (Macro "IsExtensionBlocked" $ext)}}true {{end}} {{end}} {{end}} @@ -1168,7 +1168,7 @@ VK_KHR_bind_memory2 Emit "true" if an extension is unsupportable on Android. ------------------------------------------------------------------------------ */}} -{{define "IsExtensionBlacklisted"}} +{{define "IsExtensionBlocked"}} {{$ext := index $.Arguments 0}} {{ if eq $ext "VK_KHR_display"}}true {{else if eq $ext "VK_KHR_display_swapchain"}}true |