summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorChia-I Wu <olv@google.com>2018-05-22 10:58:48 -0700
committerChia-I Wu <olv@google.com>2018-05-22 15:17:50 -0700
commit09782444e3e8e0a2bb61bd44c5fed06020c314f0 (patch)
tree88e443ac727d94e20d4bc82219791dda283931b8 /graphics
parent3fea05cd400172194adfb5fe8fe5c0e25ca292ab (diff)
downloadandroid_hardware_interfaces-09782444e3e8e0a2bb61bd44c5fed06020c314f0.tar.gz
android_hardware_interfaces-09782444e3e8e0a2bb61bd44c5fed06020c314f0.tar.bz2
android_hardware_interfaces-09782444e3e8e0a2bb61bd44c5fed06020c314f0.zip
graphics: fix readback buffer tests
Make readback buffer support optional. Fix incorrect use of setReadbackBuffer and getReadbackBufferFence. Bug: 80030364 Test: VTS Change-Id: I278a031c3c086ac38c460b7076a2952db57a91a4 Merged-In: I278a031c3c086ac38c460b7076a2952db57a91a4
Diffstat (limited to 'graphics')
-rw-r--r--graphics/composer/2.2/utils/vts/ComposerVts.cpp4
-rw-r--r--graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ComposerVts.h2
-rw-r--r--graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2TargetTest.cpp48
3 files changed, 46 insertions, 8 deletions
diff --git a/graphics/composer/2.2/utils/vts/ComposerVts.cpp b/graphics/composer/2.2/utils/vts/ComposerVts.cpp
index 357c7725a..6a3207127 100644
--- a/graphics/composer/2.2/utils/vts/ComposerVts.cpp
+++ b/graphics/composer/2.2/utils/vts/ComposerVts.cpp
@@ -45,6 +45,10 @@ std::unique_ptr<ComposerClient_v2_2> Composer_v2_2::createClient_v2_2() {
return client;
}
+sp<V2_2::IComposerClient> ComposerClient_v2_2::getRaw() const {
+ return mClient_v2_2;
+}
+
std::vector<IComposerClient::PerFrameMetadataKey> ComposerClient_v2_2::getPerFrameMetadataKeys(
Display display) {
std::vector<IComposerClient::PerFrameMetadataKey> keys;
diff --git a/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ComposerVts.h b/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ComposerVts.h
index 62ab83f3f..1c6d7ae00 100644
--- a/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ComposerVts.h
+++ b/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ComposerVts.h
@@ -63,6 +63,8 @@ class ComposerClient_v2_2
ComposerClient_v2_2(const sp<IComposerClient>& client)
: V2_1::vts::ComposerClient(client), mClient_v2_2(client){};
+ sp<V2_2::IComposerClient> getRaw() const;
+
void execute_v2_2(V2_1::vts::TestCommandReader* reader, V2_2::CommandWriterBase* writer);
std::vector<IComposerClient::PerFrameMetadataKey> getPerFrameMetadataKeys(Display display);
diff --git a/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2TargetTest.cpp b/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2TargetTest.cpp
index 4e41333e5..f0d22504a 100644
--- a/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2TargetTest.cpp
+++ b/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2TargetTest.cpp
@@ -78,6 +78,11 @@ class GraphicsComposerHidlTest : public ::testing::VtsHalHidlTargetTestBase {
// explicitly disable vsync
mComposerClient->setVsyncEnabled(mPrimaryDisplay, false);
mComposerCallback->setVsyncAllowed(false);
+
+ mComposerClient->getRaw()->getReadbackBufferAttributes(
+ mPrimaryDisplay, [&](const auto& tmpError, const auto&, const auto&) {
+ mHasReadbackBuffer = tmpError == Error::NONE;
+ });
}
void TearDown() override {
@@ -96,6 +101,7 @@ class GraphicsComposerHidlTest : public ::testing::VtsHalHidlTargetTestBase {
sp<V2_1::vts::GraphicsComposerCallback> mComposerCallback;
// the first display and is assumed never to be removed
Display mPrimaryDisplay;
+ bool mHasReadbackBuffer;
private:
Display waitForFirstDisplay() {
@@ -257,18 +263,44 @@ TEST_F(GraphicsComposerHidlTest, setPowerMode_2_2) {
}
TEST_F(GraphicsComposerHidlTest, setReadbackBuffer) {
- mComposerClient->setReadbackBuffer(mPrimaryDisplay, nullptr, -1);
-}
-
-TEST_F(GraphicsComposerHidlTest, getReadbackBufferFence) {
- int32_t fence;
- mComposerClient->getReadbackBufferFence(mPrimaryDisplay, &fence);
-}
+ if (!mHasReadbackBuffer) {
+ return;
+ }
-TEST_F(GraphicsComposerHidlTest, getReadbackBufferAttributes) {
PixelFormat pixelFormat;
Dataspace dataspace;
mComposerClient->getReadbackBufferAttributes(mPrimaryDisplay, &pixelFormat, &dataspace);
+ ASSERT_LT(static_cast<PixelFormat>(0), pixelFormat);
+ ASSERT_NE(Dataspace::UNKNOWN, dataspace);
+
+ IMapper::BufferDescriptorInfo info{};
+ Config config = mComposerClient->getActiveConfig(mPrimaryDisplay);
+ info.width = mComposerClient->getDisplayAttribute(mPrimaryDisplay, config,
+ IComposerClient::Attribute::WIDTH);
+ info.height = mComposerClient->getDisplayAttribute(mPrimaryDisplay, config,
+ IComposerClient::Attribute::HEIGHT);
+ info.layerCount = 1;
+ info.format = pixelFormat;
+ // BufferUsage::COMPOSER_OUTPUT is missing
+ info.usage = static_cast<uint64_t>(BufferUsage::COMPOSER_OVERLAY | BufferUsage::CPU_READ_OFTEN);
+
+ std::unique_ptr<Gralloc> gralloc;
+ const native_handle_t* buffer;
+ ASSERT_NO_FATAL_FAILURE(gralloc = std::make_unique<Gralloc>());
+ ASSERT_NO_FATAL_FAILURE(buffer = gralloc->allocate(info));
+
+ mComposerClient->setReadbackBuffer(mPrimaryDisplay, buffer, -1);
+}
+
+TEST_F(GraphicsComposerHidlTest, getReadbackBufferFenceInactive) {
+ if (!mHasReadbackBuffer) {
+ return;
+ }
+
+ mComposerClient->getRaw()->getReadbackBufferFence(
+ mPrimaryDisplay, [&](const auto& tmpError, const auto&) {
+ ASSERT_EQ(Error::UNSUPPORTED, tmpError) << "readback buffer is active";
+ });
}
/**