From f0b3e28682d9f11787ddf364f52fcb54c616c968 Mon Sep 17 00:00:00 2001 From: Roman Stratiienko Date: Wed, 10 Feb 2021 12:11:16 +0200 Subject: [PATCH] drm_hwcomposer: Stop importing native_handle_t into the mapper Composer service is already importing buffers from binder pipe into the mapper and caches them making native handles valid for a whole composition processing cycle. Signed-off-by: Roman Stratiienko --- include/drmhwcomposer.h | 38 -------------------------------------- utils/hwcutils.cpp | 39 --------------------------------------- 2 files changed, 77 deletions(-) diff --git a/include/drmhwcomposer.h b/include/drmhwcomposer.h index e090dc6..2ec1154 100644 --- a/include/drmhwcomposer.h +++ b/include/drmhwcomposer.h @@ -80,39 +80,6 @@ class DrmHwcBuffer { DrmDevice *mDrmDevice; }; -class DrmHwcNativeHandle { - public: - DrmHwcNativeHandle() = default; - - DrmHwcNativeHandle(native_handle_t *handle) : handle_(handle) { - } - - DrmHwcNativeHandle(DrmHwcNativeHandle &&rhs) { - handle_ = rhs.handle_; - rhs.handle_ = NULL; - } - - ~DrmHwcNativeHandle(); - - DrmHwcNativeHandle &operator=(DrmHwcNativeHandle &&rhs) { - Clear(); - handle_ = rhs.handle_; - rhs.handle_ = NULL; - return *this; - } - - int CopyBufferHandle(buffer_handle_t handle); - - void Clear(); - - buffer_handle_t get() const { - return handle_; - } - - private: - native_handle_t *handle_ = NULL; -}; - enum DrmHwcTransform { kIdentity = 0, kFlipH = 1 << 0, @@ -132,7 +99,6 @@ struct DrmHwcLayer { buffer_handle_t sf_handle = NULL; int gralloc_buffer_usage = 0; DrmHwcBuffer buffer; - DrmHwcNativeHandle handle; uint32_t transform; DrmHwcBlending blending = DrmHwcBlending::kNone; uint16_t alpha = 0xffff; @@ -148,10 +114,6 @@ struct DrmHwcLayer { void SetTransform(int32_t sf_transform); - buffer_handle_t get_usable_handle() const { - return handle.get() != NULL ? handle.get() : sf_handle; - } - bool protected_usage() const { return (gralloc_buffer_usage & GRALLOC_USAGE_PROTECTED) == GRALLOC_USAGE_PROTECTED; diff --git a/utils/hwcutils.cpp b/utils/hwcutils.cpp index d9b8a87..593003a 100644 --- a/utils/hwcutils.cpp +++ b/utils/hwcutils.cpp @@ -64,41 +64,6 @@ int DrmHwcBuffer::ImportBuffer(buffer_handle_t handle, DrmDevice *drmDevice) { return 0; } -int DrmHwcNativeHandle::CopyBufferHandle(buffer_handle_t handle) { - native_handle_t *handle_copy = nullptr; - GraphicBufferMapper &gm(GraphicBufferMapper::get()); - int ret = 0; - - ret = gm.getGrallocMapper().importBuffer(handle, - (buffer_handle_t *)&handle_copy); - - if (ret) { - ALOGE("Failed to import buffer handle %d", ret); - return ret; - } - - Clear(); - - handle_ = handle_copy; - - return 0; -} - -DrmHwcNativeHandle::~DrmHwcNativeHandle() { - Clear(); -} - -void DrmHwcNativeHandle::Clear() { - if (handle_ != nullptr) { - GraphicBufferMapper &gm(GraphicBufferMapper::get()); - int ret = gm.freeBuffer(handle_); - if (ret) { - ALOGE("Failed to free buffer handle %d", ret); - } - handle_ = nullptr; - } -} - int DrmHwcLayer::ImportBuffer(DrmDevice *drmDevice) { int ret = buffer.ImportBuffer(sf_handle, drmDevice); if (ret) @@ -106,10 +71,6 @@ int DrmHwcLayer::ImportBuffer(DrmDevice *drmDevice) { const hwc_drm_bo *bo = buffer.operator->(); - ret = handle.CopyBufferHandle(sf_handle); - if (ret) - return ret; - gralloc_buffer_usage = bo->usage; return 0; -- 2.11.0