change buffer type from tdm_buffer to tbm_surface
[platform/core/uifw/libtdm.git] / include / tdm_types.h
1 /**************************************************************************
2
3 libtdm
4
5 Copyright 2015 Samsung Electronics co., Ltd. All Rights Reserved.
6
7 Contact: Eunchul Kim <chulspro.kim@samsung.com>,
8          JinYoung Jeon <jy0.jeon@samsung.com>,
9          Taeheon Kim <th908.kim@samsung.com>,
10          YoungJun Cho <yj44.cho@samsung.com>,
11          SooChan Lim <sc1.lim@samsung.com>,
12          Boram Park <sc1.lim@samsung.com>
13
14 Permission is hereby granted, free of charge, to any person obtaining a
15 copy of this software and associated documentation files (the
16 "Software"), to deal in the Software without restriction, including
17 without limitation the rights to use, copy, modify, merge, publish,
18 distribute, sub license, and/or sell copies of the Software, and to
19 permit persons to whom the Software is furnished to do so, subject to
20 the following conditions:
21
22 The above copyright notice and this permission notice (including the
23 next paragraph) shall be included in all copies or substantial portions
24 of the Software.
25
26 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
29 IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
30 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
31 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
32 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33
34 **************************************************************************/
35
36 #ifndef _TDM_TYPES_H_
37 #define _TDM_TYPES_H_
38
39 #include <tbm_surface.h>
40
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44
45 #define TDM_NAME_LEN        64
46
47 typedef enum
48 {
49     TDM_ERROR_NONE                  = 0,
50     TDM_ERROR_BAD_REQUEST           = -1, //bad request
51     TDM_ERROR_OPERATION_FAILED      = -2, //operaion failed
52     TDM_ERROR_INVALID_PARAMETER     = -3, //wrong input parameter
53     TDM_ERROR_PERMISSION_DENIED     = -4, //access denied
54     TDM_ERROR_BUSY                  = -5, //hardware resource busy
55     TDM_ERROR_OUT_OF_MEMORY         = -6, //no free memory
56     TDM_ERROR_BAD_MODULE            = -7, //bad backend module
57     TDM_ERROR_NOT_IMPLEMENTED       = -8, //not implemented
58 } tdm_error;
59
60 typedef enum
61 {
62     TDM_TRANSFORM_NORMAL            = 0,
63     TDM_TRANSFORM_90                = 1,
64     TDM_TRANSFORM_180               = 2,
65     TDM_TRANSFORM_270               = 3,
66     TDM_TRANSFORM_FLIPPED           = 4,
67     TDM_TRANSFORM_FLIPPED_90        = 5,
68     TDM_TRANSFORM_FLIPPED_180       = 6,
69     TDM_TRANSFORM_FLIPPED_270       = 7,
70     TDM_TRANSFORM_MAX               = 8
71 } tdm_transform;
72
73 typedef enum
74 {
75     TDM_OUTPUT_CONN_STATUS_DISCONNECTED,
76     TDM_OUTPUT_CONN_STATUS_CONNECTED,
77     TDM_OUTPUT_CONN_STATUS_MODE_SETTED,
78     TDM_OUTPUT_CONN_STATUS_MAX,
79 } tdm_output_conn_status;
80
81 /* bit compatible with the libdrm definitions. */
82 typedef enum
83 {
84     TDM_OUTPUT_TYPE_Unknown,
85     TDM_OUTPUT_TYPE_VGA,
86     TDM_OUTPUT_TYPE_DVII,
87     TDM_OUTPUT_TYPE_DVID,
88     TDM_OUTPUT_TYPE_DVIA,
89     TDM_OUTPUT_TYPE_Composite,
90     TDM_OUTPUT_TYPE_SVIDEO,
91     TDM_OUTPUT_TYPE_LVDS,
92     TDM_OUTPUT_TYPE_Component,
93     TDM_OUTPUT_TYPE_9PinDIN,
94     TDM_OUTPUT_TYPE_DisplayPort,
95     TDM_OUTPUT_TYPE_HDMIA,
96     TDM_OUTPUT_TYPE_HDMIB,
97     TDM_OUTPUT_TYPE_TV,
98     TDM_OUTPUT_TYPE_eDP,
99     TDM_OUTPUT_TYPE_VIRTUAL,
100     TDM_OUTPUT_TYPE_DSI,
101     TDM_OUTPUT_TYPE_MAX,
102 } tdm_output_type;
103
104 /* bit compatible with the drm definitions. */
105 typedef enum
106 {
107     TDM_OUTPUT_DPMS_ON,
108     TDM_OUTPUT_DPMS_STANDBY,
109     TDM_OUTPUT_DPMS_SUSPEND,
110     TDM_OUTPUT_DPMS_OFF,
111     TDM_OUTPUT_DPMS_MAX,
112 } tdm_output_dpms;
113
114 typedef enum
115 {
116     TDM_LAYER_CAPABILITY_CURSOR         = (1<<0),
117     TDM_LAYER_CAPABILITY_PRIMARY        = (1<<1),
118     TDM_LAYER_CAPABILITY_OVERLAY        = (1<<2),
119     TDM_LAYER_CAPABILITY_SCALE          = (1<<4),
120     TDM_LAYER_CAPABILITY_TRANSFORM      = (1<<5),
121     TDM_LAYER_CAPABILITY_GRAPHIC        = (1<<8),
122     TDM_LAYER_CAPABILITY_VIDEO          = (1<<9),
123 } tdm_layer_capability;
124
125 typedef enum
126 {
127     TDM_PP_CAPABILITY_SYNC           = (1<<0),
128     TDM_PP_CAPABILITY_ASYNC          = (1<<1),
129     TDM_PP_CAPABILITY_SCALE          = (1<<4),
130     TDM_PP_CAPABILITY_TRANSFORM      = (1<<5),
131 } tdm_pp_capability;
132
133 typedef enum
134 {
135     TDM_CAPTURE_CAPABILITY_OUTPUT    = (1<<0),
136     TDM_CAPTURE_CAPABILITY_LAYER     = (1<<1),
137     TDM_CAPTURE_CAPABILITY_SCALE     = (1<<4),
138     TDM_CAPTURE_CAPABILITY_TRANSFORM = (1<<5),
139 } tdm_capture_capability;
140
141 /* bit compatible with the drm definitions. */
142 typedef enum
143 {
144     TDM_OUTPUT_MODE_TYPE_BUILTIN    = (1<<0),
145     TDM_OUTPUT_MODE_TYPE_CLOCK_C    = ((1<<1) | TDM_OUTPUT_MODE_TYPE_BUILTIN),
146     TDM_OUTPUT_MODE_TYPE_CRTC_C     = ((1<<2) | TDM_OUTPUT_MODE_TYPE_BUILTIN),
147     TDM_OUTPUT_MODE_TYPE_PREFERRED  = (1<<3),
148     TDM_OUTPUT_MODE_TYPE_DEFAULT    = (1<<4),
149     TDM_OUTPUT_MODE_TYPE_USERDEF    = (1<<5),
150     TDM_OUTPUT_MODE_TYPE_DRIVER     = (1<<6),
151 } tdm_output_mode_type;
152
153 /* bit compatible with the drm definitions. */
154 typedef enum
155 {
156     TDM_OUTPUT_MODE_FLAG_PHSYNC     = (1<<0),
157     TDM_OUTPUT_MODE_FLAG_NHSYNC     = (1<<1),
158     TDM_OUTPUT_MODE_FLAG_PVSYNC     = (1<<2),
159     TDM_OUTPUT_MODE_FLAG_NVSYNC     = (1<<3),
160     TDM_OUTPUT_MODE_FLAG_INTERLACE  = (1<<4),
161     TDM_OUTPUT_MODE_FLAG_DBLSCAN    = (1<<5),
162     TDM_OUTPUT_MODE_FLAG_CSYNC      = (1<<6),
163     TDM_OUTPUT_MODE_FLAG_PCSYNC     = (1<<7),
164     TDM_OUTPUT_MODE_FLAG_NCSYNC     = (1<<8),
165     TDM_OUTPUT_MODE_FLAG_HSKEW      = (1<<9), /* hskew provided */
166     TDM_OUTPUT_MODE_FLAG_BCAST      = (1<<10),
167     TDM_OUTPUT_MODE_FLAG_PIXMUX     = (1<<11),
168     TDM_OUTPUT_MODE_FLAG_DBLCLK     = (1<<12),
169     TDM_OUTPUT_MODE_FLAG_CLKDIV2    = (1<<13),
170 } tdm_output_mode_flag;
171
172 typedef struct _tdm_output_mode
173 {
174     unsigned int width;
175     unsigned int height;
176     unsigned int refresh;
177     unsigned int flags;
178     unsigned int type;
179     char name[TDM_NAME_LEN];
180 } tdm_output_mode;
181
182 typedef struct _tdm_prop
183 {
184     unsigned int id;
185     char name[TDM_NAME_LEN];
186 } tdm_prop;
187
188 typedef struct _tdm_size {
189     unsigned int h;
190     unsigned int v;
191 } tdm_size;
192
193 typedef struct _tdm_pos
194 {
195     unsigned int x;
196     unsigned int y;
197     unsigned int w;
198     unsigned int h;
199 } tdm_pos;
200
201 typedef union
202 {
203     void         *ptr;
204     int32_t  s32;
205     uint32_t u32;
206     int64_t  s64;
207     uint64_t u64;
208 } tdm_value;
209
210 typedef struct _tdm_info_config
211 {
212     tdm_size size;
213     tdm_pos pos;
214     tbm_format format;
215 } tdm_info_config;
216
217 typedef struct _tdm_info_layer
218 {
219     tdm_info_config src_config;
220     tdm_pos dst_pos;
221     tdm_transform transform;
222 } tdm_info_layer;
223
224 typedef struct _tdm_info_pp
225 {
226     tdm_info_config src_config;
227     tdm_info_config dst_config;
228     tdm_transform transform;
229     int sync;
230     int flags;
231 } tdm_info_pp;
232
233 typedef struct _tdm_info_capture
234 {
235     tdm_info_config dst_config;
236     tdm_transform transform;
237     int oneshot;
238     int frequency;
239     int flags;
240 } tdm_info_capture;
241
242 typedef void tdm_display;
243 typedef void tdm_output;
244 typedef void tdm_layer;
245 typedef void tdm_capture;
246 typedef void tdm_pp;
247
248 typedef void (*tdm_output_vblank_handler)(tdm_output *output, unsigned int sequence,
249                                           unsigned int tv_sec, unsigned int tv_usec, void *user_data);
250 typedef void (*tdm_output_commit_handler)(tdm_output *output, unsigned int sequence,
251                                           unsigned int tv_sec, unsigned int tv_usec, void *user_data);
252
253
254 #ifdef __cplusplus
255 }
256 #endif
257
258 #endif /* _TDM_TYPES_H_ */