From 38ccfd7a299ca7f6088cf70ae8d37d3ab487a2c2 Mon Sep 17 00:00:00 2001 From: Alec Mouri Date: Mon, 16 May 2022 20:20:28 +0000 Subject: [PATCH] Tweak IMapper 4.0 VTS to run with AIDL IAllocator When there is no HIDL IAllocator installed on the device, then these tests must still run. Bug: 231982605 Test: VtsHalGraphicsMapperV4_0TargetTest Change-Id: If7503d398c03086df470971cc2c10029270525f9 --- graphics/composer/2.1/utils/vts/Android.bp | 2 + .../composer/2.1/utils/vts/ComposerVts.cpp | 2 +- .../composer/2.1/vts/functional/Android.bp | 9 +- graphics/composer/2.2/utils/vts/Android.bp | 2 + .../composer/2.2/utils/vts/ComposerVts.cpp | 2 +- .../composer/2.2/vts/functional/Android.bp | 4 + .../composer/2.3/vts/functional/Android.bp | 9 +- graphics/composer/2.4/utils/vts/Android.bp | 1 + .../composer/2.4/vts/functional/Android.bp | 9 +- graphics/mapper/4.0/utils/vts/Android.bp | 7 ++ graphics/mapper/4.0/utils/vts/MapperVts.cpp | 102 +++++++++++------- .../vts/include/mapper-vts/4.0/MapperVts.h | 35 +++++- graphics/mapper/4.0/vts/functional/Android.bp | 9 +- .../VtsHalGraphicsMapperV4_0TargetTest.cpp | 45 +++++--- 14 files changed, 180 insertions(+), 58 deletions(-) diff --git a/graphics/composer/2.1/utils/vts/Android.bp b/graphics/composer/2.1/utils/vts/Android.bp index 8732d53a44..c0a0c078b2 100644 --- a/graphics/composer/2.1/utils/vts/Android.bp +++ b/graphics/composer/2.1/utils/vts/Android.bp @@ -32,6 +32,7 @@ cc_library_static { "TestCommandReader.cpp", ], static_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.composer@2.1", "android.hardware.graphics.mapper@2.0-vts", "android.hardware.graphics.mapper@3.0-vts", @@ -39,6 +40,7 @@ cc_library_static { "libgtest", ], export_static_lib_headers: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.composer@2.1", "android.hardware.graphics.mapper@2.0-vts", "android.hardware.graphics.mapper@3.0-vts", diff --git a/graphics/composer/2.1/utils/vts/ComposerVts.cpp b/graphics/composer/2.1/utils/vts/ComposerVts.cpp index 55aaf12b8e..e777010483 100644 --- a/graphics/composer/2.1/utils/vts/ComposerVts.cpp +++ b/graphics/composer/2.1/utils/vts/ComposerVts.cpp @@ -318,7 +318,7 @@ Gralloc::Gralloc() { [this] { ASSERT_NO_FATAL_FAILURE(mGralloc4 = std::make_shared("default", "default", /*errOnFailure=*/false)); - if (mGralloc4->getAllocator() == nullptr || mGralloc4->getMapper() == nullptr) { + if (!mGralloc4->hasAllocator() || mGralloc4->getMapper() == nullptr) { mGralloc4 = nullptr; ASSERT_NO_FATAL_FAILURE(mGralloc3 = std::make_shared("default", "default", /*errOnFailure=*/false)); diff --git a/graphics/composer/2.1/vts/functional/Android.bp b/graphics/composer/2.1/vts/functional/Android.bp index 9ffd7d52e0..502036edb4 100644 --- a/graphics/composer/2.1/vts/functional/Android.bp +++ b/graphics/composer/2.1/vts/functional/Android.bp @@ -32,14 +32,17 @@ cc_test { // TODO(b/64437680): Assume these libs are always available on the device. shared_libs: [ "libbase", + "libbinder_ndk", "libfmq", "libsync", + "android.hardware.common-V2-ndk", "android.hardware.graphics.mapper@2.0", "android.hardware.graphics.mapper@2.1", "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@4.0", ], static_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.allocator@2.0", "android.hardware.graphics.allocator@3.0", "android.hardware.graphics.allocator@4.0", @@ -49,10 +52,14 @@ cc_test { "android.hardware.graphics.mapper@2.1-vts", "android.hardware.graphics.mapper@3.0-vts", "android.hardware.graphics.mapper@4.0-vts", + "libaidlcommonsupport", ], header_libs: [ "android.hardware.graphics.composer@2.1-command-buffer", ], disable_framework: true, - test_suites: ["general-tests", "vts"], + test_suites: [ + "general-tests", + "vts", + ], } diff --git a/graphics/composer/2.2/utils/vts/Android.bp b/graphics/composer/2.2/utils/vts/Android.bp index aa8e541edb..cca53230ae 100644 --- a/graphics/composer/2.2/utils/vts/Android.bp +++ b/graphics/composer/2.2/utils/vts/Android.bp @@ -35,6 +35,7 @@ cc_library_static { "libui", ], static_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.composer@2.1-vts", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer3-V1-ndk", @@ -52,6 +53,7 @@ cc_library_static { "android.hardware.graphics.mapper@4.0-vts", ], export_static_lib_headers: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.composer@2.1-vts", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.mapper@2.1-vts", diff --git a/graphics/composer/2.2/utils/vts/ComposerVts.cpp b/graphics/composer/2.2/utils/vts/ComposerVts.cpp index a526137c41..7de4007d01 100644 --- a/graphics/composer/2.2/utils/vts/ComposerVts.cpp +++ b/graphics/composer/2.2/utils/vts/ComposerVts.cpp @@ -184,7 +184,7 @@ Gralloc::Gralloc() { ALOGD("Attempting to initialize gralloc4"); ASSERT_NO_FATAL_FAILURE(mGralloc4 = std::make_shared("default", "default", /*errOnFailure=*/false)); - if (mGralloc4->getMapper() == nullptr || mGralloc4->getAllocator() == nullptr) { + if (mGralloc4->getMapper() == nullptr || !mGralloc4->hasAllocator()) { mGralloc4 = nullptr; ALOGD("Failed to initialize gralloc4, initializing gralloc3"); ASSERT_NO_FATAL_FAILURE(mGralloc3 = std::make_shared("default", "default", diff --git a/graphics/composer/2.2/vts/functional/Android.bp b/graphics/composer/2.2/vts/functional/Android.bp index dd519e7e6e..960b62da8a 100644 --- a/graphics/composer/2.2/vts/functional/Android.bp +++ b/graphics/composer/2.2/vts/functional/Android.bp @@ -45,18 +45,21 @@ cc_test { "libGLESv1_CM", "libGLESv2", "libbase", + "libbinder_ndk", "libfmq", "libgui", "libhidlbase", "libprocessgroup", "libsync", "libui", + "android.hardware.common-V2-ndk", "android.hardware.graphics.mapper@2.0", "android.hardware.graphics.mapper@2.1", "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@4.0", ], static_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.allocator@2.0", "android.hardware.graphics.allocator@3.0", "android.hardware.graphics.allocator@4.0", @@ -70,6 +73,7 @@ cc_test { "android.hardware.graphics.mapper@2.1-vts", "android.hardware.graphics.mapper@3.0-vts", "android.hardware.graphics.mapper@4.0-vts", + "libaidlcommonsupport", "libgtest", "librenderengine", "libshaders", diff --git a/graphics/composer/2.3/vts/functional/Android.bp b/graphics/composer/2.3/vts/functional/Android.bp index 70384ac62e..40b77d5a15 100644 --- a/graphics/composer/2.3/vts/functional/Android.bp +++ b/graphics/composer/2.3/vts/functional/Android.bp @@ -32,15 +32,18 @@ cc_test { // TODO(b/64437680): Assume these libs are always available on the device. shared_libs: [ "libbase", + "libbinder_ndk", "libfmq", "libhidlbase", "libsync", + "android.hardware.common-V2-ndk", "android.hardware.graphics.mapper@2.0", "android.hardware.graphics.mapper@2.1", "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@4.0", ], static_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.allocator@2.0", "android.hardware.graphics.allocator@3.0", "android.hardware.graphics.allocator@4.0", @@ -54,6 +57,7 @@ cc_test { "android.hardware.graphics.mapper@2.1-vts", "android.hardware.graphics.mapper@3.0-vts", "android.hardware.graphics.mapper@4.0-vts", + "libaidlcommonsupport", ], header_libs: [ "android.hardware.graphics.composer@2.1-command-buffer", @@ -61,5 +65,8 @@ cc_test { "android.hardware.graphics.composer@2.3-command-buffer", ], disable_framework: true, - test_suites: ["general-tests", "vts"], + test_suites: [ + "general-tests", + "vts", + ], } diff --git a/graphics/composer/2.4/utils/vts/Android.bp b/graphics/composer/2.4/utils/vts/Android.bp index 5ef861c4f7..de3197573d 100644 --- a/graphics/composer/2.4/utils/vts/Android.bp +++ b/graphics/composer/2.4/utils/vts/Android.bp @@ -32,6 +32,7 @@ cc_library_static { "TestCommandReader.cpp", ], static_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3-vts", diff --git a/graphics/composer/2.4/vts/functional/Android.bp b/graphics/composer/2.4/vts/functional/Android.bp index 22ae7c48cf..b73ea9403e 100644 --- a/graphics/composer/2.4/vts/functional/Android.bp +++ b/graphics/composer/2.4/vts/functional/Android.bp @@ -32,14 +32,17 @@ cc_test { // TODO(b/64437680): Assume these libs are always available on the device. shared_libs: [ "libbase", + "libbinder_ndk", "libfmq", "libsync", + "android.hardware.common-V2-ndk", "android.hardware.graphics.mapper@2.0", "android.hardware.graphics.mapper@2.1", "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@4.0", ], static_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.allocator@2.0", "android.hardware.graphics.allocator@3.0", "android.hardware.graphics.allocator@4.0", @@ -55,6 +58,7 @@ cc_test { "android.hardware.graphics.mapper@2.1-vts", "android.hardware.graphics.mapper@3.0-vts", "android.hardware.graphics.mapper@4.0-vts", + "libaidlcommonsupport", ], header_libs: [ "android.hardware.graphics.composer@2.1-command-buffer", @@ -63,5 +67,8 @@ cc_test { "android.hardware.graphics.composer@2.4-command-buffer", ], disable_framework: true, - test_suites: ["general-tests", "vts"], + test_suites: [ + "general-tests", + "vts", + ], } diff --git a/graphics/mapper/4.0/utils/vts/Android.bp b/graphics/mapper/4.0/utils/vts/Android.bp index 633149805c..7abf5dba24 100644 --- a/graphics/mapper/4.0/utils/vts/Android.bp +++ b/graphics/mapper/4.0/utils/vts/Android.bp @@ -32,14 +32,21 @@ cc_library_static { "-g", ], static_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.common-V3-ndk", "android.hardware.graphics.mapper@4.0", + "libaidlcommonsupport", ], shared_libs: [ + "libbinder_ndk", "libgralloctypes", + "libvndksupport", ], export_static_lib_headers: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.common-V3-ndk", "android.hardware.graphics.mapper@4.0", ], export_include_dirs: ["include"], diff --git a/graphics/mapper/4.0/utils/vts/MapperVts.cpp b/graphics/mapper/4.0/utils/vts/MapperVts.cpp index 4a6f68da26..e4a2535a92 100644 --- a/graphics/mapper/4.0/utils/vts/MapperVts.cpp +++ b/graphics/mapper/4.0/utils/vts/MapperVts.cpp @@ -14,7 +14,9 @@ * limitations under the License. */ +#include #include +#include #include #include @@ -35,8 +37,14 @@ Gralloc::Gralloc(const std::string& allocatorServiceName, const std::string& map } void Gralloc::init(const std::string& allocatorServiceName, const std::string& mapperServiceName) { - mAllocator = IAllocator::getService(allocatorServiceName); - ASSERT_NE(nullptr, mAllocator.get()) << "failed to get allocator service"; + mAidlAllocator = aidl::android::hardware::graphics::allocator::IAllocator::fromBinder( + ndk::SpAIBinder(AServiceManager_checkService(allocatorServiceName.c_str()))); + + if (mAidlAllocator == nullptr) { + mHidlAllocator = IAllocator::getService(allocatorServiceName); + } + ASSERT_TRUE(nullptr != mAidlAllocator || mHidlAllocator != nullptr) + << "failed to get allocator service"; mMapper = IMapper::getService(mapperServiceName); ASSERT_NE(nullptr, mMapper.get()) << "failed to get mapper service"; @@ -45,7 +53,12 @@ void Gralloc::init(const std::string& allocatorServiceName, const std::string& m void Gralloc::initNoErr(const std::string& allocatorServiceName, const std::string& mapperServiceName) { - mAllocator = IAllocator::getService(allocatorServiceName); + mAidlAllocator = aidl::android::hardware::graphics::allocator::IAllocator::fromBinder( + ndk::SpAIBinder(AServiceManager_checkService(allocatorServiceName.c_str()))); + + if (mAidlAllocator == nullptr) { + mHidlAllocator = IAllocator::getService(allocatorServiceName); + } mMapper = IMapper::getService(mapperServiceName); if (mMapper.get()) { @@ -68,10 +81,6 @@ Gralloc::~Gralloc() { mImportedBuffers.clear(); } -sp Gralloc::getAllocator() const { - return mAllocator; -} - const native_handle_t* Gralloc::cloneBuffer(const hidl_handle& rawHandle, enum Tolerance /*tolerance*/) { const native_handle_t* bufferHandle = native_handle_clone(rawHandle.getNativeHandle()); @@ -90,40 +99,40 @@ std::vector Gralloc::allocate(const BufferDescriptor& de uint32_t* outStride) { std::vector bufferHandles; bufferHandles.reserve(count); - mAllocator->allocate(descriptor, count, - [&](const auto& tmpError, const auto& tmpStride, const auto& tmpBuffers) { - if (canTolerate(tolerance, tmpError)) { - return; - } - if (tmpError != Error::NONE) { - if (base::GetIntProperty("ro.vendor.build.version.sdk", 0, 0, - INT_MAX) < 33) { - GTEST_SKIP() << "Old vendor grallocs may not support P010"; - } else { - GTEST_FAIL() << "failed to allocate buffers"; - } - } - ASSERT_EQ(count, tmpBuffers.size()) << "invalid buffer array"; + auto callback = [&](Error error, uint32_t stride, + const hidl_vec& buffers) -> void { + if (canTolerate(tolerance, error)) { + return; + } - for (uint32_t i = 0; i < count; i++) { - const native_handle_t* bufferHandle = nullptr; - if (import) { - ASSERT_NO_FATAL_FAILURE( - bufferHandle = importBuffer(tmpBuffers[i], tolerance)); - } else { - ASSERT_NO_FATAL_FAILURE( - bufferHandle = cloneBuffer(tmpBuffers[i], tolerance)); - } - if (bufferHandle) { - bufferHandles.push_back(bufferHandle); - } - } + if (error != Error::NONE) { + if (base::GetIntProperty("ro.vendor.build.version.sdk", 0, 0, INT_MAX) < 33) { + GTEST_SKIP() << "Old vendor grallocs may not support P010"; + } else { + GTEST_FAIL() << "failed to allocate buffers"; + } + } + ASSERT_EQ(count, buffers.size()) << "invalid buffer array"; - if (outStride) { - *outStride = tmpStride; - } - }); + for (uint32_t i = 0; i < count; i++) { + const native_handle_t* bufferHandle = nullptr; + if (import) { + ASSERT_NO_FATAL_FAILURE(bufferHandle = importBuffer(buffers[i], tolerance)); + } else { + ASSERT_NO_FATAL_FAILURE(bufferHandle = cloneBuffer(buffers[i], tolerance)); + } + if (bufferHandle) { + bufferHandles.push_back(bufferHandle); + } + } + + if (outStride) { + *outStride = stride; + } + }; + + rawAllocate(descriptor, count, callback); if (::testing::Test::HasFatalFailure()) { bufferHandles.clear(); @@ -147,6 +156,23 @@ const native_handle_t* Gralloc::allocate(const IMapper::BufferDescriptorInfo& de return buffers[0]; } +void Gralloc::rawAllocate( + const BufferDescriptor& descriptor, uint32_t count, + std::function&)> callback) { + if (mAidlAllocator) { + aidl::android::hardware::graphics::allocator::AllocationResult result; + auto status = mAidlAllocator->allocate(descriptor, count, &result); + const Error error = toHidlError(status); + std::vector handles; + for (const auto& aidlHandle : result.buffers) { + handles.push_back(hidl_handle(makeFromAidl(aidlHandle))); + } + callback(error, result.stride, handles); + } else { + mHidlAllocator->allocate(descriptor, count, callback); + } +} + sp Gralloc::getMapper() const { return mMapper; } diff --git a/graphics/mapper/4.0/utils/vts/include/mapper-vts/4.0/MapperVts.h b/graphics/mapper/4.0/utils/vts/include/mapper-vts/4.0/MapperVts.h index c5406c90b0..b956e494aa 100644 --- a/graphics/mapper/4.0/utils/vts/include/mapper-vts/4.0/MapperVts.h +++ b/graphics/mapper/4.0/utils/vts/include/mapper-vts/4.0/MapperVts.h @@ -20,6 +20,8 @@ #include #include +#include +#include #include #include #include @@ -51,9 +53,33 @@ class Gralloc { const std::string& mapperServiceName = "default", bool errOnFailure = true); ~Gralloc(); + static Error toHidlError(aidl::android::hardware::graphics::allocator::AllocationError error) { + switch (error) { + case aidl::android::hardware::graphics::allocator::AllocationError::BAD_DESCRIPTOR: + return Error::BAD_DESCRIPTOR; + case aidl::android::hardware::graphics::allocator::AllocationError::NO_RESOURCES: + return Error::NO_RESOURCES; + case aidl::android::hardware::graphics::allocator::AllocationError::UNSUPPORTED: + return Error::UNSUPPORTED; + } + } + static Error toHidlError(const ndk::ScopedAStatus& status) { + if (status.isOk()) { + return Error::NONE; + } + + if (status.getExceptionCode() != EX_SERVICE_SPECIFIC) { + return Error::NO_RESOURCES; + } + + return toHidlError( + static_cast( + status.getServiceSpecificError())); + } + // IAllocator methods - sp getAllocator() const; + bool hasAllocator() { return mHidlAllocator != nullptr || mAidlAllocator != nullptr; } // When import is false, this simply calls IAllocator::allocate. When import // is true, the returned buffers are also imported into the mapper. @@ -81,6 +107,10 @@ class Gralloc { return allocate(descriptorInfo, import, Tolerance::kToleranceStrict, outStride); } + // Dispatches directly to the allocator + void rawAllocate(const BufferDescriptor& descriptor, uint32_t count, + std::function&)> callback); + // IMapper methods sp getMapper() const; @@ -143,7 +173,8 @@ class Gralloc { return cloneBuffer(rawHandle, Tolerance::kToleranceStrict); } - sp mAllocator; + sp mHidlAllocator; + std::shared_ptr mAidlAllocator; sp mMapper; // Keep track of all cloned and imported handles. When a test fails with diff --git a/graphics/mapper/4.0/vts/functional/Android.bp b/graphics/mapper/4.0/vts/functional/Android.bp index 65bc38029d..e83063367d 100644 --- a/graphics/mapper/4.0/vts/functional/Android.bp +++ b/graphics/mapper/4.0/vts/functional/Android.bp @@ -25,20 +25,27 @@ package { cc_test { name: "VtsHalGraphicsMapperV4_0TargetTest", - defaults: ["VtsHalTargetTestDefaults"], + defaults: [ + "VtsHalTargetTestDefaults", + "use_libaidlvintf_gtest_helper_static", + ], srcs: ["VtsHalGraphicsMapperV4_0TargetTest.cpp"], static_libs: [ "android.hardware.graphics.common-V3-ndk", "android.hardware.graphics.mapper@4.0-vts", + "libaidlcommonsupport", "libgralloctypes", "libsync", ], shared_libs: [ + "android.hardware.graphics.allocator-V1-ndk", "android.hardware.graphics.allocator@4.0", "android.hardware.graphics.common@1.0", "android.hardware.graphics.common@1.1", "android.hardware.graphics.common@1.2", "android.hardware.graphics.mapper@4.0", + "libbinder_ndk", + "libvndksupport", ], header_libs: [ "libsystem_headers", diff --git a/graphics/mapper/4.0/vts/functional/VtsHalGraphicsMapperV4_0TargetTest.cpp b/graphics/mapper/4.0/vts/functional/VtsHalGraphicsMapperV4_0TargetTest.cpp index 2aac337ca7..5a450e385a 100644 --- a/graphics/mapper/4.0/vts/functional/VtsHalGraphicsMapperV4_0TargetTest.cpp +++ b/graphics/mapper/4.0/vts/functional/VtsHalGraphicsMapperV4_0TargetTest.cpp @@ -21,8 +21,12 @@ #include #include +#include +#include +#include #include #include +#include #include #include @@ -72,7 +76,7 @@ class GraphicsMapperHidlTest void SetUp() override { ASSERT_NO_FATAL_FAILURE(mGralloc = std::make_unique(std::get<0>(GetParam()), std::get<1>(GetParam()))); - ASSERT_NE(nullptr, mGralloc->getAllocator().get()); + ASSERT_TRUE(mGralloc->hasAllocator()); ASSERT_NE(nullptr, mGralloc->getMapper().get()); mDummyDescriptorInfo.name = "dummy"; @@ -504,10 +508,10 @@ TEST_P(GraphicsMapperHidlTest, AllocatorAllocate) { TEST_P(GraphicsMapperHidlTest, AllocatorAllocateNegative) { // this assumes any valid descriptor is non-empty BufferDescriptor descriptor; - mGralloc->getAllocator()->allocate(descriptor, 1, - [&](const auto& tmpError, const auto&, const auto&) { - EXPECT_EQ(Error::BAD_DESCRIPTOR, tmpError); - }); + + mGralloc->rawAllocate(descriptor, 1, [&](const auto& tmpError, const auto&, const auto&) { + EXPECT_EQ(Error::BAD_DESCRIPTOR, tmpError); + }); } /** @@ -535,9 +539,9 @@ TEST_P(GraphicsMapperHidlTest, AllocatorAllocateThreaded) { std::atomic allocationCount(0); auto threadLoop = [&]() { while (!timeUp) { - mGralloc->getAllocator()->allocate( - descriptor, 1, - [&](const auto&, const auto&, const auto&) { allocationCount++; }); + mGralloc->rawAllocate(descriptor, 1, [&](const auto&, const auto&, const auto&) { + allocationCount++; + }); } }; @@ -2755,8 +2759,9 @@ TEST_P(GraphicsMapperHidlTest, GetLargeReservedRegion) { BufferDescriptor descriptor; ASSERT_NO_FATAL_FAILURE(descriptor = mGralloc->createDescriptor(info)); - Error err; - mGralloc->getAllocator()->allocate( + Error err = Error::NONE; + + mGralloc->rawAllocate( descriptor, 1, [&](const auto& tmpError, const auto&, const auto& tmpBuffers) { err = tmpError; if (err == Error::NONE) { @@ -2827,11 +2832,27 @@ TEST_P(GraphicsMapperHidlTest, GetReservedRegionBadBuffer) { } GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(GraphicsMapperHidlTest); + +namespace { +std::vector getAllocatorInstances() { + std::vector instances; + for (auto halInstance : android::hardware::getAllHalInstanceNames(IAllocator::descriptor)) { + instances.emplace_back(std::move(halInstance)); + } + + for (auto aidlInstance : getAidlHalInstanceNames( + aidl::android::hardware::graphics::allocator::IAllocator::descriptor)) { + instances.emplace_back(std::move(aidlInstance)); + } + + return instances; +} +} // namespace + INSTANTIATE_TEST_CASE_P( PerInstance, GraphicsMapperHidlTest, testing::Combine( - testing::ValuesIn( - android::hardware::getAllHalInstanceNames(IAllocator::descriptor)), + testing::ValuesIn(getAllocatorInstances()), testing::ValuesIn(android::hardware::getAllHalInstanceNames(IMapper::descriptor))), android::hardware::PrintInstanceTupleNameToString<>);