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