duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

eglplatform.h (5239B)


      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 
     53 typedef void *EGLNativeDisplayType;
     54 typedef void *EGLNativePixmapType;
     55 typedef 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 
     63 typedef HDC     EGLNativeDisplayType;
     64 typedef HBITMAP EGLNativePixmapType;
     65 typedef HWND    EGLNativeWindowType;
     66 
     67 #elif defined(__QNX__)
     68 
     69 typedef khronos_uintptr_t      EGLNativeDisplayType;
     70 typedef struct _screen_pixmap* EGLNativePixmapType;  /* screen_pixmap_t */
     71 typedef struct _screen_window* EGLNativeWindowType;  /* screen_window_t */
     72 
     73 #elif defined(__EMSCRIPTEN__)
     74 
     75 typedef int EGLNativeDisplayType;
     76 typedef int EGLNativePixmapType;
     77 typedef int EGLNativeWindowType;
     78 
     79 #elif defined(__WINSCW__) || defined(__SYMBIAN32__)  /* Symbian */
     80 
     81 typedef int   EGLNativeDisplayType;
     82 typedef void *EGLNativePixmapType;
     83 typedef void *EGLNativeWindowType;
     84 
     85 #elif defined(WL_EGL_PLATFORM)
     86 
     87 typedef struct wl_display     *EGLNativeDisplayType;
     88 typedef struct wl_egl_pixmap  *EGLNativePixmapType;
     89 typedef struct wl_egl_window  *EGLNativeWindowType;
     90 
     91 #elif defined(__GBM__)
     92 
     93 typedef struct gbm_device  *EGLNativeDisplayType;
     94 typedef struct gbm_bo      *EGLNativePixmapType;
     95 typedef void               *EGLNativeWindowType;
     96 
     97 #elif defined(__ANDROID__) || defined(ANDROID)
     98 
     99 struct ANativeWindow;
    100 struct egl_native_pixmap_t;
    101 
    102 typedef void*                           EGLNativeDisplayType;
    103 typedef struct egl_native_pixmap_t*     EGLNativePixmapType;
    104 typedef struct ANativeWindow*           EGLNativeWindowType;
    105 
    106 #elif defined(USE_OZONE)
    107 
    108 typedef intptr_t EGLNativeDisplayType;
    109 typedef intptr_t EGLNativePixmapType;
    110 typedef intptr_t EGLNativeWindowType;
    111 
    112 #elif defined(USE_X11)
    113 
    114 /* X11 (tentative)  */
    115 #include <X11/Xlib.h>
    116 #include <X11/Xutil.h>
    117 
    118 typedef Display *EGLNativeDisplayType;
    119 typedef Pixmap   EGLNativePixmapType;
    120 typedef Window   EGLNativeWindowType;
    121 
    122 #elif defined(__unix__)
    123 
    124 typedef void             *EGLNativeDisplayType;
    125 typedef khronos_uintptr_t EGLNativePixmapType;
    126 typedef khronos_uintptr_t EGLNativeWindowType;
    127 
    128 #elif defined(__APPLE__)
    129 
    130 typedef int   EGLNativeDisplayType;
    131 typedef void *EGLNativePixmapType;
    132 typedef void *EGLNativeWindowType;
    133 
    134 #elif defined(__HAIKU__)
    135 
    136 #include <kernel/image.h>
    137 
    138 typedef void              *EGLNativeDisplayType;
    139 typedef khronos_uintptr_t  EGLNativePixmapType;
    140 typedef khronos_uintptr_t  EGLNativeWindowType;
    141 
    142 #elif defined(__Fuchsia__)
    143 
    144 typedef void              *EGLNativeDisplayType;
    145 typedef khronos_uintptr_t  EGLNativePixmapType;
    146 typedef 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 */
    153 typedef EGLNativeDisplayType NativeDisplayType;
    154 typedef EGLNativePixmapType  NativePixmapType;
    155 typedef 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  */
    165 typedef 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 */