Skip to content

Commit

Permalink
gralloc: Upgrade mapper and allocator to v3.0
Browse files Browse the repository at this point in the history
CRs-Fixed: 2445393
Change-Id: I8c44ab63ca81523bb6acb75e8ae878cc7466e139
  • Loading branch information
Tharaga Balachandran authored and Gerrit - the friendly Code Review server committed Sep 29, 2019
1 parent 1240021 commit 887bed4
Show file tree
Hide file tree
Showing 16 changed files with 128 additions and 73 deletions.
3 changes: 3 additions & 0 deletions CleanSpec.mk
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,6 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/include/qcom/display)

# Clean old allocator rc file
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/[email protected])

$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/[email protected])
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib64/hw/[email protected])
4 changes: 2 additions & 2 deletions config/display-product.mk
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Display product definitions
PRODUCT_PACKAGES += \
android.hardware.graphics.mapper@2.0-impl-qti-display \
android.hardware.graphics.mapper@3.0-impl-qti-display \
vendor.qti.hardware.display.allocator-service \
vendor.qti.hardware.display.composer-service \
[email protected] \
Expand All @@ -24,7 +24,7 @@ PRODUCT_PACKAGES += \
[email protected] \
[email protected] \
[email protected] \
[email protected].vendor \
[email protected] \
modetest

#QDCM calibration xml file for 2k panel
Expand Down
21 changes: 13 additions & 8 deletions gralloc/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ LOCAL_HEADER_LIBRARIES := display_headers
LOCAL_SHARED_LIBRARIES := $(common_libs) libqdMetaData libsync libgrallocutils \
libgralloccore \
[email protected] \
[email protected]
[email protected] \
[email protected]
LOCAL_CFLAGS := $(common_flags) $(qmaa_flags) -DLOG_TAG=\"qdgralloc\" -Wall -Werror
LOCAL_CLANG := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps)
Expand All @@ -39,7 +40,8 @@ LOCAL_C_INCLUDES := $(common_includes) $(kernel_includes)
LOCAL_HEADER_LIBRARIES := display_headers
LOCAL_SHARED_LIBRARIES := $(common_libs) libqdMetaData libdl \
[email protected] \
[email protected]
[email protected] \
[email protected]
LOCAL_CFLAGS := $(common_flags) $(qmaa_flags) -DLOG_TAG=\"qdgralloc\" -Wno-sign-conversion
LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps)
LOCAL_SRC_FILES := gr_utils.cpp gr_adreno_info.cpp gr_camera_info.cpp
Expand All @@ -58,15 +60,16 @@ LOCAL_C_INCLUDES := $(common_includes) \

LOCAL_HEADER_LIBRARIES := display_headers
LOCAL_SHARED_LIBRARIES := $(common_libs) libqdMetaData libdl libgrallocutils libion \
[email protected]
[email protected] \
[email protected]
LOCAL_CFLAGS := $(common_flags) $(qmaa_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
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_SANITIZE := integer_overflow
LOCAL_VENDOR_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
Expand All @@ -80,11 +83,12 @@ LOCAL_SHARED_LIBRARIES := $(common_libs) \
libgrallocutils \
libgralloccore \
libsync \
vendor.qti.hardware.display.mapper@2.0 \
vendor.qti.hardware.display.mapper@3.0 \
[email protected] \
[email protected] \
[email protected] \
[email protected]
[email protected] \
[email protected]
LOCAL_CFLAGS := $(common_flags) $(qmaa_flags) -DLOG_TAG=\"qdgralloc\" -Wno-sign-conversion
LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps)
LOCAL_SRC_FILES := QtiMapper.cpp QtiMapperExtensions.cpp
Expand All @@ -105,9 +109,10 @@ LOCAL_SHARED_LIBRARIES := $(common_libs) \
libqdMetaData \
libgrallocutils \
libgralloccore \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
android.hardware.graphics.allocator@2.0
android.hardware.graphics.allocator@3.0
LOCAL_CFLAGS := -DLOG_TAG=\"qdgralloc\" $(common_flags) $(qmaa_flags)
LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps)
LOCAL_C_INCLUDES := $(common_includes) $(kernel_includes)
Expand Down
4 changes: 2 additions & 2 deletions gralloc/QtiAllocator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down
18 changes: 9 additions & 9 deletions gralloc/QtiAllocator.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
#include <vendor/qti/hardware/display/allocator/1.0/IQtiAllocator.h>
#include <vendor/qti/hardware/display/allocator/3.0/IQtiAllocator.h>

#include "gr_buf_mgr.h"

Expand All @@ -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:
Expand All @@ -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
Expand Down
50 changes: 34 additions & 16 deletions gralloc/QtiMapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<int32_t>(bd.format) <= 0) ||
bd.layerCount <= 0) {
return false;
Expand All @@ -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",
Expand All @@ -76,17 +76,17 @@ Error QtiMapper::CreateDescriptor(const BufferDescriptorInfo_2_1& descriptor_inf
}

// Methods from ::android::hardware::graphics::mapper::V2_0::IMapper follow.
Return<void> QtiMapper::createDescriptor(const BufferDescriptorInfo_2_0 &descriptor_info,
Return<void> 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<PixelFormat>(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();
}
Expand Down Expand Up @@ -177,13 +177,13 @@ Return<void> 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<void *>(hnd->base);
hidl_cb(Error::NONE, out_data);
hidl_cb(err, out_data, gralloc::GetBpp(hnd->format), hnd->width);
return Void();
}

Expand Down Expand Up @@ -222,8 +222,8 @@ Return<void> QtiMapper::unlock(void *buffer, unlock_cb hidl_cb) {
return Void();
}

Return<Error> QtiMapper::validateBufferSize(void* buffer,
const BufferDescriptorInfo_2_1& descriptor_info,
Return<Error> QtiMapper::validateBufferSize(void *buffer,
const BufferDescriptorInfo_3_0 &descriptor_info,
uint32_t /*stride*/) {
auto err = Error::BAD_BUFFER;
auto hnd = static_cast<private_handle_t *>(buffer);
Expand All @@ -240,8 +240,7 @@ Return<Error> QtiMapper::validateBufferSize(void* buffer,
return err;
}

Return<void> QtiMapper::getTransportSize(void *buffer,
IMapper_2_1::getTransportSize_cb hidl_cb) {
Return<void> QtiMapper::getTransportSize(void *buffer, IMapper_3_0::getTransportSize_cb hidl_cb) {
auto err = Error::BAD_BUFFER;
auto hnd = static_cast<private_handle_t *>(buffer);
uint32_t num_fds = 0, num_ints = 0;
Expand All @@ -260,11 +259,30 @@ Return<void> QtiMapper::getTransportSize(void *buffer,
return Void();
}

Return<void> QtiMapper::createDescriptor_2_1(const BufferDescriptorInfo_2_1& descriptor_info,
IMapper_2_1::createDescriptor_2_1_cb hidl_cb) {
Return<void> 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();
}

Expand All @@ -281,10 +299,10 @@ Return<void> 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<IMapper_2_1 *>(mapper);
return static_cast<IMapper_3_0 *>(mapper);
}

IQtiMapper *HIDL_FETCH_IQtiMapper(const char * /* name */) {
Expand Down
40 changes: 19 additions & 21 deletions gralloc/QtiMapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
#include <vendor/qti/hardware/display/mapper/2.0/IQtiMapper.h>
#include <vendor/qti/hardware/display/mapper/3.0/IQtiMapper.h>

#include "QtiMapperExtensions.h"
#include "gr_buf_mgr.h"
Expand All @@ -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::mapperextensions::V1_1::IQtiMapperExtensions;
using ::vendor::qti::hardware::display::mapperextensions::V1_1::implementation::QtiMapperExtensions;
using ::vendor::qti::hardware::display::mapper::V3_0::IQtiMapper;

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<void> createDescriptor(const BufferDescriptorInfo_2_0 &descriptor_info,
Return<void> createDescriptor(const BufferDescriptorInfo_3_0 &descriptor_info,
createDescriptor_cb hidl_cb) override;
Return<void> importBuffer(const hidl_handle &raw_handle, importBuffer_cb hidl_cb) override;
Return<Error> freeBuffer(void *buffer) override;
Expand All @@ -84,27 +82,27 @@ class QtiMapper : public IQtiMapper {
Return<void> unlock(void *buffer, unlock_cb hidl_cb) override;

// Methods from ::android::hardware::graphics::mapper::V2_1::IMapper follow.
Return<Error> validateBufferSize(void* buffer,
const BufferDescriptorInfo_2_1& descriptorInfo,
Return<Error> validateBufferSize(void *buffer, const BufferDescriptorInfo_3_0 &descriptorInfo,
uint32_t stride) override;
Return<void> getTransportSize(void* buffer, IMapper_2_1::getTransportSize_cb hidl_cb) override;
Return<void> createDescriptor_2_1(const BufferDescriptorInfo_2_1& descriptorInfo,
createDescriptor_2_1_cb _hidl_cb) override;
Return<void> getTransportSize(void *buffer, IMapper_3_0::getTransportSize_cb hidl_cb) override;

Return<void> isSupported(const BufferDescriptorInfo_3_0 &descriptor_info,
IMapper_3_0::isSupported_cb hidl_cb) override;

Return<void> getMapperExtensions(getMapperExtensions_cb hidl_cb);
sp<mapperextensions::V1_1::IQtiMapperExtensions> 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
Expand Down
4 changes: 2 additions & 2 deletions gralloc/QtiMapperExtensions.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions gralloc/android.hardware.graphics.mapper-impl-qti-display.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<hal format="hidl">
<name>vendor.qti.hardware.display.mapper</name>
<transport arch="32+64">passthrough</transport>
<version>2.0</version>
<version>3.0</version>
<interface>
<name>IQtiMapper</name>
<instance>default</instance>
Expand All @@ -40,7 +40,7 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<name>android.hardware.graphics.mapper</name>
<transport arch="32+64">passthrough</transport>
<impl level="generic"></impl>
<version>2.1</version>
<version>3.0</version>
<interface>
<name>IMapper</name>
<instance>default</instance>
Expand Down
Loading

0 comments on commit 887bed4

Please sign in to comment.