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

Commit 18cab896 authored by Alec Mouri's avatar Alec Mouri Committed by Automerger Merge Worker
Browse files

Merge "Allow old gralloc implementations to skip P010 support." into tm-dev...

Merge "Allow old gralloc implementations to skip P010 support." into tm-dev am: 0adba45f am: bf97778b

Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/interfaces/+/17573261



Change-Id: I1ec7f8af43acab1e52b958d54b3a2d0e696a4ac7
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 2bd865d8 bf97778b
Loading
Loading
Loading
Loading
+26 −16
Original line number Diff line number Diff line
@@ -14,7 +14,9 @@
 * limitations under the License.
 */

#include <android-base/properties.h>
#include <mapper-vts/3.0/MapperVts.h>
#include "gtest/gtest.h"

namespace android {
namespace hardware {
@@ -96,14 +98,22 @@ std::vector<const native_handle_t*> Gralloc::allocate(const BufferDescriptor& de
    mAllocator->allocate(
            descriptor, count,
            [&](const auto& tmpError, const auto& tmpStride, const auto& tmpBuffers) {
            ASSERT_EQ(Error::NONE, tmpError) << "failed to allocate buffers";
                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";

                for (uint32_t i = 0; i < count; i++) {
                    if (import) {
                    ASSERT_NO_FATAL_FAILURE(bufferHandles.push_back(importBuffer(tmpBuffers[i])));
                        ASSERT_NO_FATAL_FAILURE(
                                bufferHandles.push_back(importBuffer(tmpBuffers[i])));
                    } else {
                    ASSERT_NO_FATAL_FAILURE(bufferHandles.push_back(cloneBuffer(tmpBuffers[i])));
                        ASSERT_NO_FATAL_FAILURE(
                                bufferHandles.push_back(cloneBuffer(tmpBuffers[i])));
                    }
                }

@@ -127,7 +137,7 @@ const native_handle_t* Gralloc::allocate(const IMapper::BufferDescriptorInfo& de
    }

    auto buffers = allocate(descriptor, 1, import, outStride);
    if (::testing::Test::HasFatalFailure()) {
    if (::testing::Test::HasFatalFailure() || ::testing::Test::IsSkipped()) {
        return nullptr;
    }

+4 −0
Original line number Diff line number Diff line
@@ -337,6 +337,10 @@ TEST_P(GraphicsMapperHidlTest, LockYCbCrP010) {
    uint32_t stride;
    ASSERT_NO_FATAL_FAILURE(bufferHandle = mGralloc->allocate(info, true, &stride));

    if (::testing::Test::IsSkipped()) {
        GTEST_SKIP();
    }

    ASSERT_NE(nullptr, bufferHandle);

    const IMapper::Rect region{0, 0, static_cast<int32_t>(info.width),
+10 −6
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
 * limitations under the License.
 */

#include <android-base/properties.h>
#include <gralloctypes/Gralloc4.h>
#include <mapper-vts/4.0/MapperVts.h>

@@ -95,7 +96,14 @@ std::vector<const native_handle_t*> Gralloc::allocate(const BufferDescriptor& de
                                 return;
                             }

                             ASSERT_EQ(Error::NONE, tmpError) << "failed to allocate buffers";
                             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";

                             for (uint32_t i = 0; i < count; i++) {
@@ -133,11 +141,7 @@ const native_handle_t* Gralloc::allocate(const IMapper::BufferDescriptorInfo& de
    }

    auto buffers = allocate(descriptor, 1, import, tolerance, outStride);
    if (::testing::Test::HasFatalFailure()) {
        return nullptr;
    }

    if (buffers.size() != 1) {
    if (::testing::Test::HasFatalFailure() || ::testing::Test::IsSkipped() || buffers.size() != 1) {
        return nullptr;
    }
    return buffers[0];
+6 −3
Original line number Diff line number Diff line
@@ -999,10 +999,13 @@ TEST_P(GraphicsMapperHidlTest, Lock_YCBCR_P010) {
    auto info = mDummyDescriptorInfo;
    info.format = PixelFormat::YCBCR_P010;

    const native_handle_t* bufferHandle;
    uint32_t stride;
    ASSERT_NO_FATAL_FAILURE(
            bufferHandle = mGralloc->allocate(info, true, Tolerance::kToleranceStrict, &stride));
    const native_handle_t* bufferHandle =
            mGralloc->allocate(info, true, Tolerance::kToleranceStrict, &stride);

    if (::testing::Test::IsSkipped()) {
        GTEST_SKIP();
    }

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