drm_hwcomposer: refactor platform directory
Motivation:
Platform term meaning used in drm_hwcomposer does not correspond to the
content of the platform directory. Platform directory consists of:
1. Buffer information getters for different gralloc (currently called platform).
2. Composition planner logic (which has flaws and should be reworked into
layer->plane mapping during validation stage logic).
3. DrmGenericImpoter with reference counting logic.
Android-11 IMapper@4 metadata API offers a generic way to access buffer
information which makes other gralloc buffer information getters obsolete.
Legacy getters should be maintained for some time until all known users
will migrate to Mapper@4 API.
Implementation:
1. Split 'PlatformImporter' logic to 'Importer' only and 'Buffer Getter' logic.
a. Remove buffer_handle_t parameter from ImportBuffer(). Instead user should
get BufferInfo using ConvertBoInfo to struct hwc_drm_bo_t, then use it for
ImportBuffer().
b. Move DrmGenericImporter.{cpp/h} into the drm directory.
2. Isolate planner code in single file and move it to compositor directory as
compositor/Planner.{cpp/h}
3. Rename platform definition
a. Rename platform directory to bufferinfo.
b. Rename/move bufferinfo/platorm*.{cpp,h} getters to
bufferinfo/legacy/BufferInfo*.{cpp,h}. Align class names/includes.
4. Split legacy/metadata getters logic.
a. Apply existing bufferinfogetter base class only for legacy getters.
b. Combine legacy/generic gettera under new base class.
c. Create a placeholder for generic(metadata) getter.
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
diff --git a/Android.bp b/Android.bp
index c2efee6..170bd31 100644
--- a/Android.bp
+++ b/Android.bp
@@ -82,22 +82,25 @@
srcs: [
"DrmHwcTwo.cpp",
+ "bufferinfo/BufferInfoGetter.cpp",
+ "bufferinfo/BufferInfoMapperMetadata.cpp",
+
"compositor/DrmDisplayComposition.cpp",
"compositor/DrmDisplayCompositor.cpp",
+ "compositor/Planner.cpp",
"drm/DrmConnector.cpp",
"drm/DrmCrtc.cpp",
"drm/DrmDevice.cpp",
"drm/DrmEncoder.cpp",
"drm/DrmEventListener.cpp",
+ "drm/DrmGenericImporter.cpp",
"drm/DrmMode.cpp",
"drm/DrmPlane.cpp",
"drm/DrmProperty.cpp",
"drm/ResourceManager.cpp",
"drm/VSyncWorker.cpp",
- "platform/platform.cpp",
-
"utils/autolock.cpp",
"utils/hwcutils.cpp",
@@ -112,53 +115,37 @@
name: "hwcomposer.drm",
defaults: ["hwcomposer.drm_defaults"],
whole_static_libs: ["drm_hwcomposer"],
- srcs: ["platform/platformdrmgeneric.cpp",
- "platform/platformlibdrm.cpp"],
+ srcs: ["bufferinfo/legacy/BufferInfoLibdrm.cpp"],
}
cc_library_shared {
name: "hwcomposer.drm_minigbm",
defaults: ["hwcomposer.drm_defaults"],
whole_static_libs: ["drm_hwcomposer"],
- srcs: [
- "platform/platformdrmgeneric.cpp",
- "platform/platformminigbm.cpp",
- ],
+ srcs: ["bufferinfo/legacy/BufferInfoMinigbm.cpp"],
include_dirs: ["external/minigbm/cros_gralloc"],
}
// Used by hwcomposer.drm_imagination
filegroup {
name: "drm_hwcomposer_platformimagination",
- srcs: [
- "platform/platformdrmgeneric.cpp",
- "platform/platformimagination.cpp",
- ],
+ srcs: ["bufferinfo/legacy/BufferInfoImagination.cpp"],
}
// Used by hwcomposer.drm_hikey and hwcomposer.drm_hikey960
filegroup {
name: "drm_hwcomposer_platformhisi",
- srcs: [
- "platform/platformdrmgeneric.cpp",
- "platform/platformhisi.cpp",
- ],
+ srcs: ["bufferinfo/legacy/BufferInfoMaliHisi.cpp"],
}
// Used by hwcomposer.drm_meson
filegroup {
name: "drm_hwcomposer_platformmeson",
- srcs: [
- "platform/platformdrmgeneric.cpp",
- "platform/platformmeson.cpp",
- ],
+ srcs: ["bufferinfo/legacy/BufferInfoMaliMeson.cpp"],
}
// Used by hwcomposer.drm_mediatek
filegroup {
name: "drm_hwcomposer_platformmediatek",
- srcs: [
- "platform/platformdrmgeneric.cpp",
- "platform/platformmediatek.cpp",
- ],
+ srcs: ["bufferinfo/legacy/BufferInfoMaliMediatek.cpp"],
}