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 | #ifndef EGLEXT_BRCM_H |
29 | #define EGLEXT_BRCM_H |
30 | |
31 | #ifdef __cplusplus |
32 | extern "C" { |
33 | #endif |
34 | |
35 | #define EGL_NATIVE_PIXMAP_CLIENT_SIDE_BRCM 0x99930B0 /* eglCreateImageKHR server-side target */ |
36 | #define EGL_IMAGE_FROM_SURFACE_BRCM 0x99930B1 /* eglCreateImageKHR server-side target */ |
37 | /* Multimedia target - created by gralloc */ |
38 | #define EGL_IMAGE_BRCM_MULTIMEDIA 0x99930B2 |
39 | #define EGL_IMAGE_BRCM_DUPLICATE 0x99930B3 /* a new EGL Image pointing at the same underlying object */ |
40 | #define EGL_IMAGE_BRCM_RAW_PIXELS 0x99930B4 /* Raw YUV multimedia pixels */ |
41 | |
42 | /* Fastpath for creating greyscale textures from a single plane of a |
43 | * MMAL opaque buffers. */ |
44 | #define EGL_IMAGE_BRCM_MULTIMEDIA_Y 0x99930C0 |
45 | #define EGL_IMAGE_BRCM_MULTIMEDIA_U 0x99930C1 |
46 | #define EGL_IMAGE_BRCM_MULTIMEDIA_V 0x99930C2 |
47 | |
48 | /* EGL image buffer allocated in shared memory */ |
49 | #define EGL_IMAGE_BRCM_VCSM 0x99930C3 |
50 | struct egl_image_brcm_vcsm_info { |
51 | unsigned width; |
52 | unsigned height; |
53 | unsigned int vcsm_handle; |
54 | }; |
55 | |
56 | #ifndef EGL_BRCM_sane_choose_config |
57 | #define EGL_BRCM_sane_choose_config 1 |
58 | #endif |
59 | #if EGL_BRCM_sane_choose_config |
60 | #ifdef EGL_EGLEXT_PROTOTYPES |
61 | EGLAPI EGLBoolean EGLAPIENTRY eglSaneChooseConfigBRCM(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); |
62 | #endif /* EGL_EGLEXT_PROTOTYPES */ |
63 | typedef EGLBoolean (EGLAPIENTRYP PFNEGLSANECHOOSECONFIGBRCM)(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); |
64 | #endif |
65 | |
66 | #ifndef EGL_BRCM_global_image |
67 | #define EGL_BRCM_global_image 1 |
68 | #endif |
69 | #if EGL_BRCM_global_image |
70 | #define EGL_PIXEL_FORMAT_ARGB_8888_PRE_BRCM 0 |
71 | #define EGL_PIXEL_FORMAT_ARGB_8888_BRCM 1 |
72 | #define EGL_PIXEL_FORMAT_XRGB_8888_BRCM 2 |
73 | #define EGL_PIXEL_FORMAT_RGB_565_BRCM 3 |
74 | #define EGL_PIXEL_FORMAT_A_8_BRCM 4 |
75 | #define EGL_PIXEL_FORMAT_RENDER_GL_BRCM (1 << 3) |
76 | #define EGL_PIXEL_FORMAT_RENDER_GLES_BRCM (1 << 4) |
77 | #define EGL_PIXEL_FORMAT_RENDER_GLES2_BRCM (1 << 5) |
78 | #define EGL_PIXEL_FORMAT_RENDER_VG_BRCM (1 << 6) |
79 | #define EGL_PIXEL_FORMAT_RENDER_MASK_BRCM 0x78 |
80 | #define EGL_PIXEL_FORMAT_VG_IMAGE_BRCM (1 << 7) |
81 | #define EGL_PIXEL_FORMAT_GLES_TEXTURE_BRCM (1 << 8) |
82 | #define EGL_PIXEL_FORMAT_GLES2_TEXTURE_BRCM (1 << 9) |
83 | #define EGL_PIXEL_FORMAT_TEXTURE_MASK_BRCM 0x380 |
84 | #define EGL_PIXEL_FORMAT_USAGE_MASK_BRCM 0x3f8 |
85 | #ifdef EGL_EGLEXT_PROTOTYPES |
86 | EGLAPI void EGLAPIENTRY eglCreateGlobalImageBRCM(EGLint width, EGLint height, EGLint pixel_format, const void *data, EGLint data_stride, EGLint *id); |
87 | EGLAPI void EGLAPIENTRY eglCreateCopyGlobalImageBRCM(const EGLint *src_id, EGLint *id); |
88 | EGLAPI EGLBoolean EGLAPIENTRY eglDestroyGlobalImageBRCM(const EGLint *id); |
89 | EGLAPI EGLBoolean EGLAPIENTRY eglQueryGlobalImageBRCM(const EGLint *id, EGLint *width_height_pixel_format); |
90 | #endif /* EGL_EGLEXT_PROTOTYPES */ |
91 | typedef void (EGLAPIENTRYP PFNEGLCREATEGLOBALIMAGEBRCMPROC)(EGLint width, EGLint height, EGLint pixel_format, const void *data, EGLint data_stride, EGLint *id); |
92 | typedef void (EGLAPIENTRYP PFNEGLCREATECOPYGLOBALIMAGEBRCMPROC)(const EGLint *src_id, EGLint *id); |
93 | typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYGLOBALIMAGEBRCMPROC)(const EGLint *id); |
94 | typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYGLOBALIMAGEBRCMPROC)(const EGLint *id, EGLint *width_height_pixel_format); |
95 | #endif |
96 | |
97 | #ifndef EGL_BRCM_perf_monitor |
98 | #define EGL_BRCM_perf_monitor 0 |
99 | #endif |
100 | #if EGL_BRCM_perf_monitor |
101 | #ifdef EGL_EGLEXT_PROTOTYPES |
102 | EGLAPI EGLBoolean EGLAPIENTRY eglInitPerfMonitorBRCM(EGLDisplay display); |
103 | EGLAPI EGLBoolean EGLAPIENTRY eglTermPerfMonitorBRCM(EGLDisplay display); |
104 | #endif /* EGL_EGLEXT_PROTOTYPES */ |
105 | typedef void (EGLAPIENTRYP PFNEGLINITPERFMONITORBRCMPROC)(EGLDisplay display); |
106 | typedef void (EGLAPIENTRYP PFNEGLTERMPERFMONITORBRCMPROC)(EGLDisplay display); |
107 | #endif |
108 | |
109 | #ifndef EGL_BRCM_driver_monitor |
110 | #define EGL_BRCM_driver_monitor 1 |
111 | #endif |
112 | #if EGL_BRCM_driver_monitor |
113 | #ifdef EGL_EGLEXT_PROTOTYPES |
114 | EGLAPI EGLBoolean EGLAPIENTRY eglInitDriverMonitorBRCM(EGLDisplay display, EGLint hw_bank, EGLint l3c_bank); |
115 | EGLAPI void EGLAPIENTRY eglGetDriverMonitorXMLBRCM(EGLDisplay display, EGLint bufSize, EGLint *length, char *xmlStats); |
116 | EGLAPI EGLBoolean EGLAPIENTRY eglTermDriverMonitorBRCM(EGLDisplay display); |
117 | #endif /* EGL_EGLEXT_PROTOTYPES */ |
118 | typedef void (EGLAPIENTRYP PFNEGLINITDRIVERMONITORBRCMPROC)(EGLDisplay display, EGLint hw_bank, EGLint l3c_bank); |
119 | typedef void (EGLAPIENTRYP PFNEGLGETDRIVERMONITORXMLBRCMPROC)(EGLDisplay display, EGLint bufSize, EGLint *length, char *xmlStats); |
120 | typedef void (EGLAPIENTRYP PFNEGLTERMDRIVERMONITORBRCMPROC)(EGLDisplay display); |
121 | #endif |
122 | |
123 | #ifndef EGL_BRCM_perf_stats |
124 | #define EGL_BRCM_perf_stats 0 |
125 | #endif |
126 | #if EGL_BRCM_perf_stats |
127 | #ifdef EGL_EGLEXT_PROTOTYPES |
128 | EGLAPI void eglPerfStatsResetBRCM(void); |
129 | EGLAPI void eglPerfStatsGetBRCM(char *buffer, EGLint buffer_len, EGLBoolean reset); |
130 | #endif |
131 | typedef void (EGLAPIENTRYP PFNEGLPERFSTATSRESETBRCM) (void); |
132 | typedef void (EGLAPIENTRYP PFNEGLPERFSTATSGETBRCM) (char *buffer, EGLint buffer_len, EGLBoolean reset); |
133 | #endif |
134 | |
135 | #ifndef EGL_proc_state_valid |
136 | #define EGL_proc_state_valid 1 |
137 | #endif |
138 | #if EGL_proc_state_valid |
139 | #ifdef EGL_EGLEXT_PROTOTYPES |
140 | EGLAPI void EGLAPIENTRY eglProcStateValid( EGLDisplay dpy, EGLBoolean *result ); |
141 | #endif |
142 | typedef void (EGLAPIENTRYP PFNEGLPROCSTATEVALID) ( EGLDisplay dpy, EGLBoolean *valid ); |
143 | #endif |
144 | |
145 | #ifndef EGL_BRCM_flush |
146 | #define EGL_BRCM_flush 1 |
147 | #endif |
148 | #if EGL_BRCM_flush |
149 | #ifdef EGL_EGLEXT_PROTOTYPES |
150 | EGLAPI void EGLAPIENTRY eglFlushBRCM(void); |
151 | #endif /* EGL_EGLEXT_PROTOTYPES */ |
152 | typedef void (EGLAPIENTRYP PFNEGLFLUSHBRCMPROC)(void); |
153 | #endif |
154 | |
155 | #ifndef EGL_BRCM_image_wrap |
156 | #define EGL_BRCM_image_wrap 1 |
157 | #define EGL_IMAGE_WRAP_BRCM 0x9993140 |
158 | #endif |
159 | |
160 | #ifndef EGL_BRCM_image_wrap_bcg |
161 | #define EGL_BRCM_image_wrap_bcg 0 |
162 | #define EGL_IMAGE_WRAP_BRCM_BCG 0x9993141 |
163 | |
164 | #if EGL_BRCM_image_wrap_bcg |
165 | typedef struct { |
166 | BEGL_BufferFormat format; |
167 | |
168 | uint16_t width; |
169 | uint16_t height; |
170 | |
171 | int32_t stride; /* in bytes */ |
172 | |
173 | void *storage; |
174 | } EGL_IMAGE_WRAP_BRCM_BCG_IMAGE_T; |
175 | #endif |
176 | |
177 | #endif |
178 | |
179 | #ifndef EGL_BRCM_mem_usage |
180 | #define EGL_BRCM_mem_usage 0 |
181 | #endif |
182 | #if EGL_BRCM_mem_usage |
183 | #ifdef EGL_EGLEXT_PROTOTYPES |
184 | EGLAPI void eglProcessMemUsageGetBRCM(uint32_t id_0, uint32_t id_1, char *buffer, uint32_t buffer_len); |
185 | #endif |
186 | typedef void (EGLAPIENTRYP PFNEGLPROCESSMEMUSAGEGETBRCM) (uint32_t id_0, uint32_t id_1, char *buffer, uint32_t buffer_len); |
187 | #endif |
188 | |
189 | /* |
190 | Only enable this #define if the application (or wrapper layer) is going to call eglDirectRenderingPointer |
191 | when appropriate (i.e. the first time eglMakeCurrent is called, and then at eglSwapBuffers) |
192 | |
193 | Only used for testing purposes on 2763 |
194 | */ |
195 | //#define DIRECT_RENDERING |
196 | |
197 | #ifdef DIRECT_RENDERING |
198 | EGLAPI EGLBoolean EGLAPIENTRY eglDirectRenderingPointer(EGLDisplay dpy, EGLSurface surf, void *image /* KHRN_IMAGE_WRAP_T */); |
199 | #endif |
200 | |
201 | #ifdef __cplusplus |
202 | } |
203 | #endif |
204 | |
205 | #endif |
206 | |