diff options
-rw-r--r-- | cmds/atrace/atrace.cpp | 5 | ||||
-rw-r--r-- | libs/binder/Android.bp | 23 | ||||
-rw-r--r-- | libs/binder/IServiceManager.cpp | 2 | ||||
-rw-r--r-- | libs/binder/RpcSession.cpp | 21 | ||||
-rw-r--r-- | libs/binder/include/binder/IInterface.h | 4 | ||||
-rw-r--r-- | libs/binder/include/binder/RpcSession.h | 1 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_platform_entries.cpp | 12 | ||||
-rw-r--r-- | vulkan/vkjson/vkjson.cc | 113 |
8 files changed, 98 insertions, 83 deletions
diff --git a/cmds/atrace/atrace.cpp b/cmds/atrace/atrace.cpp index 9bd733d04c..b94f3daf03 100644 --- a/cmds/atrace/atrace.cpp +++ b/cmds/atrace/atrace.cpp @@ -1194,6 +1194,11 @@ int main(int argc, char **argv) bool traceStream = false; bool onlyUserspace = false; + fprintf(stderr, + "** Warning: atrace will end vendor support in the next Android Release. **\n" + "** Perfetto is the suggested replacement tool. It will gain vendor **\n" + "** support. See https://perfetto.dev/docs/quickstart/android-tracing **\n\n"); + if (argc == 2 && 0 == strcmp(argv[1], "--help")) { showHelp(argv[0]); exit(0); diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp index 6d3c88d539..9389bec509 100644 --- a/libs/binder/Android.bp +++ b/libs/binder/Android.bp @@ -60,11 +60,15 @@ cc_library_headers { // // Currently, these are only on system android (not vendor, not host) // TODO(b/183654927) - move these into separate libraries -libbinder_device_interface_sources = [ - "IPermissionController.cpp", - "PermissionCache.cpp", - "PermissionController.cpp", -] + +filegroup { + name: "libbinder_device_interface_sources", + srcs: [ + "IPermissionController.cpp", + "PermissionCache.cpp", + "PermissionController.cpp", + ], +} cc_library { name: "libbinder", @@ -126,19 +130,20 @@ cc_library { "TextOutput.cpp", "Utils.cpp", ":libbinder_aidl", + ":libbinder_device_interface_sources", ], target: { android: { - srcs: libbinder_device_interface_sources, - // NOT static to keep the wire protocol unfrozen static: { enabled: false, }, }, vendor: { - exclude_srcs: libbinder_device_interface_sources, + exclude_srcs: [ + ":libbinder_device_interface_sources", + ], }, darwin: { enabled: false, @@ -366,6 +371,7 @@ filegroup { cc_library { name: "libbatterystats_aidl", + host_supported: true, srcs: [ "IBatteryStats.cpp", ], @@ -378,6 +384,7 @@ cc_library { cc_library { name: "libprocessinfoservice_aidl", + host_supported: true, srcs: [ "IProcessInfoService.cpp", "ProcessInfoService.cpp", diff --git a/libs/binder/IServiceManager.cpp b/libs/binder/IServiceManager.cpp index fd2d86857e..fd47783acd 100644 --- a/libs/binder/IServiceManager.cpp +++ b/libs/binder/IServiceManager.cpp @@ -167,7 +167,7 @@ void setDefaultServiceManager(const sp<IServiceManager>& sm) { } } -#if !defined(__ANDROID_VNDK__) && defined(__ANDROID__) +#if !defined(__ANDROID_VNDK__) // IPermissionController is not accessible to vendors bool checkCallingPermission(const String16& permission) diff --git a/libs/binder/RpcSession.cpp b/libs/binder/RpcSession.cpp index 8edc78f2f5..7ba08edec4 100644 --- a/libs/binder/RpcSession.cpp +++ b/libs/binder/RpcSession.cpp @@ -699,10 +699,7 @@ status_t RpcSession::addOutgoingConnection(std::unique_ptr<RpcTransport> rpcTran mRpcBinderState->sendConnectionInit(connection, sp<RpcSession>::fromExisting(this)); } - { - std::lock_guard<std::mutex> _l(mMutex); - connection->exclusiveTid = std::nullopt; - } + clearConnectionTid(connection); return status; } @@ -773,6 +770,15 @@ bool RpcSession::removeIncomingConnection(const sp<RpcConnection>& connection) { return false; } +void RpcSession::clearConnectionTid(const sp<RpcConnection>& connection) { + std::unique_lock<std::mutex> _l(mMutex); + connection->exclusiveTid = std::nullopt; + if (mConnections.mWaitingThreads > 0) { + _l.unlock(); + mAvailableConnectionCv.notify_one(); + } +} + std::vector<uint8_t> RpcSession::getCertificate(RpcCertificateFormat format) { return mCtx->getCertificate(format); } @@ -902,12 +908,7 @@ RpcSession::ExclusiveConnection::~ExclusiveConnection() { // is using this fd, and it retains the right to it. So, we don't give up // exclusive ownership, and no thread is freed. if (!mReentrant && mConnection != nullptr) { - std::unique_lock<std::mutex> _l(mSession->mMutex); - mConnection->exclusiveTid = std::nullopt; - if (mSession->mConnections.mWaitingThreads > 0) { - _l.unlock(); - mSession->mAvailableConnectionCv.notify_one(); - } + mSession->clearConnectionTid(mConnection); } } diff --git a/libs/binder/include/binder/IInterface.h b/libs/binder/include/binder/IInterface.h index f295417ab2..e864f9e6a3 100644 --- a/libs/binder/include/binder/IInterface.h +++ b/libs/binder/include/binder/IInterface.h @@ -72,9 +72,9 @@ class BnInterface : public INTERFACE, public BBinder public: virtual sp<IInterface> queryLocalInterface(const String16& _descriptor); virtual const String16& getInterfaceDescriptor() const; + typedef INTERFACE BaseInterface; protected: - typedef INTERFACE BaseInterface; virtual IBinder* onAsBinder(); }; @@ -85,9 +85,9 @@ class BpInterface : public INTERFACE, public BpRefBase { public: explicit BpInterface(const sp<IBinder>& remote); + typedef INTERFACE BaseInterface; protected: - typedef INTERFACE BaseInterface; virtual IBinder* onAsBinder(); }; diff --git a/libs/binder/include/binder/RpcSession.h b/libs/binder/include/binder/RpcSession.h index e76b14046b..7d5d481f83 100644 --- a/libs/binder/include/binder/RpcSession.h +++ b/libs/binder/include/binder/RpcSession.h @@ -264,6 +264,7 @@ private: sp<RpcConnection> assignIncomingConnectionToThisThread( std::unique_ptr<RpcTransport> rpcTransport); [[nodiscard]] bool removeIncomingConnection(const sp<RpcConnection>& connection); + void clearConnectionTid(const sp<RpcConnection>& connection); [[nodiscard]] status_t initShutdownTrigger(); diff --git a/opengl/libs/EGL/egl_platform_entries.cpp b/opengl/libs/EGL/egl_platform_entries.cpp index de36a7aea6..8363104704 100644 --- a/opengl/libs/EGL/egl_platform_entries.cpp +++ b/opengl/libs/EGL/egl_platform_entries.cpp @@ -1448,7 +1448,11 @@ EGLBoolean eglSurfaceAttribImpl(EGLDisplay dpy, EGLSurface surface, EGLint attri setError(EGL_BAD_SURFACE, EGL_FALSE); } int err = native_window_set_auto_refresh(s->getNativeWindow(), value != 0); - return (err == 0) ? EGL_TRUE : setError(EGL_BAD_SURFACE, (EGLBoolean)EGL_FALSE); + if (err != 0) { + return setError(EGL_BAD_SURFACE, (EGLBoolean)EGL_FALSE); + } else if (!s->cnx->useAngle) { + return EGL_TRUE; + } // else if ANGLE, fall through to the call to the driver (i.e. ANGLE) below } if (attribute == EGL_TIMESTAMPS_ANDROID) { @@ -1458,7 +1462,11 @@ EGLBoolean eglSurfaceAttribImpl(EGLDisplay dpy, EGLSurface surface, EGLint attri return EGL_TRUE; } int err = native_window_enable_frame_timestamps(s->getNativeWindow(), value != 0); - return (err == 0) ? EGL_TRUE : setError(EGL_BAD_SURFACE, (EGLBoolean)EGL_FALSE); + if (err != 0) { + return setError(EGL_BAD_SURFACE, (EGLBoolean)EGL_FALSE); + } else if (!s->cnx->useAngle) { + return EGL_TRUE; + } // else if ANGLE, fall through to the call to the driver (i.e. ANGLE) below } if (s->setSmpte2086Attribute(attribute, value)) { diff --git a/vulkan/vkjson/vkjson.cc b/vulkan/vkjson/vkjson.cc index 438e5dd10d..61e3859357 100644 --- a/vulkan/vkjson/vkjson.cc +++ b/vulkan/vkjson/vkjson.cc @@ -840,56 +840,52 @@ inline bool Iterate(Visitor* visitor, VkJsonDeviceGroup* device_group) { template <typename Visitor> inline bool Iterate(Visitor* visitor, VkJsonDevice* device) { bool ret = true; - switch (device->properties.apiVersion ^ - VK_VERSION_PATCH(device->properties.apiVersion)) { - case VK_API_VERSION_1_2: - FALLTHROUGH_INTENDED; - case VK_API_VERSION_1_1: - ret &= - visitor->Visit("subgroupProperties", &device->subgroup_properties) && - visitor->Visit("pointClippingProperties", - &device->point_clipping_properties) && - visitor->Visit("multiviewProperties", - &device->multiview_properties) && - visitor->Visit("idProperties", &device->id_properties) && - visitor->Visit("maintenance3Properties", - &device->maintenance3_properties) && - visitor->Visit("16bitStorageFeatures", - &device->bit16_storage_features) && - visitor->Visit("multiviewFeatures", &device->multiview_features) && - visitor->Visit("variablePointerFeatures", - &device->variable_pointer_features) && - visitor->Visit("protectedMemoryFeatures", - &device->protected_memory_features) && - visitor->Visit("samplerYcbcrConversionFeatures", - &device->sampler_ycbcr_conversion_features) && - visitor->Visit("shaderDrawParameterFeatures", - &device->shader_draw_parameter_features) && - visitor->Visit("externalFenceProperties", - &device->external_fence_properties) && - visitor->Visit("externalSemaphoreProperties", - &device->external_semaphore_properties); - FALLTHROUGH_INTENDED; - case VK_API_VERSION_1_0: - ret &= visitor->Visit("properties", &device->properties) && - visitor->Visit("features", &device->features) && - visitor->Visit("memory", &device->memory) && - visitor->Visit("queues", &device->queues) && - visitor->Visit("extensions", &device->extensions) && - visitor->Visit("layers", &device->layers) && - visitor->Visit("formats", &device->formats); - if (device->ext_driver_properties.reported) { - ret &= visitor->Visit("VK_KHR_driver_properties", - &device->ext_driver_properties); - } - if (device->ext_variable_pointer_features.reported) { - ret &= visitor->Visit("VK_KHR_variable_pointers", - &device->ext_variable_pointer_features); - } - if (device->ext_shader_float16_int8_features.reported) { - ret &= visitor->Visit("VK_KHR_shader_float16_int8", - &device->ext_shader_float16_int8_features); - } + if (device->properties.apiVersion >= VK_API_VERSION_1_1) { + ret &= + visitor->Visit("subgroupProperties", &device->subgroup_properties) && + visitor->Visit("pointClippingProperties", + &device->point_clipping_properties) && + visitor->Visit("multiviewProperties", + &device->multiview_properties) && + visitor->Visit("idProperties", &device->id_properties) && + visitor->Visit("maintenance3Properties", + &device->maintenance3_properties) && + visitor->Visit("16bitStorageFeatures", + &device->bit16_storage_features) && + visitor->Visit("multiviewFeatures", &device->multiview_features) && + visitor->Visit("variablePointerFeatures", + &device->variable_pointer_features) && + visitor->Visit("protectedMemoryFeatures", + &device->protected_memory_features) && + visitor->Visit("samplerYcbcrConversionFeatures", + &device->sampler_ycbcr_conversion_features) && + visitor->Visit("shaderDrawParameterFeatures", + &device->shader_draw_parameter_features) && + visitor->Visit("externalFenceProperties", + &device->external_fence_properties) && + visitor->Visit("externalSemaphoreProperties", + &device->external_semaphore_properties); + } + if (device->properties.apiVersion >= VK_API_VERSION_1_0) { + ret &= visitor->Visit("properties", &device->properties) && + visitor->Visit("features", &device->features) && + visitor->Visit("memory", &device->memory) && + visitor->Visit("queues", &device->queues) && + visitor->Visit("extensions", &device->extensions) && + visitor->Visit("layers", &device->layers) && + visitor->Visit("formats", &device->formats); + if (device->ext_driver_properties.reported) { + ret &= visitor->Visit("VK_KHR_driver_properties", + &device->ext_driver_properties); + } + if (device->ext_variable_pointer_features.reported) { + ret &= visitor->Visit("VK_KHR_variable_pointers", + &device->ext_variable_pointer_features); + } + if (device->ext_shader_float16_int8_features.reported) { + ret &= visitor->Visit("VK_KHR_shader_float16_int8", + &device->ext_shader_float16_int8_features); + } } return ret; } @@ -897,16 +893,13 @@ inline bool Iterate(Visitor* visitor, VkJsonDevice* device) { template <typename Visitor> inline bool Iterate(Visitor* visitor, VkJsonInstance* instance) { bool ret = true; - switch (instance->api_version ^ VK_VERSION_PATCH(instance->api_version)) { - case VK_API_VERSION_1_2: - FALLTHROUGH_INTENDED; - case VK_API_VERSION_1_1: - ret &= visitor->Visit("deviceGroups", &instance->device_groups); - FALLTHROUGH_INTENDED; - case VK_API_VERSION_1_0: - ret &= visitor->Visit("layers", &instance->layers) && - visitor->Visit("extensions", &instance->extensions) && - visitor->Visit("devices", &instance->devices); + if (instance->api_version >= VK_API_VERSION_1_1) { + ret &= visitor->Visit("deviceGroups", &instance->device_groups); + } + if (instance->api_version >= VK_API_VERSION_1_0) { + ret &= visitor->Visit("layers", &instance->layers) && + visitor->Visit("extensions", &instance->extensions) && + visitor->Visit("devices", &instance->devices); } return ret; } |