commit
0aaa120f12
24 changed files with 1659 additions and 227 deletions
@ -0,0 +1,16 @@ |
||||
# Find EGL |
||||
# |
||||
# EGL_INCLUDE_DIR |
||||
# EGL_LIBRARY |
||||
# EGL_FOUND |
||||
|
||||
find_path(EGL_INCLUDE_DIR NAMES EGL/egl.h) |
||||
|
||||
set(EGL_NAMES ${EGL_NAMES} egl EGL) |
||||
find_library(EGL_LIBRARY NAMES ${EGL_NAMES}) |
||||
|
||||
include(FindPackageHandleStandardArgs) |
||||
find_package_handle_standard_args(EGL DEFAULT_MSG EGL_LIBRARY EGL_INCLUDE_DIR) |
||||
|
||||
mark_as_advanced(EGL_INCLUDE_DIR EGL_LIBRARY) |
||||
|
@ -0,0 +1,595 @@ |
||||
//========================================================================
|
||||
// GLFW - An OpenGL library
|
||||
// Platform: EGL
|
||||
// API version: 3.0
|
||||
// WWW: http://www.glfw.org/
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2002-2006 Marcus Geelnard
|
||||
// Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
|
||||
//
|
||||
// This software is provided 'as-is', without any express or implied
|
||||
// warranty. In no event will the authors be held liable for any damages
|
||||
// arising from the use of this software.
|
||||
//
|
||||
// Permission is granted to anyone to use this software for any purpose,
|
||||
// including commercial applications, and to alter it and redistribute it
|
||||
// freely, subject to the following restrictions:
|
||||
//
|
||||
// 1. The origin of this software must not be misrepresented; you must not
|
||||
// claim that you wrote the original software. If you use this software
|
||||
// in a product, an acknowledgment in the product documentation would
|
||||
// be appreciated but is not required.
|
||||
//
|
||||
// 2. Altered source versions must be plainly marked as such, and must not
|
||||
// be misrepresented as being the original software.
|
||||
//
|
||||
// 3. This notice may not be removed or altered from any source
|
||||
// distribution.
|
||||
//
|
||||
//========================================================================
|
||||
|
||||
#include "internal.h" |
||||
|
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
|
||||
|
||||
//========================================================================
|
||||
// Thread local storage attribute macro
|
||||
//========================================================================
|
||||
#if defined(_MSC_VER) |
||||
#define _GLFW_TLS __declspec(thread) |
||||
#elif defined(__GNUC__) |
||||
#define _GLFW_TLS __thread |
||||
#else |
||||
#define _GLFW_TLS |
||||
#endif |
||||
|
||||
|
||||
//========================================================================
|
||||
// The per-thread current context/window pointer
|
||||
//========================================================================
|
||||
static _GLFW_TLS _GLFWwindow* _glfwCurrentWindow = NULL; |
||||
|
||||
|
||||
//========================================================================
|
||||
// Returns the specified attribute of the specified EGLConfig
|
||||
//========================================================================
|
||||
|
||||
static int getConfigAttrib(EGLConfig config, int attrib) |
||||
{ |
||||
int value; |
||||
eglGetConfigAttrib(_glfwLibrary.EGL.display, config, attrib, &value); |
||||
return value; |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Return a list of available and usable framebuffer configs
|
||||
//========================================================================
|
||||
|
||||
static _GLFWfbconfig* getFBConfigs(_GLFWwindow* window, |
||||
const _GLFWwndconfig* wndconfig, |
||||
unsigned int* found) |
||||
{ |
||||
EGLConfig* configs; |
||||
_GLFWfbconfig* result; |
||||
int i, count = 0; |
||||
|
||||
*found = 0; |
||||
|
||||
eglGetConfigs(_glfwLibrary.EGL.display, NULL, 0, &count); |
||||
|
||||
configs = (EGLConfig*) malloc(sizeof(EGLConfig) * count); |
||||
if (!configs) |
||||
{ |
||||
_glfwSetError(GLFW_OUT_OF_MEMORY, NULL); |
||||
return NULL; |
||||
} |
||||
|
||||
eglGetConfigs(_glfwLibrary.EGL.display, configs, count, &count); |
||||
if (!count) |
||||
{ |
||||
free(configs); |
||||
|
||||
_glfwSetError(GLFW_API_UNAVAILABLE, |
||||
"EGL: No EGLConfigs returned"); |
||||
return NULL; |
||||
} |
||||
|
||||
result = (_GLFWfbconfig*) malloc(sizeof(_GLFWfbconfig) * count); |
||||
if (!result) |
||||
{ |
||||
free(configs); |
||||
|
||||
_glfwSetError(GLFW_OUT_OF_MEMORY, NULL); |
||||
return NULL; |
||||
} |
||||
|
||||
for (i = 0; i < count; i++) |
||||
{ |
||||
_GLFWfbconfig* f = result + *found; |
||||
|
||||
if (!getConfigAttrib(configs[i], EGL_NATIVE_VISUAL_ID)) |
||||
{ |
||||
// Only consider EGLConfigs with associated visuals
|
||||
continue; |
||||
} |
||||
|
||||
if (!(getConfigAttrib(configs[i], EGL_COLOR_BUFFER_TYPE) & EGL_RGB_BUFFER)) |
||||
{ |
||||
// Only consider RGB(A) EGLConfigs
|
||||
continue; |
||||
} |
||||
|
||||
if (!(getConfigAttrib(configs[i], EGL_SURFACE_TYPE) & EGL_WINDOW_BIT)) |
||||
{ |
||||
// Only consider window EGLConfigs
|
||||
continue; |
||||
} |
||||
|
||||
if (wndconfig->clientAPI == GLFW_OPENGL_ES_API) |
||||
{ |
||||
if (wndconfig->glMajor == 1) |
||||
{ |
||||
if (!(getConfigAttrib(configs[i], EGL_RENDERABLE_TYPE) & EGL_OPENGL_ES_BIT)) |
||||
continue; |
||||
} |
||||
else |
||||
{ |
||||
if (!(getConfigAttrib(configs[i], EGL_RENDERABLE_TYPE) & EGL_OPENGL_ES2_BIT)) |
||||
continue; |
||||
} |
||||
} |
||||
else if (wndconfig->clientAPI == GLFW_OPENGL_API) |
||||
{ |
||||
if (!(getConfigAttrib(configs[i], EGL_RENDERABLE_TYPE) & EGL_OPENGL_BIT)) |
||||
continue; |
||||
} |
||||
|
||||
f->redBits = getConfigAttrib(configs[i], EGL_RED_SIZE); |
||||
f->greenBits = getConfigAttrib(configs[i], EGL_GREEN_SIZE); |
||||
f->blueBits = getConfigAttrib(configs[i], EGL_BLUE_SIZE); |
||||
|
||||
f->alphaBits = getConfigAttrib(configs[i], EGL_ALPHA_SIZE); |
||||
f->depthBits = getConfigAttrib(configs[i], EGL_DEPTH_SIZE); |
||||
f->stencilBits = getConfigAttrib(configs[i], EGL_STENCIL_SIZE); |
||||
|
||||
f->samples = getConfigAttrib(configs[i], EGL_SAMPLES); |
||||
|
||||
// NOTE: There does not appear to be any way to request sRGB
|
||||
// framebuffers for OpenGL or GLES contexts; only for OpenVG ones
|
||||
f->sRGB = GL_FALSE; |
||||
|
||||
f->platformID = (GLFWintptr) getConfigAttrib(configs[i], EGL_CONFIG_ID); |
||||
|
||||
(*found)++; |
||||
} |
||||
|
||||
free(configs); |
||||
return result; |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Create the actual OpenGL(|ES) context
|
||||
//========================================================================
|
||||
|
||||
#define setEGLattrib(attribs, index, attribName, attribValue) \ |
||||
{ \
|
||||
attribs[index++] = attribName; \
|
||||
attribs[index++] = attribValue; \
|
||||
} |
||||
|
||||
static int createContext(_GLFWwindow* window, |
||||
const _GLFWwndconfig* wndconfig, |
||||
EGLint fbconfigID) |
||||
{ |
||||
int attribs[40]; |
||||
EGLint count, index; |
||||
EGLConfig config; |
||||
EGLContext share = NULL; |
||||
|
||||
if (wndconfig->share) |
||||
share = wndconfig->share->EGL.context; |
||||
|
||||
// Retrieve the previously selected EGLConfig
|
||||
{ |
||||
index = 0; |
||||
|
||||
setEGLattrib(attribs, index, EGL_CONFIG_ID, fbconfigID); |
||||
setEGLattrib(attribs, index, EGL_NONE, EGL_NONE); |
||||
|
||||
eglChooseConfig(_glfwLibrary.EGL.display, attribs, &config, 1, &count); |
||||
if (!count) |
||||
{ |
||||
_glfwSetError(GLFW_PLATFORM_ERROR, |
||||
"EGL: Failed to retrieve the selected EGLConfig"); |
||||
return GL_FALSE; |
||||
} |
||||
} |
||||
|
||||
// Retrieve the corresponding visual
|
||||
// NOTE: This is the only non-portable code in this file.
|
||||
// Maybe it would not hurt too much to add #ifdefs for different platforms?
|
||||
#if defined(_GLFW_X11) |
||||
{ |
||||
int mask; |
||||
EGLint redBits, greenBits, blueBits, alphaBits, visualID = 0; |
||||
XVisualInfo info; |
||||
|
||||
eglGetConfigAttrib(_glfwLibrary.EGL.display, config, |
||||
EGL_NATIVE_VISUAL_ID, &visualID); |
||||
|
||||
info.screen = _glfwLibrary.X11.screen; |
||||
mask = VisualScreenMask; |
||||
|
||||
if (visualID) |
||||
{ |
||||
// The X window visual must match the EGL config
|
||||
info.visualid = visualID; |
||||
mask |= VisualIDMask; |
||||
} |
||||
else |
||||
{ |
||||
// some EGL drivers don't implement the EGL_NATIVE_VISUAL_ID
|
||||
// attribute, so attempt to find the closest match.
|
||||
|
||||
eglGetConfigAttrib(_glfwLibrary.EGL.display, config, |
||||
EGL_RED_SIZE, &redBits); |
||||
eglGetConfigAttrib(_glfwLibrary.EGL.display, config, |
||||
EGL_GREEN_SIZE, &greenBits); |
||||
eglGetConfigAttrib(_glfwLibrary.EGL.display, config, |
||||
EGL_BLUE_SIZE, &blueBits); |
||||
eglGetConfigAttrib(_glfwLibrary.EGL.display, config, |
||||
EGL_ALPHA_SIZE, &alphaBits); |
||||
|
||||
info.depth = redBits + greenBits + blueBits + alphaBits; |
||||
mask |= VisualDepthMask; |
||||
} |
||||
|
||||
window->EGL.visual = XGetVisualInfo(_glfwLibrary.X11.display, |
||||
mask, &info, &count); |
||||
|
||||
if (window->EGL.visual == NULL) |
||||
{ |
||||
_glfwSetError(GLFW_PLATFORM_ERROR, |
||||
"EGL: Failed to retrieve visual for EGLConfig"); |
||||
return GL_FALSE; |
||||
} |
||||
} |
||||
#endif |
||||
|
||||
if (wndconfig->clientAPI == GLFW_OPENGL_ES_API) |
||||
{ |
||||
if (!eglBindAPI(EGL_OPENGL_ES_API)) |
||||
{ |
||||
_glfwSetError(GLFW_PLATFORM_ERROR, |
||||
"EGL: OpenGL ES is not supported"); |
||||
return GL_FALSE; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if (!eglBindAPI(EGL_OPENGL_API)) |
||||
{ |
||||
_glfwSetError(GLFW_PLATFORM_ERROR, |
||||
"EGL: OpenGL is not supported"); |
||||
return GL_FALSE; |
||||
} |
||||
} |
||||
|
||||
index = 0; |
||||
|
||||
if (_glfwLibrary.EGL.KHR_create_context) |
||||
{ |
||||
setEGLattrib(attribs, index, EGL_CONTEXT_MAJOR_VERSION_KHR, wndconfig->glMajor); |
||||
setEGLattrib(attribs, index, EGL_CONTEXT_MINOR_VERSION_KHR, wndconfig->glMinor); |
||||
|
||||
if (wndconfig->glForward || wndconfig->glDebug || wndconfig->glRobustness) |
||||
{ |
||||
int flags = 0; |
||||
|
||||
if (wndconfig->glForward) |
||||
flags |= EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR; |
||||
|
||||
if (wndconfig->glDebug) |
||||
flags |= EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR; |
||||
|
||||
if (wndconfig->glRobustness) |
||||
flags |= EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR; |
||||
|
||||
setEGLattrib(attribs, index, EGL_CONTEXT_FLAGS_KHR, flags); |
||||
} |
||||
|
||||
if (wndconfig->glProfile) |
||||
{ |
||||
int flags = 0; |
||||
|
||||
if (wndconfig->glProfile == GLFW_OPENGL_CORE_PROFILE) |
||||
flags = EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR; |
||||
else if (wndconfig->glProfile == GLFW_OPENGL_COMPAT_PROFILE) |
||||
flags = EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; |
||||
|
||||
setEGLattrib(attribs, index, EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, flags); |
||||
} |
||||
|
||||
if (wndconfig->glRobustness) |
||||
{ |
||||
int strategy; |
||||
|
||||
if (wndconfig->glRobustness == GLFW_OPENGL_NO_RESET_NOTIFICATION) |
||||
strategy = EGL_NO_RESET_NOTIFICATION_KHR; |
||||
else if (wndconfig->glRobustness == GLFW_OPENGL_LOSE_CONTEXT_ON_RESET) |
||||
strategy = EGL_LOSE_CONTEXT_ON_RESET_KHR; |
||||
|
||||
setEGLattrib(attribs, index, EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, strategy); |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if (wndconfig->clientAPI == GLFW_OPENGL_ES_API) |
||||
setEGLattrib(attribs, index, EGL_CONTEXT_CLIENT_VERSION, wndconfig->glMajor); |
||||
} |
||||
|
||||
setEGLattrib(attribs, index, EGL_NONE, EGL_NONE); |
||||
|
||||
window->EGL.context = eglCreateContext(_glfwLibrary.EGL.display, |
||||
config, share, attribs); |
||||
|
||||
if (window->EGL.context == EGL_NO_CONTEXT) |
||||
{ |
||||
// TODO: Handle all the various error codes here
|
||||
|
||||
_glfwSetError(GLFW_PLATFORM_ERROR, |
||||
"EGL: Failed to create context"); |
||||
return GL_FALSE; |
||||
} |
||||
|
||||
window->EGL.config = config; |
||||
|
||||
return GL_TRUE; |
||||
} |
||||
|
||||
#undef setEGLattrib |
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
////// GLFW internal API //////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//========================================================================
|
||||
// Initialize EGL
|
||||
//========================================================================
|
||||
|
||||
int _glfwInitOpenGL(void) |
||||
{ |
||||
#ifdef _GLFW_DLOPEN_LIBEGL |
||||
int i; |
||||
char* libEGL_names[ ] = |
||||
{ |
||||
"libEGL.so", |
||||
"libEGL.so.1", |
||||
"/usr/lib/libEGL.so", |
||||
"/usr/lib/libEGL.so.1", |
||||
NULL |
||||
}; |
||||
|
||||
for (i = 0; libEGL_names[i] != NULL; i++) |
||||
{ |
||||
_glfwLibrary.EGL.libEGL = dlopen(libEGL_names[i], RTLD_LAZY | RTLD_GLOBAL); |
||||
if (_glfwLibrary.EGL.libEGL) |
||||
break; |
||||
} |
||||
|
||||
if (!_glfwLibrary.EGL.libEGL) |
||||
{ |
||||
_glfwSetError(GLFW_PLATFORM_ERROR, "EGL: Failed to find libEGL"); |
||||
return GL_FALSE; |
||||
} |
||||
#endif |
||||
|
||||
_glfwLibrary.EGL.display = eglGetDisplay(_GLFW_EGL_NATIVE_DISPLAY); |
||||
if (_glfwLibrary.EGL.display == EGL_NO_DISPLAY) |
||||
{ |
||||
_glfwSetError(GLFW_API_UNAVAILABLE, |
||||
"EGL: Failed to get EGL display"); |
||||
return GL_FALSE; |
||||
} |
||||
|
||||
if (!eglInitialize(_glfwLibrary.EGL.display, |
||||
&_glfwLibrary.EGL.majorVersion, |
||||
&_glfwLibrary.EGL.minorVersion)) |
||||
{ |
||||
_glfwSetError(GLFW_API_UNAVAILABLE, |
||||
"EGL: Failed to initialize EGL"); |
||||
return GL_FALSE; |
||||
} |
||||
|
||||
if (_glfwPlatformExtensionSupported("EGL_KHR_create_context")) |
||||
_glfwLibrary.EGL.KHR_create_context = GL_TRUE; |
||||
|
||||
return GL_TRUE; |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Terminate EGL
|
||||
//========================================================================
|
||||
|
||||
void _glfwTerminateOpenGL(void) |
||||
{ |
||||
#ifdef _GLFW_DLOPEN_LIBEGL |
||||
if (_glfwLibrary.EGL.libEGL != NULL) |
||||
{ |
||||
dlclose(_glfwLibrary.EGL.libEGL); |
||||
_glfwLibrary.EGL.libEGL = NULL; |
||||
} |
||||
#endif |
||||
|
||||
eglTerminate(_glfwLibrary.EGL.display); |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Prepare for creation of the OpenGL context
|
||||
//========================================================================
|
||||
|
||||
int _glfwCreateContext(_GLFWwindow* window, |
||||
const _GLFWwndconfig* wndconfig, |
||||
const _GLFWfbconfig* fbconfig) |
||||
{ |
||||
_GLFWfbconfig closest; |
||||
|
||||
// Choose the best available fbconfig
|
||||
{ |
||||
unsigned int fbcount; |
||||
_GLFWfbconfig* fbconfigs; |
||||
const _GLFWfbconfig* result; |
||||
|
||||
fbconfigs = getFBConfigs(window, wndconfig, &fbcount); |
||||
if (!fbconfigs) |
||||
{ |
||||
_glfwSetError(GLFW_PLATFORM_ERROR, |
||||
"EGL: No usable EGLFBConfigs found"); |
||||
return GL_FALSE; |
||||
} |
||||
|
||||
result = _glfwChooseFBConfig(fbconfig, fbconfigs, fbcount); |
||||
if (!result) |
||||
{ |
||||
_glfwSetError(GLFW_PLATFORM_ERROR, |
||||
"EGL: No EGLFBConfig matched the criteria"); |
||||
|
||||
free(fbconfigs); |
||||
return GL_FALSE; |
||||
} |
||||
|
||||
closest = *result; |
||||
free(fbconfigs); |
||||
} |
||||
|
||||
return createContext(window, wndconfig, closest.platformID); |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Destroy the OpenGL context
|
||||
//========================================================================
|
||||
|
||||
void _glfwDestroyContext(_GLFWwindow* window) |
||||
{ |
||||
if (window->EGL.visual) |
||||
{ |
||||
XFree(window->EGL.visual); |
||||
window->EGL.visual = NULL; |
||||
} |
||||
|
||||
if (window->EGL.surface) |
||||
{ |
||||
eglDestroySurface(_glfwLibrary.EGL.display, window->EGL.surface); |
||||
window->EGL.surface = EGL_NO_SURFACE; |
||||
} |
||||
|
||||
if (window->EGL.context) |
||||
{ |
||||
eglDestroyContext(_glfwLibrary.EGL.display, window->EGL.context); |
||||
window->EGL.context = EGL_NO_CONTEXT; |
||||
} |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Make the OpenGL context associated with the specified window current
|
||||
//========================================================================
|
||||
|
||||
void _glfwPlatformMakeContextCurrent(_GLFWwindow* window) |
||||
{ |
||||
if (window) |
||||
{ |
||||
if (window->EGL.surface == EGL_NO_SURFACE) |
||||
{ |
||||
window->EGL.surface = eglCreateWindowSurface(_glfwLibrary.EGL.display, |
||||
window->EGL.config, |
||||
_GLFW_EGL_NATIVE_WINDOW, |
||||
NULL); |
||||
if (window->EGL.surface == EGL_NO_SURFACE) |
||||
{ |
||||
_glfwSetError(GLFW_PLATFORM_ERROR, |
||||
"EGL: Failed to create window surface"); |
||||
} |
||||
} |
||||
|
||||
eglMakeCurrent(_glfwLibrary.EGL.display, |
||||
window->EGL.surface, |
||||
window->EGL.surface, |
||||
window->EGL.context); |
||||
} |
||||
else |
||||
{ |
||||
eglMakeCurrent(_glfwLibrary.EGL.display, |
||||
EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); |
||||
} |
||||
|
||||
_glfwCurrentWindow = window; |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Return the window object whose context is current
|
||||
//========================================================================
|
||||
|
||||
_GLFWwindow* _glfwPlatformGetCurrentContext(void) |
||||
{ |
||||
return _glfwCurrentWindow; |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Swap OpenGL buffers
|
||||
//========================================================================
|
||||
|
||||
void _glfwPlatformSwapBuffers(_GLFWwindow* window) |
||||
{ |
||||
eglSwapBuffers(_glfwLibrary.EGL.display, window->EGL.surface); |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Set double buffering swap interval
|
||||
//========================================================================
|
||||
|
||||
void _glfwPlatformSwapInterval(int interval) |
||||
{ |
||||
eglSwapInterval(_glfwLibrary.EGL.display, interval); |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Check if an OpenGL extension is available at runtime
|
||||
//========================================================================
|
||||
|
||||
int _glfwPlatformExtensionSupported(const char* extension) |
||||
{ |
||||
const char* extensions; |
||||
|
||||
extensions = eglQueryString(_glfwLibrary.EGL.display, EGL_EXTENSIONS); |
||||
if (extensions != NULL) |
||||
{ |
||||
if (_glfwStringInExtensionString(extension, (unsigned char*) extensions)) |
||||
return GL_TRUE; |
||||
} |
||||
|
||||
return GL_FALSE; |
||||
} |
||||
|
||||
|
||||
//========================================================================
|
||||
// Get the function pointer to an OpenGL function
|
||||
//========================================================================
|
||||
|
||||
GLFWglproc _glfwPlatformGetProcAddress(const char* procname) |
||||
{ |
||||
return _glfw_eglGetProcAddress(procname); |
||||
} |
||||
|
@ -0,0 +1,96 @@ |
||||
//========================================================================
|
||||
// GLFW - An OpenGL library
|
||||
// Platform: EGL
|
||||
// API version: 3.0
|
||||
// WWW: http://www.glfw.org/
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2002-2006 Marcus Geelnard
|
||||
// Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
|
||||
//
|
||||
// This software is provided 'as-is', without any express or implied
|
||||
// warranty. In no event will the authors be held liable for any damages
|
||||
// arising from the use of this software.
|
||||
//
|
||||
// Permission is granted to anyone to use this software for any purpose,
|
||||
// including commercial applications, and to alter it and redistribute it
|
||||
// freely, subject to the following restrictions:
|
||||
//
|
||||
// 1. The origin of this software must not be misrepresented; you must not
|
||||
// claim that you wrote the original software. If you use this software
|
||||
// in a product, an acknowledgment in the product documentation would
|
||||
// be appreciated but is not required.
|
||||
//
|
||||
// 2. Altered source versions must be plainly marked as such, and must not
|
||||
// be misrepresented as being the original software.
|
||||
//
|
||||
// 3. This notice may not be removed or altered from any source
|
||||
// distribution.
|
||||
//
|
||||
//========================================================================
|
||||
|
||||
#ifndef _egl_platform_h_ |
||||
#define _egl_platform_h_ |
||||
|
||||
#include <EGL/egl.h> |
||||
|
||||
// This path may need to be changed if you build GLFW using your own setup
|
||||
// We ship and use our own copy of eglext.h since GLFW uses fairly new
|
||||
// extensions and not all operating systems come with an up-to-date version
|
||||
#include "../support/GL/eglext.h" |
||||
|
||||
// Do we have support for dlopen/dlsym?
|
||||
#if defined(_GLFW_HAS_DLOPEN) |
||||
#include <dlfcn.h> |
||||
#endif |
||||
|
||||
// We support two different ways for getting addresses for EGL
|
||||
// extension functions: eglGetProcAddress and dlsym
|
||||
#if defined(_GLFW_HAS_EGLGETPROCADDRESS) |
||||
#define _glfw_eglGetProcAddress(x) eglGetProcAddress(x) |
||||
#elif defined(_GLFW_HAS_DLOPEN) |
||||
#define _glfw_eglGetProcAddress(x) dlsym(_glfwLibrary.EGL.libEGL, x) |
||||
#define _GLFW_DLOPEN_LIBEGL |
||||
#else |
||||
#error "No OpenGL entry point retrieval mechanism was enabled" |
||||
#endif |
||||
|
||||
#define _GLFW_PLATFORM_CONTEXT_STATE _GLFWcontextEGL EGL |
||||
#define _GLFW_PLATFORM_LIBRARY_OPENGL_STATE _GLFWlibraryEGL EGL |
||||
|
||||
|
||||
//========================================================================
|
||||
// GLFW platform specific types
|
||||
//========================================================================
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Platform-specific OpenGL context structure
|
||||
//------------------------------------------------------------------------
|
||||
typedef struct _GLFWcontextEGL |
||||
{ |
||||
EGLConfig config; |
||||
EGLContext context; |
||||
EGLSurface surface; |
||||
|
||||
#if defined(_GLFW_X11) |
||||
XVisualInfo* visual; |
||||
#endif |
||||
} _GLFWcontextEGL; |
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Platform-specific library global data for EGL
|
||||
//------------------------------------------------------------------------
|
||||
typedef struct _GLFWlibraryEGL |
||||
{ |
||||
EGLDisplay display; |
||||
EGLint majorVersion, minorVersion; |
||||
|
||||
GLboolean KHR_create_context; |
||||
|
||||
#if defined(_GLFW_DLOPEN_LIBEGL) |
||||
void* libEGL; // dlopen handle for libEGL.so
|
||||
#endif |
||||
} _GLFWlibraryEGL; |
||||
|
||||
|
||||
#endif // _egl_platform_h_
|
@ -0,0 +1,120 @@ |
||||
//========================================================================
|
||||
// GLFW - An OpenGL library
|
||||
// Platform: X11/GLX
|
||||
// API version: 3.0
|
||||
// WWW: http://www.glfw.org/
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2002-2006 Marcus Geelnard
|
||||
// Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
|
||||
//
|
||||
// This software is provided 'as-is', without any express or implied
|
||||
// warranty. In no event will the authors be held liable for any damages
|
||||
// arising from the use of this software.
|
||||
//
|
||||
// Permission is granted to anyone to use this software for any purpose,
|
||||
// including commercial applications, and to alter it and redistribute it
|
||||
// freely, subject to the following restrictions:
|
||||
//
|
||||
// 1. The origin of this software must not be misrepresented; you must not
|
||||
// claim that you wrote the original software. If you use this software
|
||||
// in a product, an acknowledgment in the product documentation would
|
||||
// be appreciated but is not required.
|
||||
//
|
||||
// 2. Altered source versions must be plainly marked as such, and must not
|
||||
// be misrepresented as being the original software.
|
||||
//
|
||||
// 3. This notice may not be removed or altered from any source
|
||||
// distribution.
|
||||
//
|
||||
//========================================================================
|
||||
|
||||
#ifndef _x11_glx_platform_h_ |
||||
#define _x11_glx_platform_h_ |
||||
|
||||
#define GLX_GLXEXT_LEGACY |
||||
#include <GL/glx.h> |
||||
|
||||
// This path may need to be changed if you build GLFW using your own setup
|
||||
// We ship and use our own copy of glxext.h since GLFW uses fairly new
|
||||
// extensions and not all operating systems come with an up-to-date version
|
||||
#include "../support/GL/glxext.h" |
||||
|
||||
// Do we have support for dlopen/dlsym?
|
||||
#if defined(_GLFW_HAS_DLOPEN) |
||||
#include <dlfcn.h> |
||||
#endif |
||||
|
||||
// We support four different ways for getting addresses for GL/GLX
|
||||
// extension functions: glXGetProcAddress, glXGetProcAddressARB,
|
||||
// glXGetProcAddressEXT, and dlsym
|
||||
#if defined(_GLFW_HAS_GLXGETPROCADDRESSARB) |
||||
#define _glfw_glXGetProcAddress(x) glXGetProcAddressARB(x) |
||||
#elif defined(_GLFW_HAS_GLXGETPROCADDRESS) |
||||
#define _glfw_glXGetProcAddress(x) glXGetProcAddress(x) |
||||
#elif defined(_GLFW_HAS_GLXGETPROCADDRESSEXT) |
||||
#define _glfw_glXGetProcAddress(x) glXGetProcAddressEXT(x) |
||||
#elif defined(_GLFW_HAS_DLOPEN) |
||||
#define _glfw_glXGetProcAddress(x) dlsym(_glfwLibrary.GLX.libGL, x) |
||||
#define _GLFW_DLOPEN_LIBGL |
||||
#else |
||||
#error "No OpenGL entry point retrieval mechanism was enabled" |
||||
#endif |
||||
|
||||
#define _GLFW_PLATFORM_CONTEXT_STATE _GLFWcontextGLX GLX |
||||
#define _GLFW_PLATFORM_LIBRARY_OPENGL_STATE _GLFWlibraryGLX GLX |
||||
|
||||
#ifndef GLX_MESA_swap_control |
||||
typedef int (*PFNGLXSWAPINTERVALMESAPROC)(int); |
||||
#endif |
||||
|
||||
|
||||
//========================================================================
|
||||
// GLFW platform specific types
|
||||
//========================================================================
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Platform-specific OpenGL context structure
|
||||
//------------------------------------------------------------------------
|
||||
typedef struct _GLFWcontextGLX |
||||
{ |
||||
GLXContext context; // OpenGL rendering context
|
||||
XVisualInfo* visual; // Visual for selected GLXFBConfig
|
||||
|
||||
} _GLFWcontextGLX; |
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Platform-specific library global data for GLX
|
||||
//------------------------------------------------------------------------
|
||||
typedef struct _GLFWlibraryGLX |
||||
{ |
||||
// Server-side GLX version
|
||||
int majorVersion, minorVersion; |
||||
|
||||
// GLX extensions
|
||||
PFNGLXSWAPINTERVALSGIPROC SwapIntervalSGI; |
||||
PFNGLXSWAPINTERVALEXTPROC SwapIntervalEXT; |
||||
PFNGLXSWAPINTERVALMESAPROC SwapIntervalMESA; |
||||
PFNGLXGETFBCONFIGATTRIBSGIXPROC GetFBConfigAttribSGIX; |
||||
PFNGLXCHOOSEFBCONFIGSGIXPROC ChooseFBConfigSGIX; |
||||
PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC CreateContextWithConfigSGIX; |
||||
PFNGLXGETVISUALFROMFBCONFIGSGIXPROC GetVisualFromFBConfigSGIX; |
||||
PFNGLXCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB; |
||||
GLboolean SGIX_fbconfig; |
||||
GLboolean SGI_swap_control; |
||||
GLboolean EXT_swap_control; |
||||
GLboolean MESA_swap_control; |
||||
GLboolean ARB_multisample; |
||||
GLboolean ARB_framebuffer_sRGB; |
||||
GLboolean ARB_create_context; |
||||
GLboolean ARB_create_context_profile; |
||||
GLboolean ARB_create_context_robustness; |
||||
GLboolean EXT_create_context_es2_profile; |
||||
|
||||
#if defined(_GLFW_DLOPEN_LIBGL) |
||||
void* libGL; // dlopen handle for libGL.so
|
||||
#endif |
||||
} _GLFWlibraryGLX; |
||||
|
||||
|
||||
#endif // _x11_glx_platform_h_
|
@ -0,0 +1,62 @@ |
||||
//========================================================================
|
||||
// GLFW - An OpenGL library
|
||||
// Platform: NSOpenGL
|
||||
// API Version: 3.0
|
||||
// WWW: http://www.glfw.org/
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2009-2010 Camilla Berglund <elmindreda@elmindreda.org>
|
||||
//
|
||||
// This software is provided 'as-is', without any express or implied
|
||||
// warranty. In no event will the authors be held liable for any damages
|
||||
// arising from the use of this software.
|
||||
//
|
||||
// Permission is granted to anyone to use this software for any purpose,
|
||||
// including commercial applications, and to alter it and redistribute it
|
||||
// freely, subject to the following restrictions:
|
||||
//
|
||||
// 1. The origin of this software must not be misrepresented; you must not
|
||||
// claim that you wrote the original software. If you use this software
|
||||
// in a product, an acknowledgment in the product documentation would
|
||||
// be appreciated but is not required.
|
||||
//
|
||||
// 2. Altered source versions must be plainly marked as such, and must not
|
||||
// be misrepresented as being the original software.
|
||||
//
|
||||
// 3. This notice may not be removed or altered from any source
|
||||
// distribution.
|
||||
//
|
||||
//========================================================================
|
||||
|
||||
#ifndef _nsgl_platform_h_ |
||||
#define _nsgl_platform_h_ |
||||
|
||||
|
||||
#define _GLFW_PLATFORM_CONTEXT_STATE _GLFWcontextNSGL NSGL |
||||
#define _GLFW_PLATFORM_LIBRARY_OPENGL_STATE _GLFWlibraryNSGL NSGL |
||||
|
||||
|
||||
//========================================================================
|
||||
// GLFW platform specific types
|
||||
//========================================================================
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Platform-specific OpenGL context structure
|
||||
//------------------------------------------------------------------------
|
||||
typedef struct _GLFWcontextNSGL |
||||
{ |
||||
id pixelFormat; |
||||
id context; |
||||
} _GLFWcontextNSGL; |
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Platform-specific library global data for NSGL
|
||||
//------------------------------------------------------------------------
|
||||
typedef struct _GLFWlibraryNSGL |
||||
{ |
||||
// dlopen handle for dynamically loading OpenGL extension entry points
|
||||
void* framework; |
||||
} _GLFWlibraryNSGL; |
||||
|
||||
|
||||
#endif // _nsgl_platform_h_
|
@ -0,0 +1,84 @@ |
||||
//========================================================================
|
||||
// GLFW - An OpenGL library
|
||||
// Platform: WGL
|
||||
// API version: 3.0
|
||||
// WWW: http://www.glfw.org/
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright (c) 2002-2006 Marcus Geelnard
|
||||
// Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
|
||||
//
|
||||
// This software is provided 'as-is', without any express or implied
|
||||
// warranty. In no event will the authors be held liable for any damages
|
||||
// arising from the use of this software.
|
||||
//
|
||||
// Permission is granted to anyone to use this software for any purpose,
|
||||
// including commercial applications, and to alter it and redistribute it
|
||||
// freely, subject to the following restrictions:
|
||||
//
|
||||
// 1. The origin of this software must not be misrepresented; you must not
|
||||
// claim that you wrote the original software. If you use this software
|
||||
// in a product, an acknowledgment in the product documentation would
|
||||
// be appreciated but is not required.
|
||||
//
|
||||
// 2. Altered source versions must be plainly marked as such, and must not
|
||||
// be misrepresented as being the original software.
|
||||
//
|
||||
// 3. This notice may not be removed or altered from any source
|
||||
// distribution.
|
||||
//
|
||||
//========================================================================
|
||||
|
||||
#ifndef _wgl_platform_h_ |
||||
#define _wgl_platform_h_ |
||||
|
||||
// This path may need to be changed if you build GLFW using your own setup
|
||||
// We ship and use our own copy of wglext.h since GLFW uses fairly new
|
||||
// extensions and not all operating systems come with an up-to-date version
|
||||
#include "../support/GL/wglext.h" |
||||
|
||||
|
||||
#define _GLFW_PLATFORM_CONTEXT_STATE _GLFWcontextWGL WGL |
||||
#define _GLFW_PLATFORM_LIBRARY_OPENGL_STATE _GLFWlibraryWGL WGL |
||||
|
||||
|
||||
//========================================================================
|
||||
// GLFW platform specific types
|
||||
//========================================================================
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Platform-specific OpenGL context structure
|
||||
//------------------------------------------------------------------------
|
||||
typedef struct _GLFWcontextWGL |
||||
{ |
||||
// Platform specific window resources
|
||||
HDC DC; // Private GDI device context
|
||||
HGLRC context; // Permanent rendering context
|
||||
|
||||
// Platform specific extensions (context specific)
|
||||
PFNWGLSWAPINTERVALEXTPROC SwapIntervalEXT; |
||||
PFNWGLGETPIXELFORMATATTRIBIVARBPROC GetPixelFormatAttribivARB; |
||||
PFNWGLGETEXTENSIONSSTRINGEXTPROC GetExtensionsStringEXT; |
||||
PFNWGLGETEXTENSIONSSTRINGARBPROC GetExtensionsStringARB; |
||||
PFNWGLCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB; |
||||
GLboolean EXT_swap_control; |
||||
GLboolean ARB_multisample; |
||||
GLboolean ARB_framebuffer_sRGB; |
||||
GLboolean ARB_pixel_format; |
||||
GLboolean ARB_create_context; |
||||
GLboolean ARB_create_context_profile; |
||||
GLboolean EXT_create_context_es2_profile; |
||||
GLboolean ARB_create_context_robustness; |
||||
} _GLFWcontextWGL; |
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Platform-specific library global data for WGL
|
||||
//------------------------------------------------------------------------
|
||||
typedef struct _GLFWlibraryWGL |
||||
{ |
||||
int dummy; |
||||
|
||||
} _GLFWlibraryWGL; |
||||
|
||||
|
||||
#endif // _wgl_platform_h_
|
@ -0,0 +1,444 @@ |
||||
#ifndef __eglext_h_ |
||||
#define __eglext_h_ |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/*
|
||||
** Copyright (c) 2007-2012 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. |
||||
*/ |
||||
|
||||
#include <EGL/eglplatform.h> |
||||
|
||||
/*************************************************************/ |
||||
|
||||
/* Header file version number */ |
||||
/* Current version at http://www.khronos.org/registry/egl/ */ |
||||
/* $Revision: 18175 $ on $Date: 2012-06-13 11:26:12 -0700 (Wed, 13 Jun 2012) $ */ |
||||
#define EGL_EGLEXT_VERSION 13 |
||||
|
||||
#ifndef EGL_KHR_config_attribs |
||||
#define EGL_KHR_config_attribs 1 |
||||
#define EGL_CONFORMANT_KHR 0x3042 /* EGLConfig attribute */ |
||||
#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 /* EGL_SURFACE_TYPE bitfield */ |
||||
#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 /* EGL_SURFACE_TYPE bitfield */ |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_lock_surface |
||||
#define EGL_KHR_lock_surface 1 |
||||
#define EGL_READ_SURFACE_BIT_KHR 0x0001 /* EGL_LOCK_USAGE_HINT_KHR bitfield */ |
||||
#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 /* EGL_LOCK_USAGE_HINT_KHR bitfield */ |
||||
#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 /* EGL_SURFACE_TYPE bitfield */ |
||||
#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 /* EGL_SURFACE_TYPE bitfield */ |
||||
#define EGL_MATCH_FORMAT_KHR 0x3043 /* EGLConfig attribute */ |
||||
#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 /* EGL_MATCH_FORMAT_KHR value */ |
||||
#define EGL_FORMAT_RGB_565_KHR 0x30C1 /* EGL_MATCH_FORMAT_KHR value */ |
||||
#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 /* EGL_MATCH_FORMAT_KHR value */ |
||||
#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 /* EGL_MATCH_FORMAT_KHR value */ |
||||
#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 /* eglLockSurfaceKHR attribute */ |
||||
#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 /* eglLockSurfaceKHR attribute */ |
||||
#define EGL_BITMAP_POINTER_KHR 0x30C6 /* eglQuerySurface attribute */ |
||||
#define EGL_BITMAP_PITCH_KHR 0x30C7 /* eglQuerySurface attribute */ |
||||
#define EGL_BITMAP_ORIGIN_KHR 0x30C8 /* eglQuerySurface attribute */ |
||||
#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 /* eglQuerySurface attribute */ |
||||
#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA /* eglQuerySurface attribute */ |
||||
#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB /* eglQuerySurface attribute */ |
||||
#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC /* eglQuerySurface attribute */ |
||||
#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD /* eglQuerySurface attribute */ |
||||
#define EGL_LOWER_LEFT_KHR 0x30CE /* EGL_BITMAP_ORIGIN_KHR value */ |
||||
#define EGL_UPPER_LEFT_KHR 0x30CF /* EGL_BITMAP_ORIGIN_KHR value */ |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface); |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_image |
||||
#define EGL_KHR_image 1 |
||||
#define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */ |
||||
typedef void *EGLImageKHR; |
||||
#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_vg_parent_image |
||||
#define EGL_KHR_vg_parent_image 1 |
||||
#define EGL_VG_PARENT_IMAGE_KHR 0x30BA /* eglCreateImageKHR target */ |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_gl_texture_2D_image |
||||
#define EGL_KHR_gl_texture_2D_image 1 |
||||
#define EGL_GL_TEXTURE_2D_KHR 0x30B1 /* eglCreateImageKHR target */ |
||||
#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC /* eglCreateImageKHR attribute */ |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_gl_texture_cubemap_image |
||||
#define EGL_KHR_gl_texture_cubemap_image 1 |
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3 /* eglCreateImageKHR target */ |
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4 /* eglCreateImageKHR target */ |
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5 /* eglCreateImageKHR target */ |
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6 /* eglCreateImageKHR target */ |
||||
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7 /* eglCreateImageKHR target */ |
||||
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8 /* eglCreateImageKHR target */ |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_gl_texture_3D_image |
||||
#define EGL_KHR_gl_texture_3D_image 1 |
||||
#define EGL_GL_TEXTURE_3D_KHR 0x30B2 /* eglCreateImageKHR target */ |
||||
#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD /* eglCreateImageKHR attribute */ |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_gl_renderbuffer_image |
||||
#define EGL_KHR_gl_renderbuffer_image 1 |
||||
#define EGL_GL_RENDERBUFFER_KHR 0x30B9 /* eglCreateImageKHR target */ |
||||
#endif |
||||
|
||||
#if KHRONOS_SUPPORT_INT64 /* EGLTimeKHR requires 64-bit uint support */ |
||||
#ifndef EGL_KHR_reusable_sync |
||||
#define EGL_KHR_reusable_sync 1 |
||||
|
||||
typedef void* EGLSyncKHR; |
||||
typedef khronos_utime_nanoseconds_t EGLTimeKHR; |
||||
|
||||
#define EGL_SYNC_STATUS_KHR 0x30F1 |
||||
#define EGL_SIGNALED_KHR 0x30F2 |
||||
#define EGL_UNSIGNALED_KHR 0x30F3 |
||||
#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 |
||||
#define EGL_CONDITION_SATISFIED_KHR 0x30F6 |
||||
#define EGL_SYNC_TYPE_KHR 0x30F7 |
||||
#define EGL_SYNC_REUSABLE_KHR 0x30FA |
||||
#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 /* eglClientWaitSyncKHR <flags> bitfield */ |
||||
#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull |
||||
#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync); |
||||
EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); |
||||
typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); |
||||
#endif |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_image_base |
||||
#define EGL_KHR_image_base 1 |
||||
/* Most interfaces defined by EGL_KHR_image_pixmap above */ |
||||
#define EGL_IMAGE_PRESERVED_KHR 0x30D2 /* eglCreateImageKHR attribute */ |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_image_pixmap |
||||
#define EGL_KHR_image_pixmap 1 |
||||
/* Interfaces defined by EGL_KHR_image above */ |
||||
#endif |
||||
|
||||
#ifndef EGL_IMG_context_priority |
||||
#define EGL_IMG_context_priority 1 |
||||
#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 |
||||
#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 |
||||
#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 |
||||
#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_lock_surface2 |
||||
#define EGL_KHR_lock_surface2 1 |
||||
#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 |
||||
#endif |
||||
|
||||
#ifndef EGL_NV_coverage_sample |
||||
#define EGL_NV_coverage_sample 1 |
||||
#define EGL_COVERAGE_BUFFERS_NV 0x30E0 |
||||
#define EGL_COVERAGE_SAMPLES_NV 0x30E1 |
||||
#endif |
||||
|
||||
#ifndef EGL_NV_depth_nonlinear |
||||
#define EGL_NV_depth_nonlinear 1 |
||||
#define EGL_DEPTH_ENCODING_NV 0x30E2 |
||||
#define EGL_DEPTH_ENCODING_NONE_NV 0 |
||||
#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 |
||||
#endif |
||||
|
||||
#if KHRONOS_SUPPORT_INT64 /* EGLTimeNV requires 64-bit uint support */ |
||||
#ifndef EGL_NV_sync |
||||
#define EGL_NV_sync 1 |
||||
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6 |
||||
#define EGL_SYNC_STATUS_NV 0x30E7 |
||||
#define EGL_SIGNALED_NV 0x30E8 |
||||
#define EGL_UNSIGNALED_NV 0x30E9 |
||||
#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 |
||||
#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull |
||||
#define EGL_ALREADY_SIGNALED_NV 0x30EA |
||||
#define EGL_TIMEOUT_EXPIRED_NV 0x30EB |
||||
#define EGL_CONDITION_SATISFIED_NV 0x30EC |
||||
#define EGL_SYNC_TYPE_NV 0x30ED |
||||
#define EGL_SYNC_CONDITION_NV 0x30EE |
||||
#define EGL_SYNC_FENCE_NV 0x30EF |
||||
#define EGL_NO_SYNC_NV ((EGLSyncNV)0) |
||||
typedef void* EGLSyncNV; |
||||
typedef khronos_utime_nanoseconds_t EGLTimeNV; |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync); |
||||
EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); |
||||
typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); |
||||
#endif |
||||
#endif |
||||
|
||||
#if KHRONOS_SUPPORT_INT64 /* Dependent on EGL_KHR_reusable_sync which requires 64-bit uint support */ |
||||
#ifndef EGL_KHR_fence_sync |
||||
#define EGL_KHR_fence_sync 1 |
||||
/* Reuses most tokens and entry points from EGL_KHR_reusable_sync */ |
||||
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 |
||||
#define EGL_SYNC_CONDITION_KHR 0x30F8 |
||||
#define EGL_SYNC_FENCE_KHR 0x30F9 |
||||
#endif |
||||
#endif |
||||
|
||||
#ifndef EGL_HI_clientpixmap |
||||
#define EGL_HI_clientpixmap 1 |
||||
|
||||
/* Surface Attribute */ |
||||
#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 |
||||
/*
|
||||
* Structure representing a client pixmap |
||||
* (pixmap's data is in client-space memory). |
||||
*/ |
||||
struct EGLClientPixmapHI |
||||
{ |
||||
void* pData; |
||||
EGLint iWidth; |
||||
EGLint iHeight; |
||||
EGLint iStride; |
||||
}; |
||||
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI(EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap); |
||||
#endif /* EGL_HI_clientpixmap */ |
||||
|
||||
#ifndef EGL_HI_colorformats |
||||
#define EGL_HI_colorformats 1 |
||||
/* Config Attribute */ |
||||
#define EGL_COLOR_FORMAT_HI 0x8F70 |
||||
/* Color Formats */ |
||||
#define EGL_COLOR_RGB_HI 0x8F71 |
||||
#define EGL_COLOR_RGBA_HI 0x8F72 |
||||
#define EGL_COLOR_ARGB_HI 0x8F73 |
||||
#endif /* EGL_HI_colorformats */ |
||||
|
||||
#ifndef EGL_MESA_drm_image |
||||
#define EGL_MESA_drm_image 1 |
||||
#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 /* CreateDRMImageMESA attribute */ |
||||
#define EGL_DRM_BUFFER_USE_MESA 0x31D1 /* CreateDRMImageMESA attribute */ |
||||
#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 /* EGL_IMAGE_FORMAT_MESA attribute value */ |
||||
#define EGL_DRM_BUFFER_MESA 0x31D3 /* eglCreateImageKHR target */ |
||||
#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 |
||||
#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 /* EGL_DRM_BUFFER_USE_MESA bits */ |
||||
#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 /* EGL_DRM_BUFFER_USE_MESA bits */ |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); |
||||
#endif |
||||
|
||||
#ifndef EGL_NV_post_sub_buffer |
||||
#define EGL_NV_post_sub_buffer 1 |
||||
#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); |
||||
#endif |
||||
|
||||
#ifndef EGL_ANGLE_query_surface_pointer |
||||
#define EGL_ANGLE_query_surface_pointer 1 |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLBoolean eglQuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); |
||||
#endif |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); |
||||
#endif |
||||
|
||||
#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle |
||||
#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1 |
||||
#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200 |
||||
#endif |
||||
|
||||
#ifndef EGL_NV_coverage_sample_resolve |
||||
#define EGL_NV_coverage_sample_resolve 1 |
||||
#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131 |
||||
#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132 |
||||
#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133 |
||||
#endif |
||||
|
||||
#if KHRONOS_SUPPORT_INT64 /* EGLuint64NV requires 64-bit uint support */ |
||||
#ifndef EGL_NV_system_time |
||||
#define EGL_NV_system_time 1 |
||||
|
||||
typedef khronos_utime_nanoseconds_t EGLuint64NV; |
||||
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void); |
||||
EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void); |
||||
typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void); |
||||
#endif |
||||
#endif |
||||
|
||||
#if KHRONOS_SUPPORT_INT64 /* EGLuint64KHR requires 64-bit uint support */ |
||||
#ifndef EGL_KHR_stream |
||||
#define EGL_KHR_stream 1 |
||||
typedef void* EGLStreamKHR; |
||||
typedef khronos_uint64_t EGLuint64KHR; |
||||
#define EGL_NO_STREAM_KHR ((EGLStreamKHR)0) |
||||
#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210 |
||||
#define EGL_PRODUCER_FRAME_KHR 0x3212 |
||||
#define EGL_CONSUMER_FRAME_KHR 0x3213 |
||||
#define EGL_STREAM_STATE_KHR 0x3214 |
||||
#define EGL_STREAM_STATE_CREATED_KHR 0x3215 |
||||
#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216 |
||||
#define EGL_STREAM_STATE_EMPTY_KHR 0x3217 |
||||
#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218 |
||||
#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219 |
||||
#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A |
||||
#define EGL_BAD_STREAM_KHR 0x321B |
||||
#define EGL_BAD_STATE_KHR 0x321C |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR(EGLDisplay dpy, const EGLint *attrib_list); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC)(EGLDisplay dpy, const EGLint *attrib_list); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ |
||||
#ifndef EGL_KHR_stream_consumer_gltexture |
||||
#define EGL_KHR_stream_consumer_gltexture 1 |
||||
#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EGLStreamKHR stream); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream); |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ |
||||
#ifndef EGL_KHR_stream_producer_eglsurface |
||||
#define EGL_KHR_stream_producer_eglsurface 1 |
||||
#define EGL_STREAM_BIT_KHR 0x0800 |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR(EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)(EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ |
||||
#ifndef EGL_KHR_stream_producer_aldatalocator |
||||
#define EGL_KHR_stream_producer_aldatalocator 1 |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ |
||||
#ifndef EGL_KHR_stream_fifo |
||||
#define EGL_KHR_stream_fifo 1 |
||||
/* reuse EGLTimeKHR */ |
||||
#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC |
||||
#define EGL_STREAM_TIME_NOW_KHR 0x31FD |
||||
#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE |
||||
#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF |
||||
#ifdef EGL_EGLEXT_PROTOTYPES |
||||
EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); |
||||
#endif /* EGL_EGLEXT_PROTOTYPES */ |
||||
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); |
||||
#endif |
||||
#endif |
||||
|
||||
#ifndef EGL_EXT_create_context_robustness |
||||
#define EGL_EXT_create_context_robustness 1 |
||||
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF |
||||
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138 |
||||
#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE |
||||
#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF |
||||
#endif |
||||
|
||||
#ifndef EGL_ANGLE_d3d_share_handle_client_buffer |
||||
#define EGL_ANGLE_d3d_share_handle_client_buffer 1 |
||||
/* reuse EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE */ |
||||
#endif |
||||
|
||||
#ifndef EGL_KHR_create_context |
||||
#define EGL_KHR_create_context 1 |
||||
#define EGL_CONTEXT_MAJOR_VERSION_KHR EGL_CONTEXT_CLIENT_VERSION |
||||
#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB |
||||
#define EGL_CONTEXT_FLAGS_KHR 0x30FC |
||||
#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD |
||||
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD |
||||
#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE |
||||
#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF |
||||
#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 |
||||
#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 |
||||
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 |
||||
#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001 |
||||
#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002 |
||||
#endif |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif |
Loading…
Reference in New Issue