OSDN Git Service

drm_hwcomposer: Stop importing native_handle_t into the mapper
authorRoman Stratiienko <r.stratiienko@gmail.com>
Wed, 10 Feb 2021 10:11:16 +0000 (12:11 +0200)
committerRoman Stratiienko <r.stratiienko@gmail.com>
Wed, 19 May 2021 16:31:29 +0000 (19:31 +0300)
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 <r.stratiienko@gmail.com>
include/drmhwcomposer.h
utils/hwcutils.cpp

index e090dc6..2ec1154 100644 (file)
@@ -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;
index d9b8a87..593003a 100644 (file)
@@ -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;