mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Merge "Allow old gralloc implementations to skip P010 support." into tm-dev
This commit is contained in:
@@ -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 {
|
||||
@@ -94,23 +96,31 @@ std::vector<const native_handle_t*> Gralloc::allocate(const BufferDescriptor& de
|
||||
std::vector<const native_handle_t*> bufferHandles;
|
||||
bufferHandles.reserve(count);
|
||||
mAllocator->allocate(
|
||||
descriptor, count,
|
||||
[&](const auto& tmpError, const auto& tmpStride, const auto& tmpBuffers) {
|
||||
ASSERT_EQ(Error::NONE, tmpError) << "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])));
|
||||
} else {
|
||||
ASSERT_NO_FATAL_FAILURE(bufferHandles.push_back(cloneBuffer(tmpBuffers[i])));
|
||||
descriptor, count,
|
||||
[&](const auto& tmpError, const auto& tmpStride, const auto& tmpBuffers) {
|
||||
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";
|
||||
|
||||
if (outStride) {
|
||||
*outStride = tmpStride;
|
||||
}
|
||||
});
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
if (import) {
|
||||
ASSERT_NO_FATAL_FAILURE(
|
||||
bufferHandles.push_back(importBuffer(tmpBuffers[i])));
|
||||
} else {
|
||||
ASSERT_NO_FATAL_FAILURE(
|
||||
bufferHandles.push_back(cloneBuffer(tmpBuffers[i])));
|
||||
}
|
||||
}
|
||||
|
||||
if (outStride) {
|
||||
*outStride = tmpStride;
|
||||
}
|
||||
});
|
||||
|
||||
if (::testing::Test::HasFatalFailure()) {
|
||||
bufferHandles.clear();
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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)};
|
||||
|
||||
Reference in New Issue
Block a user