From 57344521a0428e82be30fe4327487dc26be246d7 Mon Sep 17 00:00:00 2001 From: Venkat Thogaru Date: Wed, 8 Jan 2020 15:21:45 +0530 Subject: gralloc: Upgrade mapper and allocator to 3.0 Test: android.media.cts.HeifWriterTest Bug: 145272994 CRs-Fixed: 2445393 Change-Id: I8c44ab63ca81523bb6acb75e8ae878cc7466e139 (cherry picked from commit 29adbb14c74e1230abc217fecf704002498dd1d2) --- config/display-product.mk | 2 +- gralloc/Android.mk | 21 ++++++++++------- gralloc/QtiAllocator.cpp | 6 ++--- gralloc/QtiAllocator.h | 20 ++++++++--------- gralloc/QtiMapper.cpp | 52 +++++++++++++++++++++++++++++-------------- gralloc/QtiMapper.h | 42 +++++++++++++++++----------------- gralloc/QtiMapperExtensions.h | 6 ++--- gralloc/gr_buf_descriptor.h | 8 +++---- gralloc/gr_buf_mgr.cpp | 8 +++++-- gralloc/gr_buf_mgr.h | 6 ++--- gralloc/gr_utils.cpp | 28 ++++++++++++++++++++++- gralloc/gr_utils.h | 5 +++-- gralloc/service.cpp | 6 ++--- 13 files changed, 131 insertions(+), 79 deletions(-) diff --git a/config/display-product.mk b/config/display-product.mk index 7ffa9617..f27e6b10 100644 --- a/config/display-product.mk +++ b/config/display-product.mk @@ -2,7 +2,7 @@ PRODUCT_PACKAGES += \ android.hardware.graphics.composer@2.3-impl \ android.hardware.graphics.composer@2.3-service-sm7150 \ - android.hardware.graphics.mapper@2.0-impl-qti-display \ + android.hardware.graphics.mapper@3.0-impl-qti-display \ vendor.qti.hardware.display.allocator-service \ android.hardware.memtrack@1.0-impl \ android.hardware.memtrack@1.0-service \ diff --git a/gralloc/Android.mk b/gralloc/Android.mk index 9ad44e52..6f23493c 100644 --- a/gralloc/Android.mk +++ b/gralloc/Android.mk @@ -13,7 +13,8 @@ LOCAL_HEADER_LIBRARIES := display_headers LOCAL_SHARED_LIBRARIES := $(common_libs) libqdMetaData libsync libgrallocutils \ libgralloccore \ android.hardware.graphics.mapper@2.0 \ - android.hardware.graphics.mapper@2.1 + android.hardware.graphics.mapper@2.1 \ + android.hardware.graphics.mapper@3.0 LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdgralloc\" -Wall -Werror LOCAL_CLANG := true LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps) @@ -29,7 +30,8 @@ LOCAL_C_INCLUDES := $(common_includes) $(kernel_includes) LOCAL_HEADER_LIBRARIES := display_headers LOCAL_SHARED_LIBRARIES := $(common_libs) libqdMetaData libdl \ android.hardware.graphics.mapper@2.0 \ - android.hardware.graphics.mapper@2.1 + android.hardware.graphics.mapper@2.1 \ + android.hardware.graphics.mapper@3.0 LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdgralloc\" -Wno-sign-conversion LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps) LOCAL_SRC_FILES := gr_utils.cpp gr_adreno_info.cpp @@ -47,7 +49,8 @@ LOCAL_C_INCLUDES := $(common_includes) \ LOCAL_HEADER_LIBRARIES := display_headers LOCAL_SHARED_LIBRARIES := $(common_libs) libqdMetaData libdl libgrallocutils libion \ - android.hardware.graphics.mapper@2.1 + android.hardware.graphics.mapper@2.1 \ + android.hardware.graphics.mapper@3.0 LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdgralloc\" -Wno-sign-conversion LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps) LOCAL_SRC_FILES := gr_allocator.cpp gr_buf_mgr.cpp gr_ion_alloc.cpp @@ -55,7 +58,7 @@ include $(BUILD_SHARED_LIBRARY) #mapper include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.graphics.mapper@2.0-impl-qti-display +LOCAL_MODULE := android.hardware.graphics.mapper@3.0-impl-qti-display LOCAL_VENDOR_MODULE := true LOCAL_MODULE_RELATIVE_PATH := hw LOCAL_MODULE_TAGS := optional @@ -68,11 +71,12 @@ LOCAL_SHARED_LIBRARIES := $(common_libs) \ libgrallocutils \ libgralloccore \ libsync \ - vendor.qti.hardware.display.mapper@2.0 \ + vendor.qti.hardware.display.mapper@3.0 \ vendor.qti.hardware.display.mapperextensions@1.0 \ android.hardware.graphics.mapper@2.0 \ android.hardware.graphics.mapper@2.1 \ - vendor.qti.hardware.display.mapperextensions@1.1 + vendor.qti.hardware.display.mapperextensions@1.1 \ + android.hardware.graphics.mapper@3.0 LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdgralloc\" -Wno-sign-conversion LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps) LOCAL_SRC_FILES := QtiMapper.cpp QtiMapperExtensions.cpp @@ -91,9 +95,10 @@ LOCAL_SHARED_LIBRARIES := $(common_libs) \ libqdMetaData \ libgrallocutils \ libgralloccore \ - vendor.qti.hardware.display.allocator@1.0 \ + vendor.qti.hardware.display.allocator@3.0 \ + android.hardware.graphics.mapper@3.0 \ android.hardware.graphics.mapper@2.1 \ - android.hardware.graphics.allocator@2.0 + android.hardware.graphics.allocator@3.0 LOCAL_CFLAGS := -DLOG_TAG=\"qdgralloc\" $(common_flags) LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps) LOCAL_C_INCLUDES := $(common_includes) $(kernel_includes) diff --git a/gralloc/QtiAllocator.cpp b/gralloc/QtiAllocator.cpp index bdb8ebe4..e623e814 100644 --- a/gralloc/QtiAllocator.cpp +++ b/gralloc/QtiAllocator.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -40,7 +40,7 @@ namespace qti { namespace hardware { namespace display { namespace allocator { -namespace V1_0 { +namespace V3_0 { namespace implementation { using android::hardware::hidl_handle; @@ -105,7 +105,7 @@ IQtiAllocator *HIDL_FETCH_IQtiAllocator(const char * /* name */) { } } // namespace implementation -} // namespace V1_0 +} // namespace V3_0 } // namespace allocator } // namespace display } // namespace hardware diff --git a/gralloc/QtiAllocator.h b/gralloc/QtiAllocator.h index 2f3add8a..76ee392f 100644 --- a/gralloc/QtiAllocator.h +++ b/gralloc/QtiAllocator.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -32,7 +32,7 @@ #include #include -#include +#include #include "gr_buf_mgr.h" @@ -41,22 +41,22 @@ namespace qti { namespace hardware { namespace display { namespace allocator { -namespace V1_0 { +namespace V3_0 { namespace implementation { -using ::android::hardware::Return; -using ::android::hardware::Void; -using ::android::hardware::graphics::allocator::V2_0::IAllocator; -using ::android::hardware::graphics::mapper::V2_0::Error; +using ::android::sp; using ::android::hardware::hidl_array; using ::android::hardware::hidl_memory; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; +using ::android::hardware::graphics::allocator::V3_0::IAllocator; +using ::android::hardware::graphics::mapper::V3_0::Error; using ::android::hidl::base::V1_0::DebugInfo; using ::android::hidl::base::V1_0::IBase; -using ::android::sp; -using ::vendor::qti::hardware::display::allocator::V1_0::IQtiAllocator; using gralloc::BufferManager; +using ::vendor::qti::hardware::display::allocator::V3_0::IQtiAllocator; class QtiAllocator : public IQtiAllocator { public: @@ -74,7 +74,7 @@ class QtiAllocator : public IQtiAllocator { extern "C" IQtiAllocator *HIDL_FETCH_IQtiAllocator(const char *name); } // namespace implementation -} // namespace V1_0 +} // namespace V3_0 } // namespace allocator } // namespace display } // namespace hardware diff --git a/gralloc/QtiMapper.cpp b/gralloc/QtiMapper.cpp index c9790c26..27f91c14 100644 --- a/gralloc/QtiMapper.cpp +++ b/gralloc/QtiMapper.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -50,7 +50,7 @@ QtiMapper::QtiMapper() { ALOGD_IF(DEBUG, "Created QtiMapper instance"); } -bool QtiMapper::ValidDescriptor(const BufferDescriptorInfo_2_1 &bd) { +bool QtiMapper::ValidDescriptor(const BufferDescriptorInfo_3_0 &bd) { if (bd.width == 0 || bd.height == 0 || (static_cast(bd.format) <= 0) || bd.layerCount <= 0) { return false; @@ -59,7 +59,7 @@ bool QtiMapper::ValidDescriptor(const BufferDescriptorInfo_2_1 &bd) { return true; } -Error QtiMapper::CreateDescriptor(const BufferDescriptorInfo_2_1& descriptor_info, +Error QtiMapper::CreateDescriptor(const BufferDescriptorInfo_3_0 &descriptor_info, IMapperBufferDescriptor *descriptor) { ALOGD_IF(DEBUG, "BufferDescriptorInfo: wxh: %dx%d usage: 0x%" PRIu64 " format: %d layer_count: %d", @@ -76,17 +76,17 @@ Error QtiMapper::CreateDescriptor(const BufferDescriptorInfo_2_1& descriptor_inf } // Methods from ::android::hardware::graphics::mapper::V2_0::IMapper follow. -Return QtiMapper::createDescriptor(const BufferDescriptorInfo_2_0 &descriptor_info, +Return QtiMapper::createDescriptor(const BufferDescriptorInfo_3_0 &descriptor_info, createDescriptor_cb hidl_cb) { IMapperBufferDescriptor descriptor; - auto info_2_1 = BufferDescriptorInfo_2_1 { + auto info_3_0 = BufferDescriptorInfo_3_0{ descriptor_info.width, descriptor_info.height, descriptor_info.layerCount, static_cast(descriptor_info.format), descriptor_info.usage, }; - auto err = CreateDescriptor(info_2_1, &descriptor); + auto err = CreateDescriptor(info_3_0, &descriptor); hidl_cb(err, descriptor); return Void(); } @@ -177,13 +177,13 @@ Return QtiMapper::lock(void *buffer, uint64_t cpu_usage, const hidl_handle &acquire_fence, lock_cb hidl_cb) { auto err = LockBuffer(buffer, cpu_usage, acquire_fence); if (err != Error::NONE) { - hidl_cb(err, nullptr); + hidl_cb(err, nullptr, -1, -1); return Void(); } auto hnd = PRIV_HANDLE_CONST(buffer); auto *out_data = reinterpret_cast(hnd->base); - hidl_cb(Error::NONE, out_data); + hidl_cb(err, out_data, gralloc::GetBpp(hnd->format), hnd->width); return Void(); } @@ -222,8 +222,8 @@ Return QtiMapper::unlock(void *buffer, unlock_cb hidl_cb) { return Void(); } -Return QtiMapper::validateBufferSize(void* buffer, - const BufferDescriptorInfo_2_1& descriptor_info, +Return QtiMapper::validateBufferSize(void *buffer, + const BufferDescriptorInfo_3_0 &descriptor_info, uint32_t /*stride*/) { auto err = Error::BAD_BUFFER; auto hnd = static_cast(buffer); @@ -240,8 +240,7 @@ Return QtiMapper::validateBufferSize(void* buffer, return err; } -Return QtiMapper::getTransportSize(void *buffer, - IMapper_2_1::getTransportSize_cb hidl_cb) { +Return QtiMapper::getTransportSize(void *buffer, IMapper_3_0::getTransportSize_cb hidl_cb) { auto err = Error::BAD_BUFFER; auto hnd = static_cast(buffer); uint32_t num_fds = 0, num_ints = 0; @@ -260,11 +259,30 @@ Return QtiMapper::getTransportSize(void *buffer, return Void(); } -Return QtiMapper::createDescriptor_2_1(const BufferDescriptorInfo_2_1& descriptor_info, - IMapper_2_1::createDescriptor_2_1_cb hidl_cb) { +Return QtiMapper::isSupported(const BufferDescriptorInfo_3_0 &descriptor_info, + IMapper_3_0::isSupported_cb hidl_cb) { IMapperBufferDescriptor descriptor; auto err = CreateDescriptor(descriptor_info, &descriptor); - hidl_cb(err, descriptor); + if (err != Error::NONE) { + hidl_cb(err, false); + return Void(); + } + + gralloc::BufferDescriptor desc; + err = desc.Decode(descriptor); + if (err != Error::NONE) { + hidl_cb(err, false); + return Void(); + } + + buffer_handle_t buffer; + err = buf_mgr_->AllocateBuffer(desc, &buffer, 0, true); + if (err != Error::NONE) { + hidl_cb(err, false); + } else { + hidl_cb(err, true); + } + return Void(); } @@ -281,10 +299,10 @@ Return QtiMapper::getMapperExtensions(QtiMapper::getMapperExtensions_cb hi // When we are in passthrough mode, this method is used // by hidl to obtain the SP HAL object -IMapper_2_1 *HIDL_FETCH_IMapper(const char * /* name */) { +IMapper_3_0 *HIDL_FETCH_IMapper(const char * /* name */) { ALOGD_IF(DEBUG, "Fetching IMapper from QtiMapper"); auto mapper = new QtiMapper(); - return static_cast(mapper); + return static_cast(mapper); } IQtiMapper *HIDL_FETCH_IQtiMapper(const char * /* name */) { diff --git a/gralloc/QtiMapper.h b/gralloc/QtiMapper.h index 7302e5e3..09e29c0b 100644 --- a/gralloc/QtiMapper.h +++ b/gralloc/QtiMapper.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -32,7 +32,7 @@ #include #include -#include +#include #include "QtiMapperExtensions.h" #include "gr_buf_mgr.h" @@ -51,29 +51,27 @@ using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; using ::android::hardware::Return; using ::android::hardware::Void; -using ::android::hardware::graphics::common::V1_1::PixelFormat; -using ::android::hardware::graphics::mapper::V2_0::Error; -using ::android::hardware::graphics::mapper::V2_0::IMapper; -using ::android::hardware::graphics::mapper::V2_0::YCbCrLayout; +using ::android::hardware::graphics::common::V1_2::PixelFormat; +using ::android::hardware::graphics::mapper::V3_0::Error; +using ::android::hardware::graphics::mapper::V3_0::IMapper; +using ::android::hardware::graphics::mapper::V3_0::YCbCrLayout; using ::android::hidl::base::V1_0::DebugInfo; using ::android::hidl::base::V1_0::IBase; using gralloc::BufferManager; -using ::vendor::qti::hardware::display::mapper::V2_0::IQtiMapper; +using ::vendor::qti::hardware::display::mapper::V3_0::IQtiMapper; using ::vendor::qti::hardware::display::mapperextensions::V1_1::IQtiMapperExtensions; using ::vendor::qti::hardware::display::mapperextensions::V1_1::implementation::QtiMapperExtensions; -using IMapper_2_1 = android::hardware::graphics::mapper::V2_1::IMapper; -using BufferDescriptorInfo_2_0 = -android::hardware::graphics::mapper::V2_0::IMapper::BufferDescriptorInfo; -using BufferDescriptorInfo_2_1 = -android::hardware::graphics::mapper::V2_1::IMapper::BufferDescriptorInfo; -using IMapperBufferDescriptor = android::hardware::graphics::mapper::V2_0::BufferDescriptor; +using IMapper_3_0 = android::hardware::graphics::mapper::V3_0::IMapper; +using BufferDescriptorInfo_3_0 = + android::hardware::graphics::mapper::V3_0::IMapper::BufferDescriptorInfo; +using IMapperBufferDescriptor = android::hardware::graphics::mapper::V3_0::BufferDescriptor; class QtiMapper : public IQtiMapper { public: QtiMapper(); // Methods from ::android::hardware::graphics::mapper::V2_0::IMapper follow. - Return createDescriptor(const BufferDescriptorInfo_2_0 &descriptor_info, + Return createDescriptor(const BufferDescriptorInfo_3_0 &descriptor_info, createDescriptor_cb hidl_cb) override; Return importBuffer(const hidl_handle &raw_handle, importBuffer_cb hidl_cb) override; Return freeBuffer(void *buffer) override; @@ -84,27 +82,27 @@ class QtiMapper : public IQtiMapper { Return unlock(void *buffer, unlock_cb hidl_cb) override; // Methods from ::android::hardware::graphics::mapper::V2_1::IMapper follow. - Return validateBufferSize(void* buffer, - const BufferDescriptorInfo_2_1& descriptorInfo, + Return validateBufferSize(void *buffer, const BufferDescriptorInfo_3_0 &descriptorInfo, uint32_t stride) override; - Return getTransportSize(void* buffer, IMapper_2_1::getTransportSize_cb hidl_cb) override; - Return createDescriptor_2_1(const BufferDescriptorInfo_2_1& descriptorInfo, - createDescriptor_2_1_cb _hidl_cb) override; + Return getTransportSize(void *buffer, IMapper_3_0::getTransportSize_cb hidl_cb) override; + + Return isSupported(const BufferDescriptorInfo_3_0 &descriptor_info, + IMapper_3_0::isSupported_cb hidl_cb) override; Return getMapperExtensions(getMapperExtensions_cb hidl_cb); sp extensions_ = nullptr; private: BufferManager *buf_mgr_ = nullptr; - Error CreateDescriptor(const BufferDescriptorInfo_2_1& descriptor_info, - IMapperBufferDescriptor * descriptor); + Error CreateDescriptor(const BufferDescriptorInfo_3_0 &descriptor_info, + IMapperBufferDescriptor *descriptor); bool ValidDescriptor(const IMapper::BufferDescriptorInfo &bd); bool GetFenceFd(const hidl_handle &fence_handle, int *outFenceFd); void WaitFenceFd(int fence_fd); Error LockBuffer(void *buffer, uint64_t usage, const hidl_handle &acquire_fence); }; -extern "C" IMapper_2_1 *HIDL_FETCH_IMapper(const char *name); +extern "C" IMapper_3_0 *HIDL_FETCH_IMapper(const char *name); extern "C" IQtiMapper *HIDL_FETCH_IQtiMapper(const char *name); } // namespace implementation diff --git a/gralloc/QtiMapperExtensions.h b/gralloc/QtiMapperExtensions.h index b3333123..b3c05009 100644 --- a/gralloc/QtiMapperExtensions.h +++ b/gralloc/QtiMapperExtensions.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -51,8 +51,8 @@ using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; using ::android::hardware::Return; using ::android::hardware::Void; -using ::android::hardware::graphics::common::V1_1::PixelFormat; -using ::android::hardware::graphics::mapper::V2_0::IMapper; +using ::android::hardware::graphics::common::V1_2::PixelFormat; +using ::android::hardware::graphics::mapper::V3_0::IMapper; using ::android::hidl::base::V1_0::DebugInfo; using ::android::hidl::base::V1_0::IBase; using gralloc::BufferManager; diff --git a/gralloc/gr_buf_descriptor.h b/gralloc/gr_buf_descriptor.h index 2d426da2..f608d8ad 100644 --- a/gralloc/gr_buf_descriptor.h +++ b/gralloc/gr_buf_descriptor.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2018, 2020 The Linux Foundation. All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -30,13 +30,13 @@ #ifndef __GR_BUF_DESCRIPTOR_H__ #define __GR_BUF_DESCRIPTOR_H__ -#include +#include #include namespace gralloc { -using android::hardware::graphics::mapper::V2_0::Error; -using android::hardware::graphics::mapper::V2_1::IMapper; using android::hardware::hidl_vec; +using android::hardware::graphics::mapper::V3_0::Error; +using android::hardware::graphics::mapper::V3_0::IMapper; const uint32_t kBufferDescriptorSize = 7; const uint32_t kMagicVersion = 0x76312E30; // v1.0 diff --git a/gralloc/gr_buf_mgr.cpp b/gralloc/gr_buf_mgr.cpp index cd36c137..e0538628 100644 --- a/gralloc/gr_buf_mgr.cpp +++ b/gralloc/gr_buf_mgr.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2018, 2020 The Linux Foundation. All rights reserved. * Not a Contribution * * Copyright (C) 2010 The Android Open Source Project @@ -262,7 +262,7 @@ Error BufferManager::UnlockBuffer(const private_handle_t *handle) { } Error BufferManager::AllocateBuffer(const BufferDescriptor &descriptor, buffer_handle_t *handle, - unsigned int bufferSize) { + unsigned int bufferSize, bool testAlloc) { if (!handle) return Error::BAD_BUFFER; std::lock_guard buffer_lock(buffer_lock_); @@ -286,6 +286,10 @@ Error BufferManager::AllocateBuffer(const BufferDescriptor &descriptor, buffer_h return Error::BAD_DESCRIPTOR; } + if (testAlloc) { + return Error::NONE; + } + size = (bufferSize >= size) ? bufferSize : size; uint64_t flags = 0; auto page_size = UINT(getpagesize()); diff --git a/gralloc/gr_buf_mgr.h b/gralloc/gr_buf_mgr.h index 6c5f365d..5f0f8962 100644 --- a/gralloc/gr_buf_mgr.h +++ b/gralloc/gr_buf_mgr.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2018, The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2018, 2020 The Linux Foundation. All rights reserved. * Not a Contribution * * Copyright (C) 2008 The Android Open Source Project @@ -33,14 +33,14 @@ namespace gralloc { -using android::hardware::graphics::mapper::V2_0::Error; +using android::hardware::graphics::mapper::V3_0::Error; class BufferManager { public: ~BufferManager(); Error AllocateBuffer(const BufferDescriptor &descriptor, buffer_handle_t *handle, - unsigned int bufferSize = 0); + unsigned int bufferSize = 0, bool testAlloc = false); Error RetainBuffer(private_handle_t const *hnd); Error ReleaseBuffer(private_handle_t const *hnd); Error LockBuffer(const private_handle_t *hnd, uint64_t usage); diff --git a/gralloc/gr_utils.cpp b/gralloc/gr_utils.cpp index 2f8f5505..997c8b94 100644 --- a/gralloc/gr_utils.cpp +++ b/gralloc/gr_utils.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2020, The Linux Foundation. All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -235,6 +235,32 @@ bool IsGPUFlagSupported(uint64_t usage) { return ret; } +int GetBpp(int format) { + if (IsUncompressedRGBFormat(format)) { + return GetBppForUncompressedRGB(format); + } + switch (format) { + case HAL_PIXEL_FORMAT_COMPRESSED_RGBA_ASTC_4x4_KHR: + case HAL_PIXEL_FORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: + case HAL_PIXEL_FORMAT_RAW8: + case HAL_PIXEL_FORMAT_Y8: + return 1; + case HAL_PIXEL_FORMAT_RAW16: + case HAL_PIXEL_FORMAT_Y16: + case HAL_PIXEL_FORMAT_YCbCr_422_SP: + case HAL_PIXEL_FORMAT_YCrCb_422_SP: + case HAL_PIXEL_FORMAT_YCbCr_422_I: + case HAL_PIXEL_FORMAT_YCrCb_422_I: + case HAL_PIXEL_FORMAT_CbYCrY_422_I: + return 2; + case HAL_PIXEL_FORMAT_YCbCr_420_P010_VENUS: + case HAL_PIXEL_FORMAT_YCbCr_420_P010: + return 3; + default: + return -1; + } +} + // Returns the final buffer size meant to be allocated with ion unsigned int GetSize(const BufferInfo &info, unsigned int alignedw, unsigned int alignedh) { unsigned int size = 0; diff --git a/gralloc/gr_utils.h b/gralloc/gr_utils.h index 39d7e9bd..6b86ee63 100644 --- a/gralloc/gr_utils.h +++ b/gralloc/gr_utils.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2016,2018-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2016,2018-2020, The Linux Foundation. All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -30,7 +30,7 @@ #ifndef __GR_UTILS_H__ #define __GR_UTILS_H__ -#include +#include #include "gralloc_priv.h" #include "qdMetaData.h" @@ -132,6 +132,7 @@ uint32_t GetBppForUncompressedRGB(int format); bool CpuCanAccess(uint64_t usage); bool CpuCanRead(uint64_t usage); bool CpuCanWrite(uint64_t usage); +int GetBpp(int format); unsigned int GetSize(const BufferInfo &d, unsigned int alignedw, unsigned int alignedh); int GetBufferSizeAndDimensions(const BufferInfo &d, unsigned int *size, unsigned int *alignedw, unsigned int *alignedh); diff --git a/gralloc/service.cpp b/gralloc/service.cpp index ecc86805..3431a1d6 100644 --- a/gralloc/service.cpp +++ b/gralloc/service.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -31,8 +31,8 @@ using android::hardware::configureRpcThreadpool; using android::hardware::joinRpcThreadpool; -using vendor::qti::hardware::display::allocator::V1_0::IQtiAllocator; -using vendor::qti::hardware::display::allocator::V1_0::implementation::QtiAllocator; +using vendor::qti::hardware::display::allocator::V3_0::IQtiAllocator; +using vendor::qti::hardware::display::allocator::V3_0::implementation::QtiAllocator; int main(int, char **) { android::sp service = new QtiAllocator(); -- cgit v1.2.3