tdm: add pepper_tdm_hwc resources 15/263815/1
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 10 Sep 2021 08:01:34 +0000 (17:01 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Fri, 10 Sep 2021 08:01:34 +0000 (17:01 +0900)
Change-Id: Ic8e9e7adb346cc63e69aad094be9e0750a5158d1

src/lib/tdm/tdm-internal.h

index 3f4cec3cc51c216345bf99ec4449380d6ddd7410..cd69f08bc7477e1275131f163a01db59aa6de968 100644 (file)
 
 #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 */