2 Copyright (c) 2012, Broadcom Europe Ltd
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.
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.
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.
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.
41 /* from /opt/vc/include/bcm_host.h */
43 static inline void bcm_host_init(void) {}
44 static inline void bcm_host_deinit(void) {}
47 /* from /opt/vc/include/interface/vmcs_host/vc_dispservice_defs.h */
49 #define TRANSFORM_HFLIP (1<<0)
50 #define TRANSFORM_VFLIP (1<<1)
51 #define TRANSFORM_TRANSPOSE (1<<2)
54 /* from /opt/vc/include/interface/vctypes/vc_display_types.h */
58 VCOS_DISPLAY_INPUT_FORMAT_INVALID = 0,
59 } DISPLAY_INPUT_FORMAT_T;
61 /* from /opt/vc/include/interface/vctypes/vc_image_types.h */
63 typedef struct tag_VC_RECT_T {
72 /* these are not the right values: */
77 VC_IMAGE_MIRROR_ROT90,
78 VC_IMAGE_MIRROR_ROT180,
79 VC_IMAGE_MIRROR_ROT270,
80 } VC_IMAGE_TRANSFORM_T;
85 /* these are not the right values: */
91 /* from /opt/vc/include/interface/vmcs_host/vc_dispmanx_types.h */
93 typedef uint32_t DISPMANX_DISPLAY_HANDLE_T;
94 typedef uint32_t DISPMANX_UPDATE_HANDLE_T;
95 typedef uint32_t DISPMANX_ELEMENT_HANDLE_T;
96 typedef uint32_t DISPMANX_RESOURCE_HANDLE_T;
97 typedef uint32_t DISPMANX_PROTECTION_T;
99 #define DISPMANX_NO_HANDLE 0
100 #define DISPMANX_PROTECTION_NONE 0
101 #define DISPMANX_ID_HDMI 2
104 /* Bottom 2 bits sets the alpha mode */
105 DISPMANX_FLAGS_ALPHA_FROM_SOURCE = 0,
106 DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS = 1,
107 DISPMANX_FLAGS_ALPHA_FIXED_NON_ZERO = 2,
108 DISPMANX_FLAGS_ALPHA_FIXED_EXCEED_0X07 = 3,
110 DISPMANX_FLAGS_ALPHA_PREMULT = 1 << 16,
111 DISPMANX_FLAGS_ALPHA_MIX = 1 << 17
112 } DISPMANX_FLAGS_ALPHA_T;
115 DISPMANX_FLAGS_ALPHA_T flags;
117 DISPMANX_RESOURCE_HANDLE_T mask;
118 } VC_DISPMANX_ALPHA_T;
123 VC_IMAGE_TRANSFORM_T transform;
124 DISPLAY_INPUT_FORMAT_T input_format;
125 } DISPMANX_MODEINFO_T;
128 DISPMANX_NO_ROTATE = 0,
129 DISPMANX_ROTATE_90 = 1,
130 DISPMANX_ROTATE_180 = 2,
131 DISPMANX_ROTATE_270 = 3,
133 DISPMANX_FLIP_HRIZ = 1 << 16,
134 DISPMANX_FLIP_VERT = 1 << 17
135 } DISPMANX_TRANSFORM_T;
141 typedef void (*DISPMANX_CALLBACK_FUNC_T)(DISPMANX_UPDATE_HANDLE_T u,
144 /* from /opt/vc/include/interface/vmcs_host/vc_dispmanx.h */
147 vc_dispmanx_rect_set(VC_RECT_T *rect, uint32_t x_offset, uint32_t y_offset,
148 uint32_t width, uint32_t height)
153 rect->height = height;
157 static inline DISPMANX_RESOURCE_HANDLE_T
158 vc_dispmanx_resource_create(VC_IMAGE_TYPE_T type, uint32_t width,
159 uint32_t height, uint32_t *native_image_handle)
161 return DISPMANX_NO_HANDLE;
165 vc_dispmanx_resource_write_data(DISPMANX_RESOURCE_HANDLE_T res,
166 VC_IMAGE_TYPE_T src_type,
169 const VC_RECT_T *rect)
175 vc_dispmanx_resource_write_data_rect(DISPMANX_RESOURCE_HANDLE_T handle,
176 VC_IMAGE_TYPE_T src_type,
179 const VC_RECT_T *src_rect,
187 vc_dispmanx_resource_read_data(DISPMANX_RESOURCE_HANDLE_T handle,
188 const VC_RECT_T *p_rect,
196 vc_dispmanx_resource_delete(DISPMANX_RESOURCE_HANDLE_T res)
201 static inline DISPMANX_DISPLAY_HANDLE_T
202 vc_dispmanx_display_open(uint32_t device)
204 return DISPMANX_NO_HANDLE;
208 vc_dispmanx_display_close(DISPMANX_DISPLAY_HANDLE_T display)
214 vc_dispmanx_display_get_info(DISPMANX_DISPLAY_HANDLE_T display,
215 DISPMANX_MODEINFO_T *pinfo)
220 static inline DISPMANX_UPDATE_HANDLE_T
221 vc_dispmanx_update_start(int32_t priority)
223 return DISPMANX_NO_HANDLE;
226 static inline DISPMANX_ELEMENT_HANDLE_T
227 vc_dispmanx_element_add(DISPMANX_UPDATE_HANDLE_T update,
228 DISPMANX_DISPLAY_HANDLE_T display,
230 const VC_RECT_T *dest_rect,
231 DISPMANX_RESOURCE_HANDLE_T src,
232 const VC_RECT_T *src_rect,
233 DISPMANX_PROTECTION_T protection,
234 VC_DISPMANX_ALPHA_T *alpha,
235 DISPMANX_CLAMP_T *clamp,
236 DISPMANX_TRANSFORM_T transform)
238 return DISPMANX_NO_HANDLE;
242 vc_dispmanx_element_change_source(DISPMANX_UPDATE_HANDLE_T update,
243 DISPMANX_ELEMENT_HANDLE_T element,
244 DISPMANX_RESOURCE_HANDLE_T src)
250 vc_dispmanx_element_modified(DISPMANX_UPDATE_HANDLE_T update,
251 DISPMANX_ELEMENT_HANDLE_T element,
252 const VC_RECT_T *rect)
258 vc_dispmanx_element_remove(DISPMANX_UPDATE_HANDLE_T update,
259 DISPMANX_ELEMENT_HANDLE_T element)
265 vc_dispmanx_update_submit(DISPMANX_UPDATE_HANDLE_T update,
266 DISPMANX_CALLBACK_FUNC_T cb_func, void *cb_arg)
272 vc_dispmanx_update_submit_sync(DISPMANX_UPDATE_HANDLE_T update)
278 vc_dispmanx_element_change_attributes(DISPMANX_UPDATE_HANDLE_T update,
279 DISPMANX_ELEMENT_HANDLE_T element,
280 uint32_t change_flags,
283 const VC_RECT_T *dest_rect,
284 const VC_RECT_T *src_rect,
285 DISPMANX_RESOURCE_HANDLE_T mask,
286 VC_IMAGE_TRANSFORM_T transform)
292 vc_dispmanx_snapshot(DISPMANX_DISPLAY_HANDLE_T display,
293 DISPMANX_RESOURCE_HANDLE_T snapshot_resource,
294 VC_IMAGE_TRANSFORM_T transform)
300 static inline DISPMANX_RESOURCE_HANDLE_T
301 vc_dispmanx_get_handle_from_wl_buffer(struct wl_resource *_buffer)
303 return DISPMANX_NO_HANDLE;
307 vc_dispmanx_set_wl_buffer_in_use(struct wl_resource *_buffer, int in_use)
312 vc_dispmanx_element_set_opaque_rect(DISPMANX_UPDATE_HANDLE_T update,
313 DISPMANX_ELEMENT_HANDLE_T element,
314 const VC_RECT_T *opaque_rect)
319 /* from /opt/vc/include/EGL/eglplatform.h */
322 DISPMANX_ELEMENT_HANDLE_T element;
325 } EGL_DISPMANX_WINDOW_T;
327 #endif /* RPI_BCM_STUBS */