#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,
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;
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 */