Merge commit 'origin/master' into glsl-pp-rework-2
[mesa.git] / include / EGL / eglplatform.h
1 /* -*- mode: c; tab-width: 8; -*- */
2 /* vi: set sw=4 ts=8: */
3 /* Platform-specific types and definitions for egl.h */
4
5 #ifndef __eglplatform_h_
6 #define __eglplatform_h_
7
8 /* Windows calling convention boilerplate */
9 #if (defined(WIN32) || defined(_WIN32_WCE))
10 #ifndef WIN32_LEAN_AND_MEAN
11 #define WIN32_LEAN_AND_MEAN /* Exclude rarely-used stuff from Windows headers */
12 #endif
13 #include <windows.h>
14 #endif
15
16 #if !defined(_WIN32_WCE)
17 #include <sys/types.h>
18 #include <stdint.h>
19 #endif
20
21 /* Macros used in EGL function prototype declarations.
22 *
23 * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
24 * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
25 *
26 * On Windows, EGLAPIENTRY can be defined like APIENTRY.
27 * On most other platforms, it should be empty.
28 */
29
30 #ifndef EGLAPIENTRY
31 #define EGLAPIENTRY
32 #endif
33 #ifndef EGLAPIENTRYP
34 #define EGLAPIENTRYP EGLAPIENTRY *
35 #endif
36
37 /* The types NativeDisplayType, NativeWindowType, and NativePixmapType
38 * are aliases of window-system-dependent types, such as X Display * or
39 * Windows Device Context. They must be defined in platform-specific
40 * code below. The EGL-prefixed versions of Native*Type are the same
41 * types, renamed in EGL 1.3 so all types in the API start with "EGL".
42 */
43
44 /* Unix (tentative)
45 #include <X headers>
46 typedef Display *NativeDisplayType;
47 - or maybe, if encoding "hostname:display.head"
48 typedef const char *NativeWindowType;
49 etc.
50 */
51
52
53 #if (defined(WIN32) || defined(_WIN32_WCE))
54
55 /** BEGIN Added for Windows **/
56 #ifndef EGLAPI
57 #define EGLAPI __declspec(dllexport)
58 #endif
59
60 typedef long int32_t;
61 typedef unsigned long uint32_t;
62 typedef unsigned char uint8_t;
63 #define snprintf _snprintf
64 #define strcasecmp _stricmp
65 #define vsnprintf _vsnprintf
66
67 typedef HDC NativeDisplayType;
68 typedef HWND NativeWindowType;
69 typedef HBITMAP NativePixmapType;
70 /** END Added for Windows **/
71
72 #elif defined(__gnu_linux__) || defined(__FreeBSD__) || defined(__sun) || defined(__APPLE__)
73
74
75 /** BEGIN Added for X (Mesa) **/
76 #ifndef EGLAPI
77 #define EGLAPI extern
78 #endif
79
80 #include <X11/Xlib.h>
81 typedef Display *NativeDisplayType;
82 typedef Window NativeWindowType;
83 typedef Pixmap NativePixmapType;
84 /** END Added for X (Mesa) **/
85
86 #endif
87
88 /* EGL 1.2 types, renamed for consistency in EGL 1.3 */
89 typedef NativeDisplayType EGLNativeDisplayType;
90 typedef NativePixmapType EGLNativePixmapType;
91 typedef NativeWindowType EGLNativeWindowType;
92
93 #endif /* __eglplatform_h */