From 2c2cfc9341d71b03ad5e9072ef2fdda070fc1da0 Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 15 Dec 2022 16:18:43 -0500 Subject: [PATCH] Add stride query Fixes: 261856851 Test: VtsHalGraphicsMapperStableC_TargetTest Change-Id: Ib49df2d46dd55848c4854179bd6205c86c232a6d --- .../graphics/allocator/AllocationResult.aidl | 8 ++++++-- .../graphics/common/StandardMetadataType.aidl | 1 + .../graphics/common/StandardMetadataType.aidl | 13 +++++++++++++ .../graphics/mapper/utils/IMapperMetadataTypes.h | 1 + .../vts/VtsHalGraphicsMapperStableC_TargetTest.cpp | 11 +++++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/graphics/allocator/aidl/android/hardware/graphics/allocator/AllocationResult.aidl b/graphics/allocator/aidl/android/hardware/graphics/allocator/AllocationResult.aidl index 0774e2554c..76f1c95b7f 100644 --- a/graphics/allocator/aidl/android/hardware/graphics/allocator/AllocationResult.aidl +++ b/graphics/allocator/aidl/android/hardware/graphics/allocator/AllocationResult.aidl @@ -18,13 +18,17 @@ package android.hardware.graphics.allocator; import android.hardware.common.NativeHandle; - /** +/** * Result of an IAllocator::allocate call. * * @sa +ndk libnativewindow#AHardwareBuffer_Desc */ @VintfStability parcelable AllocationResult { + /** + * The number of pixels between two consecutive rows of an allocated buffer, when the concept + * of consecutive rows is defined. Otherwise, it has no meaning. + */ int stride; NativeHandle[] buffers; -} \ No newline at end of file +} diff --git a/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/StandardMetadataType.aidl b/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/StandardMetadataType.aidl index 06b31a2036..6e2e1063c3 100644 --- a/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/StandardMetadataType.aidl +++ b/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/StandardMetadataType.aidl @@ -58,4 +58,5 @@ enum StandardMetadataType { CTA861_3 = 20, SMPTE2094_40 = 21, SMPTE2094_10 = 22, + STRIDE = 23, } diff --git a/graphics/common/aidl/android/hardware/graphics/common/StandardMetadataType.aidl b/graphics/common/aidl/android/hardware/graphics/common/StandardMetadataType.aidl index 4bca795602..8cfdae677c 100644 --- a/graphics/common/aidl/android/hardware/graphics/common/StandardMetadataType.aidl +++ b/graphics/common/aidl/android/hardware/graphics/common/StandardMetadataType.aidl @@ -368,4 +368,17 @@ enum StandardMetadataType { * If this is unset when encoded into a byte stream, the byte stream is empty. */ SMPTE2094_10 = 22, + + /** + * Can be used to get the stride in pixels of the buffer allocation. This is the number of + * pixels between two consecutive rows of an allocated buffer, when the concept of consecutive + * rows is defined. Otherwise, it has no meaning. + * + * Must match the value returned in android.hardware.graphics.allocator.AllocationResult#stride + * + * This is required metadata in mapper5 and should be read-only. + * + * The metadata type is a uint32_t. + */ + STRIDE = 23, } diff --git a/graphics/mapper/stable-c/implutils/include/android/hardware/graphics/mapper/utils/IMapperMetadataTypes.h b/graphics/mapper/stable-c/implutils/include/android/hardware/graphics/mapper/utils/IMapperMetadataTypes.h index 25af6d1158..3dba86d254 100644 --- a/graphics/mapper/stable-c/implutils/include/android/hardware/graphics/mapper/utils/IMapperMetadataTypes.h +++ b/graphics/mapper/stable-c/implutils/include/android/hardware/graphics/mapper/utils/IMapperMetadataTypes.h @@ -563,6 +563,7 @@ DEFINE_TYPE(SMPTE2086, std::optional); DEFINE_TYPE(CTA861_3, std::optional); DEFINE_TYPE(SMPTE2094_10, std::optional>); DEFINE_TYPE(SMPTE2094_40, std::optional>); +DEFINE_TYPE(STRIDE, uint32_t); #undef DEFINE_TYPE diff --git a/graphics/mapper/stable-c/vts/VtsHalGraphicsMapperStableC_TargetTest.cpp b/graphics/mapper/stable-c/vts/VtsHalGraphicsMapperStableC_TargetTest.cpp index 85246eec3a..e29d16e637 100644 --- a/graphics/mapper/stable-c/vts/VtsHalGraphicsMapperStableC_TargetTest.cpp +++ b/graphics/mapper/stable-c/vts/VtsHalGraphicsMapperStableC_TargetTest.cpp @@ -1557,6 +1557,16 @@ TEST_P(GraphicsMapperStableCTests, GetSmpte2094_40) { } } +TEST_P(GraphicsMapperStableCTests, GetStride) { + auto buffer = allocateGeneric(); + ASSERT_TRUE(buffer); + auto bufferHandle = buffer->import(); + ASSERT_TRUE(bufferHandle); + auto value = getStandardMetadata(*bufferHandle); + ASSERT_TRUE(value.has_value()); + EXPECT_EQ(buffer->stride(), *value); +} + TEST_P(GraphicsMapperStableCTests, SupportsRequiredGettersSetters) { auto buffer = allocateGeneric(); ASSERT_TRUE(buffer); @@ -1587,6 +1597,7 @@ TEST_P(GraphicsMapperStableCTests, SupportsRequiredGettersSetters) { StandardMetadataType::BLEND_MODE, StandardMetadataType::SMPTE2086, StandardMetadataType::CTA861_3, + StandardMetadataType::STRIDE, }; std::vector requiredSetters = {