input: Rename weston_device_repick() to weston_seat_repick()
[platform/upstream/weston.git] / src / rpi-bcm-stubs.h
1 /*
2 Copyright (c) 2012, Broadcom Europe Ltd
3 All rights reserved.
4
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7     * Redistributions of source code must retain the above copyright
8       notice, this list of conditions and the following disclaimer.
9     * Redistributions in binary form must reproduce the above copyright
10       notice, this list of conditions and the following disclaimer in the
11       documentation and/or other materials provided with the distribution.
12     * Neither the name of the copyright holder nor the
13       names of its contributors may be used to endorse or promote products
14       derived from this software without specific prior written permission.
15
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28 /*
29  * This file provides just enough types and stubs, so that the rpi-backend
30  * can be built without the real headers and libraries of the Raspberry Pi.
31  *
32  * This file CANNOT be used to build a working rpi-backend, it is intended
33  * only for build-testing, when the proper headers are not available.
34  */
35
36 #ifndef RPI_BCM_STUBS
37 #define RPI_BCM_STUBS
38
39 #include <stdint.h>
40
41 /* from /opt/vc/include/bcm_host.h */
42
43 static inline void bcm_host_init(void) {}
44 static inline void bcm_host_deinit(void) {}
45
46 /* from /opt/vc/include/interface/vctypes/vc_display_types.h */
47
48 typedef enum
49 {
50         VCOS_DISPLAY_INPUT_FORMAT_INVALID = 0,
51 } DISPLAY_INPUT_FORMAT_T;
52
53 /* from /opt/vc/include/interface/vctypes/vc_image_types.h */
54
55 typedef struct tag_VC_RECT_T {
56         int32_t x;
57         int32_t y;
58         int32_t width;
59         int32_t height;
60 } VC_RECT_T;
61
62 typedef enum {
63         VC_IMAGE_ROT0,
64 } VC_IMAGE_TRANSFORM_T;
65
66 typedef enum
67 {
68         VC_IMAGE_MIN = 0,
69         /* these are not the right values: */
70         VC_IMAGE_ARGB8888,
71         VC_IMAGE_XRGB8888,
72 } VC_IMAGE_TYPE_T;
73
74 /* from /opt/vc/include/interface/vmcs_host/vc_dispmanx_types.h */
75
76 typedef uint32_t DISPMANX_DISPLAY_HANDLE_T;
77 typedef uint32_t DISPMANX_UPDATE_HANDLE_T;
78 typedef uint32_t DISPMANX_ELEMENT_HANDLE_T;
79 typedef uint32_t DISPMANX_RESOURCE_HANDLE_T;
80 typedef uint32_t DISPMANX_PROTECTION_T;
81
82 #define DISPMANX_NO_HANDLE 0
83 #define DISPMANX_PROTECTION_NONE  0
84 #define DISPMANX_ID_HDMI      2
85
86 typedef enum {
87         /* Bottom 2 bits sets the alpha mode */
88         DISPMANX_FLAGS_ALPHA_FROM_SOURCE = 0,
89         DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS = 1,
90         DISPMANX_FLAGS_ALPHA_FIXED_NON_ZERO = 2,
91         DISPMANX_FLAGS_ALPHA_FIXED_EXCEED_0X07 = 3,
92
93         DISPMANX_FLAGS_ALPHA_PREMULT = 1 << 16,
94         DISPMANX_FLAGS_ALPHA_MIX = 1 << 17
95 } DISPMANX_FLAGS_ALPHA_T;
96
97 typedef struct {
98         DISPMANX_FLAGS_ALPHA_T flags;
99         uint32_t opacity;
100         DISPMANX_RESOURCE_HANDLE_T mask;
101 } VC_DISPMANX_ALPHA_T;
102
103 typedef struct {
104         int32_t width;
105         int32_t height;
106         VC_IMAGE_TRANSFORM_T transform;
107         DISPLAY_INPUT_FORMAT_T input_format;
108 } DISPMANX_MODEINFO_T;
109
110 typedef enum {
111         DISPMANX_NO_ROTATE = 0,
112 } DISPMANX_TRANSFORM_T;
113
114 typedef struct {
115         uint32_t dummy;
116 } DISPMANX_CLAMP_T;
117
118 typedef void (*DISPMANX_CALLBACK_FUNC_T)(DISPMANX_UPDATE_HANDLE_T u,
119                                          void *arg);
120
121 /* from /opt/vc/include/interface/vmcs_host/vc_dispmanx.h */
122
123 static inline int
124 vc_dispmanx_rect_set(VC_RECT_T *rect, uint32_t x_offset, uint32_t y_offset,
125                      uint32_t width, uint32_t height)
126 {
127         rect->x = x_offset;
128         rect->y = y_offset;
129         rect->width = width;
130         rect->height = height;
131         return 0;
132 }
133
134 static inline DISPMANX_RESOURCE_HANDLE_T
135 vc_dispmanx_resource_create(VC_IMAGE_TYPE_T type, uint32_t width,
136                             uint32_t height, uint32_t *native_image_handle)
137 {
138         return DISPMANX_NO_HANDLE;
139 }
140
141 static inline int
142 vc_dispmanx_resource_write_data(DISPMANX_RESOURCE_HANDLE_T res,
143                                 VC_IMAGE_TYPE_T src_type,
144                                 int src_pitch,
145                                 void *src_address,
146                                 const VC_RECT_T *rect)
147 {
148         return -1;
149 }
150
151 static inline int
152 vc_dispmanx_resource_write_data_rect(DISPMANX_RESOURCE_HANDLE_T handle,
153                                      VC_IMAGE_TYPE_T src_type,
154                                      int src_pitch,
155                                      void *src_address,
156                                      const VC_RECT_T *src_rect,
157                                      uint32_t dst_x,
158                                      uint32_t dst_y)
159 {
160         return -1;
161 }
162
163 static inline int
164 vc_dispmanx_resource_delete(DISPMANX_RESOURCE_HANDLE_T res)
165 {
166         return -1;
167 }
168
169 static inline DISPMANX_DISPLAY_HANDLE_T
170 vc_dispmanx_display_open(uint32_t device)
171 {
172         return DISPMANX_NO_HANDLE;
173 }
174
175 static inline int
176 vc_dispmanx_display_close(DISPMANX_DISPLAY_HANDLE_T display)
177 {
178         return -1;
179 }
180
181 static inline int
182 vc_dispmanx_display_get_info(DISPMANX_DISPLAY_HANDLE_T display,
183                              DISPMANX_MODEINFO_T *pinfo)
184 {
185         return -1;
186 }
187
188 static inline DISPMANX_UPDATE_HANDLE_T
189 vc_dispmanx_update_start(int32_t priority)
190 {
191         return DISPMANX_NO_HANDLE;
192 }
193
194 static inline DISPMANX_ELEMENT_HANDLE_T
195 vc_dispmanx_element_add(DISPMANX_UPDATE_HANDLE_T update,
196                         DISPMANX_DISPLAY_HANDLE_T display,
197                         int32_t layer,
198                         const VC_RECT_T *dest_rect,
199                         DISPMANX_RESOURCE_HANDLE_T src,
200                         const VC_RECT_T *src_rect,
201                         DISPMANX_PROTECTION_T protection,
202                         VC_DISPMANX_ALPHA_T *alpha,
203                         DISPMANX_CLAMP_T *clamp,
204                         DISPMANX_TRANSFORM_T transform)
205 {
206         return DISPMANX_NO_HANDLE;
207 }
208
209 static inline int
210 vc_dispmanx_element_change_source(DISPMANX_UPDATE_HANDLE_T update,
211                                   DISPMANX_ELEMENT_HANDLE_T element,
212                                   DISPMANX_RESOURCE_HANDLE_T src)
213 {
214         return -1;
215 }
216
217 static inline int
218 vc_dispmanx_element_modified(DISPMANX_UPDATE_HANDLE_T update,
219                              DISPMANX_ELEMENT_HANDLE_T element,
220                              const VC_RECT_T *rect)
221 {
222         return -1;
223 }
224
225 static inline int
226 vc_dispmanx_element_remove(DISPMANX_UPDATE_HANDLE_T update,
227                            DISPMANX_ELEMENT_HANDLE_T element)
228 {
229         return -1;
230 }
231
232 static inline int
233 vc_dispmanx_update_submit(DISPMANX_UPDATE_HANDLE_T update,
234                           DISPMANX_CALLBACK_FUNC_T cb_func, void *cb_arg)
235 {
236         return -1;
237 }
238
239 static inline int
240 vc_dispmanx_update_submit_sync(DISPMANX_UPDATE_HANDLE_T update)
241 {
242         return -1;
243 }
244
245 static inline int
246 vc_dispmanx_element_change_attributes(DISPMANX_UPDATE_HANDLE_T update,
247                                       DISPMANX_ELEMENT_HANDLE_T element,
248                                       uint32_t change_flags,
249                                       int32_t layer,
250                                       uint8_t opacity,
251                                       const VC_RECT_T *dest_rect,
252                                       const VC_RECT_T *src_rect,
253                                       DISPMANX_RESOURCE_HANDLE_T mask,
254                                       VC_IMAGE_TRANSFORM_T transform)
255 {
256         return -1;
257 }
258
259 /* from /opt/vc/include/EGL/eglplatform.h */
260
261 typedef struct {
262         DISPMANX_ELEMENT_HANDLE_T element;
263         int width;
264         int height;
265 } EGL_DISPMANX_WINDOW_T;
266
267 #endif /* RPI_BCM_STUBS */