mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	
		
			
	
	
		
			176 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			176 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | #ifndef __eglplatform_h_
 | ||
|  | #define __eglplatform_h_
 | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** Copyright 2007-2020 The Khronos Group Inc. | ||
|  | ** SPDX-License-Identifier: Apache-2.0 | ||
|  | */ | ||
|  | 
 | ||
|  | /* Platform-specific types and definitions for egl.h
 | ||
|  |  * | ||
|  |  * 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 filing an issue or pull request on the public Khronos EGL Registry, at | ||
|  |  * https://www.github.com/KhronosGroup/EGL-Registry/
 | ||
|  |  */ | ||
|  | 
 | ||
|  | #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); | ||
|  |  * | ||
|  |  * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef EGLAPI
 | ||
|  | #define EGLAPI KHRONOS_APICALL
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #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 | ||
|  |  * Windows Device Context. They must be defined in platform-specific | ||
|  |  * code below. The EGL-prefixed versions of Native*Type are the same | ||
|  |  * types, renamed in EGL 1.3 so all types in the API start with "EGL". | ||
|  |  * | ||
|  |  * Khronos STRONGLY RECOMMENDS that you use the default definitions | ||
|  |  * provided below, since these changes affect both binary and source | ||
|  |  * portability of applications using EGL running on different EGL | ||
|  |  * implementations. | ||
|  |  */ | ||
|  | 
 | ||
|  | #if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)
 | ||
|  | 
 | ||
|  | typedef void *EGLNativeDisplayType; | ||
|  | typedef void *EGLNativePixmapType; | ||
|  | typedef void *EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif 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 HDC     EGLNativeDisplayType; | ||
|  | typedef HBITMAP EGLNativePixmapType; | ||
|  | 
 | ||
|  | #if !defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) /* Windows Desktop */
 | ||
|  | typedef HWND    EGLNativeWindowType; | ||
|  | #else /* Windows Store */
 | ||
|  | #include <inspectable.h>
 | ||
|  | typedef IInspectable* EGLNativeWindowType; | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #elif defined(__EMSCRIPTEN__)
 | ||
|  | 
 | ||
|  | typedef int EGLNativeDisplayType; | ||
|  | typedef int EGLNativePixmapType; | ||
|  | typedef int EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(__WINSCW__) || defined(__SYMBIAN32__)  /* Symbian */
 | ||
|  | 
 | ||
|  | typedef int   EGLNativeDisplayType; | ||
|  | typedef void *EGLNativePixmapType; | ||
|  | typedef void *EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(WL_EGL_PLATFORM)
 | ||
|  | 
 | ||
|  | typedef struct wl_display     *EGLNativeDisplayType; | ||
|  | typedef struct wl_egl_pixmap  *EGLNativePixmapType; | ||
|  | typedef struct wl_egl_window  *EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(__GBM__)
 | ||
|  | 
 | ||
|  | typedef struct gbm_device  *EGLNativeDisplayType; | ||
|  | typedef struct gbm_bo      *EGLNativePixmapType; | ||
|  | typedef void               *EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(__ANDROID__) || defined(ANDROID)
 | ||
|  | 
 | ||
|  | struct ANativeWindow; | ||
|  | struct egl_native_pixmap_t; | ||
|  | 
 | ||
|  | typedef void*                           EGLNativeDisplayType; | ||
|  | typedef struct egl_native_pixmap_t*     EGLNativePixmapType; | ||
|  | typedef struct ANativeWindow*           EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(USE_OZONE)
 | ||
|  | 
 | ||
|  | typedef intptr_t EGLNativeDisplayType; | ||
|  | typedef intptr_t EGLNativePixmapType; | ||
|  | typedef intptr_t EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(USE_X11)
 | ||
|  | 
 | ||
|  | /* X11 (tentative)  */ | ||
|  | #include <X11/Xlib.h>
 | ||
|  | #include <X11/Xutil.h>
 | ||
|  | 
 | ||
|  | typedef Display *EGLNativeDisplayType; | ||
|  | typedef Pixmap   EGLNativePixmapType; | ||
|  | typedef Window   EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(__unix__)
 | ||
|  | 
 | ||
|  | typedef void             *EGLNativeDisplayType; | ||
|  | typedef khronos_uintptr_t EGLNativePixmapType; | ||
|  | typedef khronos_uintptr_t EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(__APPLE__)
 | ||
|  | 
 | ||
|  | typedef int   EGLNativeDisplayType; | ||
|  | typedef void *EGLNativePixmapType; | ||
|  | typedef void *EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(__HAIKU__)
 | ||
|  | 
 | ||
|  | #include <kernel/image.h>
 | ||
|  | 
 | ||
|  | typedef void              *EGLNativeDisplayType; | ||
|  | typedef khronos_uintptr_t  EGLNativePixmapType; | ||
|  | typedef khronos_uintptr_t  EGLNativeWindowType; | ||
|  | 
 | ||
|  | #elif defined(__Fuchsia__)
 | ||
|  | 
 | ||
|  | typedef void              *EGLNativeDisplayType; | ||
|  | typedef khronos_uintptr_t  EGLNativePixmapType; | ||
|  | typedef khronos_uintptr_t  EGLNativeWindowType; | ||
|  | 
 | ||
|  | #else
 | ||
|  | #error "Platform not recognized"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /* EGL 1.2 types, renamed for consistency in EGL 1.3 */ | ||
|  | 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; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* C++ / C typecast macros for special EGL handle values */ | ||
|  | #if defined(__cplusplus)
 | ||
|  | #define EGL_CAST(type, value) (static_cast<type>(value))
 | ||
|  | #else
 | ||
|  | #define EGL_CAST(type, value) ((type) (value))
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif /* __eglplatform_h */
 |