Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 26ddd012 authored by layog's avatar layog Committed by Yichi Chen
Browse files

gralloc4-vts: Test layout and component info of RAW12

Bug: 157534008
Test: VtsHalGraphicsMapperV4_0TargetTest
Change-Id: I3441e630b18f3d6e0f5cbcecf8a54dc1b42faa84
parent 0809466b
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -796,6 +796,48 @@ TEST_P(GraphicsMapperHidlTest, Lock_RAW10) {
    ASSERT_NO_FATAL_FAILURE(fence.reset(mGralloc->unlock(bufferHandle)));
}

TEST_P(GraphicsMapperHidlTest, Lock_RAW12) {
    auto info = mDummyDescriptorInfo;
    info.format = PixelFormat::RAW12;

    const native_handle_t* bufferHandle;
    uint32_t stride;
    ASSERT_NO_FATAL_FAILURE(bufferHandle = mGralloc->allocate(
                                    info, true, Tolerance::kToleranceUnSupported, &stride));
    if (bufferHandle == nullptr) {
        GTEST_SUCCEED() << "RAW12 format is unsupported";
        return;
    }

    const IMapper::Rect region{0, 0, static_cast<int32_t>(info.width),
                               static_cast<int32_t>(info.height)};
    unique_fd fence;

    ASSERT_NO_FATAL_FAILURE(mGralloc->lock(bufferHandle, info.usage, region, fence.get()));

    hidl_vec<uint8_t> vec;
    ASSERT_EQ(Error::NONE, mGralloc->get(bufferHandle, gralloc4::MetadataType_PlaneLayouts, &vec));
    std::vector<PlaneLayout> planeLayouts;
    ASSERT_EQ(NO_ERROR, gralloc4::decodePlaneLayouts(vec, &planeLayouts));

    ASSERT_EQ(1, planeLayouts.size());
    auto planeLayout = planeLayouts[0];

    EXPECT_EQ(0, planeLayout.sampleIncrementInBits);
    EXPECT_EQ(1, planeLayout.horizontalSubsampling);
    EXPECT_EQ(1, planeLayout.verticalSubsampling);

    ASSERT_EQ(1, planeLayout.components.size());
    auto planeLayoutComponent = planeLayout.components[0];

    EXPECT_EQ(PlaneLayoutComponentType::RAW,
              static_cast<PlaneLayoutComponentType>(planeLayoutComponent.type.value));
    EXPECT_EQ(0, planeLayoutComponent.offsetInBits % 8);
    EXPECT_EQ(-1, planeLayoutComponent.sizeInBits);

    ASSERT_NO_FATAL_FAILURE(fence.reset(mGralloc->unlock(bufferHandle)));
}

/**
 * Test IMapper::unlock with bad access region
 */