Conflicts: CMakeLists.txt readme.html src/CMakeLists.txt src/cocoa_platform.h src/win32_platform.h src/x11_platform.h tests/events.cmaster
commit
73cdc34df7
32 changed files with 1911 additions and 261 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