From 923e5c97100052b351763b91ad832874e0a9d4bb Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Fri, 10 Sep 2021 17:01:34 +0900 Subject: [PATCH] tdm: add pepper_tdm_hwc resources Change-Id: Ic8e9e7adb346cc63e69aad094be9e0750a5158d1 --- src/lib/tdm/tdm-internal.h | 77 +++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/src/lib/tdm/tdm-internal.h b/src/lib/tdm/tdm-internal.h index 3f4cec3..cd69f08 100644 --- a/src/lib/tdm/tdm-internal.h +++ b/src/lib/tdm/tdm-internal.h @@ -45,8 +45,14 @@ #include "pepper-tdm.h" -typedef struct pepper_tdm_output pepper_tdm_output_t; -typedef struct pepper_tdm_plane pepper_tdm_plane_t; +typedef struct pepper_tdm_output pepper_tdm_output_t; +typedef struct pepper_tdm_plane pepper_tdm_plane_t; +typedef struct pepper_tdm_hwc pepper_tdm_hwc_t; +typedef struct pepper_tdm_hwc_window pepper_tdm_hwc_window_t; +typedef struct pepper_tdm_hwc_update_data pepper_tdm_hwc_update_data_t; +typedef struct pepper_tdm_hwc_prop pepper_tdm_hwc_prop_t; +typedef struct pepper_tdm_hwc_commit_data pepper_tdm_hwc_commit_data_t; +typedef struct pepper_tdm_hwc_window_commit_data pepper_tdm_hwc_window_commit_data_t; typedef enum tdm_render_type { TDM_RENDER_TYPE_PIXMAN, @@ -72,6 +78,7 @@ struct pepper_tdm_output { pepper_output_t *base; pepper_tdm_t *tdm; tdm_output *toutput; + pepper_tdm_hwc_t *hwc; pepper_tdm_plane_t *primary_plane; tbm_surface_queue_h tbm_surface_queue; @@ -93,5 +100,71 @@ struct pepper_tdm_plane { tdm_layer_capability caps; }; +struct pepper_tdm_hwc_update_data { + tdm_hwc_window_info info; +}; + +struct pepper_tdm_hwc_prop +{ + unsigned int id; + char name[TDM_NAME_LEN]; + tdm_value value; + + pepper_list_t link; +}; + +struct pepper_tdm_hwc { + pepper_hwc_t *base; + pepper_tdm_output_t *output; + + tdm_hwc *thwc; + tdm_hwc_capability caps; + + pepper_bool_t accept_validation; + + unsigned int num_visible_wins; + pepper_list_t *visible_window_list; + pepper_list_t window_list; +}; + +struct pepper_tdm_hwc_window { + pepper_tdm_hwc_t *hwc; + + pepper_surface_t *surface; + pepper_event_listener_t *surface_destroy_listener; + + pepper_buffer_t *buffer; + pepper_event_listener_t *buffer_destroy_listener; + int buffer_width, buffer_height; + int buffer_type; + + pepper_list_t prop_list; // property list + + tdm_hwc_window *thwc_window; + tdm_hwc_window_composition tcomposition_type; + + /* SHM buffer type. */ + struct wl_shm_buffer *shm_buffer; + + /*TBM buffer type*/ + tbm_surface_h tbm_surface; + + pepper_tdm_hwc_update_data_t current; // current tdm data + + pepper_list_t visible_window_link; + pepper_list_t link; +}; + +struct pepper_tdm_hwc_window_commit_data { + pepper_tdm_hwc_window_t *hwc_window; + pepper_list_t link; +}; + +struct pepper_tdm_hwc_commit_data { + pepper_tdm_hwc_t *hwc; + pepper_list_t window_commit_data_list; +}; + int pepper_tdm_output_init(pepper_tdm_t *tdm); + #endif /* DRM_INTERNAL_H */ -- 2.34.1