Atlas - eglplatform.h
Home / ext / SDL / src / video / khronos / EGL Lines: 1 | Size: 5239 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1#ifndef __eglplatform_h_ 2#define __eglplatform_h_ 3 4/* 5** Copyright 2007-2020 The Khronos Group Inc. 6** SPDX-License-Identifier: Apache-2.0 7*/ 8 9/* Platform-specific types and definitions for egl.h 10 * 11 * Adopters may modify khrplatform.h and this file to suit their platform. 12 * You are encouraged to submit all modifications to the Khronos group so that 13 * they can be included in future versions of this file. Please submit changes 14 * by filing an issue or pull request on the public Khronos EGL Registry, at 15 * https://www.github.com/KhronosGroup/EGL-Registry/ 16 */ 17 18#include <KHR/khrplatform.h> 19 20/* Macros used in EGL function prototype declarations. 21 * 22 * EGL functions should be prototyped as: 23 * 24 * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); 25 * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); 26 * 27 * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h 28 */ 29 30#ifndef EGLAPI 31#define EGLAPI KHRONOS_APICALL 32#endif 33 34#ifndef EGLAPIENTRY 35#define EGLAPIENTRY KHRONOS_APIENTRY 36#endif 37#define EGLAPIENTRYP EGLAPIENTRY* 38 39/* The types NativeDisplayType, NativeWindowType, and NativePixmapType 40 * are aliases of window-system-dependent types, such as X Display * or 41 * Windows Device Context. They must be defined in platform-specific 42 * code below. The EGL-prefixed versions of Native*Type are the same 43 * types, renamed in EGL 1.3 so all types in the API start with "EGL". 44 * 45 * Khronos STRONGLY RECOMMENDS that you use the default definitions 46 * provided below, since these changes affect both binary and source 47 * portability of applications using EGL running on different EGL 48 * implementations. 49 */ 50 51#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES) 52 53typedef void *EGLNativeDisplayType; 54typedef void *EGLNativePixmapType; 55typedef void *EGLNativeWindowType; 56 57#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ 58#ifndef WIN32_LEAN_AND_MEAN 59#define WIN32_LEAN_AND_MEAN 1 60#endif 61#include <windows.h> 62 63typedef HDC EGLNativeDisplayType; 64typedef HBITMAP EGLNativePixmapType; 65typedef HWND EGLNativeWindowType; 66 67#elif defined(__QNX__) 68 69typedef khronos_uintptr_t EGLNativeDisplayType; 70typedef struct _screen_pixmap* EGLNativePixmapType; /* screen_pixmap_t */ 71typedef struct _screen_window* EGLNativeWindowType; /* screen_window_t */ 72 73#elif defined(__EMSCRIPTEN__) 74 75typedef int EGLNativeDisplayType; 76typedef int EGLNativePixmapType; 77typedef int EGLNativeWindowType; 78 79#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ 80 81typedef int EGLNativeDisplayType; 82typedef void *EGLNativePixmapType; 83typedef void *EGLNativeWindowType; 84 85#elif defined(WL_EGL_PLATFORM) 86 87typedef struct wl_display *EGLNativeDisplayType; 88typedef struct wl_egl_pixmap *EGLNativePixmapType; 89typedef struct wl_egl_window *EGLNativeWindowType; 90 91#elif defined(__GBM__) 92 93typedef struct gbm_device *EGLNativeDisplayType; 94typedef struct gbm_bo *EGLNativePixmapType; 95typedef void *EGLNativeWindowType; 96 97#elif defined(__ANDROID__) || defined(ANDROID) 98 99struct ANativeWindow; 100struct egl_native_pixmap_t; 101 102typedef void* EGLNativeDisplayType; 103typedef struct egl_native_pixmap_t* EGLNativePixmapType; 104typedef struct ANativeWindow* EGLNativeWindowType; 105 106#elif defined(USE_OZONE) 107 108typedef intptr_t EGLNativeDisplayType; 109typedef intptr_t EGLNativePixmapType; 110typedef intptr_t EGLNativeWindowType; 111 112#elif defined(USE_X11) 113 114/* X11 (tentative) */ 115#include <X11/Xlib.h> 116#include <X11/Xutil.h> 117 118typedef Display *EGLNativeDisplayType; 119typedef Pixmap EGLNativePixmapType; 120typedef Window EGLNativeWindowType; 121 122#elif defined(__unix__) 123 124typedef void *EGLNativeDisplayType; 125typedef khronos_uintptr_t EGLNativePixmapType; 126typedef khronos_uintptr_t EGLNativeWindowType; 127 128#elif defined(__APPLE__) 129 130typedef int EGLNativeDisplayType; 131typedef void *EGLNativePixmapType; 132typedef void *EGLNativeWindowType; 133 134#elif defined(__HAIKU__) 135 136#include <kernel/image.h> 137 138typedef void *EGLNativeDisplayType; 139typedef khronos_uintptr_t EGLNativePixmapType; 140typedef khronos_uintptr_t EGLNativeWindowType; 141 142#elif defined(__Fuchsia__) 143 144typedef void *EGLNativeDisplayType; 145typedef khronos_uintptr_t EGLNativePixmapType; 146typedef khronos_uintptr_t EGLNativeWindowType; 147 148#else 149#error "Platform not recognized" 150#endif 151 152/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ 153typedef EGLNativeDisplayType NativeDisplayType; 154typedef EGLNativePixmapType NativePixmapType; 155typedef EGLNativeWindowType NativeWindowType; 156 157 158/* Define EGLint. This must be a signed integral type large enough to contain 159 * all legal attribute names and values passed into and out of EGL, whether 160 * their type is boolean, bitmask, enumerant (symbolic constant), integer, 161 * handle, or other. While in general a 32-bit integer will suffice, if 162 * handles are 64 bit types, then EGLint should be defined as a signed 64-bit 163 * integer type. 164 */ 165typedef khronos_int32_t EGLint; 166 167 168/* C++ / C typecast macros for special EGL handle values */ 169#if defined(__cplusplus) 170#define EGL_CAST(type, value) (static_cast<type>(value)) 171#else 172#define EGL_CAST(type, value) ((type) (value)) 173#endif 174 175#endif /* __eglplatform_h */ 176[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.