From: SooChan Lim Date: Fri, 10 Sep 2021 07:39:52 +0000 (+0900) Subject: add pepper hwc resources X-Git-Tag: submit/tizen_6.5/20210604.093338~28 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c7bce5648dab2b146772be684542a9a6f80f9832;p=platform%2Fcore%2Fuifw%2Fpepper.git add pepper hwc resources pepper_hwc : pepper hw compositor. pepper_hwc_entry : hwc entry related to the render item. Change-Id: I7ad7a4bd83348a5b973460e7c324a7b0f5bbc1ec --- diff --git a/src/lib/pepper/pepper-internal.h b/src/lib/pepper/pepper-internal.h index 3e0bbaf..479636d 100644 --- a/src/lib/pepper/pepper-internal.h +++ b/src/lib/pepper/pepper-internal.h @@ -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); diff --git a/src/lib/pepper/pepper-output-backend.h b/src/lib/pepper/pepper-output-backend.h index 532f438..c38e269 100644 --- a/src/lib/pepper/pepper-output-backend.h +++ b/src/lib/pepper/pepper-output-backend.h @@ -35,6 +35,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 * diff --git a/src/lib/pepper/pepper.h b/src/lib/pepper/pepper.h index b23af84..597b4e9 100644 --- a/src/lib/pepper/pepper.h +++ b/src/lib/pepper/pepper.h @@ -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;