diff options
Diffstat (limited to 'include/EGL/eglplatform.h')
-rw-r--r-- | include/EGL/eglplatform.h | 138 |
1 files changed, 75 insertions, 63 deletions
diff --git a/include/EGL/eglplatform.h b/include/EGL/eglplatform.h index 09abb5d844..22e855f56c 100644 --- a/include/EGL/eglplatform.h +++ b/include/EGL/eglplatform.h @@ -1,43 +1,59 @@ -/* -*- mode: c; tab-width: 8; -*- */ -/* vi: set sw=4 ts=8: */ -/* Platform-specific types and definitions for egl.h */ - #ifndef __eglplatform_h_ #define __eglplatform_h_ -/* Windows calling convention boilerplate */ -#if (defined(WIN32) || defined(_WIN32_WCE)) -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN /* Exclude rarely-used stuff from Windows headers */ -#endif -#include <windows.h> -#endif - -#if !defined(_WIN32_WCE) -#include <sys/types.h> -#include <stdint.h> -#endif +/* +** Copyright (c) 2007-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Platform-specific types and definitions for egl.h + * $Revision: 9724 $ on $Date: 2009-12-02 02:05:33 -0800 (Wed, 02 Dec 2009) $ + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "EGL" component "Registry". + */ -#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303 -# define EGLAPI __attribute__((visibility("default"))) -# define EGLAPIENTRY -#endif +#include <KHR/khrplatform.h> /* Macros used in EGL function prototype declarations. * + * EGL functions should be prototyped as: + * * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); * - * On Windows, EGLAPIENTRY can be defined like APIENTRY. - * On most other platforms, it should be empty. + * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h */ -#ifndef EGLAPIENTRY -#define EGLAPIENTRY +#ifndef EGLAPI +#define EGLAPI KHRONOS_APICALL #endif -#ifndef EGLAPIENTRYP -#define EGLAPIENTRYP EGLAPIENTRY * + +#ifndef EGLAPIENTRY +#define EGLAPIENTRY KHRONOS_APIENTRY #endif +#define EGLAPIENTRYP EGLAPIENTRY* /* The types NativeDisplayType, NativeWindowType, and NativePixmapType * are aliases of window-system-dependent types, such as X Display * or @@ -46,53 +62,49 @@ * types, renamed in EGL 1.3 so all types in the API start with "EGL". */ -/* Unix (tentative) - #include <X headers> - typedef Display *NativeDisplayType; - - or maybe, if encoding "hostname:display.head" - typedef const char *NativeWindowType; - etc. - */ - - -#if (defined(WIN32) || defined(_WIN32_WCE)) - -/** BEGIN Added for Windows **/ -#ifndef EGLAPI -#define EGLAPI __declspec(dllexport) +#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 #endif +#include <windows.h> -typedef long int32_t; -typedef unsigned long uint32_t; -typedef unsigned char uint8_t; -#define snprintf _snprintf -#define strcasecmp _stricmp -#define vsnprintf _vsnprintf - -typedef HDC NativeDisplayType; -typedef HWND NativeWindowType; -typedef HBITMAP NativePixmapType; -/** END Added for Windows **/ +typedef HDC EGLNativeDisplayType; +typedef HBITMAP EGLNativePixmapType; +typedef HWND EGLNativeWindowType; -#elif defined(__gnu_linux__) || defined(__FreeBSD__) || defined(__sun) || defined(__APPLE__) +#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ +typedef int EGLNativeDisplayType; +typedef void *EGLNativeWindowType; +typedef void *EGLNativePixmapType; -/** BEGIN Added for X (Mesa) **/ -#ifndef EGLAPI -#define EGLAPI extern -#endif +#elif defined(__unix__) +/* X11 (tentative) */ #include <X11/Xlib.h> -typedef Display *NativeDisplayType; -typedef Window NativeWindowType; -typedef Pixmap NativePixmapType; -/** END Added for X (Mesa) **/ +#include <X11/Xutil.h> + +typedef Display *EGLNativeDisplayType; +typedef Pixmap EGLNativePixmapType; +typedef Window EGLNativeWindowType; +#else +#error "Platform not recognized" #endif /* EGL 1.2 types, renamed for consistency in EGL 1.3 */ -typedef NativeDisplayType EGLNativeDisplayType; -typedef NativePixmapType EGLNativePixmapType; -typedef NativeWindowType EGLNativeWindowType; +typedef EGLNativeDisplayType NativeDisplayType; +typedef EGLNativePixmapType NativePixmapType; +typedef EGLNativeWindowType NativeWindowType; + + +/* Define EGLint. This must be a signed integral type large enough to contain + * all legal attribute names and values passed into and out of EGL, whether + * their type is boolean, bitmask, enumerant (symbolic constant), integer, + * handle, or other. While in general a 32-bit integer will suffice, if + * handles are 64 bit types, then EGLint should be defined as a signed 64-bit + * integer type. + */ +typedef khronos_int32_t EGLint; #endif /* __eglplatform_h */ |