a2f0ce8f7363f432a019b34a4a3d4c15742becbf
[platform/adaptation/libtdm-drm.git] / src / libhal-backend-tdm-drm / tdm_backend_drm.h
1 #ifndef _TDM_DRM_H_
2 #define _TDM_DRM_H_
3
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7
8 #include "tdm_backend_drm_types.h"
9
10 /* display funcs */
11 hal_tdm_error     drm_display_get_capability(hal_tdm_display *display, hal_tdm_caps_display *caps);
12 hal_tdm_error     drm_display_get_pp_capability(hal_tdm_display *display, hal_tdm_caps_pp *caps);
13 hal_tdm_output  **drm_display_get_outputs(hal_tdm_display *display, int *count, hal_tdm_error *error);
14 hal_tdm_error    drm_display_get_fd(hal_tdm_display *display, int *fd);
15 hal_tdm_error    drm_display_handle_events(hal_tdm_display *display);
16 hal_tdm_pp*      drm_display_create_pp(hal_tdm_display *display, hal_tdm_error *error);
17
18 /* output funcs */
19 hal_tdm_error   drm_output_get_capability(hal_tdm_output *output, hal_tdm_caps_output *caps);
20 hal_tdm_error   drm_output_set_property(hal_tdm_output *output, unsigned int id, hal_tdm_value value);
21 hal_tdm_error   drm_output_get_property(hal_tdm_output *output, unsigned int id, hal_tdm_value *value);
22 hal_tdm_error   drm_output_wait_vblank(hal_tdm_output *output, int interval, int sync, void *user_data);
23 hal_tdm_error   drm_output_set_vblank_handler(hal_tdm_output *output, hal_tdm_output_vblank_handler func);
24 hal_tdm_error   drm_output_commit(hal_tdm_output *output, int sync, void *user_data);
25 hal_tdm_error   drm_output_set_commit_handler(hal_tdm_output *output, hal_tdm_output_commit_handler func);
26 hal_tdm_error   drm_output_set_dpms(hal_tdm_output *output, hal_tdm_output_dpms dpms_value);
27 hal_tdm_error   drm_output_get_dpms(hal_tdm_output *output, hal_tdm_output_dpms *dpms_value);
28 hal_tdm_error   drm_output_set_mode(hal_tdm_output *output, const hal_tdm_output_mode *mode);
29 hal_tdm_error   drm_output_get_mode(hal_tdm_output *output, const hal_tdm_output_mode **mode);
30 hal_tdm_error   drm_output_set_status_handler(hal_tdm_output *output, hal_tdm_output_status_handler func, void *user_data);
31 hal_tdm_hwc    *drm_output_get_hwc(hal_tdm_output *output, hal_tdm_error *error);
32
33 /* hwc funcs */
34 hal_tdm_hwc_window   *drm_hwc_create_window(hal_tdm_hwc *hwc, hal_tdm_error *error);
35 hal_tdm_error         drm_hwc_get_video_supported_formats(hal_tdm_hwc *hwc, const tbm_format **formats, int *count);
36 hal_tdm_error         drm_hwc_get_capabilities(hal_tdm_hwc *hwc, hal_tdm_hwc_capability *capabilities);
37 hal_tdm_error         drm_hwc_get_available_properties(hal_tdm_hwc *hwc, const hal_tdm_prop **props, int *count);
38 tbm_surface_queue_h   drm_hwc_get_client_target_buffer_queue(hal_tdm_hwc *hwc, hal_tdm_error *error);
39 hal_tdm_error         drm_hwc_set_client_target_buffer(hal_tdm_hwc *hwc, tbm_surface_h buffer, hal_tdm_region damage);
40 hal_tdm_error         drm_hwc_validate(hal_tdm_hwc *hwc, hal_tdm_hwc_window **composited_wnds, uint32_t num_wnds, uint32_t *num_types);
41 hal_tdm_error         drm_hwc_get_changed_composition_types(hal_tdm_hwc *hwc, uint32_t *num_elements, hal_tdm_hwc_window **hwc_wnds, hal_tdm_hwc_window_composition *composition_types);
42 hal_tdm_error         drm_hwc_accept_validation(hal_tdm_hwc *hwc);
43 hal_tdm_error         drm_hwc_commit(hal_tdm_hwc *hwc, int sync, void *user_data);
44 hal_tdm_error         drm_hwc_set_commit_handler(hal_tdm_hwc *hwc, hal_tdm_hwc_commit_handler func);
45
46 /* hwc_window funcs */
47 void           drm_hwc_window_destroy(hal_tdm_hwc_window *hwc_window);
48 hal_tdm_error  drm_hwc_window_set_composition_type(hal_tdm_hwc_window *hwc_window, hal_tdm_hwc_window_composition composition_type);
49 hal_tdm_error  drm_hwc_window_set_buffer_damage(hal_tdm_hwc_window *hwc_window, hal_tdm_region damage);
50 hal_tdm_error  drm_hwc_window_set_info(hal_tdm_hwc_window *hwc_window, hal_tdm_hwc_window_info *info);
51 hal_tdm_error  drm_hwc_window_set_buffer(hal_tdm_hwc_window *hwc_window, tbm_surface_h surface);
52 hal_tdm_error  drm_hwc_window_set_property(hal_tdm_hwc_window *hwc_window, unsigned int id, hal_tdm_value value);
53 hal_tdm_error  drm_hwc_window_get_property(hal_tdm_hwc_window *hwc_window, unsigned int id, hal_tdm_value *value);
54 hal_tdm_error  drm_hwc_window_get_constraints(hal_tdm_hwc_window *hwc_window, int *constraints);
55 hal_tdm_error  drm_hwc_window_set_name(hal_tdm_hwc_window *hwc_window, const char *name);
56 hal_tdm_error  drm_hwc_window_set_cursor_image(hal_tdm_hwc_window *hwc_window, int width, int height, int stride, void *ptr);
57
58 /* pp funcs */
59 void           drm_pp_destroy(hal_tdm_pp *pp);
60 hal_tdm_error  drm_pp_set_info(hal_tdm_pp *pp, hal_tdm_info_pp *info);
61 hal_tdm_error  drm_pp_attach(hal_tdm_pp *pp, tbm_surface_h src, tbm_surface_h dst);
62 hal_tdm_error  drm_pp_commit(hal_tdm_pp *pp);
63 hal_tdm_error  drm_pp_set_done_handler(hal_tdm_pp *pp, hal_tdm_pp_done_handler func, void *user_data);
64
65 /* drm display */
66 hal_tdm_error  tdm_drm_display_create_output_list(tdm_drm_display *display_data);
67 void           tdm_drm_display_destroy_output_list(tdm_drm_display *display_data);
68 void           tdm_drm_display_update_output_status(tdm_drm_display *display_data);
69 hal_tdm_error  tdm_drm_display_create_layer_list(tdm_drm_display *display_data);
70
71 /* drm output */
72 tdm_drm_layer * drm_output_data_get_layer_data(tdm_drm_output *output_data, int layer_zops);
73
74 /* drm hwc */
75 hal_tdm_error drm_hwc_initailize_target_window(tdm_drm_hwc *hwc_data);
76 hal_tdm_error drm_hwc_target_window_set_info(tdm_drm_hwc *hwc_data, int width, int height);
77
78 /* drm layer */
79 hal_tdm_error   drm_layer_get_capability(tdm_drm_layer *layer, tdm_drm_caps_layer *caps);
80 hal_tdm_error   drm_layer_set_property(tdm_drm_layer *layer, unsigned int id, hal_tdm_value value);
81 hal_tdm_error   drm_layer_get_property(tdm_drm_layer *layer, unsigned int id, hal_tdm_value *value);
82 hal_tdm_error   drm_layer_set_info(tdm_drm_layer *layer, tdm_drm_layer_info *info);
83 hal_tdm_error   drm_layer_get_info(tdm_drm_layer *layer, tdm_drm_layer_info *info);
84 hal_tdm_error   drm_layer_set_buffer(tdm_drm_layer *layer, tbm_surface_h buffer);
85 hal_tdm_error   drm_layer_unset_buffer(tdm_drm_layer *layer);
86
87 /* drm pp */
88 hal_tdm_error   tdm_drm_pp_get_capability(tdm_drm_display *display_data, hal_tdm_caps_pp *caps);
89 hal_tdm_pp     *tdm_drm_pp_create(tdm_drm_display *display_data, hal_tdm_error *error);
90 void            tdm_drm_pp_handler(unsigned int prop_id, unsigned int *buf_idx, unsigned int tv_sec, unsigned int tv_usec, void *data);
91 void            tdm_drm_pp_cb(int fd, unsigned int prop_id, unsigned int *buf_idx, unsigned int tv_sec, unsigned int tv_usec, void *user_data);
92
93 /* drm format */
94 uint32_t    tdm_drm_format_to_drm_format(tbm_format format);
95 tbm_format  tdm_drm_format_to_tbm_format(uint32_t format);
96
97 #endif /* _TDM_DRM_H_ */