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

Commit 0adba45f authored by Alec Mouri's avatar Alec Mouri Committed by Android (Google) Code Review
Browse files

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

parents d667e658 18339992
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)};