add pepper hwc resources 13/263813/1
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 10 Sep 2021 07:39:52 +0000 (16:39 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Fri, 10 Sep 2021 07:39:52 +0000 (16:39 +0900)
pepper_hwc : pepper hw compositor.
pepper_hwc_entry : hwc entry related to the render item.

Change-Id: I7ad7a4bd83348a5b973460e7c324a7b0f5bbc1ec

src/lib/pepper/pepper-internal.h
src/lib/pepper/pepper-output-backend.h
src/lib/pepper/pepper.h

index 3e0bbaf..479636d 100644 (file)
@@ -43,6 +43,7 @@
 typedef struct pepper_wl_region        pepper_wl_region_t;
 typedef struct pepper_surface_state pepper_surface_state_t;
 typedef struct pepper_plane_entry   pepper_plane_entry_t;
+typedef struct pepper_hwc_entry     pepper_hwc_entry_t;
 typedef struct pepper_input         pepper_input_t;
 typedef struct pepper_touch_point   pepper_touch_point_t;
 
@@ -96,6 +97,7 @@ struct pepper_compositor {
        pepper_bool_t            clock_used;
 
        struct sockaddr_un       addr;
+       pepper_bool_t            use_hwc;
 };
 
 void
@@ -134,6 +136,8 @@ struct pepper_output {
                uint32_t                total_time;
        } frame;
 
+       pepper_hwc_t               *hwc;
+
        pepper_list_t               plane_list;
        pepper_list_t               view_list;
 };
@@ -499,6 +503,18 @@ struct pepper_plane_entry {
        pepper_list_t               link;
 };
 
+struct pepper_hwc_entry {
+       pepper_render_item_t            base;
+
+       pepper_hwc_t                   *hwc;
+       pepper_bool_t                   need_damage;
+       pepper_bool_t                   need_transform_update;
+
+       pepper_bool_t                   active; // active means that this entry is active on render target.
+
+       pepper_list_t                   link;
+};
+
 enum {
        PEPPER_VIEW_GEOMETRY_DIRTY      = 0x00000001,
        PEPPER_VIEW_ACTIVE_DIRTY        = 0x00000002,
@@ -543,6 +559,7 @@ struct pepper_view {
        /* Output info. */
        uint32_t                    output_overlap;
        pepper_plane_entry_t        plane_entries[PEPPER_MAX_OUTPUT_COUNT];
+       pepper_hwc_entry_t          hwc_entries[PEPPER_MAX_OUTPUT_COUNT];
 
        /* Temporary resource. */
        pepper_list_t               link;
@@ -579,6 +596,16 @@ void
 pepper_plane_update(pepper_plane_t *plane, const pepper_list_t *view_list,
                                        pepper_region_t *clip);
 
+struct pepper_hwc {
+       pepper_object_t     base;
+       pepper_output_t    *output;
+
+       pepper_list_t     entry_list; // source render_list on the render_target
+       pepper_region_t   damage_region;
+       pepper_region_t   clip_region;
+};
+
+
 void
 pepper_surface_flush_damage(pepper_surface_t *surface);
 
index 532f438..c38e269 100644 (file)
@@ -36,6 +36,13 @@ extern "C" {
 #endif
 
 /**
+ * @typedef pepper_hwc_t
+ *
+ * A #pepper_hwc_t is a hw compositor of an output.
+ */
+typedef struct pepper_hwc             pepper_hwc_t;
+
+/**
  * @typedef pepper_plane_t
  *
  * A #pepper_plane_t is a separate layer of an output stacked from bottom to top.
index b23af84..597b4e9 100644 (file)
@@ -59,6 +59,7 @@ extern "C" {
  *  - #pepper_touch_t
  *  - #pepper_input_device_t
  *  - #pepper_plane_t (used internally)
+ *  - #pepper_hwc_t   (used internally)
  *
  * Casting the above objects into #pepper_object_t is safe.
  */
@@ -285,6 +286,7 @@ typedef enum pepper_object_type {
        PEPPER_OBJECT_TOUCH,        /**< #pepper_touch_t */
        PEPPER_OBJECT_INPUT_DEVICE, /**< #pepper_input_device_t */
        PEPPER_OBJECT_PLANE,        /**< #pepper_plane_t (internally used) */
+       PEPPER_OBJECT_HWC,          /**< #pepper_hwc_t (internally used) */
        PEPPER_OBJECT_SUBCOMPOSITOR,/**< #pepper_compositor_t */
 } pepper_object_type_t;