aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.ci/.gitlab-ci-clang-tidy-fine.sh1
-rw-r--r--compositor/DrmDisplayComposition.cpp12
-rw-r--r--compositor/DrmDisplayCompositor.cpp4
-rw-r--r--drm/DrmFbImporter.cpp1
-rw-r--r--drm/DrmPlane.cpp2
-rw-r--r--include/drmhwcomposer.h55
-rw-r--r--utils/hwcutils.cpp50
7 files changed, 17 insertions, 108 deletions
diff --git a/.ci/.gitlab-ci-clang-tidy-fine.sh b/.ci/.gitlab-ci-clang-tidy-fine.sh
index 644f621..c23bf0a 100755
--- a/.ci/.gitlab-ci-clang-tidy-fine.sh
+++ b/.ci/.gitlab-ci-clang-tidy-fine.sh
@@ -3,6 +3,7 @@
. ./.ci/.common.sh
TIDY_FILES=(
+drm/DrmFbImporter.h
utils/log.h
utils/properties.h
)
diff --git a/compositor/DrmDisplayComposition.cpp b/compositor/DrmDisplayComposition.cpp
index 7008e9c..13760ef 100644
--- a/compositor/DrmDisplayComposition.cpp
+++ b/compositor/DrmDisplayComposition.cpp
@@ -156,14 +156,10 @@ static const char *DPMSModeToString(int dpms_mode) {
}
}
-static void DumpBuffer(const DrmHwcBuffer &buffer, std::ostringstream *out) {
- if (!buffer) {
- *out << "buffer=<invalid>";
- return;
- }
-
+static void DumpBuffer(const DrmHwcLayer &layer, std::ostringstream *out) {
*out << "buffer[w/h/format]=";
- *out << buffer->width << "/" << buffer->height << "/" << buffer->format;
+ *out << layer.buffer_info.width << "/" << layer.buffer_info.height << "/"
+ << layer.buffer_info.format;
}
static void DumpTransform(uint32_t transform, std::ostringstream *out) {
@@ -249,7 +245,7 @@ void DrmDisplayComposition::Dump(std::ostringstream *out) const {
const DrmHwcLayer &layer = layers_[i];
*out << " [" << i << "] ";
- DumpBuffer(layer.buffer, out);
+ DumpBuffer(layer, out);
if (layer.protected_usage())
*out << " protected";
diff --git a/compositor/DrmDisplayCompositor.cpp b/compositor/DrmDisplayCompositor.cpp
index 586ebe0..4e7fe0d 100644
--- a/compositor/DrmDisplayCompositor.cpp
+++ b/compositor/DrmDisplayCompositor.cpp
@@ -286,11 +286,11 @@ int DrmDisplayCompositor::CommitFrame(DrmDisplayComposition *display_comp,
break;
}
DrmHwcLayer &layer = layers[source_layers.front()];
- if (!layer.buffer) {
+ if (!layer.FbIdHandle) {
ALOGE("Expected a valid framebuffer for pset");
break;
}
- fb_id = layer.buffer.FbIdHandle->GetFbId();
+ fb_id = layer.FbIdHandle->GetFbId();
fence_fd = layer.acquire_fence.get();
display_frame = layer.display_frame;
source_crop = layer.source_crop;
diff --git a/drm/DrmFbImporter.cpp b/drm/DrmFbImporter.cpp
index 2b5ddd4..592fc48 100644
--- a/drm/DrmFbImporter.cpp
+++ b/drm/DrmFbImporter.cpp
@@ -19,7 +19,6 @@
#include "DrmFbImporter.h"
-#include <gralloc_handle.h>
#include <hardware/gralloc.h>
#include <xf86drm.h>
#include <xf86drmMode.h>
diff --git a/drm/DrmPlane.cpp b/drm/DrmPlane.cpp
index 5443e7e..6433fb6 100644
--- a/drm/DrmPlane.cpp
+++ b/drm/DrmPlane.cpp
@@ -231,7 +231,7 @@ bool DrmPlane::IsValidForLayer(DrmHwcLayer *layer) {
}
}
- uint32_t format = layer->buffer->format;
+ uint32_t format = layer->buffer_info.format;
if (!IsFormatSupported(format)) {
ALOGV("Plane %d does not supports %c%c%c%c format", id_, format,
format >> 8, format >> 16, format >> 24);
diff --git a/include/drmhwcomposer.h b/include/drmhwcomposer.h
index 2ec1154..6955306 100644
--- a/include/drmhwcomposer.h
+++ b/include/drmhwcomposer.h
@@ -28,57 +28,9 @@
#include "drm/DrmFbImporter.h"
#include "drmhwcgralloc.h"
-class DrmFbIdHandle;
-struct hwc_import_context;
-
-int hwc_import_init(struct hwc_import_context **ctx);
-int hwc_import_destroy(struct hwc_import_context *ctx);
-
-int hwc_import_bo_create(int fd, struct hwc_import_context *ctx,
- buffer_handle_t buf, struct hwc_drm_bo *bo);
-bool hwc_import_bo_release(int fd, struct hwc_import_context *ctx,
- struct hwc_drm_bo *bo);
-
namespace android {
-class DrmHwcBuffer {
- public:
- DrmHwcBuffer() = default;
- DrmHwcBuffer(const hwc_drm_bo &bo, DrmDevice *drmDevice)
- : bo_(bo), mDrmDevice(drmDevice) {
- }
- DrmHwcBuffer(DrmHwcBuffer &&rhs) : bo_(rhs.bo_), mDrmDevice(rhs.mDrmDevice) {
- rhs.mDrmDevice = nullptr;
- FbIdHandle.swap(rhs.FbIdHandle);
- }
-
- ~DrmHwcBuffer() {
- }
-
- DrmHwcBuffer &operator=(DrmHwcBuffer &&rhs) {
- FbIdHandle.swap(rhs.FbIdHandle);
- mDrmDevice = rhs.mDrmDevice;
- rhs.mDrmDevice = nullptr;
- bo_ = rhs.bo_;
- return *this;
- }
-
- operator bool() const {
- return mDrmDevice != NULL;
- }
-
- const hwc_drm_bo *operator->() const;
-
- void Clear();
-
- std::shared_ptr<DrmFbIdHandle> FbIdHandle;
-
- int ImportBuffer(buffer_handle_t handle, DrmDevice *drmDevice);
-
- private:
- hwc_drm_bo bo_;
- DrmDevice *mDrmDevice;
-};
+class DrmFbIdHandle;
enum DrmHwcTransform {
kIdentity = 0,
@@ -97,8 +49,10 @@ enum class DrmHwcBlending : int32_t {
struct DrmHwcLayer {
buffer_handle_t sf_handle = NULL;
+ hwc_drm_bo_t buffer_info{};
+ std::shared_ptr<DrmFbIdHandle> FbIdHandle;
+
int gralloc_buffer_usage = 0;
- DrmHwcBuffer buffer;
uint32_t transform;
DrmHwcBlending blending = DrmHwcBlending::kNone;
uint16_t alpha = 0xffff;
@@ -110,7 +64,6 @@ struct DrmHwcLayer {
OutputFd release_fence;
int ImportBuffer(DrmDevice *drmDevice);
- int InitFromDrmHwcLayer(DrmHwcLayer *layer, DrmDevice *drmDevice);
void SetTransform(int32_t sf_transform);
diff --git a/utils/hwcutils.cpp b/utils/hwcutils.cpp
index 593003a..6de6500 100644
--- a/utils/hwcutils.cpp
+++ b/utils/hwcutils.cpp
@@ -29,65 +29,25 @@
namespace android {
-const hwc_drm_bo *DrmHwcBuffer::operator->() const {
- if (mDrmDevice == nullptr) {
- ALOGE("Access of non-existent BO");
- exit(1);
- return nullptr;
- }
- return &bo_;
-}
-
-void DrmHwcBuffer::Clear() {
- FbIdHandle.reset();
- mDrmDevice = nullptr;
-}
-
-int DrmHwcBuffer::ImportBuffer(buffer_handle_t handle, DrmDevice *drmDevice) {
- hwc_drm_bo tmp_bo{};
+int DrmHwcLayer::ImportBuffer(DrmDevice *drmDevice) {
+ buffer_info = hwc_drm_bo_t{};
- int ret = BufferInfoGetter::GetInstance()->ConvertBoInfo(handle, &tmp_bo);
+ int ret = BufferInfoGetter::GetInstance()->ConvertBoInfo(sf_handle,
+ &buffer_info);
if (ret) {
ALOGE("Failed to convert buffer info %d", ret);
return ret;
}
- FbIdHandle = drmDevice->GetDrmFbImporter().GetOrCreateFbId(&tmp_bo);
+ FbIdHandle = drmDevice->GetDrmFbImporter().GetOrCreateFbId(&buffer_info);
if (!FbIdHandle) {
ALOGE("Failed to import buffer");
return -EINVAL;
}
- mDrmDevice = drmDevice;
- bo_ = tmp_bo;
-
return 0;
}
-int DrmHwcLayer::ImportBuffer(DrmDevice *drmDevice) {
- int ret = buffer.ImportBuffer(sf_handle, drmDevice);
- if (ret)
- return ret;
-
- const hwc_drm_bo *bo = buffer.operator->();
-
- gralloc_buffer_usage = bo->usage;
-
- return 0;
-}
-
-int DrmHwcLayer::InitFromDrmHwcLayer(DrmHwcLayer *src_layer,
- DrmDevice *drmDevice) {
- blending = src_layer->blending;
- sf_handle = src_layer->sf_handle;
- acquire_fence = -1;
- display_frame = src_layer->display_frame;
- alpha = src_layer->alpha;
- source_crop = src_layer->source_crop;
- transform = src_layer->transform;
- return ImportBuffer(drmDevice);
-}
-
void DrmHwcLayer::SetTransform(int32_t sf_transform) {
transform = 0;
// 270* and 180* cannot be combined with flips. More specifically, they