From f7212fd20236827c0fca8b5c76486e60de2db535 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Thu, 4 Nov 2010 19:45:52 +0100 Subject: Adding patches for gluegen interoperability and adding some extensions: - eglplatform.h: if platform not recognized, use 'void pointer' for EGLNativeDisplayType, EGLNativeWindowType and EGLNativePixmapType - egl.h: adding ifndef core extension for gluegen and eglGetProcAddress - eglext.h: adding EGL_NV_texture_rectangle, EGL_NV_system_time, EGL_NV_omx_il_sink, EGL_RMSURFACE_NV --- make/stub_includes/egl/EGL/egl.h | 15 +++++++------ make/stub_includes/egl/EGL/eglext.h | 37 +++++++++++++++++++++++++++++++- make/stub_includes/egl/EGL/eglplatform.h | 8 ++++++- 3 files changed, 51 insertions(+), 9 deletions(-) (limited to 'make/stub_includes') diff --git a/make/stub_includes/egl/EGL/egl.h b/make/stub_includes/egl/EGL/egl.h index 99ea342a4..1eabe3af2 100644 --- a/make/stub_includes/egl/EGL/egl.h +++ b/make/stub_includes/egl/EGL/egl.h @@ -56,6 +56,8 @@ typedef void *EGLClientBuffer; #define EGL_VERSION_1_3 1 #define EGL_VERSION_1_4 1 +#ifndef EGL_VERSION_1_X + /* EGL Enumerants. Bitmasks and other exceptional cases aside, most * enums are assigned unique values starting at 0x3000. */ @@ -242,7 +244,10 @@ typedef void *EGLClientBuffer; * a bug in Khronos Bugzilla against task "Registry". */ +#endif /* EGL_VERSION_1_X */ +#ifndef EGL_VERSION_1_X +#define EGL_VERSION_1_X 1 /* EGL Functions */ @@ -313,14 +318,10 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); -/* This is a generic function pointer type, whose name indicates it must - * be cast to the proper type *and calling convention* before use. - */ -typedef void (*__eglMustCastToProperFunctionPointerType)(void); +typedef void (* EGLAPIENTRY __EGLFuncPtr)(void); +EGLAPI __EGLFuncPtr eglGetProcAddress(const char *procname); -/* Now, define eglGetProcAddress using the generic function ptr. type */ -EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY - eglGetProcAddress(const char *procname); +#endif /* EGL_VERSION_1_X */ #ifdef __cplusplus } diff --git a/make/stub_includes/egl/EGL/eglext.h b/make/stub_includes/egl/EGL/eglext.h index 2f4ed84ba..36a07ae88 100644 --- a/make/stub_includes/egl/EGL/eglext.h +++ b/make/stub_includes/egl/EGL/eglext.h @@ -79,7 +79,7 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display #define EGL_KHR_image 1 #define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */ typedef void *EGLImageKHR; -#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) +/* Manual: #define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) */ #ifdef EGL_EGLEXT_PROTOTYPES EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); @@ -284,6 +284,41 @@ typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); #endif +/** + * Added a few NVidia extensions here. + * FIXME: Double check if they are still 'active' + */ + +/* EGL_NV_texture_rectangle (reuse analagous WGL enum) */ +#ifndef EGL_NV_texture_rectangle +#define EGL_NV_texture_rectangle 1 +#define EGL_GL_TEXTURE_RECTANGLE_NV_KHR 0x30BB +#define EGL_TEXTURE_RECTANGLE_NV 0x20A2 +#endif + +#ifndef EGL_NV_system_time +#define EGL_NV_system_time 1 +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void); +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void); +#endif +typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)(void); +typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC)(void); +#endif + +/* EGL_NV_omx_il_sink + */ +#ifndef EGL_NV_omx_il_sink +#define EGL_NV_omx_il_sink +#define EGL_OPENMAX_IL_BIT_NV 0x0010 /* EGL_RENDERABLE_TYPE bit */ +#define EGL_SURFACE_OMX_IL_EVENT_CALLBACK_NV 0x309A /* eglCreate*Surface attribute */ +#define EGL_SURFACE_OMX_IL_EMPTY_BUFFER_DONE_CALLBACK_NV 0x309B /* eglCreate*Surface attribute */ +#define EGL_SURFACE_OMX_IL_CALLBACK_DATA_NV 0x309C /* eglCreate*Surface attribute */ +#define EGL_SURFACE_COMPONENT_HANDLE_NV 0x309D /* eglQuerySurface attribute */ +#endif + +#define EGL_RMSURFACE_NV 0x30EF /* eglCreateImageKHR target */ + #ifdef __cplusplus } #endif diff --git a/make/stub_includes/egl/EGL/eglplatform.h b/make/stub_includes/egl/EGL/eglplatform.h index 6d34ab55d..ada816521 100644 --- a/make/stub_includes/egl/EGL/eglplatform.h +++ b/make/stub_includes/egl/EGL/eglplatform.h @@ -94,7 +94,13 @@ typedef Pixmap EGLNativePixmapType; typedef Window EGLNativeWindowType; #else -#error "Platform not recognized" + +#warning "Info: Platform not recognized, using void pointer for EGLNativeDisplayType, EGLNativeWindowType and EGLNativePixmapType" + +typedef void* EGLNativeDisplayType; +typedef void* EGLNativeWindowType; +typedef void* EGLNativePixmapType; + #endif /* EGL 1.2 types, renamed for consistency in EGL 1.3 */ -- cgit v1.2.3