diff options
| author | Jesse Hall <jessehall@google.com> | 2012-04-16 12:49:39 -0700 | 
|---|---|---|
| committer | Jesse Hall <jessehall@google.com> | 2012-04-16 15:54:18 -0700 | 
| commit | ce6c3389061fb9fcdefc94fab2044a8e11600b52 (patch) | |
| tree | fedd1a11cbd21ec14bf00be83b8712054f8c5506 /emulator/opengl/host/libs/Translator/include | |
| parent | ad0111a77b0f0908cc945dc6e8e8949b75cb8886 (diff) | |
| download | sdk-ce6c3389061fb9fcdefc94fab2044a8e11600b52.zip sdk-ce6c3389061fb9fcdefc94fab2044a8e11600b52.tar.gz sdk-ce6c3389061fb9fcdefc94fab2044a8e11600b52.tar.bz2 | |
Move emulator GLES from development.git to sdk.git
The emulator GLES support has two interfaces: a host shared library
interface used by QEMU, and a protocol between the platform and the
host. The host library interface is not versioned; QEMU and the GLES
renderer must match. The protocol on the other hand must be backwards
compatible: a new GLES renderer must support an older platform image.
Thus for branching purposes it makes more sense to put the GLES
renderer in sdk.git, which is branched along with qemu.git for SDK
releases. Platform images will be built against the protocol version
in the platform branch of sdk.git.
Change-Id: I2c3bce627ecfd0a4b3e688d1839fe10755a21e58
Diffstat (limited to 'emulator/opengl/host/libs/Translator/include')
28 files changed, 6787 insertions, 0 deletions
| diff --git a/emulator/opengl/host/libs/Translator/include/EGL/egl.h b/emulator/opengl/host/libs/Translator/include/EGL/egl.h new file mode 100644 index 0000000..99ea342 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/EGL/egl.h @@ -0,0 +1,329 @@ +/* -*- mode: c; tab-width: 8; -*- */ +/* vi: set sw=4 ts=8: */ +/* Reference version of egl.h for EGL 1.4. + * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $ + */ + +/* +** Copyright (c) 2007-2009 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. +*/ + +#ifndef __egl_h_ +#define __egl_h_ + +/* All platform-dependent types and macro boilerplate (such as EGLAPI + * and EGLAPIENTRY) should go in eglplatform.h. + */ +#include <EGL/eglplatform.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* EGL Types */ +/* EGLint is defined in eglplatform.h */ +typedef unsigned int EGLBoolean; +typedef unsigned int EGLenum; +typedef void *EGLConfig; +typedef void *EGLContext; +typedef void *EGLDisplay; +typedef void *EGLSurface; +typedef void *EGLClientBuffer; + +/* EGL Versioning */ +#define EGL_VERSION_1_0			1 +#define EGL_VERSION_1_1			1 +#define EGL_VERSION_1_2			1 +#define EGL_VERSION_1_3			1 +#define EGL_VERSION_1_4			1 + +/* EGL Enumerants. Bitmasks and other exceptional cases aside, most + * enums are assigned unique values starting at 0x3000. + */ + +/* EGL aliases */ +#define EGL_FALSE			0 +#define EGL_TRUE			1 + +/* Out-of-band handle values */ +#define EGL_DEFAULT_DISPLAY		((EGLNativeDisplayType)0) +#define EGL_NO_CONTEXT			((EGLContext)0) +#define EGL_NO_DISPLAY			((EGLDisplay)0) +#define EGL_NO_SURFACE			((EGLSurface)0) + +/* Out-of-band attribute value */ +#define EGL_DONT_CARE			((EGLint)-1) + +/* Errors / GetError return values */ +#define EGL_SUCCESS			0x3000 +#define EGL_NOT_INITIALIZED		0x3001 +#define EGL_BAD_ACCESS			0x3002 +#define EGL_BAD_ALLOC			0x3003 +#define EGL_BAD_ATTRIBUTE		0x3004 +#define EGL_BAD_CONFIG			0x3005 +#define EGL_BAD_CONTEXT			0x3006 +#define EGL_BAD_CURRENT_SURFACE		0x3007 +#define EGL_BAD_DISPLAY			0x3008 +#define EGL_BAD_MATCH			0x3009 +#define EGL_BAD_NATIVE_PIXMAP		0x300A +#define EGL_BAD_NATIVE_WINDOW		0x300B +#define EGL_BAD_PARAMETER		0x300C +#define EGL_BAD_SURFACE			0x300D +#define EGL_CONTEXT_LOST		0x300E	/* EGL 1.1 - IMG_power_management */ + +/* Reserved 0x300F-0x301F for additional errors */ + +/* Config attributes */ +#define EGL_BUFFER_SIZE			0x3020 +#define EGL_ALPHA_SIZE			0x3021 +#define EGL_BLUE_SIZE			0x3022 +#define EGL_GREEN_SIZE			0x3023 +#define EGL_RED_SIZE			0x3024 +#define EGL_DEPTH_SIZE			0x3025 +#define EGL_STENCIL_SIZE		0x3026 +#define EGL_CONFIG_CAVEAT		0x3027 +#define EGL_CONFIG_ID			0x3028 +#define EGL_LEVEL			0x3029 +#define EGL_MAX_PBUFFER_HEIGHT		0x302A +#define EGL_MAX_PBUFFER_PIXELS		0x302B +#define EGL_MAX_PBUFFER_WIDTH		0x302C +#define EGL_NATIVE_RENDERABLE		0x302D +#define EGL_NATIVE_VISUAL_ID		0x302E +#define EGL_NATIVE_VISUAL_TYPE		0x302F +#define EGL_SAMPLES			0x3031 +#define EGL_SAMPLE_BUFFERS		0x3032 +#define EGL_SURFACE_TYPE		0x3033 +#define EGL_TRANSPARENT_TYPE		0x3034 +#define EGL_TRANSPARENT_BLUE_VALUE	0x3035 +#define EGL_TRANSPARENT_GREEN_VALUE	0x3036 +#define EGL_TRANSPARENT_RED_VALUE	0x3037 +#define EGL_NONE			0x3038	/* Attrib list terminator */ +#define EGL_BIND_TO_TEXTURE_RGB		0x3039 +#define EGL_BIND_TO_TEXTURE_RGBA	0x303A +#define EGL_MIN_SWAP_INTERVAL		0x303B +#define EGL_MAX_SWAP_INTERVAL		0x303C +#define EGL_LUMINANCE_SIZE		0x303D +#define EGL_ALPHA_MASK_SIZE		0x303E +#define EGL_COLOR_BUFFER_TYPE		0x303F +#define EGL_RENDERABLE_TYPE		0x3040 +#define EGL_MATCH_NATIVE_PIXMAP		0x3041	/* Pseudo-attribute (not queryable) */ +#define EGL_CONFORMANT			0x3042 + +/* Reserved 0x3041-0x304F for additional config attributes */ + +/* Config attribute values */ +#define EGL_SLOW_CONFIG			0x3050	/* EGL_CONFIG_CAVEAT value */ +#define EGL_NON_CONFORMANT_CONFIG	0x3051	/* EGL_CONFIG_CAVEAT value */ +#define EGL_TRANSPARENT_RGB		0x3052	/* EGL_TRANSPARENT_TYPE value */ +#define EGL_RGB_BUFFER			0x308E	/* EGL_COLOR_BUFFER_TYPE value */ +#define EGL_LUMINANCE_BUFFER		0x308F	/* EGL_COLOR_BUFFER_TYPE value */ + +/* More config attribute values, for EGL_TEXTURE_FORMAT */ +#define EGL_NO_TEXTURE			0x305C +#define EGL_TEXTURE_RGB			0x305D +#define EGL_TEXTURE_RGBA		0x305E +#define EGL_TEXTURE_2D			0x305F + +/* Config attribute mask bits */ +#define EGL_PBUFFER_BIT			0x0001	/* EGL_SURFACE_TYPE mask bits */ +#define EGL_PIXMAP_BIT			0x0002	/* EGL_SURFACE_TYPE mask bits */ +#define EGL_WINDOW_BIT			0x0004	/* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_COLORSPACE_LINEAR_BIT	0x0020	/* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_ALPHA_FORMAT_PRE_BIT	0x0040	/* EGL_SURFACE_TYPE mask bits */ +#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200	/* EGL_SURFACE_TYPE mask bits */ +#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400	/* EGL_SURFACE_TYPE mask bits */ + +#define EGL_OPENGL_ES_BIT		0x0001	/* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENVG_BIT			0x0002	/* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_ES2_BIT		0x0004	/* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_BIT			0x0008	/* EGL_RENDERABLE_TYPE mask bits */ + +/* QueryString targets */ +#define EGL_VENDOR			0x3053 +#define EGL_VERSION			0x3054 +#define EGL_EXTENSIONS			0x3055 +#define EGL_CLIENT_APIS			0x308D + +/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */ +#define EGL_HEIGHT			0x3056 +#define EGL_WIDTH			0x3057 +#define EGL_LARGEST_PBUFFER		0x3058 +#define EGL_TEXTURE_FORMAT		0x3080 +#define EGL_TEXTURE_TARGET		0x3081 +#define EGL_MIPMAP_TEXTURE		0x3082 +#define EGL_MIPMAP_LEVEL		0x3083 +#define EGL_RENDER_BUFFER		0x3086 +#define EGL_VG_COLORSPACE		0x3087 +#define EGL_VG_ALPHA_FORMAT		0x3088 +#define EGL_HORIZONTAL_RESOLUTION	0x3090 +#define EGL_VERTICAL_RESOLUTION		0x3091 +#define EGL_PIXEL_ASPECT_RATIO		0x3092 +#define EGL_SWAP_BEHAVIOR		0x3093 +#define EGL_MULTISAMPLE_RESOLVE		0x3099 + +/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */ +#define EGL_BACK_BUFFER			0x3084 +#define EGL_SINGLE_BUFFER		0x3085 + +/* OpenVG color spaces */ +#define EGL_VG_COLORSPACE_sRGB		0x3089	/* EGL_VG_COLORSPACE value */ +#define EGL_VG_COLORSPACE_LINEAR	0x308A	/* EGL_VG_COLORSPACE value */ + +/* OpenVG alpha formats */ +#define EGL_VG_ALPHA_FORMAT_NONPRE	0x308B	/* EGL_ALPHA_FORMAT value */ +#define EGL_VG_ALPHA_FORMAT_PRE		0x308C	/* EGL_ALPHA_FORMAT value */ + +/* Constant scale factor by which fractional display resolutions & + * aspect ratio are scaled when queried as integer values. + */ +#define EGL_DISPLAY_SCALING		10000 + +/* Unknown display resolution/aspect ratio */ +#define EGL_UNKNOWN			((EGLint)-1) + +/* Back buffer swap behaviors */ +#define EGL_BUFFER_PRESERVED		0x3094	/* EGL_SWAP_BEHAVIOR value */ +#define EGL_BUFFER_DESTROYED		0x3095	/* EGL_SWAP_BEHAVIOR value */ + +/* CreatePbufferFromClientBuffer buffer types */ +#define EGL_OPENVG_IMAGE		0x3096 + +/* QueryContext targets */ +#define EGL_CONTEXT_CLIENT_TYPE		0x3097 + +/* CreateContext attributes */ +#define EGL_CONTEXT_CLIENT_VERSION	0x3098 + +/* Multisample resolution behaviors */ +#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A	/* EGL_MULTISAMPLE_RESOLVE value */ +#define EGL_MULTISAMPLE_RESOLVE_BOX	0x309B	/* EGL_MULTISAMPLE_RESOLVE value */ + +/* BindAPI/QueryAPI targets */ +#define EGL_OPENGL_ES_API		0x30A0 +#define EGL_OPENVG_API			0x30A1 +#define EGL_OPENGL_API			0x30A2 + +/* GetCurrentSurface targets */ +#define EGL_DRAW			0x3059 +#define EGL_READ			0x305A + +/* WaitNative engines */ +#define EGL_CORE_NATIVE_ENGINE		0x305B + +/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */ +#define EGL_COLORSPACE			EGL_VG_COLORSPACE +#define EGL_ALPHA_FORMAT		EGL_VG_ALPHA_FORMAT +#define EGL_COLORSPACE_sRGB		EGL_VG_COLORSPACE_sRGB +#define EGL_COLORSPACE_LINEAR		EGL_VG_COLORSPACE_LINEAR +#define EGL_ALPHA_FORMAT_NONPRE		EGL_VG_ALPHA_FORMAT_NONPRE +#define EGL_ALPHA_FORMAT_PRE		EGL_VG_ALPHA_FORMAT_PRE + +/* EGL extensions must request enum blocks from the Khronos + * API Registrar, who maintains the enumerant registry. Submit + * a bug in Khronos Bugzilla against task "Registry". + */ + + + +/* EGL Functions */ + +EGLAPI EGLint EGLAPIENTRY eglGetError(void); + +EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id); +EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); +EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy); + +EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name); + +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, +			 EGLint config_size, EGLint *num_config); +EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, +			   EGLConfig *configs, EGLint config_size, +			   EGLint *num_config); +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, +			      EGLint attribute, EGLint *value); + +EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, +				  EGLNativeWindowType win, +				  const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, +				   const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, +				  EGLNativePixmapType pixmap, +				  const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface); +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, +			   EGLint attribute, EGLint *value); + +EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api); +EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void); + +EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void); + +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void); + +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer( +	      EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, +	      EGLConfig config, const EGLint *attrib_list); + +EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, +			    EGLint attribute, EGLint value); +EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + + +EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval); + + +EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, +			    EGLContext share_context, +			    const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx); +EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, +			  EGLSurface read, EGLContext ctx); + +EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void); +EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw); +EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, +			   EGLint attribute, EGLint *value); + +EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void); +EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine); +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); +EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, +			  EGLNativePixmapType target); + +/* This is a generic function pointer type, whose name indicates it must + * be cast to the proper type *and calling convention* before use. + */ +typedef void (*__eglMustCastToProperFunctionPointerType)(void); + +/* Now, define eglGetProcAddress using the generic function ptr. type */ +EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY +       eglGetProcAddress(const char *procname); + +#ifdef __cplusplus +} +#endif + +#endif /* __egl_h_ */ diff --git a/emulator/opengl/host/libs/Translator/include/EGL/eglext.h b/emulator/opengl/host/libs/Translator/include/EGL/eglext.h new file mode 100644 index 0000000..1ffcd56 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/EGL/eglext.h @@ -0,0 +1,244 @@ +#ifndef __eglext_h_ +#define __eglext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2007-2010 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: 11249 $ on $Date: 2010-05-05 09:54:28 -0700 (Wed, 05 May 2010) $ */ +#define EGL_EGLEXT_VERSION 5 + +#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 + +#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 + +#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_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 + +#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 unsigned long long EGLTimeNV; +#ifdef EGL_EGLEXT_PROTOTYPES +EGLSyncNV eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); +EGLBoolean eglDestroySyncNV (EGLSyncNV sync); +EGLBoolean eglFenceNV (EGLSyncNV sync); +EGLint eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); +EGLBoolean eglSignalSyncNV (EGLSyncNV sync, EGLenum mode); +EGLBoolean 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 + +#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 + +#ifndef EGL_ANDROID_image_native_buffer +#define EGL_ANDROID_image_native_buffer 1 +struct android_native_buffer_t; +#define EGL_NATIVE_BUFFER_ANDROID       0x3140  /* eglCreateImageKHR target */ +#endif + +#ifndef EGL_ANDROID_swap_rectangle +#define EGL_ANDROID_swap_rectangle 1 +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSetSwapRectangleANDROID (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSWAPRECTANGLEANDROIDPROC) (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/EGL/eglinternalplatform.h b/emulator/opengl/host/libs/Translator/include/EGL/eglinternalplatform.h new file mode 100644 index 0000000..953284a --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/EGL/eglinternalplatform.h @@ -0,0 +1,69 @@ +/* +* Copyright 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef EGL_INTERNAL_PLATFORM_H +#define EGL_INTERNAL_PLATFORM_H + +class SrfcInfo; //defined in Egl{$platform}Api.cpp +typedef SrfcInfo* SURFACE; +typedef SURFACE EGLNativeSurfaceType; + +#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif + +#include <GL/gl.h> +#define WGL_WGLEXT_PROTOTYPES +#include <GL/wglext.h> + +class WinDisplay; //defined in EglWindows.cpp +typedef WinDisplay* DISPLAY; + +typedef PIXELFORMATDESCRIPTOR  EGLNativePixelFormatType; +#define PIXEL_FORMAT_INITIALIZER {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +typedef HGLRC                  EGLNativeContextType; +typedef HPBUFFERARB            EGLNativePbufferType; +typedef DISPLAY                EGLNativeInternalDisplayType; + +#elif defined(__APPLE__) + +typedef void*                  EGLNativePixelFormatType; +#define PIXEL_FORMAT_INITIALIZER NULL +typedef void*                  EGLNativeContextType; +typedef void*                  EGLNativePbufferType; +typedef EGLNativeDisplayType   EGLNativeInternalDisplayType; + + +#elif defined(__unix__) + +/* X11 (tentative)  */ +#include <GL/glx.h> +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +typedef GLXFBConfig           EGLNativePixelFormatType; +#define PIXEL_FORMAT_INITIALIZER 0; +typedef GLXContext            EGLNativeContextType; +typedef GLXPbuffer            EGLNativePbufferType; +typedef EGLNativeDisplayType  EGLNativeInternalDisplayType; + +#else +#error "Platform not recognized" +#endif + + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/EGL/eglplatform.h b/emulator/opengl/host/libs/Translator/include/EGL/eglplatform.h new file mode 100644 index 0000000..b159cd7 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/EGL/eglplatform.h @@ -0,0 +1,111 @@ +#ifndef __eglplatform_h_ +#define __eglplatform_h_ +/* +** Copyright (c) 2007-2009 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. +*/ + +/* Platform-specific types and definitions for egl.h + * $Revision: 9724 $ on $Date: 2009-12-02 02:05:33 -0800 (Wed, 02 Dec 2009) $ + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file.  Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "EGL" component "Registry". + */ +#include <KHR/khrplatform.h> + +/* Macros used in EGL function prototype declarations. + * + * EGL functions should be prototyped as: + * + * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); + * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); + * + * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h + */ + +#ifndef EGLAPI +#define EGLAPI KHRONOS_APICALL +#endif + +#ifndef EGLAPIENTRY +#define EGLAPIENTRY  KHRONOS_APIENTRY +#endif +#define EGLAPIENTRYP EGLAPIENTRY* + +/* The types NativeDisplayType, NativeWindowType, and NativePixmapType + * are aliases of window-system-dependent types, such as X Display * or + * Windows Device Context. They must be defined in platform-specific + * code below. The EGL-prefixed versions of Native*Type are the same + * types, renamed in EGL 1.3 so all types in the API start with "EGL". + */ + +#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include <windows.h> + + + +typedef HDC                    EGLNativeDisplayType; +typedef HBITMAP                EGLNativePixmapType; +typedef HWND                   EGLNativeWindowType; + +#elif defined(__APPLE__) + +typedef unsigned int           EGLNativeDisplayType; +typedef void*                  EGLNativePixmapType; +typedef void*                  EGLNativeWindowType; + + +#elif defined(__unix__) + +/* X11 (tentative)  */ +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +typedef Display *           EGLNativeDisplayType; +typedef Pixmap              EGLNativePixmapType; +typedef Window              EGLNativeWindowType; + +#else +#error "Platform not recognized" +#endif + +/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ +typedef EGLNativeDisplayType NativeDisplayType; +typedef EGLNativePixmapType  NativePixmapType; +typedef EGLNativeWindowType  NativeWindowType; + + +/* Define EGLint. This must be a signed integral type large enough to contain + * all legal attribute names and values passed into and out of EGL, whether + * their type is boolean, bitmask, enumerant (symbolic constant), integer, + * handle, or other.  While in general a 32-bit integer will suffice, if + * handles are 64 bit types, then EGLint should be defined as a signed 64-bit + * integer type. + */ +typedef khronos_int32_t EGLint; + +#endif /* __eglplatform_h */ diff --git a/emulator/opengl/host/libs/Translator/include/GL/wglext.h b/emulator/opengl/host/libs/Translator/include/GL/wglext.h new file mode 100644 index 0000000..8e06d93 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GL/wglext.h @@ -0,0 +1,901 @@ +#ifndef __wglext_h_ +#define __wglext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2007-2010 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. +*/ + +/* Function declaration macros - to move into glplatform.h */ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define WIN32_LEAN_AND_MEAN 1 +#include <windows.h> +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +/*************************************************************/ + +/* Header file version number */ +/* wglext.h last updated 2010/08/06 */ +/* Current version at http://www.opengl.org/registry/ */ +#define WGL_WGLEXT_VERSION 22 + +#ifndef WGL_ARB_buffer_region +#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 +#define WGL_BACK_COLOR_BUFFER_BIT_ARB  0x00000002 +#define WGL_DEPTH_BUFFER_BIT_ARB       0x00000004 +#define WGL_STENCIL_BUFFER_BIT_ARB     0x00000008 +#endif + +#ifndef WGL_ARB_multisample +#define WGL_SAMPLE_BUFFERS_ARB         0x2041 +#define WGL_SAMPLES_ARB                0x2042 +#endif + +#ifndef WGL_ARB_extensions_string +#endif + +#ifndef WGL_ARB_pixel_format +#define WGL_NUMBER_PIXEL_FORMATS_ARB   0x2000 +#define WGL_DRAW_TO_WINDOW_ARB         0x2001 +#define WGL_DRAW_TO_BITMAP_ARB         0x2002 +#define WGL_ACCELERATION_ARB           0x2003 +#define WGL_NEED_PALETTE_ARB           0x2004 +#define WGL_NEED_SYSTEM_PALETTE_ARB    0x2005 +#define WGL_SWAP_LAYER_BUFFERS_ARB     0x2006 +#define WGL_SWAP_METHOD_ARB            0x2007 +#define WGL_NUMBER_OVERLAYS_ARB        0x2008 +#define WGL_NUMBER_UNDERLAYS_ARB       0x2009 +#define WGL_TRANSPARENT_ARB            0x200A +#define WGL_TRANSPARENT_RED_VALUE_ARB  0x2037 +#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 +#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 +#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A +#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B +#define WGL_SHARE_DEPTH_ARB            0x200C +#define WGL_SHARE_STENCIL_ARB          0x200D +#define WGL_SHARE_ACCUM_ARB            0x200E +#define WGL_SUPPORT_GDI_ARB            0x200F +#define WGL_SUPPORT_OPENGL_ARB         0x2010 +#define WGL_DOUBLE_BUFFER_ARB          0x2011 +#define WGL_STEREO_ARB                 0x2012 +#define WGL_PIXEL_TYPE_ARB             0x2013 +#define WGL_COLOR_BITS_ARB             0x2014 +#define WGL_RED_BITS_ARB               0x2015 +#define WGL_RED_SHIFT_ARB              0x2016 +#define WGL_GREEN_BITS_ARB             0x2017 +#define WGL_GREEN_SHIFT_ARB            0x2018 +#define WGL_BLUE_BITS_ARB              0x2019 +#define WGL_BLUE_SHIFT_ARB             0x201A +#define WGL_ALPHA_BITS_ARB             0x201B +#define WGL_ALPHA_SHIFT_ARB            0x201C +#define WGL_ACCUM_BITS_ARB             0x201D +#define WGL_ACCUM_RED_BITS_ARB         0x201E +#define WGL_ACCUM_GREEN_BITS_ARB       0x201F +#define WGL_ACCUM_BLUE_BITS_ARB        0x2020 +#define WGL_ACCUM_ALPHA_BITS_ARB       0x2021 +#define WGL_DEPTH_BITS_ARB             0x2022 +#define WGL_STENCIL_BITS_ARB           0x2023 +#define WGL_AUX_BUFFERS_ARB            0x2024 +#define WGL_NO_ACCELERATION_ARB        0x2025 +#define WGL_GENERIC_ACCELERATION_ARB   0x2026 +#define WGL_FULL_ACCELERATION_ARB      0x2027 +#define WGL_SWAP_EXCHANGE_ARB          0x2028 +#define WGL_SWAP_COPY_ARB              0x2029 +#define WGL_SWAP_UNDEFINED_ARB         0x202A +#define WGL_TYPE_RGBA_ARB              0x202B +#define WGL_TYPE_COLORINDEX_ARB        0x202C +#endif + +#ifndef WGL_ARB_make_current_read +#define ERROR_INVALID_PIXEL_TYPE_ARB   0x2043 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 +#endif + +#ifndef WGL_ARB_pbuffer +#define WGL_DRAW_TO_PBUFFER_ARB        0x202D +#define WGL_MAX_PBUFFER_PIXELS_ARB     0x202E +#define WGL_MAX_PBUFFER_WIDTH_ARB      0x202F +#define WGL_MAX_PBUFFER_HEIGHT_ARB     0x2030 +#define WGL_PBUFFER_LARGEST_ARB        0x2033 +#define WGL_PBUFFER_WIDTH_ARB          0x2034 +#define WGL_PBUFFER_HEIGHT_ARB         0x2035 +#define WGL_PBUFFER_LOST_ARB           0x2036 +#endif + +#ifndef WGL_ARB_render_texture +#define WGL_BIND_TO_TEXTURE_RGB_ARB    0x2070 +#define WGL_BIND_TO_TEXTURE_RGBA_ARB   0x2071 +#define WGL_TEXTURE_FORMAT_ARB         0x2072 +#define WGL_TEXTURE_TARGET_ARB         0x2073 +#define WGL_MIPMAP_TEXTURE_ARB         0x2074 +#define WGL_TEXTURE_RGB_ARB            0x2075 +#define WGL_TEXTURE_RGBA_ARB           0x2076 +#define WGL_NO_TEXTURE_ARB             0x2077 +#define WGL_TEXTURE_CUBE_MAP_ARB       0x2078 +#define WGL_TEXTURE_1D_ARB             0x2079 +#define WGL_TEXTURE_2D_ARB             0x207A +#define WGL_MIPMAP_LEVEL_ARB           0x207B +#define WGL_CUBE_MAP_FACE_ARB          0x207C +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 +#define WGL_FRONT_LEFT_ARB             0x2083 +#define WGL_FRONT_RIGHT_ARB            0x2084 +#define WGL_BACK_LEFT_ARB              0x2085 +#define WGL_BACK_RIGHT_ARB             0x2086 +#define WGL_AUX0_ARB                   0x2087 +#define WGL_AUX1_ARB                   0x2088 +#define WGL_AUX2_ARB                   0x2089 +#define WGL_AUX3_ARB                   0x208A +#define WGL_AUX4_ARB                   0x208B +#define WGL_AUX5_ARB                   0x208C +#define WGL_AUX6_ARB                   0x208D +#define WGL_AUX7_ARB                   0x208E +#define WGL_AUX8_ARB                   0x208F +#define WGL_AUX9_ARB                   0x2090 +#endif + +#ifndef WGL_ARB_pixel_format_float +#define WGL_TYPE_RGBA_FLOAT_ARB        0x21A0 +#endif + +#ifndef WGL_ARB_framebuffer_sRGB +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 +#endif + +#ifndef WGL_ARB_create_context +#define WGL_CONTEXT_DEBUG_BIT_ARB      0x00000001 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_MAJOR_VERSION_ARB  0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB  0x2092 +#define WGL_CONTEXT_LAYER_PLANE_ARB    0x2093 +#define WGL_CONTEXT_FLAGS_ARB          0x2094 +#define ERROR_INVALID_VERSION_ARB      0x2095 +#endif + +#ifndef WGL_ARB_create_context_profile +#define WGL_CONTEXT_PROFILE_MASK_ARB   0x9126 +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define ERROR_INVALID_PROFILE_ARB      0x2096 +#endif + +#ifndef WGL_ARB_create_context_robustness +#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define WGL_LOSE_CONTEXT_ON_RESET_ARB  0x8252 +#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define WGL_NO_RESET_NOTIFICATION_ARB  0x8261 +#endif + +#ifndef WGL_EXT_make_current_read +#define ERROR_INVALID_PIXEL_TYPE_EXT   0x2043 +#endif + +#ifndef WGL_EXT_pixel_format +#define WGL_NUMBER_PIXEL_FORMATS_EXT   0x2000 +#define WGL_DRAW_TO_WINDOW_EXT         0x2001 +#define WGL_DRAW_TO_BITMAP_EXT         0x2002 +#define WGL_ACCELERATION_EXT           0x2003 +#define WGL_NEED_PALETTE_EXT           0x2004 +#define WGL_NEED_SYSTEM_PALETTE_EXT    0x2005 +#define WGL_SWAP_LAYER_BUFFERS_EXT     0x2006 +#define WGL_SWAP_METHOD_EXT            0x2007 +#define WGL_NUMBER_OVERLAYS_EXT        0x2008 +#define WGL_NUMBER_UNDERLAYS_EXT       0x2009 +#define WGL_TRANSPARENT_EXT            0x200A +#define WGL_TRANSPARENT_VALUE_EXT      0x200B +#define WGL_SHARE_DEPTH_EXT            0x200C +#define WGL_SHARE_STENCIL_EXT          0x200D +#define WGL_SHARE_ACCUM_EXT            0x200E +#define WGL_SUPPORT_GDI_EXT            0x200F +#define WGL_SUPPORT_OPENGL_EXT         0x2010 +#define WGL_DOUBLE_BUFFER_EXT          0x2011 +#define WGL_STEREO_EXT                 0x2012 +#define WGL_PIXEL_TYPE_EXT             0x2013 +#define WGL_COLOR_BITS_EXT             0x2014 +#define WGL_RED_BITS_EXT               0x2015 +#define WGL_RED_SHIFT_EXT              0x2016 +#define WGL_GREEN_BITS_EXT             0x2017 +#define WGL_GREEN_SHIFT_EXT            0x2018 +#define WGL_BLUE_BITS_EXT              0x2019 +#define WGL_BLUE_SHIFT_EXT             0x201A +#define WGL_ALPHA_BITS_EXT             0x201B +#define WGL_ALPHA_SHIFT_EXT            0x201C +#define WGL_ACCUM_BITS_EXT             0x201D +#define WGL_ACCUM_RED_BITS_EXT         0x201E +#define WGL_ACCUM_GREEN_BITS_EXT       0x201F +#define WGL_ACCUM_BLUE_BITS_EXT        0x2020 +#define WGL_ACCUM_ALPHA_BITS_EXT       0x2021 +#define WGL_DEPTH_BITS_EXT             0x2022 +#define WGL_STENCIL_BITS_EXT           0x2023 +#define WGL_AUX_BUFFERS_EXT            0x2024 +#define WGL_NO_ACCELERATION_EXT        0x2025 +#define WGL_GENERIC_ACCELERATION_EXT   0x2026 +#define WGL_FULL_ACCELERATION_EXT      0x2027 +#define WGL_SWAP_EXCHANGE_EXT          0x2028 +#define WGL_SWAP_COPY_EXT              0x2029 +#define WGL_SWAP_UNDEFINED_EXT         0x202A +#define WGL_TYPE_RGBA_EXT              0x202B +#define WGL_TYPE_COLORINDEX_EXT        0x202C +#endif + +#ifndef WGL_EXT_pbuffer +#define WGL_DRAW_TO_PBUFFER_EXT        0x202D +#define WGL_MAX_PBUFFER_PIXELS_EXT     0x202E +#define WGL_MAX_PBUFFER_WIDTH_EXT      0x202F +#define WGL_MAX_PBUFFER_HEIGHT_EXT     0x2030 +#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT  0x2031 +#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 +#define WGL_PBUFFER_LARGEST_EXT        0x2033 +#define WGL_PBUFFER_WIDTH_EXT          0x2034 +#define WGL_PBUFFER_HEIGHT_EXT         0x2035 +#endif + +#ifndef WGL_EXT_depth_float +#define WGL_DEPTH_FLOAT_EXT            0x2040 +#endif + +#ifndef WGL_3DFX_multisample +#define WGL_SAMPLE_BUFFERS_3DFX        0x2060 +#define WGL_SAMPLES_3DFX               0x2061 +#endif + +#ifndef WGL_EXT_multisample +#define WGL_SAMPLE_BUFFERS_EXT         0x2041 +#define WGL_SAMPLES_EXT                0x2042 +#endif + +#ifndef WGL_I3D_digital_video_control +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 +#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 +#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 +#endif + +#ifndef WGL_I3D_gamma +#define WGL_GAMMA_TABLE_SIZE_I3D       0x204E +#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D  0x204F +#endif + +#ifndef WGL_I3D_genlock +#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 +#define WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D 0x2045 +#define WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D 0x2046 +#define WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D 0x2047 +#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 +#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 +#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A +#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B +#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C +#endif + +#ifndef WGL_I3D_image_buffer +#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 +#define WGL_IMAGE_BUFFER_LOCK_I3D      0x00000002 +#endif + +#ifndef WGL_I3D_swap_frame_lock +#endif + +#ifndef WGL_NV_render_depth_texture +#define WGL_BIND_TO_TEXTURE_DEPTH_NV   0x20A3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 +#define WGL_DEPTH_TEXTURE_FORMAT_NV    0x20A5 +#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 +#define WGL_DEPTH_COMPONENT_NV         0x20A7 +#endif + +#ifndef WGL_NV_render_texture_rectangle +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 +#define WGL_TEXTURE_RECTANGLE_NV       0x20A2 +#endif + +#ifndef WGL_ATI_pixel_format_float +#define WGL_TYPE_RGBA_FLOAT_ATI        0x21A0 +#endif + +#ifndef WGL_NV_float_buffer +#define WGL_FLOAT_COMPONENTS_NV        0x20B0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 +#define WGL_TEXTURE_FLOAT_R_NV         0x20B5 +#define WGL_TEXTURE_FLOAT_RG_NV        0x20B6 +#define WGL_TEXTURE_FLOAT_RGB_NV       0x20B7 +#define WGL_TEXTURE_FLOAT_RGBA_NV      0x20B8 +#endif + +#ifndef WGL_3DL_stereo_control +#define WGL_STEREO_EMITTER_ENABLE_3DL  0x2055 +#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 +#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 +#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 +#endif + +#ifndef WGL_EXT_pixel_format_packed_float +#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 +#endif + +#ifndef WGL_EXT_framebuffer_sRGB +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 +#endif + +#ifndef WGL_NV_present_video +#define WGL_NUM_VIDEO_SLOTS_NV         0x20F0 +#endif + +#ifndef WGL_NV_video_out +#define WGL_BIND_TO_VIDEO_RGB_NV       0x20C0 +#define WGL_BIND_TO_VIDEO_RGBA_NV      0x20C1 +#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2 +#define WGL_VIDEO_OUT_COLOR_NV         0x20C3 +#define WGL_VIDEO_OUT_ALPHA_NV         0x20C4 +#define WGL_VIDEO_OUT_DEPTH_NV         0x20C5 +#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define WGL_VIDEO_OUT_FRAME            0x20C8 +#define WGL_VIDEO_OUT_FIELD_1          0x20C9 +#define WGL_VIDEO_OUT_FIELD_2          0x20CA +#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB +#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC +#endif + +#ifndef WGL_NV_swap_group +#endif + +#ifndef WGL_NV_gpu_affinity +#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 +#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 +#endif + +#ifndef WGL_AMD_gpu_association +#define WGL_GPU_VENDOR_AMD             0x1F00 +#define WGL_GPU_RENDERER_STRING_AMD    0x1F01 +#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define WGL_GPU_RAM_AMD                0x21A3 +#define WGL_GPU_CLOCK_AMD              0x21A4 +#define WGL_GPU_NUM_PIPES_AMD          0x21A5 +#define WGL_GPU_NUM_SIMD_AMD           0x21A6 +#define WGL_GPU_NUM_RB_AMD             0x21A7 +#define WGL_GPU_NUM_SPI_AMD            0x21A8 +#endif + +#ifndef WGL_NV_video_capture +#define WGL_UNIQUE_ID_NV               0x20CE +#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF +#endif + +#ifndef WGL_NV_copy_image +#endif + +#ifndef WGL_NV_multisample_coverage +#define WGL_COVERAGE_SAMPLES_NV        0x2042 +#define WGL_COLOR_SAMPLES_NV           0x20B9 +#endif + +#ifndef WGL_EXT_create_context_es2_profile +#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 +#endif + + +/*************************************************************/ + +#ifndef WGL_ARB_pbuffer +DECLARE_HANDLE(HPBUFFERARB); +#endif +#ifndef WGL_EXT_pbuffer +DECLARE_HANDLE(HPBUFFEREXT); +#endif +#ifndef WGL_NV_present_video +DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); +#endif +#ifndef WGL_NV_video_output +DECLARE_HANDLE(HPVIDEODEV); +#endif +#ifndef WGL_NV_gpu_affinity +DECLARE_HANDLE(HPGPUNV); +DECLARE_HANDLE(HGPUNV); + +typedef struct _GPU_DEVICE { +    DWORD  cb; +    CHAR   DeviceName[32]; +    CHAR   DeviceString[128]; +    DWORD  Flags; +    RECT   rcVirtualScreen; +} GPU_DEVICE, *PGPU_DEVICE; +#endif +#ifndef WGL_NV_video_capture +DECLARE_HANDLE(HVIDEOINPUTDEVICENV); +#endif + +#ifndef WGL_ARB_buffer_region +#define WGL_ARB_buffer_region 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern HANDLE WINAPI wglCreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType); +extern VOID WINAPI wglDeleteBufferRegionARB (HANDLE hRegion); +extern BOOL WINAPI wglSaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height); +extern BOOL WINAPI wglRestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType); +typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion); +typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height); +typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc); +#endif + +#ifndef WGL_ARB_multisample +#define WGL_ARB_multisample 1 +#endif + +#ifndef WGL_ARB_extensions_string +#define WGL_ARB_extensions_string 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern const char * WINAPI wglGetExtensionsStringARB (HDC hdc); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc); +#endif + +#ifndef WGL_ARB_pixel_format +#define WGL_ARB_pixel_format 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglGetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues); +extern BOOL WINAPI wglGetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues); +extern BOOL WINAPI wglChoosePixelFormatARB (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +#endif + +#ifndef WGL_ARB_make_current_read +#define WGL_ARB_make_current_read 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglMakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +extern HDC WINAPI wglGetCurrentReadDCARB (void); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void); +#endif + +#ifndef WGL_ARB_pbuffer +#define WGL_ARB_pbuffer 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern HPBUFFERARB WINAPI wglCreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList); +extern HDC WINAPI wglGetPbufferDCARB (HPBUFFERARB hPbuffer); +extern int WINAPI wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC); +extern BOOL WINAPI wglDestroyPbufferARB (HPBUFFERARB hPbuffer); +extern BOOL WINAPI wglQueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int *piValue); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue); +#endif + +#ifndef WGL_ARB_render_texture +#define WGL_ARB_render_texture 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer); +extern BOOL WINAPI wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer); +extern BOOL WINAPI wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, const int *piAttribList); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int *piAttribList); +#endif + +#ifndef WGL_ARB_pixel_format_float +#define WGL_ARB_pixel_format_float 1 +#endif + +#ifndef WGL_ARB_framebuffer_sRGB +#define WGL_ARB_framebuffer_sRGB 1 +#endif + +#ifndef WGL_ARB_create_context +#define WGL_ARB_create_context 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern HGLRC WINAPI wglCreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const int *attribList); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int *attribList); +#endif + +#ifndef WGL_ARB_create_context_profile +#define WGL_ARB_create_context_profile 1 +#endif + +#ifndef WGL_ARB_create_context_robustness +#define WGL_ARB_create_context_robustness 1 +#endif + +#ifndef WGL_EXT_display_color_table +#define WGL_EXT_display_color_table 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern GLboolean WINAPI wglCreateDisplayColorTableEXT (GLushort id); +extern GLboolean WINAPI wglLoadDisplayColorTableEXT (const GLushort *table, GLuint length); +extern GLboolean WINAPI wglBindDisplayColorTableEXT (GLushort id); +extern VOID WINAPI wglDestroyDisplayColorTableEXT (GLushort id); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort *table, GLuint length); +typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id); +#endif + +#ifndef WGL_EXT_extensions_string +#define WGL_EXT_extensions_string 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern const char * WINAPI wglGetExtensionsStringEXT (void); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void); +#endif + +#ifndef WGL_EXT_make_current_read +#define WGL_EXT_make_current_read 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglMakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +extern HDC WINAPI wglGetCurrentReadDCEXT (void); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void); +#endif + +#ifndef WGL_EXT_pbuffer +#define WGL_EXT_pbuffer 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern HPBUFFEREXT WINAPI wglCreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList); +extern HDC WINAPI wglGetPbufferDCEXT (HPBUFFEREXT hPbuffer); +extern int WINAPI wglReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC); +extern BOOL WINAPI wglDestroyPbufferEXT (HPBUFFEREXT hPbuffer); +extern BOOL WINAPI wglQueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue); +#endif + +#ifndef WGL_EXT_pixel_format +#define WGL_EXT_pixel_format 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglGetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues); +extern BOOL WINAPI wglGetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues); +extern BOOL WINAPI wglChoosePixelFormatEXT (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +#endif + +#ifndef WGL_EXT_swap_control +#define WGL_EXT_swap_control 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglSwapIntervalEXT (int interval); +extern int WINAPI wglGetSwapIntervalEXT (void); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval); +typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void); +#endif + +#ifndef WGL_EXT_depth_float +#define WGL_EXT_depth_float 1 +#endif + +#ifndef WGL_NV_vertex_array_range +#define WGL_NV_vertex_array_range 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern void* WINAPI wglAllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); +extern void WINAPI wglFreeMemoryNV (void *pointer); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef void* (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); +typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer); +#endif + +#ifndef WGL_3DFX_multisample +#define WGL_3DFX_multisample 1 +#endif + +#ifndef WGL_EXT_multisample +#define WGL_EXT_multisample 1 +#endif + +#ifndef WGL_OML_sync_control +#define WGL_OML_sync_control 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglGetSyncValuesOML (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc); +extern BOOL WINAPI wglGetMscRateOML (HDC hdc, INT32 *numerator, INT32 *denominator); +extern INT64 WINAPI wglSwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder); +extern INT64 WINAPI wglSwapLayerBuffersMscOML (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder); +extern BOOL WINAPI wglWaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc); +extern BOOL WINAPI wglWaitForSbcOML (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc); +typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 *numerator, INT32 *denominator); +typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc); +typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc); +#endif + +#ifndef WGL_I3D_digital_video_control +#define WGL_I3D_digital_video_control 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglGetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int *piValue); +extern BOOL WINAPI wglSetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const int *piValue); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue); +typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue); +#endif + +#ifndef WGL_I3D_gamma +#define WGL_I3D_gamma 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglGetGammaTableParametersI3D (HDC hDC, int iAttribute, int *piValue); +extern BOOL WINAPI wglSetGammaTableParametersI3D (HDC hDC, int iAttribute, const int *piValue); +extern BOOL WINAPI wglGetGammaTableI3D (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue); +extern BOOL WINAPI wglSetGammaTableI3D (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue); +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue); +#endif + +#ifndef WGL_I3D_genlock +#define WGL_I3D_genlock 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglEnableGenlockI3D (HDC hDC); +extern BOOL WINAPI wglDisableGenlockI3D (HDC hDC); +extern BOOL WINAPI wglIsEnabledGenlockI3D (HDC hDC, BOOL *pFlag); +extern BOOL WINAPI wglGenlockSourceI3D (HDC hDC, UINT uSource); +extern BOOL WINAPI wglGetGenlockSourceI3D (HDC hDC, UINT *uSource); +extern BOOL WINAPI wglGenlockSourceEdgeI3D (HDC hDC, UINT uEdge); +extern BOOL WINAPI wglGetGenlockSourceEdgeI3D (HDC hDC, UINT *uEdge); +extern BOOL WINAPI wglGenlockSampleRateI3D (HDC hDC, UINT uRate); +extern BOOL WINAPI wglGetGenlockSampleRateI3D (HDC hDC, UINT *uRate); +extern BOOL WINAPI wglGenlockSourceDelayI3D (HDC hDC, UINT uDelay); +extern BOOL WINAPI wglGetGenlockSourceDelayI3D (HDC hDC, UINT *uDelay); +extern BOOL WINAPI wglQueryGenlockMaxSourceDelayI3D (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL *pFlag); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT *uSource); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT *uEdge); +typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT *uRate); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT *uDelay); +typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay); +#endif + +#ifndef WGL_I3D_image_buffer +#define WGL_I3D_image_buffer 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern LPVOID WINAPI wglCreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags); +extern BOOL WINAPI wglDestroyImageBufferI3D (HDC hDC, LPVOID pAddress); +extern BOOL WINAPI wglAssociateImageBufferEventsI3D (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count); +extern BOOL WINAPI wglReleaseImageBufferEventsI3D (HDC hDC, const LPVOID *pAddress, UINT count); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags); +typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress); +typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count); +typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID *pAddress, UINT count); +#endif + +#ifndef WGL_I3D_swap_frame_lock +#define WGL_I3D_swap_frame_lock 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglEnableFrameLockI3D (void); +extern BOOL WINAPI wglDisableFrameLockI3D (void); +extern BOOL WINAPI wglIsEnabledFrameLockI3D (BOOL *pFlag); +extern BOOL WINAPI wglQueryFrameLockMasterI3D (BOOL *pFlag); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL *pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL *pFlag); +#endif + +#ifndef WGL_I3D_swap_frame_usage +#define WGL_I3D_swap_frame_usage 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglGetFrameUsageI3D (float *pUsage); +extern BOOL WINAPI wglBeginFrameTrackingI3D (void); +extern BOOL WINAPI wglEndFrameTrackingI3D (void); +extern BOOL WINAPI wglQueryFrameTrackingI3D (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float *pUsage); +typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage); +#endif + +#ifndef WGL_ATI_pixel_format_float +#define WGL_ATI_pixel_format_float 1 +#endif + +#ifndef WGL_NV_float_buffer +#define WGL_NV_float_buffer 1 +#endif + +#ifndef WGL_3DL_stereo_control +#define WGL_3DL_stereo_control 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglSetStereoEmitterState3DL (HDC hDC, UINT uState); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState); +#endif + +#ifndef WGL_EXT_pixel_format_packed_float +#define WGL_EXT_pixel_format_packed_float 1 +#endif + +#ifndef WGL_EXT_framebuffer_sRGB +#define WGL_EXT_framebuffer_sRGB 1 +#endif + +#ifndef WGL_NV_present_video +#define WGL_NV_present_video 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern int WINAPI wglEnumerateVideoDevicesNV (HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList); +extern BOOL WINAPI wglBindVideoDeviceNV (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList); +extern BOOL WINAPI wglQueryCurrentContextNV (int iAttribute, int *piValue); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList); +typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList); +typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int *piValue); +#endif + +#ifndef WGL_NV_video_output +#define WGL_NV_video_output 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglGetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice); +extern BOOL WINAPI wglReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice); +extern BOOL WINAPI wglBindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer); +extern BOOL WINAPI wglReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer); +extern BOOL WINAPI wglSendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock); +extern BOOL WINAPI wglGetVideoInfoNV (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice); +typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock); +typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +#endif + +#ifndef WGL_NV_swap_group +#define WGL_NV_swap_group 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglJoinSwapGroupNV (HDC hDC, GLuint group); +extern BOOL WINAPI wglBindSwapBarrierNV (GLuint group, GLuint barrier); +extern BOOL WINAPI wglQuerySwapGroupNV (HDC hDC, GLuint *group, GLuint *barrier); +extern BOOL WINAPI wglQueryMaxSwapGroupsNV (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers); +extern BOOL WINAPI wglQueryFrameCountNV (HDC hDC, GLuint *count); +extern BOOL WINAPI wglResetFrameCountNV (HDC hDC); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group); +typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier); +typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint *group, GLuint *barrier); +typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint *count); +typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC); +#endif + +#ifndef WGL_NV_gpu_affinity +#define WGL_NV_gpu_affinity 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglEnumGpusNV (UINT iGpuIndex, HGPUNV *phGpu); +extern BOOL WINAPI wglEnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice); +extern HDC WINAPI wglCreateAffinityDCNV (const HGPUNV *phGpuList); +extern BOOL WINAPI wglEnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu); +extern BOOL WINAPI wglDeleteDCNV (HDC hdc); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu); +typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice); +typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList); +typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu); +typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc); +#endif + +#ifndef WGL_AMD_gpu_association +#define WGL_AMD_gpu_association 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern UINT WINAPI wglGetGPUIDsAMD (UINT maxCount, UINT *ids); +extern INT WINAPI wglGetGPUInfoAMD (UINT id, int property, GLenum dataType, UINT size, void *data); +extern UINT WINAPI wglGetContextGPUIDAMD (HGLRC hglrc); +extern HGLRC WINAPI wglCreateAssociatedContextAMD (UINT id); +extern HGLRC WINAPI wglCreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const int *attribList); +extern BOOL WINAPI wglDeleteAssociatedContextAMD (HGLRC hglrc); +extern BOOL WINAPI wglMakeAssociatedContextCurrentAMD (HGLRC hglrc); +extern HGLRC WINAPI wglGetCurrentAssociatedContextAMD (void); +extern VOID WINAPI wglBlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT *ids); +typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, int property, GLenum dataType, UINT size, void *data); +typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int *attribList); +typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc); +typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc); +typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void); +typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +#ifndef WGL_NV_video_capture +#define WGL_NV_video_capture 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglBindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice); +extern UINT WINAPI wglEnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList); +extern BOOL WINAPI wglLockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice); +extern BOOL WINAPI wglQueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue); +extern BOOL WINAPI wglReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice); +typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList); +typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); +typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); +#endif + +#ifndef WGL_NV_copy_image +#define WGL_NV_copy_image 1 +#ifdef WGL_WGLEXT_PROTOTYPES +extern BOOL WINAPI wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +#endif /* WGL_WGLEXT_PROTOTYPES */ +typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +#endif + +#ifndef WGL_NV_multisample_coverage +#define WGL_NV_multisample_coverage 1 +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLES/gl.h b/emulator/opengl/host/libs/Translator/include/GLES/gl.h new file mode 100644 index 0000000..5b8d85a --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLES/gl.h @@ -0,0 +1,770 @@ +#ifndef __gl_h_ +#define __gl_h_ + +/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */ + +#include <GLES/glplatform.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +typedef void             GLvoid; +typedef char             GLchar; +typedef unsigned int     GLenum; +typedef unsigned char    GLboolean; +typedef unsigned int     GLbitfield; +typedef khronos_int8_t   GLbyte; +typedef short            GLshort; +typedef int              GLint; +typedef int              GLsizei; +typedef khronos_uint8_t  GLubyte; +typedef unsigned short   GLushort; +typedef unsigned int     GLuint; +typedef khronos_float_t  GLfloat; +typedef khronos_float_t  GLclampf; +typedef khronos_int32_t  GLfixed; +typedef khronos_int32_t  GLclampx; + +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t  GLsizeiptr; + + +/*************************************************************/ + +/* OpenGL ES core versions */ +#define GL_VERSION_ES_CM_1_0          1 +#define GL_VERSION_ES_CL_1_0          1 +#define GL_VERSION_ES_CM_1_1          1 +#define GL_VERSION_ES_CL_1_1          1 + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT               0x00000100 +#define GL_STENCIL_BUFFER_BIT             0x00000400 +#define GL_COLOR_BUFFER_BIT               0x00004000 + +/* Boolean */ +#define GL_FALSE                          0 +#define GL_TRUE                           1 + +/* BeginMode */ +#define GL_POINTS                         0x0000 +#define GL_LINES                          0x0001 +#define GL_LINE_LOOP                      0x0002 +#define GL_LINE_STRIP                     0x0003 +#define GL_TRIANGLES                      0x0004 +#define GL_TRIANGLE_STRIP                 0x0005 +#define GL_TRIANGLE_FAN                   0x0006 + +/* AlphaFunction */ +#define GL_NEVER                          0x0200 +#define GL_LESS                           0x0201 +#define GL_EQUAL                          0x0202 +#define GL_LEQUAL                         0x0203 +#define GL_GREATER                        0x0204 +#define GL_NOTEQUAL                       0x0205 +#define GL_GEQUAL                         0x0206 +#define GL_ALWAYS                         0x0207 + +/* BlendingFactorDest */ +#define GL_ZERO                           0 +#define GL_ONE                            1 +#define GL_SRC_COLOR                      0x0300 +#define GL_ONE_MINUS_SRC_COLOR            0x0301 +#define GL_SRC_ALPHA                      0x0302 +#define GL_ONE_MINUS_SRC_ALPHA            0x0303 +#define GL_DST_ALPHA                      0x0304 +#define GL_ONE_MINUS_DST_ALPHA            0x0305 + +/* BlendingFactorSrc */ +/*      GL_ZERO */ +/*      GL_ONE */ +#define GL_DST_COLOR                      0x0306 +#define GL_ONE_MINUS_DST_COLOR            0x0307 +#define GL_SRC_ALPHA_SATURATE             0x0308 +/*      GL_SRC_ALPHA */ +/*      GL_ONE_MINUS_SRC_ALPHA */ +/*      GL_DST_ALPHA */ +/*      GL_ONE_MINUS_DST_ALPHA */ + +/* ClipPlaneName */ +#define GL_CLIP_PLANE0                    0x3000 +#define GL_CLIP_PLANE1                    0x3001 +#define GL_CLIP_PLANE2                    0x3002 +#define GL_CLIP_PLANE3                    0x3003 +#define GL_CLIP_PLANE4                    0x3004 +#define GL_CLIP_PLANE5                    0x3005 + +/* ColorMaterialFace */ +/*      GL_FRONT_AND_BACK */ + +/* ColorMaterialParameter */ +/*      GL_AMBIENT_AND_DIFFUSE */ + +/* ColorPointerType */ +/*      GL_UNSIGNED_BYTE */ +/*      GL_FLOAT */ +/*      GL_FIXED */ + +/* CullFaceMode */ +#define GL_FRONT                          0x0404 +#define GL_BACK                           0x0405 +#define GL_FRONT_AND_BACK                 0x0408 + +/* DepthFunction */ +/*      GL_NEVER */ +/*      GL_LESS */ +/*      GL_EQUAL */ +/*      GL_LEQUAL */ +/*      GL_GREATER */ +/*      GL_NOTEQUAL */ +/*      GL_GEQUAL */ +/*      GL_ALWAYS */ + +/* EnableCap */ +#define GL_FOG                            0x0B60 +#define GL_LIGHTING                       0x0B50 +#define GL_TEXTURE_2D                     0x0DE1 +#define GL_CULL_FACE                      0x0B44 +#define GL_ALPHA_TEST                     0x0BC0 +#define GL_BLEND                          0x0BE2 +#define GL_COLOR_LOGIC_OP                 0x0BF2 +#define GL_DITHER                         0x0BD0 +#define GL_STENCIL_TEST                   0x0B90 +#define GL_DEPTH_TEST                     0x0B71 +/*      GL_LIGHT0 */ +/*      GL_LIGHT1 */ +/*      GL_LIGHT2 */ +/*      GL_LIGHT3 */ +/*      GL_LIGHT4 */ +/*      GL_LIGHT5 */ +/*      GL_LIGHT6 */ +/*      GL_LIGHT7 */ +#define GL_POINT_SMOOTH                   0x0B10 +#define GL_LINE_SMOOTH                    0x0B20 +#define GL_SCISSOR_TEST                   0x0C11 +#define GL_COLOR_MATERIAL                 0x0B57 +#define GL_NORMALIZE                      0x0BA1 +#define GL_RESCALE_NORMAL                 0x803A +#define GL_POLYGON_OFFSET_FILL            0x8037 +#define GL_VERTEX_ARRAY                   0x8074 +#define GL_NORMAL_ARRAY                   0x8075 +#define GL_COLOR_ARRAY                    0x8076 +#define GL_TEXTURE_COORD_ARRAY            0x8078 +#define GL_MULTISAMPLE                    0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E +#define GL_SAMPLE_ALPHA_TO_ONE            0x809F +#define GL_SAMPLE_COVERAGE                0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR                       0 +#define GL_INVALID_ENUM                   0x0500 +#define GL_INVALID_VALUE                  0x0501 +#define GL_INVALID_OPERATION              0x0502 +#define GL_STACK_OVERFLOW                 0x0503 +#define GL_STACK_UNDERFLOW                0x0504 +#define GL_OUT_OF_MEMORY                  0x0505 + +/* FogMode */ +/*      GL_LINEAR */ +#define GL_EXP                            0x0800 +#define GL_EXP2                           0x0801 + +/* FogParameter */ +#define GL_FOG_DENSITY                    0x0B62 +#define GL_FOG_START                      0x0B63 +#define GL_FOG_END                        0x0B64 +#define GL_FOG_MODE                       0x0B65 +#define GL_FOG_COLOR                      0x0B66 + +/* FrontFaceDirection */ +#define GL_CW                             0x0900 +#define GL_CCW                            0x0901 + +/* GetPName */ +#define GL_CURRENT_COLOR                  0x0B00 +#define GL_CURRENT_NORMAL                 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS         0x0B03 +#define GL_POINT_SIZE                     0x0B11 +#define GL_POINT_SIZE_MIN                 0x8126 +#define GL_POINT_SIZE_MAX                 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE      0x8128 +#define GL_POINT_DISTANCE_ATTENUATION     0x8129 +#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12 +#define GL_LINE_WIDTH                     0x0B21 +#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22 +#define GL_ALIASED_POINT_SIZE_RANGE       0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E +#define GL_CULL_FACE_MODE                 0x0B45 +#define GL_FRONT_FACE                     0x0B46 +#define GL_SHADE_MODEL                    0x0B54 +#define GL_DEPTH_RANGE                    0x0B70 +#define GL_DEPTH_WRITEMASK                0x0B72 +#define GL_DEPTH_CLEAR_VALUE              0x0B73 +#define GL_DEPTH_FUNC                     0x0B74 +#define GL_STENCIL_CLEAR_VALUE            0x0B91 +#define GL_STENCIL_FUNC                   0x0B92 +#define GL_STENCIL_VALUE_MASK             0x0B93 +#define GL_STENCIL_FAIL                   0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96 +#define GL_STENCIL_REF                    0x0B97 +#define GL_STENCIL_WRITEMASK              0x0B98 +#define GL_MATRIX_MODE                    0x0BA0 +#define GL_VIEWPORT                       0x0BA2 +#define GL_MODELVIEW_STACK_DEPTH          0x0BA3 +#define GL_PROJECTION_STACK_DEPTH         0x0BA4 +#define GL_TEXTURE_STACK_DEPTH            0x0BA5 +#define GL_MODELVIEW_MATRIX               0x0BA6 +#define GL_PROJECTION_MATRIX              0x0BA7 +#define GL_TEXTURE_MATRIX                 0x0BA8 +#define GL_ALPHA_TEST_FUNC                0x0BC1 +#define GL_ALPHA_TEST_REF                 0x0BC2 +#define GL_BLEND_DST                      0x0BE0 +#define GL_BLEND_SRC                      0x0BE1 +#define GL_LOGIC_OP_MODE                  0x0BF0 +#define GL_SCISSOR_BOX                    0x0C10 +#define GL_SCISSOR_TEST                   0x0C11 +#define GL_COLOR_CLEAR_VALUE              0x0C22 +#define GL_COLOR_WRITEMASK                0x0C23 +#define GL_UNPACK_ALIGNMENT               0x0CF5 +#define GL_PACK_ALIGNMENT                 0x0D05 +#define GL_MAX_LIGHTS                     0x0D31 +#define GL_MAX_CLIP_PLANES                0x0D32 +#define GL_MAX_TEXTURE_SIZE               0x0D33 +#define GL_MAX_MODELVIEW_STACK_DEPTH      0x0D36 +#define GL_MAX_PROJECTION_STACK_DEPTH     0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH        0x0D39 +#define GL_MAX_VIEWPORT_DIMS              0x0D3A +#define GL_MAX_TEXTURE_UNITS              0x84E2 +#define GL_SUBPIXEL_BITS                  0x0D50 +#define GL_RED_BITS                       0x0D52 +#define GL_GREEN_BITS                     0x0D53 +#define GL_BLUE_BITS                      0x0D54 +#define GL_ALPHA_BITS                     0x0D55 +#define GL_DEPTH_BITS                     0x0D56 +#define GL_STENCIL_BITS                   0x0D57 +#define GL_POLYGON_OFFSET_UNITS           0x2A00 +#define GL_POLYGON_OFFSET_FILL            0x8037 +#define GL_POLYGON_OFFSET_FACTOR          0x8038 +#define GL_TEXTURE_BINDING_2D             0x8069 +#define GL_VERTEX_ARRAY_SIZE              0x807A +#define GL_VERTEX_ARRAY_TYPE              0x807B +#define GL_VERTEX_ARRAY_STRIDE            0x807C +#define GL_NORMAL_ARRAY_TYPE              0x807E +#define GL_NORMAL_ARRAY_STRIDE            0x807F +#define GL_COLOR_ARRAY_SIZE               0x8081 +#define GL_COLOR_ARRAY_TYPE               0x8082 +#define GL_COLOR_ARRAY_STRIDE             0x8083 +#define GL_TEXTURE_COORD_ARRAY_SIZE       0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE       0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE     0x808A +#define GL_VERTEX_ARRAY_POINTER           0x808E +#define GL_NORMAL_ARRAY_POINTER           0x808F +#define GL_COLOR_ARRAY_POINTER            0x8090 +#define GL_TEXTURE_COORD_ARRAY_POINTER    0x8092 +#define GL_SAMPLE_BUFFERS                 0x80A8 +#define GL_SAMPLES                        0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE          0x80AA +#define GL_SAMPLE_COVERAGE_INVERT         0x80AB + +/* GetTextureParameter */ +/*      GL_TEXTURE_MAG_FILTER */ +/*      GL_TEXTURE_MIN_FILTER */ +/*      GL_TEXTURE_WRAP_S */ +/*      GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3 + +/* HintMode */ +#define GL_DONT_CARE                      0x1100 +#define GL_FASTEST                        0x1101 +#define GL_NICEST                         0x1102 + +/* HintTarget */ +#define GL_PERSPECTIVE_CORRECTION_HINT    0x0C50 +#define GL_POINT_SMOOTH_HINT              0x0C51 +#define GL_LINE_SMOOTH_HINT               0x0C52 +#define GL_FOG_HINT                       0x0C54 +#define GL_GENERATE_MIPMAP_HINT           0x8192 + +/* LightModelParameter */ +#define GL_LIGHT_MODEL_AMBIENT            0x0B53 +#define GL_LIGHT_MODEL_TWO_SIDE           0x0B52 + +/* LightParameter */ +#define GL_AMBIENT                        0x1200 +#define GL_DIFFUSE                        0x1201 +#define GL_SPECULAR                       0x1202 +#define GL_POSITION                       0x1203 +#define GL_SPOT_DIRECTION                 0x1204 +#define GL_SPOT_EXPONENT                  0x1205 +#define GL_SPOT_CUTOFF                    0x1206 +#define GL_CONSTANT_ATTENUATION           0x1207 +#define GL_LINEAR_ATTENUATION             0x1208 +#define GL_QUADRATIC_ATTENUATION          0x1209 + +/* DataType */ +#define GL_BYTE                           0x1400 +#define GL_UNSIGNED_BYTE                  0x1401 +#define GL_SHORT                          0x1402 +#define GL_UNSIGNED_SHORT                 0x1403 +#define GL_FLOAT                          0x1406 +#define GL_FIXED                          0x140C + +/* LogicOp */ +#define GL_CLEAR                          0x1500 +#define GL_AND                            0x1501 +#define GL_AND_REVERSE                    0x1502 +#define GL_COPY                           0x1503 +#define GL_AND_INVERTED                   0x1504 +#define GL_NOOP                           0x1505 +#define GL_XOR                            0x1506 +#define GL_OR                             0x1507 +#define GL_NOR                            0x1508 +#define GL_EQUIV                          0x1509 +#define GL_INVERT                         0x150A +#define GL_OR_REVERSE                     0x150B +#define GL_COPY_INVERTED                  0x150C +#define GL_OR_INVERTED                    0x150D +#define GL_NAND                           0x150E +#define GL_SET                            0x150F + +/* MaterialFace */ +/*      GL_FRONT_AND_BACK */ + +/* MaterialParameter */ +#define GL_EMISSION                       0x1600 +#define GL_SHININESS                      0x1601 +#define GL_AMBIENT_AND_DIFFUSE            0x1602 +/*      GL_AMBIENT */ +/*      GL_DIFFUSE */ +/*      GL_SPECULAR */ + +/* MatrixMode */ +#define GL_MODELVIEW                      0x1700 +#define GL_PROJECTION                     0x1701 +#define GL_TEXTURE                        0x1702 + +/* NormalPointerType */ +/*      GL_BYTE */ +/*      GL_SHORT */ +/*      GL_FLOAT */ +/*      GL_FIXED */ + +/* PixelFormat */ +#define GL_ALPHA                          0x1906 +#define GL_RGB                            0x1907 +#define GL_RGBA                           0x1908 +#define GL_LUMINANCE                      0x1909 +#define GL_LUMINANCE_ALPHA                0x190A + +/* PixelStoreParameter */ +#define GL_UNPACK_ALIGNMENT               0x0CF5 +#define GL_PACK_ALIGNMENT                 0x0D05 + +/* PixelType */ +/*      GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034 +#define GL_UNSIGNED_SHORT_5_6_5           0x8363 + +/* ShadingModel */ +#define GL_FLAT                           0x1D00 +#define GL_SMOOTH                         0x1D01 + +/* StencilFunction */ +/*      GL_NEVER */ +/*      GL_LESS */ +/*      GL_EQUAL */ +/*      GL_LEQUAL */ +/*      GL_GREATER */ +/*      GL_NOTEQUAL */ +/*      GL_GEQUAL */ +/*      GL_ALWAYS */ + +/* StencilOp */ +/*      GL_ZERO */ +#define GL_KEEP                           0x1E00 +#define GL_REPLACE                        0x1E01 +#define GL_INCR                           0x1E02 +#define GL_DECR                           0x1E03 +/*      GL_INVERT */ + +/* StringName */ +#define GL_VENDOR                         0x1F00 +#define GL_RENDERER                       0x1F01 +#define GL_VERSION                        0x1F02 +#define GL_EXTENSIONS                     0x1F03 + +/* TexCoordPointerType */ +/*      GL_SHORT */ +/*      GL_FLOAT */ +/*      GL_FIXED */ +/*      GL_BYTE */ + +/* TextureEnvMode */ +#define GL_MODULATE                       0x2100 +#define GL_DECAL                          0x2101 +/*      GL_BLEND */ +#define GL_ADD                            0x0104 +/*      GL_REPLACE */ + +/* TextureEnvParameter */ +#define GL_TEXTURE_ENV_MODE               0x2200 +#define GL_TEXTURE_ENV_COLOR              0x2201 + +/* TextureEnvTarget */ +#define GL_TEXTURE_ENV                    0x2300 + +/* TextureMagFilter */ +#define GL_NEAREST                        0x2600 +#define GL_LINEAR                         0x2601 + +/* TextureMinFilter */ +/*      GL_NEAREST */ +/*      GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST         0x2700 +#define GL_LINEAR_MIPMAP_NEAREST          0x2701 +#define GL_NEAREST_MIPMAP_LINEAR          0x2702 +#define GL_LINEAR_MIPMAP_LINEAR           0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER             0x2800 +#define GL_TEXTURE_MIN_FILTER             0x2801 +#define GL_TEXTURE_WRAP_S                 0x2802 +#define GL_TEXTURE_WRAP_T                 0x2803 +#define GL_GENERATE_MIPMAP                0x8191 + +/* TextureTarget */ +/*      GL_TEXTURE_2D */ + +/* TextureUnit */ +#define GL_TEXTURE0                       0x84C0 +#define GL_TEXTURE1                       0x84C1 +#define GL_TEXTURE2                       0x84C2 +#define GL_TEXTURE3                       0x84C3 +#define GL_TEXTURE4                       0x84C4 +#define GL_TEXTURE5                       0x84C5 +#define GL_TEXTURE6                       0x84C6 +#define GL_TEXTURE7                       0x84C7 +#define GL_TEXTURE8                       0x84C8 +#define GL_TEXTURE9                       0x84C9 +#define GL_TEXTURE10                      0x84CA +#define GL_TEXTURE11                      0x84CB +#define GL_TEXTURE12                      0x84CC +#define GL_TEXTURE13                      0x84CD +#define GL_TEXTURE14                      0x84CE +#define GL_TEXTURE15                      0x84CF +#define GL_TEXTURE16                      0x84D0 +#define GL_TEXTURE17                      0x84D1 +#define GL_TEXTURE18                      0x84D2 +#define GL_TEXTURE19                      0x84D3 +#define GL_TEXTURE20                      0x84D4 +#define GL_TEXTURE21                      0x84D5 +#define GL_TEXTURE22                      0x84D6 +#define GL_TEXTURE23                      0x84D7 +#define GL_TEXTURE24                      0x84D8 +#define GL_TEXTURE25                      0x84D9 +#define GL_TEXTURE26                      0x84DA +#define GL_TEXTURE27                      0x84DB +#define GL_TEXTURE28                      0x84DC +#define GL_TEXTURE29                      0x84DD +#define GL_TEXTURE30                      0x84DE +#define GL_TEXTURE31                      0x84DF +#define GL_ACTIVE_TEXTURE                 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1 + +/* TextureWrapMode */ +#define GL_REPEAT                         0x2901 +#define GL_CLAMP_TO_EDGE                  0x812F + +/* VertexPointerType */ +/*      GL_SHORT */ +/*      GL_FLOAT */ +/*      GL_FIXED */ +/*      GL_BYTE */ + +/* LightName */ +#define GL_LIGHT0                         0x4000 +#define GL_LIGHT1                         0x4001 +#define GL_LIGHT2                         0x4002 +#define GL_LIGHT3                         0x4003 +#define GL_LIGHT4                         0x4004 +#define GL_LIGHT5                         0x4005 +#define GL_LIGHT6                         0x4006 +#define GL_LIGHT7                         0x4007 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER                   0x8892 +#define GL_ELEMENT_ARRAY_BUFFER           0x8893 + +#define GL_ARRAY_BUFFER_BINDING               0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING       0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING        0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING        0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING         0x8898 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A + +#define GL_STATIC_DRAW                    0x88E4 +#define GL_DYNAMIC_DRAW                   0x88E8 + +#define GL_BUFFER_SIZE                    0x8764 +#define GL_BUFFER_USAGE                   0x8765 + +/* Texture combine + dot3 */ +#define GL_SUBTRACT                       0x84E7 +#define GL_COMBINE                        0x8570 +#define GL_COMBINE_RGB                    0x8571 +#define GL_COMBINE_ALPHA                  0x8572 +#define GL_RGB_SCALE                      0x8573 +#define GL_ADD_SIGNED                     0x8574 +#define GL_INTERPOLATE                    0x8575 +#define GL_CONSTANT                       0x8576 +#define GL_PRIMARY_COLOR                  0x8577 +#define GL_PREVIOUS                       0x8578 +#define GL_OPERAND0_RGB                   0x8590 +#define GL_OPERAND1_RGB                   0x8591 +#define GL_OPERAND2_RGB                   0x8592 +#define GL_OPERAND0_ALPHA                 0x8598 +#define GL_OPERAND1_ALPHA                 0x8599 +#define GL_OPERAND2_ALPHA                 0x859A + +#define GL_ALPHA_SCALE                    0x0D1C + +#define GL_SRC0_RGB                       0x8580 +#define GL_SRC1_RGB                       0x8581 +#define GL_SRC2_RGB                       0x8582 +#define GL_SRC0_ALPHA                     0x8588 +#define GL_SRC1_ALPHA                     0x8589 +#define GL_SRC2_ALPHA                     0x858A + +#define GL_DOT3_RGB                       0x86AE +#define GL_DOT3_RGBA                      0x86AF + +/*------------------------------------------------------------------------* + * required OES extension tokens + *------------------------------------------------------------------------*/ + +/* OES_read_format */ +#ifndef GL_OES_read_format +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES                   0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES                 0x8B9B +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES                                    0x8B90 +#define GL_PALETTE4_RGBA8_OES                                   0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92 +#define GL_PALETTE4_RGBA4_OES                                   0x8B93 +#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94 +#define GL_PALETTE8_RGB8_OES                                    0x8B95 +#define GL_PALETTE8_RGBA8_OES                                   0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97 +#define GL_PALETTE8_RGBA4_OES                                   0x8B98 +#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99 +#endif + +/* OES_point_size_array */ +#ifndef GL_OES_point_size_array +#define GL_POINT_SIZE_ARRAY_OES                                 0x8B9C +#define GL_POINT_SIZE_ARRAY_TYPE_OES                            0x898A +#define GL_POINT_SIZE_ARRAY_STRIDE_OES                          0x898B +#define GL_POINT_SIZE_ARRAY_POINTER_OES                         0x898C +#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES                  0x8B9F +#endif + +/* GL_OES_point_sprite */ +#ifndef GL_OES_point_sprite +#define GL_POINT_SPRITE_OES                                     0x8861 +#define GL_COORD_REPLACE_OES                                    0x8862 +#endif + +/*************************************************************/ + +/* Available only in Common profile */ +GL_API void GL_APIENTRY glAlphaFunc (GLenum func, GLclampf ref); +GL_API void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_API void GL_APIENTRY glClearDepthf (GLclampf depth); +GL_API void GL_APIENTRY glClipPlanef (GLenum plane, const GLfloat *equation); +GL_API void GL_APIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_API void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar); +GL_API void GL_APIENTRY glFogf (GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glFogfv (GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glFrustumf (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glGetClipPlanef (GLenum pname, GLfloat eqn[4]); +GL_API void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetTexEnvfv (GLenum env, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glLightModelf (GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glLightModelfv (GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glLineWidth (GLfloat width); +GL_API void GL_APIENTRY glLoadMatrixf (const GLfloat *m); +GL_API void GL_APIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glMultMatrixf (const GLfloat *m); +GL_API void GL_APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GL_API void GL_APIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); +GL_API void GL_APIENTRY glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glPointParameterf (GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glPointSize (GLfloat size); +GL_API void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_API void GL_APIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_API void GL_APIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z); +GL_API void GL_APIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); + +/* Available in both Common and Common-Lite profiles */ +GL_API void GL_APIENTRY glActiveTexture (GLenum texture); +GL_API void GL_APIENTRY glAlphaFuncx (GLenum func, GLclampx ref); +GL_API void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_API void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_API void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_API void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); +GL_API void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); +GL_API void GL_APIENTRY glClear (GLbitfield mask); +GL_API void GL_APIENTRY glClearColorx (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +GL_API void GL_APIENTRY glClearDepthx (GLclampx depth); +GL_API void GL_APIENTRY glClearStencil (GLint s); +GL_API void GL_APIENTRY glClientActiveTexture (GLenum texture); +GL_API void GL_APIENTRY glClipPlanex (GLenum plane, const GLfixed *equation); +GL_API void GL_APIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +GL_API void GL_APIENTRY glColor4x (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GL_API void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_API void GL_APIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +GL_API void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +GL_API void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_API void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glCullFace (GLenum mode); +GL_API void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_API void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_API void GL_APIENTRY glDepthFunc (GLenum func); +GL_API void GL_APIENTRY glDepthMask (GLboolean flag); +GL_API void GL_APIENTRY glDepthRangex (GLclampx zNear, GLclampx zFar); +GL_API void GL_APIENTRY glDisable (GLenum cap); +GL_API void GL_APIENTRY glDisableClientState (GLenum array); +GL_API void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_API void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); +GL_API void GL_APIENTRY glEnable (GLenum cap); +GL_API void GL_APIENTRY glEnableClientState (GLenum array); +GL_API void GL_APIENTRY glFinish (void); +GL_API void GL_APIENTRY glFlush (void); +GL_API void GL_APIENTRY glFogx (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glFogxv (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glFrontFace (GLenum mode); +GL_API void GL_APIENTRY glFrustumx (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *params); +GL_API void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetClipPlanex (GLenum pname, GLfixed eqn[4]); +GL_API void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_API void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_API GLenum GL_APIENTRY glGetError (void); +GL_API void GL_APIENTRY glGetFixedv (GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetLightxv (GLenum light, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetMaterialxv (GLenum face, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetPointerv (GLenum pname, GLvoid **params); +GL_API const GLubyte * GL_APIENTRY glGetString (GLenum name); +GL_API void GL_APIENTRY glGetTexEnviv (GLenum env, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetTexEnvxv (GLenum env, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetTexParameterxv (GLenum target, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_API GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_API GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_API GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_API void GL_APIENTRY glLightModelx (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightModelxv (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glLightx (GLenum light, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightxv (GLenum light, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glLineWidthx (GLfixed width); +GL_API void GL_APIENTRY glLoadIdentity (void); +GL_API void GL_APIENTRY glLoadMatrixx (const GLfixed *m); +GL_API void GL_APIENTRY glLogicOp (GLenum opcode); +GL_API void GL_APIENTRY glMaterialx (GLenum face, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glMaterialxv (GLenum face, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glMatrixMode (GLenum mode); +GL_API void GL_APIENTRY glMultMatrixx (const GLfixed *m); +GL_API void GL_APIENTRY glMultiTexCoord4x (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GL_API void GL_APIENTRY glNormal3x (GLfixed nx, GLfixed ny, GLfixed nz); +GL_API void GL_APIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_API void GL_APIENTRY glPointParameterx (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glPointParameterxv (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glPointSizex (GLfixed size); +GL_API void GL_APIENTRY glPolygonOffsetx (GLfixed factor, GLfixed units); +GL_API void GL_APIENTRY glPopMatrix (void); +GL_API void GL_APIENTRY glPushMatrix (void); +GL_API void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); +GL_API void GL_APIENTRY glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); +GL_API void GL_APIENTRY glSampleCoveragex (GLclampx value, GLboolean invert); +GL_API void GL_APIENTRY glScalex (GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glShadeModel (GLenum mode); +GL_API void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_API void GL_APIENTRY glStencilMask (GLuint mask); +GL_API void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_API void GL_APIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); +GL_API void GL_APIENTRY glTexEnvx (GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); +GL_API void GL_APIENTRY glTexEnvxv (GLenum target, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +GL_API void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_API void GL_APIENTRY glTexParameterx (GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_API void GL_APIENTRY glTexParameterxv (GLenum target, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +GL_API void GL_APIENTRY glTranslatex (GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +/*------------------------------------------------------------------------* + * Required OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_read_format */ +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + +/* GL_OES_point_size_array */ +#ifndef GL_OES_point_size_array +#define GL_OES_point_size_array 1 +GL_API void GL_APIENTRY glPointSizePointerOES (GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +/* GL_OES_point_sprite */ +#ifndef GL_OES_point_sprite +#define GL_OES_point_sprite 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + diff --git a/emulator/opengl/host/libs/Translator/include/GLES/glext.h b/emulator/opengl/host/libs/Translator/include/GLES/glext.h new file mode 100644 index 0000000..130e4b0 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLES/glext.h @@ -0,0 +1,1073 @@ +#ifndef __glext_h_ +#define __glext_h_ + +/* $Revision: 13240 $ on $Date:: 2010-12-17 15:16:00 -0800 #$ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +#ifndef GL_APIENTRYP +#   define GL_APIENTRYP GL_APIENTRY* +#endif + +/*------------------------------------------------------------------------* + * OES extension tokens + *------------------------------------------------------------------------*/ + +/* GL_OES_blend_equation_separate */ +#ifndef GL_OES_blend_equation_separate +/* BLEND_EQUATION_RGB_OES same as BLEND_EQUATION_OES */ +#define GL_BLEND_EQUATION_RGB_OES                               0x8009 +#define GL_BLEND_EQUATION_ALPHA_OES                             0x883D +#endif + +/* GL_OES_blend_func_separate */ +#ifndef GL_OES_blend_func_separate +#define GL_BLEND_DST_RGB_OES                                    0x80C8 +#define GL_BLEND_SRC_RGB_OES                                    0x80C9 +#define GL_BLEND_DST_ALPHA_OES                                  0x80CA +#define GL_BLEND_SRC_ALPHA_OES                                  0x80CB +#endif + +/* GL_OES_blend_subtract */ +#ifndef GL_OES_blend_subtract +#define GL_BLEND_EQUATION_OES                                   0x8009 +#define GL_FUNC_ADD_OES                                         0x8006 +#define GL_FUNC_SUBTRACT_OES                                    0x800A +#define GL_FUNC_REVERSE_SUBTRACT_OES                            0x800B +#endif + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_ETC1_RGB8_OES                                        0x8D64 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_DEPTH_COMPONENT24_OES                                0x81A6 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_DEPTH_COMPONENT32_OES                                0x81A7 +#endif + +/* GL_OES_draw_texture */ +#ifndef GL_OES_draw_texture +#define GL_TEXTURE_CROP_RECT_OES                                0x8B9D +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +/* GLeglImageOES defined in GL_OES_EGL_image already. */ +#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68 +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_UNSIGNED_INT                                         0x1405 +#endif + +/* GL_OES_fixed_point */ +#ifndef GL_OES_fixed_point +#define GL_FIXED_OES                                            0x140C +#endif + +/* GL_OES_framebuffer_object */ +#ifndef GL_OES_framebuffer_object +#define GL_NONE_OES                                             0 +#define GL_FRAMEBUFFER_OES                                      0x8D40 +#define GL_RENDERBUFFER_OES                                     0x8D41 +#define GL_RGBA4_OES                                            0x8056 +#define GL_RGB5_A1_OES                                          0x8057 +#define GL_RGB565_OES                                           0x8D62 +#define GL_DEPTH_COMPONENT16_OES                                0x81A5 +#define GL_RENDERBUFFER_WIDTH_OES                               0x8D42 +#define GL_RENDERBUFFER_HEIGHT_OES                              0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES                     0x8D44 +#define GL_RENDERBUFFER_RED_SIZE_OES                            0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_OES                          0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_OES                           0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_OES                          0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_OES                          0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_OES                        0x8D55 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES               0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES               0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES             0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES     0x8CD3 +#define GL_COLOR_ATTACHMENT0_OES                                0x8CE0 +#define GL_DEPTH_ATTACHMENT_OES                                 0x8D00 +#define GL_STENCIL_ATTACHMENT_OES                               0x8D20 +#define GL_FRAMEBUFFER_COMPLETE_OES                             0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES                0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES        0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES                0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES                   0x8CDA +#define GL_FRAMEBUFFER_UNSUPPORTED_OES                          0x8CDD +#define GL_FRAMEBUFFER_BINDING_OES                              0x8CA6 +#define GL_RENDERBUFFER_BINDING_OES                             0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE_OES                            0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION_OES                    0x0506 +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_WRITE_ONLY_OES                                       0x88B9 +#define GL_BUFFER_ACCESS_OES                                    0x88BB +#define GL_BUFFER_MAPPED_OES                                    0x88BC +#define GL_BUFFER_MAP_POINTER_OES                               0x88BD +#endif + +/* GL_OES_matrix_get */ +#ifndef GL_OES_matrix_get +#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES               0x898D +#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES              0x898E +#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES                 0x898F +#endif + +/* GL_OES_matrix_palette */ +#ifndef GL_OES_matrix_palette +#define GL_MAX_VERTEX_UNITS_OES                                 0x86A4 +#define GL_MAX_PALETTE_MATRICES_OES                             0x8842 +#define GL_MATRIX_PALETTE_OES                                   0x8840 +#define GL_MATRIX_INDEX_ARRAY_OES                               0x8844 +#define GL_WEIGHT_ARRAY_OES                                     0x86AD +#define GL_CURRENT_PALETTE_MATRIX_OES                           0x8843 +#define GL_MATRIX_INDEX_ARRAY_SIZE_OES                          0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_OES                          0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES                        0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_OES                       0x8849 +#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES                0x8B9E +#define GL_WEIGHT_ARRAY_SIZE_OES                                0x86AB +#define GL_WEIGHT_ARRAY_TYPE_OES                                0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_OES                              0x86AA +#define GL_WEIGHT_ARRAY_POINTER_OES                             0x86AC +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES                      0x889E +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_DEPTH_STENCIL_OES                                    0x84F9 +#define GL_UNSIGNED_INT_24_8_OES                                0x84FA +#define GL_DEPTH24_STENCIL8_OES                                 0x88F0 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_RGB8_OES                                             0x8051 +#define GL_RGBA8_OES                                            0x8058 +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_STENCIL_INDEX1_OES                                   0x8D46 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_STENCIL_INDEX4_OES                                   0x8D47 +#endif + +/* GL_OES_stencil8 */ +#ifndef GL_OES_stencil8 +#define GL_STENCIL_INDEX8_OES                                   0x8D48 +#endif + +/* GL_OES_stencil_wrap */ +#ifndef GL_OES_stencil_wrap +#define GL_INCR_WRAP_OES                                        0x8507 +#define GL_DECR_WRAP_OES                                        0x8508 +#endif + +/* GL_OES_texture_cube_map */ +#ifndef GL_OES_texture_cube_map +#define GL_NORMAL_MAP_OES                                       0x8511 +#define GL_REFLECTION_MAP_OES                                   0x8512 +#define GL_TEXTURE_CUBE_MAP_OES                                 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_OES                         0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES                      0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES                      0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES                      0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES                      0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES                      0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES                      0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES                        0x851C +#define GL_TEXTURE_GEN_MODE_OES                                 0x2500 +#define GL_TEXTURE_GEN_STR_OES                                  0x8D60 +#endif + +/* GL_OES_texture_mirrored_repeat */ +#ifndef GL_OES_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_OES                                  0x8370 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5 +#endif + +/*------------------------------------------------------------------------* + * AMD extension tokens + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_3DC_X_AMD                                            0x87F9 +#define GL_3DC_XY_AMD                                           0x87FA +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_ATC_RGB_AMD                                          0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      0x87EE +#endif + +/*------------------------------------------------------------------------* + * APPLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_APPLE_texture_2D_limited_npot */ +/* No new tokens introduced by this extension. */ + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_APPLE                           0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE             0x8D56 +#define GL_MAX_SAMPLES_APPLE                                    0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE                               0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE                               0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE                       0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE                       0x8CAA +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_BGRA_EXT                                             0x80E1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_TEXTURE_MAX_LEVEL_APPLE                              0x813D +#endif + +/*------------------------------------------------------------------------* + * ARM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ARM_rgba8 */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * EXT extension tokens + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_MIN_EXT                                              0x8007 +#define GL_MAX_EXT                                              0x8008 +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_COLOR_EXT                                            0x1800 +#define GL_DEPTH_EXT                                            0x1801 +#define GL_STENCIL_EXT                                          0x1802 +#endif + +/* GL_EXT_multi_draw_arrays */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_BGRA_EXT                                             0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       0x8366 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT                           0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       0x84FF +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_BGRA_EXT                                             0x80E1 +#endif + +/* GL_EXT_texture_lod_bias */ +#ifndef GL_EXT_texture_lod_bias +#define GL_MAX_TEXTURE_LOD_BIAS_EXT                             0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT                           0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT                                 0x8501 +#endif + +/*------------------------------------------------------------------------* + * IMG extension tokens + *------------------------------------------------------------------------*/ + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_BGRA_IMG                                             0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       0x8365 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     0x8C03 +#endif + +/* GL_IMG_texture_env_enhanced_fixed_function */ +#ifndef GL_IMG_texture_env_enhanced_fixed_function +#define GL_MODULATE_COLOR_IMG                                   0x8C04 +#define GL_RECIP_ADD_SIGNED_ALPHA_IMG                           0x8C05 +#define GL_TEXTURE_ALPHA_MODULATE_IMG                           0x8C06 +#define GL_FACTOR_ALPHA_MODULATE_IMG                            0x8C07 +#define GL_FRAGMENT_ALPHA_MODULATE_IMG                          0x8C08 +#define GL_ADD_BLEND_IMG                                        0x8C09 +#define GL_DOT3_RGBA_IMG                                        0x86AF +#endif + +/* GL_IMG_user_clip_plane */ +#ifndef GL_IMG_user_clip_plane +#define GL_CLIP_PLANE0_IMG                                      0x3000 +#define GL_CLIP_PLANE1_IMG                                      0x3001 +#define GL_CLIP_PLANE2_IMG                                      0x3002 +#define GL_CLIP_PLANE3_IMG                                      0x3003 +#define GL_CLIP_PLANE4_IMG                                      0x3004 +#define GL_CLIP_PLANE5_IMG                                      0x3005 +#define GL_MAX_CLIP_PLANES_IMG                                  0x0D32 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_RENDERBUFFER_SAMPLES_IMG                             0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               0x9134 +#define GL_MAX_SAMPLES_IMG                                      0x9135 +#define GL_TEXTURE_SAMPLES_IMG                                  0x9136 +#endif + +/*------------------------------------------------------------------------* + * NV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV                                     0x84F2 +#define GL_FENCE_STATUS_NV                                      0x84F3 +#define GL_FENCE_CONDITION_NV                                   0x84F4 +#endif + +/*------------------------------------------------------------------------* + * QCOM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_TEXTURE_WIDTH_QCOM                                   0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM                                  0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM                                   0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                         0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM                                  0x8BD6 +#define GL_TEXTURE_TYPE_QCOM                                    0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM                             0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM                              0x8BD9 +#define GL_TEXTURE_TARGET_QCOM                                  0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM                            0x8BDB +#define GL_STATE_RESTORE                                        0x8BDC +#endif + +/* GL_QCOM_extended_get2 */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_PERFMON_GLOBAL_MODE_QCOM                             0x8FA0 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_WRITEONLY_RENDERING_QCOM                             0x8823 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_COLOR_BUFFER_BIT0_QCOM                               0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM                               0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM                               0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM                               0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM                               0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM                               0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM                               0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM                               0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM                               0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM                               0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM                               0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM                               0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM                               0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM                               0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM                               0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM                               0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM                             0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM                             0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM                             0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM                             0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM                             0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM                             0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM                             0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM                             0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         0x80000000 +#endif + +/*------------------------------------------------------------------------* + * End of extension tokens, start of corresponding extension functions + *------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------* + * OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_blend_equation_separate */ +#ifndef GL_OES_blend_equation_separate +#define GL_OES_blend_equation_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendEquationSeparateOES (GLenum modeRGB, GLenum modeAlpha); +#endif +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEOESPROC) (GLenum modeRGB, GLenum modeAlpha); +#endif + +/* GL_OES_blend_func_separate */ +#ifndef GL_OES_blend_func_separate +#define GL_OES_blend_func_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendFuncSeparateOES (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEOESPROC) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif + +/* GL_OES_blend_subtract */ +#ifndef GL_OES_blend_subtract +#define GL_OES_blend_subtract 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendEquationOES (GLenum mode); +#endif +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONOESPROC) (GLenum mode); +#endif + +/* GL_OES_byte_coordinates */ +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +#endif + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_draw_texture */ +#ifndef GL_OES_draw_texture +#define GL_OES_draw_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDrawTexsOES (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +GL_API void GL_APIENTRY glDrawTexiOES (GLint x, GLint y, GLint z, GLint width, GLint height); +GL_API void GL_APIENTRY glDrawTexxOES (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +GL_API void GL_APIENTRY glDrawTexsvOES (const GLshort *coords); +GL_API void GL_APIENTRY glDrawTexivOES (const GLint *coords); +GL_API void GL_APIENTRY glDrawTexxvOES (const GLfixed *coords); +GL_API void GL_APIENTRY glDrawTexfOES (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +GL_API void GL_APIENTRY glDrawTexfvOES (const GLfloat *coords); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWTEXSOESPROC) (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXIOESPROC) (GLint x, GLint y, GLint z, GLint width, GLint height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXXOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXSVOESPROC) (const GLshort *coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXIVOESPROC) (const GLint *coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXXVOESPROC) (const GLfixed *coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXFOESPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXFVOESPROC) (const GLfloat *coords); +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_API void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */ +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_extended_matrix_palette */ +#ifndef GL_OES_extended_matrix_palette +#define GL_OES_extended_matrix_palette 1 +#endif + +/* GL_OES_fbo_render_mipmap */ +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif + +/* GL_OES_fixed_point */ +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glAlphaFuncxOES (GLenum func, GLclampx ref); +GL_API void GL_APIENTRY glClearColorxOES (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +GL_API void GL_APIENTRY glClearDepthxOES (GLclampx depth); +GL_API void GL_APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation); +GL_API void GL_APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GL_API void GL_APIENTRY glDepthRangexOES (GLclampx zNear, GLclampx zFar); +GL_API void GL_APIENTRY glFogxOES (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glFogxvOES (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glFrustumxOES (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glGetClipPlanexOES (GLenum pname, GLfixed eqn[4]); +GL_API void GL_APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetLightxvOES (GLenum light, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetMaterialxvOES (GLenum face, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetTexEnvxvOES (GLenum env, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glLightModelxOES (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glLineWidthxOES (GLfixed width); +GL_API void GL_APIENTRY glLoadMatrixxOES (const GLfixed *m); +GL_API void GL_APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glMultMatrixxOES (const GLfixed *m); +GL_API void GL_APIENTRY glMultiTexCoord4xOES (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GL_API void GL_APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz); +GL_API void GL_APIENTRY glOrthoxOES (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glPointParameterxOES (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glPointSizexOES (GLfixed size); +GL_API void GL_APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units); +GL_API void GL_APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glSampleCoveragexOES (GLclampx value, GLboolean invert); +GL_API void GL_APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z); +#endif +typedef void (GL_APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLclampx ref); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLclampx depth); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); +typedef void (GL_APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLclampx zNear, GLclampx zFar); +typedef void (GL_APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum pname, GLfixed eqn[4]); +typedef void (GL_APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETLIGHTXVOESPROC) (GLenum light, GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETMATERIALXVOESPROC) (GLenum face, GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum env, GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width); +typedef void (GL_APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m); +typedef void (GL_APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m); +typedef void (GL_APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (GL_APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (GL_APIENTRYP PFNGLORTHOXOESPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXOESPROC) (GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); +typedef void (GL_APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEXOESPROC) (GLclampx value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (GL_APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +#endif + +/* GL_OES_framebuffer_object */ +#ifndef GL_OES_framebuffer_object +#define GL_OES_framebuffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API GLboolean GL_APIENTRY glIsRenderbufferOES (GLuint renderbuffer); +GL_API void GL_APIENTRY glBindRenderbufferOES (GLenum target, GLuint renderbuffer); +GL_API void GL_APIENTRY glDeleteRenderbuffersOES (GLsizei n, const GLuint* renderbuffers); +GL_API void GL_APIENTRY glGenRenderbuffersOES (GLsizei n, GLuint* renderbuffers); +GL_API void GL_APIENTRY glRenderbufferStorageOES (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glGetRenderbufferParameterivOES (GLenum target, GLenum pname, GLint* params); +GL_API GLboolean GL_APIENTRY glIsFramebufferOES (GLuint framebuffer); +GL_API void GL_APIENTRY glBindFramebufferOES (GLenum target, GLuint framebuffer); +GL_API void GL_APIENTRY glDeleteFramebuffersOES (GLsizei n, const GLuint* framebuffers); +GL_API void GL_APIENTRY glGenFramebuffersOES (GLsizei n, GLuint* framebuffers); +GL_API GLenum GL_APIENTRY glCheckFramebufferStatusOES (GLenum target); +GL_API void GL_APIENTRY glFramebufferRenderbufferOES (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_API void GL_APIENTRY glFramebufferTexture2DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_API void GL_APIENTRY glGetFramebufferAttachmentParameterivOES (GLenum target, GLenum attachment, GLenum pname, GLint* params); +GL_API void GL_APIENTRY glGenerateMipmapOES (GLenum target); +#endif +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPOESPROC) (GLenum target); +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_API GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_API void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid ** params); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid ** params); +#endif + +/* GL_OES_matrix_get */ +#ifndef GL_OES_matrix_get +#define GL_OES_matrix_get 1 +#endif + +/* GL_OES_matrix_palette */ +#ifndef GL_OES_matrix_palette +#define GL_OES_matrix_palette 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glCurrentPaletteMatrixOES (GLuint matrixpaletteindex); +GL_API void GL_APIENTRY glLoadPaletteFromModelViewMatrixOES (void); +GL_API void GL_APIENTRY glMatrixIndexPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glWeightPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif +typedef void (GL_APIENTRYP PFNGLCURRENTPALETTEMATRIXOESPROC) (GLuint matrixpaletteindex); +typedef void (GL_APIENTRYP PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC) (void); +typedef void (GL_APIENTRYP PFNGLMATRIXINDEXPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (GL_APIENTRYP PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_query_matrix */ +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API GLbitfield GL_APIENTRY glQueryMatrixxOES (GLfixed mantissa[16], GLint exponent[16]); +#endif +typedef GLbitfield (GL_APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed mantissa[16], GLint exponent[16]); +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_single_precision */ +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDepthRangefOES (GLclampf zNear, GLclampf zFar); +GL_API void GL_APIENTRY glFrustumfOES (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glOrthofOES (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation); +GL_API void GL_APIENTRY glGetClipPlanefOES (GLenum pname, GLfloat eqn[4]); +GL_API void GL_APIENTRY glClearDepthfOES (GLclampf depth); +#endif +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf zNear, GLclampf zFar); +typedef void (GL_APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +typedef void (GL_APIENTRYP PFNGLORTHOFOESPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum pname, GLfloat eqn[4]); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +/* GL_OES_stencil8 */ +#ifndef GL_OES_stencil8 +#define GL_OES_stencil8 1 +#endif + +/* GL_OES_stencil_wrap */ +#ifndef GL_OES_stencil_wrap +#define GL_OES_stencil_wrap 1 +#endif + +/* GL_OES_texture_cube_map */ +#ifndef GL_OES_texture_cube_map +#define GL_OES_texture_cube_map 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glTexGenfOES (GLenum coord, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glTexGenfvOES (GLenum coord, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glTexGeniOES (GLenum coord, GLenum pname, GLint param); +GL_API void GL_APIENTRY glTexGenivOES (GLenum coord, GLenum pname, const GLint *params); +GL_API void GL_APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glGetTexGenfvOES (GLenum coord, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetTexGenivOES (GLenum coord, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params); +#endif +typedef void (GL_APIENTRYP PFNGLTEXGENFOESPROC) (GLenum coord, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXGENFVOESPROC) (GLenum coord, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXGENIOESPROC) (GLenum coord, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXGENIVOESPROC) (GLenum coord, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENFVOESPROC) (GLenum coord, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENIVOESPROC) (GLenum coord, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +#endif + +/* GL_OES_texture_env_crossbar */ +#ifndef GL_OES_texture_env_crossbar +#define GL_OES_texture_env_crossbar 1 +#endif + +/* GL_OES_texture_mirrored_repeat */ +#ifndef GL_OES_texture_mirrored_repeat +#define GL_OES_texture_mirrored_repeat 1 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_API void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_API void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_API GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#endif + +/*------------------------------------------------------------------------* + * AMD extension functions + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#endif + +/*------------------------------------------------------------------------* + * APPLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_APPLE_texture_2D_limited_npot */ +#ifndef GL_APPLE_texture_2D_limited_npot +#define GL_APPLE_texture_2D_limited_npot 1 +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_API void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#endif + +/*------------------------------------------------------------------------* + * ARM extension functions + *------------------------------------------------------------------------*/ + +/* GL_ARM_rgba8 */ +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif + +/*------------------------------------------------------------------------* + * EXT extension functions + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif + +/* GL_EXT_multi_draw_arrays */ +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); +GL_API void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/* GL_EXT_texture_lod_bias */ +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension functions + *------------------------------------------------------------------------*/ + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#endif + +/* GL_IMG_texture_env_enhanced_fixed_function */ +#ifndef GL_IMG_texture_env_enhanced_fixed_function +#define GL_IMG_texture_env_enhanced_fixed_function 1 +#endif + +/* GL_IMG_user_clip_plane */ +#ifndef GL_IMG_user_clip_plane +#define GL_IMG_user_clip_plane 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glClipPlanefIMG (GLenum, const GLfloat *); +GL_API void GL_APIENTRY glClipPlanexIMG (GLenum, const GLfixed *); +#endif +typedef void (GL_APIENTRYP PFNGLCLIPPLANEFIMGPROC) (GLenum p, const GLfloat *eqn); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEXIMGPROC) (GLenum p, const GLfixed *eqn); +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_API void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/*------------------------------------------------------------------------* + * NV extension functions + *------------------------------------------------------------------------*/ + +/* NV_fence */ +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); +GL_API void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *); +GL_API GLboolean GL_APIENTRY glIsFenceNV (GLuint); +GL_API GLboolean GL_APIENTRY glTestFenceNV (GLuint); +GL_API void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); +GL_API void GL_APIENTRY glFinishFenceNV (GLuint); +GL_API void GL_APIENTRY glSetFenceNV (GLuint, GLenum); +#endif +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +/*------------------------------------------------------------------------* + * QCOM extension functions + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_API void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_API void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_API void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#endif + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_API void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_API void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_API void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_API void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_API void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +GL_API void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params); +#endif + +/* GL_QCOM_extended_get2 */ +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_API void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_API GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_API void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_API void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __glext_h_ */ + diff --git a/emulator/opengl/host/libs/Translator/include/GLES/glplatform.h b/emulator/opengl/host/libs/Translator/include/GLES/glplatform.h new file mode 100644 index 0000000..2db6ee2 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLES/glplatform.h @@ -0,0 +1,30 @@ +#ifndef __glplatform_h_ +#define __glplatform_h_ + +/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */ + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/* Platform-specific types and definitions for OpenGL ES 1.X  gl.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file.  Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "OpenGL-ES" component "Registry". + */ + +#include <KHR/khrplatform.h> + +#ifndef GL_API +#define GL_API      KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __glplatform_h_ */ diff --git a/emulator/opengl/host/libs/Translator/include/GLES2/gl2.h b/emulator/opengl/host/libs/Translator/include/GLES2/gl2.h new file mode 100644 index 0000000..e1d3b87 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLES2/gl2.h @@ -0,0 +1,621 @@ +#ifndef __gl2_h_ +#define __gl2_h_ + +/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */ + +#include <GLES2/gl2platform.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/*------------------------------------------------------------------------- + * Data type definitions + *-----------------------------------------------------------------------*/ + +typedef void             GLvoid; +typedef char             GLchar; +typedef unsigned int     GLenum; +typedef unsigned char    GLboolean; +typedef unsigned int     GLbitfield; +typedef khronos_int8_t   GLbyte; +typedef short            GLshort; +typedef int              GLint; +typedef int              GLsizei; +typedef khronos_uint8_t  GLubyte; +typedef unsigned short   GLushort; +typedef unsigned int     GLuint; +typedef khronos_float_t  GLfloat; +typedef khronos_float_t  GLclampf; +typedef khronos_int32_t  GLfixed; + +/* GL types for handling large vertex buffer objects */ +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t  GLsizeiptr; + +/* OpenGL ES core versions */ +#define GL_ES_VERSION_2_0                 1 + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT               0x00000100 +#define GL_STENCIL_BUFFER_BIT             0x00000400 +#define GL_COLOR_BUFFER_BIT               0x00004000 + +/* Boolean */ +#define GL_FALSE                          0 +#define GL_TRUE                           1 + +/* BeginMode */ +#define GL_POINTS                         0x0000 +#define GL_LINES                          0x0001 +#define GL_LINE_LOOP                      0x0002 +#define GL_LINE_STRIP                     0x0003 +#define GL_TRIANGLES                      0x0004 +#define GL_TRIANGLE_STRIP                 0x0005 +#define GL_TRIANGLE_FAN                   0x0006 + +/* AlphaFunction (not supported in ES20) */ +/*      GL_NEVER */ +/*      GL_LESS */ +/*      GL_EQUAL */ +/*      GL_LEQUAL */ +/*      GL_GREATER */ +/*      GL_NOTEQUAL */ +/*      GL_GEQUAL */ +/*      GL_ALWAYS */ + +/* BlendingFactorDest */ +#define GL_ZERO                           0 +#define GL_ONE                            1 +#define GL_SRC_COLOR                      0x0300 +#define GL_ONE_MINUS_SRC_COLOR            0x0301 +#define GL_SRC_ALPHA                      0x0302 +#define GL_ONE_MINUS_SRC_ALPHA            0x0303 +#define GL_DST_ALPHA                      0x0304 +#define GL_ONE_MINUS_DST_ALPHA            0x0305 + +/* BlendingFactorSrc */ +/*      GL_ZERO */ +/*      GL_ONE */ +#define GL_DST_COLOR                      0x0306 +#define GL_ONE_MINUS_DST_COLOR            0x0307 +#define GL_SRC_ALPHA_SATURATE             0x0308 +/*      GL_SRC_ALPHA */ +/*      GL_ONE_MINUS_SRC_ALPHA */ +/*      GL_DST_ALPHA */ +/*      GL_ONE_MINUS_DST_ALPHA */ + +/* BlendEquationSeparate */ +#define GL_FUNC_ADD                       0x8006 +#define GL_BLEND_EQUATION                 0x8009 +#define GL_BLEND_EQUATION_RGB             0x8009    /* same as BLEND_EQUATION */ +#define GL_BLEND_EQUATION_ALPHA           0x883D + +/* BlendSubtract */ +#define GL_FUNC_SUBTRACT                  0x800A +#define GL_FUNC_REVERSE_SUBTRACT          0x800B + +/* Separate Blend Functions */ +#define GL_BLEND_DST_RGB                  0x80C8 +#define GL_BLEND_SRC_RGB                  0x80C9 +#define GL_BLEND_DST_ALPHA                0x80CA +#define GL_BLEND_SRC_ALPHA                0x80CB +#define GL_CONSTANT_COLOR                 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002 +#define GL_CONSTANT_ALPHA                 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004 +#define GL_BLEND_COLOR                    0x8005 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER                   0x8892 +#define GL_ELEMENT_ARRAY_BUFFER           0x8893 +#define GL_ARRAY_BUFFER_BINDING           0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895 + +#define GL_STREAM_DRAW                    0x88E0 +#define GL_STATIC_DRAW                    0x88E4 +#define GL_DYNAMIC_DRAW                   0x88E8 + +#define GL_BUFFER_SIZE                    0x8764 +#define GL_BUFFER_USAGE                   0x8765 + +#define GL_CURRENT_VERTEX_ATTRIB          0x8626 + +/* CullFaceMode */ +#define GL_FRONT                          0x0404 +#define GL_BACK                           0x0405 +#define GL_FRONT_AND_BACK                 0x0408 + +/* DepthFunction */ +/*      GL_NEVER */ +/*      GL_LESS */ +/*      GL_EQUAL */ +/*      GL_LEQUAL */ +/*      GL_GREATER */ +/*      GL_NOTEQUAL */ +/*      GL_GEQUAL */ +/*      GL_ALWAYS */ + +/* EnableCap */ +#define GL_TEXTURE_2D                     0x0DE1 +#define GL_CULL_FACE                      0x0B44 +#define GL_BLEND                          0x0BE2 +#define GL_DITHER                         0x0BD0 +#define GL_STENCIL_TEST                   0x0B90 +#define GL_DEPTH_TEST                     0x0B71 +#define GL_SCISSOR_TEST                   0x0C11 +#define GL_POLYGON_OFFSET_FILL            0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E +#define GL_SAMPLE_COVERAGE                0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR                       0 +#define GL_INVALID_ENUM                   0x0500 +#define GL_INVALID_VALUE                  0x0501 +#define GL_INVALID_OPERATION              0x0502 +#define GL_OUT_OF_MEMORY                  0x0505 + +/* FrontFaceDirection */ +#define GL_CW                             0x0900 +#define GL_CCW                            0x0901 + +/* GetPName */ +#define GL_LINE_WIDTH                     0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE       0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E +#define GL_CULL_FACE_MODE                 0x0B45 +#define GL_FRONT_FACE                     0x0B46 +#define GL_DEPTH_RANGE                    0x0B70 +#define GL_DEPTH_WRITEMASK                0x0B72 +#define GL_DEPTH_CLEAR_VALUE              0x0B73 +#define GL_DEPTH_FUNC                     0x0B74 +#define GL_STENCIL_CLEAR_VALUE            0x0B91 +#define GL_STENCIL_FUNC                   0x0B92 +#define GL_STENCIL_FAIL                   0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96 +#define GL_STENCIL_REF                    0x0B97 +#define GL_STENCIL_VALUE_MASK             0x0B93 +#define GL_STENCIL_WRITEMASK              0x0B98 +#define GL_STENCIL_BACK_FUNC              0x8800 +#define GL_STENCIL_BACK_FAIL              0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803 +#define GL_STENCIL_BACK_REF               0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK         0x8CA5 +#define GL_VIEWPORT                       0x0BA2 +#define GL_SCISSOR_BOX                    0x0C10 +/*      GL_SCISSOR_TEST */ +#define GL_COLOR_CLEAR_VALUE              0x0C22 +#define GL_COLOR_WRITEMASK                0x0C23 +#define GL_UNPACK_ALIGNMENT               0x0CF5 +#define GL_PACK_ALIGNMENT                 0x0D05 +#define GL_MAX_TEXTURE_SIZE               0x0D33 +#define GL_MAX_VIEWPORT_DIMS              0x0D3A +#define GL_SUBPIXEL_BITS                  0x0D50 +#define GL_RED_BITS                       0x0D52 +#define GL_GREEN_BITS                     0x0D53 +#define GL_BLUE_BITS                      0x0D54 +#define GL_ALPHA_BITS                     0x0D55 +#define GL_DEPTH_BITS                     0x0D56 +#define GL_STENCIL_BITS                   0x0D57 +#define GL_POLYGON_OFFSET_UNITS           0x2A00 +/*      GL_POLYGON_OFFSET_FILL */ +#define GL_POLYGON_OFFSET_FACTOR          0x8038 +#define GL_TEXTURE_BINDING_2D             0x8069 +#define GL_SAMPLE_BUFFERS                 0x80A8 +#define GL_SAMPLES                        0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE          0x80AA +#define GL_SAMPLE_COVERAGE_INVERT         0x80AB + +/* GetTextureParameter */ +/*      GL_TEXTURE_MAG_FILTER */ +/*      GL_TEXTURE_MIN_FILTER */ +/*      GL_TEXTURE_WRAP_S */ +/*      GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3 + +/* HintMode */ +#define GL_DONT_CARE                      0x1100 +#define GL_FASTEST                        0x1101 +#define GL_NICEST                         0x1102 + +/* HintTarget */ +#define GL_GENERATE_MIPMAP_HINT            0x8192 + +/* DataType */ +#define GL_BYTE                           0x1400 +#define GL_UNSIGNED_BYTE                  0x1401 +#define GL_SHORT                          0x1402 +#define GL_UNSIGNED_SHORT                 0x1403 +#define GL_INT                            0x1404 +#define GL_UNSIGNED_INT                   0x1405 +#define GL_FLOAT                          0x1406 +#define GL_FIXED                          0x140C + +/* PixelFormat */ +#define GL_DEPTH_COMPONENT                0x1902 +#define GL_ALPHA                          0x1906 +#define GL_RGB                            0x1907 +#define GL_RGBA                           0x1908 +#define GL_LUMINANCE                      0x1909 +#define GL_LUMINANCE_ALPHA                0x190A + +/* PixelType */ +/*      GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034 +#define GL_UNSIGNED_SHORT_5_6_5           0x8363 + +/* Shaders */ +#define GL_FRAGMENT_SHADER                  0x8B30 +#define GL_VERTEX_SHADER                    0x8B31 +#define GL_MAX_VERTEX_ATTRIBS               0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB +#define GL_MAX_VARYING_VECTORS              0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS   0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS          0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD +#define GL_SHADER_TYPE                      0x8B4F +#define GL_DELETE_STATUS                    0x8B80 +#define GL_LINK_STATUS                      0x8B82 +#define GL_VALIDATE_STATUS                  0x8B83 +#define GL_ATTACHED_SHADERS                 0x8B85 +#define GL_ACTIVE_UNIFORMS                  0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH        0x8B87 +#define GL_ACTIVE_ATTRIBUTES                0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH      0x8B8A +#define GL_SHADING_LANGUAGE_VERSION         0x8B8C +#define GL_CURRENT_PROGRAM                  0x8B8D + +/* StencilFunction */ +#define GL_NEVER                          0x0200 +#define GL_LESS                           0x0201 +#define GL_EQUAL                          0x0202 +#define GL_LEQUAL                         0x0203 +#define GL_GREATER                        0x0204 +#define GL_NOTEQUAL                       0x0205 +#define GL_GEQUAL                         0x0206 +#define GL_ALWAYS                         0x0207 + +/* StencilOp */ +/*      GL_ZERO */ +#define GL_KEEP                           0x1E00 +#define GL_REPLACE                        0x1E01 +#define GL_INCR                           0x1E02 +#define GL_DECR                           0x1E03 +#define GL_INVERT                         0x150A +#define GL_INCR_WRAP                      0x8507 +#define GL_DECR_WRAP                      0x8508 + +/* StringName */ +#define GL_VENDOR                         0x1F00 +#define GL_RENDERER                       0x1F01 +#define GL_VERSION                        0x1F02 +#define GL_EXTENSIONS                     0x1F03 + +/* TextureMagFilter */ +#define GL_NEAREST                        0x2600 +#define GL_LINEAR                         0x2601 + +/* TextureMinFilter */ +/*      GL_NEAREST */ +/*      GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST         0x2700 +#define GL_LINEAR_MIPMAP_NEAREST          0x2701 +#define GL_NEAREST_MIPMAP_LINEAR          0x2702 +#define GL_LINEAR_MIPMAP_LINEAR           0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER             0x2800 +#define GL_TEXTURE_MIN_FILTER             0x2801 +#define GL_TEXTURE_WRAP_S                 0x2802 +#define GL_TEXTURE_WRAP_T                 0x2803 + +/* TextureTarget */ +/*      GL_TEXTURE_2D */ +#define GL_TEXTURE                        0x1702 + +#define GL_TEXTURE_CUBE_MAP               0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C + +/* TextureUnit */ +#define GL_TEXTURE0                       0x84C0 +#define GL_TEXTURE1                       0x84C1 +#define GL_TEXTURE2                       0x84C2 +#define GL_TEXTURE3                       0x84C3 +#define GL_TEXTURE4                       0x84C4 +#define GL_TEXTURE5                       0x84C5 +#define GL_TEXTURE6                       0x84C6 +#define GL_TEXTURE7                       0x84C7 +#define GL_TEXTURE8                       0x84C8 +#define GL_TEXTURE9                       0x84C9 +#define GL_TEXTURE10                      0x84CA +#define GL_TEXTURE11                      0x84CB +#define GL_TEXTURE12                      0x84CC +#define GL_TEXTURE13                      0x84CD +#define GL_TEXTURE14                      0x84CE +#define GL_TEXTURE15                      0x84CF +#define GL_TEXTURE16                      0x84D0 +#define GL_TEXTURE17                      0x84D1 +#define GL_TEXTURE18                      0x84D2 +#define GL_TEXTURE19                      0x84D3 +#define GL_TEXTURE20                      0x84D4 +#define GL_TEXTURE21                      0x84D5 +#define GL_TEXTURE22                      0x84D6 +#define GL_TEXTURE23                      0x84D7 +#define GL_TEXTURE24                      0x84D8 +#define GL_TEXTURE25                      0x84D9 +#define GL_TEXTURE26                      0x84DA +#define GL_TEXTURE27                      0x84DB +#define GL_TEXTURE28                      0x84DC +#define GL_TEXTURE29                      0x84DD +#define GL_TEXTURE30                      0x84DE +#define GL_TEXTURE31                      0x84DF +#define GL_ACTIVE_TEXTURE                 0x84E0 + +/* TextureWrapMode */ +#define GL_REPEAT                         0x2901 +#define GL_CLAMP_TO_EDGE                  0x812F +#define GL_MIRRORED_REPEAT                0x8370 + +/* Uniform Types */ +#define GL_FLOAT_VEC2                     0x8B50 +#define GL_FLOAT_VEC3                     0x8B51 +#define GL_FLOAT_VEC4                     0x8B52 +#define GL_INT_VEC2                       0x8B53 +#define GL_INT_VEC3                       0x8B54 +#define GL_INT_VEC4                       0x8B55 +#define GL_BOOL                           0x8B56 +#define GL_BOOL_VEC2                      0x8B57 +#define GL_BOOL_VEC3                      0x8B58 +#define GL_BOOL_VEC4                      0x8B59 +#define GL_FLOAT_MAT2                     0x8B5A +#define GL_FLOAT_MAT3                     0x8B5B +#define GL_FLOAT_MAT4                     0x8B5C +#define GL_SAMPLER_2D                     0x8B5E +#define GL_SAMPLER_CUBE                   0x8B60 + +/* Vertex Arrays */ +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED        0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE           0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE         0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE           0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED     0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER        0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F + +/* Read Format */ +#define GL_IMPLEMENTATION_COLOR_READ_TYPE   0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B + +/* Shader Source */ +#define GL_COMPILE_STATUS                 0x8B81 +#define GL_INFO_LOG_LENGTH                0x8B84 +#define GL_SHADER_SOURCE_LENGTH           0x8B88 +#define GL_SHADER_COMPILER                0x8DFA + +/* Shader Binary */ +#define GL_SHADER_BINARY_FORMATS          0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9 + +/* Shader Precision-Specified Types */ +#define GL_LOW_FLOAT                      0x8DF0 +#define GL_MEDIUM_FLOAT                   0x8DF1 +#define GL_HIGH_FLOAT                     0x8DF2 +#define GL_LOW_INT                        0x8DF3 +#define GL_MEDIUM_INT                     0x8DF4 +#define GL_HIGH_INT                       0x8DF5 + +/* Framebuffer Object. */ +#define GL_FRAMEBUFFER                    0x8D40 +#define GL_RENDERBUFFER                   0x8D41 + +#define GL_RGBA4                          0x8056 +#define GL_RGB5_A1                        0x8057 +#define GL_RGB565                         0x8D62 +#define GL_DEPTH_COMPONENT16              0x81A5 +#define GL_STENCIL_INDEX                  0x1901 +#define GL_STENCIL_INDEX8                 0x8D48 + +#define GL_RENDERBUFFER_WIDTH             0x8D42 +#define GL_RENDERBUFFER_HEIGHT            0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44 +#define GL_RENDERBUFFER_RED_SIZE          0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55 + +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 + +#define GL_COLOR_ATTACHMENT0              0x8CE0 +#define GL_DEPTH_ATTACHMENT               0x8D00 +#define GL_STENCIL_ATTACHMENT             0x8D20 + +#define GL_NONE                           0 + +#define GL_FRAMEBUFFER_COMPLETE                      0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT         0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED                   0x8CDD + +#define GL_FRAMEBUFFER_BINDING            0x8CA6 +#define GL_RENDERBUFFER_BINDING           0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE          0x84E8 + +#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506 + +/*------------------------------------------------------------------------- + * GL core functions. + *-----------------------------------------------------------------------*/ + +GL_APICALL void         GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void         GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void         GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name); +GL_APICALL void         GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void         GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void         GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void         GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void         GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_APICALL void         GL_APIENTRY glBlendEquation ( GLenum mode ); +GL_APICALL void         GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void         GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void         GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void         GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); +GL_APICALL void         GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); +GL_APICALL GLenum       GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void         GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void         GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_APICALL void         GL_APIENTRY glClearDepthf (GLclampf depth); +GL_APICALL void         GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void         GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void         GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void         GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data); +GL_APICALL void         GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data); +GL_APICALL void         GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void         GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint       GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint       GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void         GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void         GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers); +GL_APICALL void         GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers); +GL_APICALL void         GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void         GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers); +GL_APICALL void         GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void         GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures); +GL_APICALL void         GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void         GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void         GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar); +GL_APICALL void         GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void         GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void         GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void         GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void         GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); +GL_APICALL void         GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void         GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void         GL_APIENTRY glFinish (void); +GL_APICALL void         GL_APIENTRY glFlush (void); +GL_APICALL void         GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void         GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void         GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void         GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers); +GL_APICALL void         GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void         GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers); +GL_APICALL void         GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers); +GL_APICALL void         GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures); +GL_APICALL void         GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +GL_APICALL void         GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +GL_APICALL void         GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); +GL_APICALL int          GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name); +GL_APICALL void         GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params); +GL_APICALL void         GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL GLenum       GL_APIENTRY glGetError (void); +GL_APICALL void         GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params); +GL_APICALL void         GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params); +GL_APICALL void         GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params); +GL_APICALL void         GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params); +GL_APICALL void         GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); +GL_APICALL void         GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL void         GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params); +GL_APICALL void         GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog); +GL_APICALL void         GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); +GL_APICALL void         GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); +GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name); +GL_APICALL void         GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params); +GL_APICALL void         GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL void         GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params); +GL_APICALL void         GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params); +GL_APICALL int          GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name); +GL_APICALL void         GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params); +GL_APICALL void         GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params); +GL_APICALL void         GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer); +GL_APICALL void         GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean    GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean    GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean    GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean    GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean    GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean    GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean    GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void         GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void         GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void         GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void         GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void         GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); +GL_APICALL void         GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void         GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void         GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); +GL_APICALL void         GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void         GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); +GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length); +GL_APICALL void         GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void         GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void         GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void         GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void         GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void         GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void         GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void         GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void         GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params); +GL_APICALL void         GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void         GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params); +GL_APICALL void         GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void         GL_APIENTRY glUniform1f (GLint location, GLfloat x); +GL_APICALL void         GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void         GL_APIENTRY glUniform1i (GLint location, GLint x); +GL_APICALL void         GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void         GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y); +GL_APICALL void         GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void         GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y); +GL_APICALL void         GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void         GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void         GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void         GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z); +GL_APICALL void         GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void         GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void         GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void         GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w); +GL_APICALL void         GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void         GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void         GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void         GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void         GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void         GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void         GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x); +GL_APICALL void         GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values); +GL_APICALL void         GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y); +GL_APICALL void         GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values); +GL_APICALL void         GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void         GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values); +GL_APICALL void         GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void         GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values); +GL_APICALL void         GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); +GL_APICALL void         GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2_h_ */ diff --git a/emulator/opengl/host/libs/Translator/include/GLES2/gl2ext.h b/emulator/opengl/host/libs/Translator/include/GLES2/gl2ext.h new file mode 100644 index 0000000..46f6093 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLES2/gl2ext.h @@ -0,0 +1,973 @@ +#ifndef __gl2ext_h_ +#define __gl2ext_h_ + +/* $Revision: 13239 $ on $Date:: 2010-12-17 15:13:56 -0800 #$ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +#ifndef GL_APIENTRYP +#   define GL_APIENTRYP GL_APIENTRY* +#endif + +/*------------------------------------------------------------------------* + * OES extension tokens + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_ETC1_RGB8_OES                                        0x8D64 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES                                    0x8B90 +#define GL_PALETTE4_RGBA8_OES                                   0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92 +#define GL_PALETTE4_RGBA4_OES                                   0x8B93 +#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94 +#define GL_PALETTE8_RGB8_OES                                    0x8B95 +#define GL_PALETTE8_RGBA8_OES                                   0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97 +#define GL_PALETTE8_RGBA4_OES                                   0x8B98 +#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_DEPTH_COMPONENT24_OES                                0x81A6 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_DEPTH_COMPONENT32_OES                                0x81A7 +#endif + +/* GL_OES_depth_texture */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +/* GLeglImageOES defined in GL_OES_EGL_image already. */ +#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65 +#define GL_SAMPLER_EXTERNAL_OES                                 0x8D66 +#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68 +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_UNSIGNED_INT                                         0x1405 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_PROGRAM_BINARY_LENGTH_OES                            0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES                       0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES                           0x87FF +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_WRITE_ONLY_OES                                       0x88B9 +#define GL_BUFFER_ACCESS_OES                                    0x88BB +#define GL_BUFFER_MAPPED_OES                                    0x88BC +#define GL_BUFFER_MAP_POINTER_OES                               0x88BD +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_DEPTH_STENCIL_OES                                    0x84F9 +#define GL_UNSIGNED_INT_24_8_OES                                0x84FA +#define GL_DEPTH24_STENCIL8_OES                                 0x88F0 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_RGB8_OES                                             0x8051 +#define GL_RGBA8_OES                                            0x8058 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                  0x8B8B +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_STENCIL_INDEX1_OES                                   0x8D46 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_STENCIL_INDEX4_OES                                   0x8D47 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_TEXTURE_WRAP_R_OES                                   0x8072 +#define GL_TEXTURE_3D_OES                                       0x806F +#define GL_TEXTURE_BINDING_3D_OES                               0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES                              0x8073 +#define GL_SAMPLER_3D_OES                                       0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES        0x8CD4 +#endif + +/* GL_OES_texture_float */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_float_linear */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_HALF_FLOAT_OES                                       0x8D61 +#endif + +/* GL_OES_texture_half_float_linear */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_npot */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5 +#endif + +/* GL_OES_vertex_half_float */ +/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */ + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_UNSIGNED_INT_10_10_10_2_OES                          0x8DF6 +#define GL_INT_10_10_10_2_OES                                   0x8DF7 +#endif + +/*------------------------------------------------------------------------* + * AMD extension tokens + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_3DC_X_AMD                                            0x87F9 +#define GL_3DC_XY_AMD                                           0x87FA +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_ATC_RGB_AMD                                          0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      0x87EE +#endif + +/* GL_AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_COUNTER_TYPE_AMD                                     0x8BC0 +#define GL_COUNTER_RANGE_AMD                                    0x8BC1 +#define GL_UNSIGNED_INT64_AMD                                   0x8BC2 +#define GL_PERCENTAGE_AMD                                       0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD                         0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD                              0x8BC5 +#define GL_PERFMON_RESULT_AMD                                   0x8BC6 +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_Z400_BINARY_AMD                                      0x8740 +#endif + +/*------------------------------------------------------------------------* + * ANGLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_READ_FRAMEBUFFER_ANGLE                               0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE                               0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE                       0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE                       0x8CAA +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_ANGLE                           0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE             0x8D56 +#define GL_MAX_SAMPLES_ANGLE                                    0x8D57 +#endif + +/*------------------------------------------------------------------------* + * APPLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_RGB_422_APPLE                                        0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE                             0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE                         0x85BB +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_APPLE                           0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE             0x8D56 +#define GL_MAX_SAMPLES_APPLE                                    0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE                               0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE                               0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE                       0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE                       0x8CAA +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_BGRA_EXT                                             0x80E1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_TEXTURE_MAX_LEVEL_APPLE                              0x813D +#endif + +/*------------------------------------------------------------------------* + * ARM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ARM_mali_shader_binary */ +#ifndef GL_ARM_mali_shader_binary +#define GL_MALI_SHADER_BINARY_ARM                               0x8F60 +#endif + +/* GL_ARM_rgba8 */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * EXT extension tokens + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_MIN_EXT                                              0x8007 +#define GL_MAX_EXT                                              0x8008 +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_COLOR_EXT                                            0x1800 +#define GL_DEPTH_EXT                                            0x1801 +#define GL_STENCIL_EXT                                          0x1802 +#endif + +/* GL_EXT_multi_draw_arrays */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_BGRA_EXT                                             0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       0x8366 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT                           0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       0x84FF +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_BGRA_EXT                                             0x80E1 +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT                         0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                        0x83F1 +#endif + +/* GL_EXT_shader_texture_lod */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * IMG extension tokens + *------------------------------------------------------------------------*/ + +/* GL_IMG_program_binary */ +#ifndef GL_IMG_program_binary +#define GL_SGX_PROGRAM_BINARY_IMG                               0x9130 +#endif + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_BGRA_IMG                                             0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       0x8365 +#endif + +/* GL_IMG_shader_binary */ +#ifndef GL_IMG_shader_binary +#define GL_SGX_BINARY_IMG                                       0x8C0A +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     0x8C03 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_RENDERBUFFER_SAMPLES_IMG                             0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               0x9134 +#define GL_MAX_SAMPLES_IMG                                      0x9135 +#define GL_TEXTURE_SAMPLES_IMG                                  0x9136 +#endif + +/*------------------------------------------------------------------------* + * NV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV                                     0x84F2 +#define GL_FENCE_STATUS_NV                                      0x84F3 +#define GL_FENCE_CONDITION_NV                                   0x84F4 +#endif + +/* GL_NV_coverage_sample */ +#ifndef GL_NV_coverage_sample +#define GL_COVERAGE_COMPONENT_NV                                0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV                               0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV                               0x8ED2 +#define GL_COVERAGE_BUFFERS_NV                                  0x8ED3 +#define GL_COVERAGE_SAMPLES_NV                                  0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV                            0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV                           0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV                                0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV                               0x8000 +#endif + +/* GL_NV_depth_nonlinear */ +#ifndef GL_NV_depth_nonlinear +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV                       0x8E2C +#endif + +/*------------------------------------------------------------------------* + * QCOM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_TEXTURE_WIDTH_QCOM                                   0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM                                  0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM                                   0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                         0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM                                  0x8BD6 +#define GL_TEXTURE_TYPE_QCOM                                    0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM                             0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM                              0x8BD9 +#define GL_TEXTURE_TARGET_QCOM                                  0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM                            0x8BDB +#define GL_STATE_RESTORE                                        0x8BDC +#endif + +/* GL_QCOM_extended_get2 */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_PERFMON_GLOBAL_MODE_QCOM                             0x8FA0 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_WRITEONLY_RENDERING_QCOM                             0x8823 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_COLOR_BUFFER_BIT0_QCOM                               0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM                               0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM                               0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM                               0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM                               0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM                               0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM                               0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM                               0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM                               0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM                               0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM                               0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM                               0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM                               0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM                               0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM                               0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM                               0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM                             0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM                             0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM                             0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM                             0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM                             0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM                             0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM                             0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM                             0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         0x80000000 +#endif + +/*------------------------------------------------------------------------* + * VIV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_VIV_shader_binary */ +#ifndef GL_VIV_shader_binary +#define GL_SHADER_BINARY_VIV                                    0x8FC4 +#endif + +/*------------------------------------------------------------------------* + * End of extension tokens, start of corresponding extension functions + *------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------* + * OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_depth_texture */ +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */ +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_fbo_render_mipmap */ +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif + +/* GL_OES_fragment_precision_high */ +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +#endif +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid** params); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params); +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif + +/* GL_OES_texture_float */ +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif + +/* GL_OES_texture_float_linear */ +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#endif + +/* GL_OES_texture_half_float_linear */ +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif + +/* GL_OES_texture_npot */ +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#endif + +/* GL_OES_vertex_half_float */ +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#endif + +/*------------------------------------------------------------------------* + * AMD extension functions + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#endif + +/* AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#endif + +/*------------------------------------------------------------------------* + * ANGLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +/*------------------------------------------------------------------------* + * APPLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#endif + +/*------------------------------------------------------------------------* + * ARM extension functions + *------------------------------------------------------------------------*/ + +/* GL_ARM_mali_shader_binary */ +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#endif + +/* GL_ARM_rgba8 */ +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif + +/*------------------------------------------------------------------------* + * EXT extension functions + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); +GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#endif + +/* GL_EXT_shader_texture_lod */ +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension functions + *------------------------------------------------------------------------*/ + +/* GL_IMG_program_binary */ +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#endif + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#endif + +/* GL_IMG_shader_binary */ +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/*------------------------------------------------------------------------* + * NV extension functions + *------------------------------------------------------------------------*/ + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint); +GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint, GLenum); +#endif +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +/* GL_NV_coverage_sample */ +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#endif + +/* GL_NV_depth_nonlinear */ +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#endif + +/*------------------------------------------------------------------------* + * QCOM extension functions + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#endif + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params); +#endif + +/* GL_QCOM_extended_get2 */ +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#endif + +/*------------------------------------------------------------------------* + * VIV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_VIV_shader_binary */ +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2ext_h_ */ diff --git a/emulator/opengl/host/libs/Translator/include/GLES2/gl2platform.h b/emulator/opengl/host/libs/Translator/include/GLES2/gl2platform.h new file mode 100644 index 0000000..c9fa3c4 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLES2/gl2platform.h @@ -0,0 +1,30 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */ + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/* Platform-specific types and definitions for OpenGL ES 2.X  gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file.  Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "OpenGL-ES" component "Registry". + */ + +#include <KHR/khrplatform.h> + +#ifndef GL_APICALL +#define GL_APICALL  KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/FramebufferData.h b/emulator/opengl/host/libs/Translator/include/GLcommon/FramebufferData.h new file mode 100644 index 0000000..46cb651 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/FramebufferData.h @@ -0,0 +1,72 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef _FRAMEBUFFER_DATA_H +#define _FRAMEBUFFER_DATA_H + +#include "objectNameManager.h" +#include <GLES/gl.h> +#include <GLES/glext.h> + +class RenderbufferData : public ObjectData +{ +public: +    RenderbufferData(); +    ~RenderbufferData(); + +    unsigned int sourceEGLImage; +    void (*eglImageDetach)(unsigned int imageId); +    GLuint attachedFB; +    GLenum attachedPoint; +    GLuint eglImageGlobalTexName; + +}; + +const int MAX_ATTACH_POINTS = 3; + +class FramebufferData : public ObjectData +{ +public: +    explicit FramebufferData(GLuint name); +    ~FramebufferData(); + +    void setAttachment(GLenum attachment, +                       GLenum target, +                       GLuint name, +                       ObjectDataPtr obj, +                       bool takeOwnership = false); + +    GLuint getAttachment(GLenum attachment, +                         GLenum *outTarget, +                         ObjectDataPtr *outObj); + +    void validate(class GLEScontext* ctx); + +private: +    inline int attachmentPointIndex(GLenum attachment); +    void detachObject(int idx); + +private: +    GLuint m_fbName; +    struct attachPoint { +        GLenum target; // OGL if owned, GLES otherwise +        GLuint name; // OGL if owned, GLES otherwise +        ObjectDataPtr obj; +        bool owned; +    } m_attachPoints[MAX_ATTACH_POINTS+1]; +    bool m_dirty; +}; + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLDispatch.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLDispatch.h new file mode 100644 index 0000000..de7d563 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLDispatch.h @@ -0,0 +1,267 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef GLDISPATCHH +#define GLDISPATCHH + +#include <GLES/gl.h> +#include <GLES2/gl2.h> +#include <utils/threads.h> +#include "gldefs.h" +#include "GLutils.h" + +#define GLAPIENTRY GL_APIENTRY +typedef void(*FUNCPTR)(); + +class GLDispatch +{ +public: + +    GLDispatch(); +    void dispatchFuncs(GLESVersion version); + +    /* OpenGL functions which are needed for implementing BOTH GLES 1.1 & GLES 2.0*/ +    static void (GLAPIENTRY *glActiveTexture) ( GLenum texture ); +    static void (GLAPIENTRY *glBindBuffer) (GLenum target, GLuint buffer); +    static void (GLAPIENTRY *glBindTexture) (GLenum target, GLuint texture); +    static void (GLAPIENTRY *glBlendFunc) (GLenum sfactor, GLenum dfactor); +    static void (GLAPIENTRY *glBlendEquation)( GLenum mode ); +    static void (GLAPIENTRY *glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha); +    static void (GLAPIENTRY *glBlendFuncSeparate)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +    static void (GLAPIENTRY *glBufferData) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); +    static void (GLAPIENTRY *glBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); +    static void (GLAPIENTRY *glClear) (GLbitfield mask); +    static void (GLAPIENTRY *glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +    static void (GLAPIENTRY *glClearStencil) (GLint s); +    static void (GLAPIENTRY *glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +    static void (GLAPIENTRY *glCompressedTexImage2D) ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ); +    static void (GLAPIENTRY *glCompressedTexSubImage2D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ); +    static void (GLAPIENTRY *glCopyTexImage2D) (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +    static void (GLAPIENTRY *glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +    static void (GLAPIENTRY *glCullFace) (GLenum mode); +    static void (GLAPIENTRY *glDeleteBuffers) (GLsizei n, const GLuint *buffers); +    static void (GLAPIENTRY *glDeleteTextures) (GLsizei n, const GLuint *textures); +    static void (GLAPIENTRY *glDepthFunc) (GLenum func); +    static void (GLAPIENTRY *glDepthMask) (GLboolean flag); +    static void (GLAPIENTRY *glDepthRange) (GLclampd zNear, GLclampd zFar); +    static void (GLAPIENTRY *glDisable) (GLenum cap); +    static void (GLAPIENTRY *glDrawArrays) (GLenum mode, GLint first, GLsizei count); +    static void (GLAPIENTRY *glDrawElements) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); +    static void (GLAPIENTRY *glEnable) (GLenum cap); +    static void (GLAPIENTRY *glFinish) (void); +    static void (GLAPIENTRY *glFlush) (void); +    static void (GLAPIENTRY *glFrontFace) (GLenum mode); +    static void (GLAPIENTRY *glGenBuffers) (GLsizei n, GLuint *buffers); +    static void (GLAPIENTRY *glGenTextures) (GLsizei n, GLuint *textures); +    static void (GLAPIENTRY *glGetBooleanv) (GLenum pname, GLboolean *params); +    static void (GLAPIENTRY *glGetBufferParameteriv) (GLenum, GLenum, GLint *); +    static GLenum (GLAPIENTRY *glGetError) (void); +    static void (GLAPIENTRY *glGetFloatv) (GLenum pname, GLfloat *params); +    static void (GLAPIENTRY *glGetIntegerv) (GLenum pname, GLint *params); +    static const GLubyte * (GLAPIENTRY *glGetString) (GLenum name); +    static void (GLAPIENTRY *glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat *params); +    static void (GLAPIENTRY *glGetTexParameteriv) (GLenum target, GLenum pname, GLint *params); +    static void (GLAPIENTRY *glGetTexLevelParameteriv) (GLenum target, GLint level, GLenum pname, GLint *params); +    static void (GLAPIENTRY *glHint) (GLenum target, GLenum mode); +    static GLboolean (GLAPIENTRY *glIsBuffer) (GLuint); +    static GLboolean (GLAPIENTRY *glIsEnabled) (GLenum cap); +    static GLboolean (GLAPIENTRY *glIsTexture) (GLuint texture); +    static void (GLAPIENTRY *glLineWidth) (GLfloat width); +    static void (GLAPIENTRY *glPolygonOffset) (GLfloat factor, GLfloat units); +    static void (GLAPIENTRY *glPixelStorei) (GLenum pname, GLint param); +    static void (GLAPIENTRY *glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); +    static void (GLAPIENTRY *glSampleCoverage) ( GLclampf value, GLboolean invert ); +    static void (GLAPIENTRY *glScissor) (GLint x, GLint y, GLsizei width, GLsizei height); +    static void (GLAPIENTRY *glStencilFunc) (GLenum func, GLint ref, GLuint mask); +    static void (GLAPIENTRY *glStencilMask) (GLuint mask); +    static void (GLAPIENTRY *glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass); +    static void (GLAPIENTRY *glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +    static void (GLAPIENTRY *glTexParameteri) (GLenum target, GLenum pname, GLint param); +    static void (GLAPIENTRY *glTexParameteriv) (GLenum target, GLenum pname, const GLint *params); +    static void (GLAPIENTRY *glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +    static void (GLAPIENTRY *glViewport) (GLint x, GLint y, GLsizei width, GLsizei height); +    static void (GLAPIENTRY *glPushAttrib) ( GLbitfield mask ); +    static void (GLAPIENTRY *glPopAttrib) ( void ); +    static void (GLAPIENTRY *glPushClientAttrib) ( GLbitfield mask ); +    static void (GLAPIENTRY *glPopClientAttrib) ( void ); +    static GLboolean (GLAPIENTRY *glIsRenderbufferEXT) (GLuint renderbuffer); +    static void (GLAPIENTRY *glBindRenderbufferEXT) (GLenum target, GLuint renderbuffer); +    static void (GLAPIENTRY *glDeleteRenderbuffersEXT) (GLsizei n, const GLuint *renderbuffers); +    static void (GLAPIENTRY *glGenRenderbuffersEXT) (GLsizei n, GLuint *renderbuffers); +    static void (GLAPIENTRY *glRenderbufferStorageEXT) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +    static void (GLAPIENTRY *glGetRenderbufferParameterivEXT) (GLenum target, GLenum pname, GLint *params); +    static GLboolean (GLAPIENTRY *glIsFramebufferEXT) (GLuint framebuffer); +    static void (GLAPIENTRY *glBindFramebufferEXT) (GLenum target, GLuint framebuffer); +    static void (GLAPIENTRY *glDeleteFramebuffersEXT) (GLsizei n, const GLuint *framebuffers); +    static void (GLAPIENTRY *glGenFramebuffersEXT) (GLsizei n, GLuint *framebuffers); +    static GLenum (GLAPIENTRY *glCheckFramebufferStatusEXT) (GLenum target); +    static void (GLAPIENTRY *glFramebufferTexture1DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +    static void (GLAPIENTRY *glFramebufferTexture2DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +    static void (GLAPIENTRY *glFramebufferTexture3DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +    static void (GLAPIENTRY *glFramebufferRenderbufferEXT) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +    static void (GLAPIENTRY *glGetFramebufferAttachmentParameterivEXT) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +    static void (GLAPIENTRY *glGenerateMipmapEXT) (GLenum target); + +    /* OpenGL functions which are needed ONLY for implementing GLES 1.1*/ +    static void (GLAPIENTRY *glAlphaFunc) (GLenum func, GLclampf ref); +    static void (GLAPIENTRY *glBegin)( GLenum mode ); +    static void (GLAPIENTRY *glClearDepth) (GLclampd depth); +    static void (GLAPIENTRY *glClientActiveTexture) ( GLenum texture ); +    static void (GLAPIENTRY *glClipPlane) (GLenum plane, const GLdouble *equation); +    static void (GLAPIENTRY *glColor4d) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); +    static void (GLAPIENTRY *glColor4f) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +    static void (GLAPIENTRY *glColor4fv) ( const GLfloat *v ); +    static void (GLAPIENTRY *glColor4ub) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +    static void (GLAPIENTRY *glColor4ubv) ( const GLubyte *v ); +    static void (GLAPIENTRY *glColorPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +    static void (GLAPIENTRY *glDisableClientState) (GLenum array); +    static void (GLAPIENTRY *glEnableClientState) (GLenum array); +    static void (GLAPIENTRY *glEnd) (void); +    static void (GLAPIENTRY *glFogf) (GLenum pname, GLfloat param); +    static void (GLAPIENTRY *glFogfv) (GLenum pname, const GLfloat *params); +    static void (GLAPIENTRY *glFrustum) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +    static void (GLAPIENTRY *glGetClipPlane) (GLenum plane, GLdouble *equation); +    static void (GLAPIENTRY *glGetDoublev) ( GLenum pname, GLdouble *params ); +    static void (GLAPIENTRY *glGetLightfv) (GLenum light, GLenum pname, GLfloat *params); +    static void (GLAPIENTRY *glGetMaterialfv) (GLenum face, GLenum pname, GLfloat *params); +    static void (GLAPIENTRY *glGetPointerv) (GLenum pname, GLvoid* *params); +    static void (GLAPIENTRY *glGetTexEnvfv) (GLenum target, GLenum pname, GLfloat *params); +    static void (GLAPIENTRY *glGetTexEnviv) (GLenum target, GLenum pname, GLint *params); +    static void (GLAPIENTRY *glLightf) (GLenum light, GLenum pname, GLfloat param); +    static void (GLAPIENTRY *glLightfv) (GLenum light, GLenum pname, const GLfloat *params); +    static void (GLAPIENTRY *glLightModelf) (GLenum pname, GLfloat param); +    static void (GLAPIENTRY *glLightModelfv) (GLenum pname, const GLfloat *params); +    static void (GLAPIENTRY *glLoadIdentity) (void); +    static void (GLAPIENTRY *glLoadMatrixf) (const GLfloat *m); +    static void (GLAPIENTRY *glLogicOp) (GLenum opcode); +    static void (GLAPIENTRY *glMaterialf) (GLenum face, GLenum pname, GLfloat param); +    static void (GLAPIENTRY *glMaterialfv) (GLenum face, GLenum pname, const GLfloat *params); +    static void (GLAPIENTRY *glMultiTexCoord2fv) ( GLenum target, const GLfloat *v ); +    static void (GLAPIENTRY *glMultiTexCoord2sv) ( GLenum target, const GLshort *v ); +    static void (GLAPIENTRY *glMultiTexCoord3fv) ( GLenum target, const GLfloat *v ); +    static void (GLAPIENTRY *glMultiTexCoord3sv) ( GLenum target, const GLshort *v ); +    static void (GLAPIENTRY *glMultiTexCoord4f) ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ); +    static void (GLAPIENTRY *glMultiTexCoord4fv) ( GLenum target, const GLfloat *v ); +    static void (GLAPIENTRY *glMultiTexCoord4sv) ( GLenum target, const GLshort *v ); +    static void (GLAPIENTRY *glMultMatrixf) (const GLfloat *m); +    static void (GLAPIENTRY *glNormal3f) (GLfloat nx, GLfloat ny, GLfloat nz); +    static void (GLAPIENTRY *glNormal3fv) ( const GLfloat *v ); +    static void (GLAPIENTRY *glNormal3sv) ( const GLshort *v ); +    static void (GLAPIENTRY *glOrtho) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +    static void (GLAPIENTRY *glPointParameterf) (GLenum, GLfloat); +    static void (GLAPIENTRY *glPointParameterfv) (GLenum, const GLfloat *); +    static void (GLAPIENTRY *glPointSize) (GLfloat size); +    static void (GLAPIENTRY *glRotatef) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +    static void (GLAPIENTRY *glScalef) (GLfloat x, GLfloat y, GLfloat z); +    static void (GLAPIENTRY *glTexEnvf) (GLenum target, GLenum pname, GLfloat param); +    static void (GLAPIENTRY *glTexEnvfv) (GLenum target, GLenum pname, const GLfloat *params); +    static void (GLAPIENTRY *glTexParameterf) (GLenum target, GLenum pname, GLfloat param); +    static void (GLAPIENTRY *glTexParameterfv) (GLenum target, GLenum pname, const GLfloat *params); +    static void (GLAPIENTRY *glMatrixMode) (GLenum mode); +    static void (GLAPIENTRY *glNormalPointer) (GLenum type, GLsizei stride, const GLvoid *pointer); +    static void (GLAPIENTRY *glPopMatrix) (void); +    static void (GLAPIENTRY *glPushMatrix) (void); +    static void (GLAPIENTRY *glShadeModel) (GLenum mode); +    static void (GLAPIENTRY *glTexCoordPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +    static void (GLAPIENTRY *glTexEnvi) (GLenum target, GLenum pname, GLint param); +    static void (GLAPIENTRY *glTexEnviv) (GLenum target, GLenum pname, const GLint *params); +    static void (GLAPIENTRY *glTranslatef) (GLfloat x, GLfloat y, GLfloat z); +    static void (GLAPIENTRY *glVertexPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + +    /* OpenGL functions which are needed ONLY for implementing GLES 1.1 EXTENSIONS*/ +    static void (GLAPIENTRY *glCurrentPaletteMatrixARB) (GLint index); +    static void (GLAPIENTRY *glMatrixIndexuivARB) (GLint size, GLuint * indices); +    static void (GLAPIENTRY *glMatrixIndexPointerARB) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +    static void (GLAPIENTRY *glWeightPointerARB) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +    static void (GLAPIENTRY *glTexGenf) (GLenum coord, GLenum pname, GLfloat param ); +    static void (GLAPIENTRY *glTexGeni) (GLenum coord, GLenum pname, GLint param ); +    static void (GLAPIENTRY *glTexGenfv) (GLenum coord, GLenum pname, const GLfloat *params ); +    static void (GLAPIENTRY *glTexGeniv) (GLenum coord, GLenum pname, const GLint *params ); +    static void (GLAPIENTRY *glGetTexGenfv) (GLenum coord, GLenum pname, GLfloat *params ); +    static void (GLAPIENTRY *glGetTexGeniv) (GLenum coord, GLenum pname, GLint *params ); + +    /* Loading OpenGL functions which are needed ONLY for implementing GLES 2.0*/ +    static void (GL_APIENTRY *glBlendColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +    static void (GL_APIENTRY *glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); +    static void (GL_APIENTRY *glStencilMaskSeparate)(GLenum face, GLuint mask); +    static GLboolean (GL_APIENTRY *glIsProgram)(GLuint program); +    static GLboolean (GL_APIENTRY *glIsShader)(GLuint shader); +    static void (GL_APIENTRY *glVertexAttrib1f)(GLuint indx, GLfloat x); +    static void (GL_APIENTRY *glVertexAttrib1fv)(GLuint indx, const GLfloat* values); +    static void (GL_APIENTRY *glVertexAttrib2f)(GLuint indx, GLfloat x, GLfloat y); +    static void (GL_APIENTRY *glVertexAttrib2fv)(GLuint indx, const GLfloat* values); +    static void (GL_APIENTRY *glVertexAttrib3f)(GLuint indx, GLfloat x, GLfloat y, GLfloat z); +    static void (GL_APIENTRY *glVertexAttrib3fv)(GLuint indx, const GLfloat* values); +    static void (GL_APIENTRY *glVertexAttrib4f)(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +    static void (GL_APIENTRY *glVertexAttrib4fv)(GLuint indx, const GLfloat* values); +    static void (GL_APIENTRY *glVertexAttribPointer)(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); +    static void (GL_APIENTRY *glDisableVertexAttribArray)(GLuint index); +    static void (GL_APIENTRY *glEnableVertexAttribArray)(GLuint index); +    static void (GL_APIENTRY *glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat* params); +    static void (GL_APIENTRY *glGetVertexAttribiv)(GLuint index, GLenum pname, GLint* params); +    static void (GL_APIENTRY *glGetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid** pointer); +    static void (GL_APIENTRY *glUniform1f)(GLint location, GLfloat x); +    static void (GL_APIENTRY *glUniform1fv)(GLint location, GLsizei count, const GLfloat* v); +    static void (GL_APIENTRY *glUniform1i)(GLint location, GLint x); +    static void (GL_APIENTRY *glUniform1iv)(GLint location, GLsizei count, const GLint* v); +    static void (GL_APIENTRY *glUniform2f)(GLint location, GLfloat x, GLfloat y); +    static void (GL_APIENTRY *glUniform2fv)(GLint location, GLsizei count, const GLfloat* v); +    static void (GL_APIENTRY *glUniform2i)(GLint location, GLint x, GLint y); +    static void (GL_APIENTRY *glUniform2iv)(GLint location, GLsizei count, const GLint* v); +    static void (GL_APIENTRY *glUniform3f)(GLint location, GLfloat x, GLfloat y, GLfloat z); +    static void (GL_APIENTRY *glUniform3fv)(GLint location, GLsizei count, const GLfloat* v); +    static void (GL_APIENTRY *glUniform3i)(GLint location, GLint x, GLint y, GLint z); +    static void (GL_APIENTRY *glUniform3iv)(GLint location, GLsizei count, const GLint* v); +    static void (GL_APIENTRY *glUniform4f)(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +    static void (GL_APIENTRY *glUniform4fv)(GLint location, GLsizei count, const GLfloat* v); +    static void (GL_APIENTRY *glUniform4i)(GLint location, GLint x, GLint y, GLint z, GLint w); +    static void (GL_APIENTRY *glUniform4iv)(GLint location, GLsizei count, const GLint* v); +    static void (GL_APIENTRY *glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +    static void (GL_APIENTRY *glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +    static void (GL_APIENTRY *glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +    static void (GL_APIENTRY *glAttachShader)(GLuint program, GLuint shader); +    static void (GL_APIENTRY *glBindAttribLocation)(GLuint program, GLuint index, const GLchar* name); +    static void (GL_APIENTRY *glCompileShader)(GLuint shader); +    static GLuint (GL_APIENTRY *glCreateProgram)(void); +    static GLuint (GL_APIENTRY *glCreateShader)(GLenum type); +    static void (GL_APIENTRY *glDeleteProgram)(GLuint program); +    static void (GL_APIENTRY *glDeleteShader)(GLuint shader); +    static void (GL_APIENTRY *glDetachShader)(GLuint program, GLuint shader); +    static void (GL_APIENTRY *glLinkProgram)(GLuint program); +    static void (GL_APIENTRY *glUseProgram)(GLuint program); +    static void (GL_APIENTRY *glValidateProgram)(GLuint program); +    static void (GL_APIENTRY *glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +    static void (GL_APIENTRY *glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +    static void (GL_APIENTRY *glGetAttachedShaders)(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); +    static int  (GL_APIENTRY *glGetAttribLocation)(GLuint program, const GLchar* name); +    static void (GL_APIENTRY *glGetProgramiv)(GLuint program, GLenum pname, GLint* params); +    static void (GL_APIENTRY *glGetProgramInfoLog)(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); +    static void (GL_APIENTRY *glGetShaderiv)(GLuint shader, GLenum pname, GLint* params); +    static void (GL_APIENTRY *glGetShaderInfoLog)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog); +    static void (GL_APIENTRY *glGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); +    static void (GL_APIENTRY *glGetShaderSource)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); +    static void (GL_APIENTRY *glGetUniformfv)(GLuint program, GLint location, GLfloat* params); +    static void (GL_APIENTRY *glGetUniformiv)(GLuint program, GLint location, GLint* params); +    static int  (GL_APIENTRY *glGetUniformLocation)(GLuint program, const GLchar* name); +    static void (GL_APIENTRY *glReleaseShaderCompiler)(void); +    static void (GL_APIENTRY *glShaderBinary)(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); +    static void (GL_APIENTRY *glShaderSource)(GLuint shader, GLsizei count, const GLchar** string, const GLint* length); + +private: +    bool                    m_isLoaded; +    static android::Mutex   s_lock; +}; + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLESbuffer.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESbuffer.h new file mode 100644 index 0000000..3353ec1 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESbuffer.h @@ -0,0 +1,47 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef GLES_BUFFER_H +#define GLES_BUFFER_H + +#include <stdio.h> +#include <GLES/gl.h> +#include <GLcommon/objectNameManager.h> +#include <GLcommon/RangeManip.h> + +class GLESbuffer: public ObjectData { +public: +   GLESbuffer():ObjectData(BUFFER_DATA),m_size(0),m_usage(GL_STATIC_DRAW),m_data(NULL),m_wasBound(false){} +   GLuint getSize(){return m_size;}; +   GLuint getUsage(){return m_usage;}; +   GLvoid* getData(){ return m_data;} +   bool  setBuffer(GLuint size,GLuint usage,const GLvoid* data); +   bool  setSubBuffer(GLint offset,GLuint size,const GLvoid* data); +   void  getConversions(const RangeList& rIn,RangeList& rOut); +   bool  fullyConverted(){return m_conversionManager.size() == 0;}; +   void  setBinded(){m_wasBound = true;}; +   bool  wasBinded(){return m_wasBound;}; +   ~GLESbuffer(); + +private: +    GLuint         m_size; +    GLuint         m_usage; +    unsigned char* m_data; +    RangeList      m_conversionManager; +    bool           m_wasBound; +}; + +typedef SmartPtr<GLESbuffer> GLESbufferPtr; +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h new file mode 100644 index 0000000..fbc118f --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h @@ -0,0 +1,211 @@ +/* +* Copyright 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef GLES_CONTEXT_H +#define GLES_CONTEXT_H + +#include "GLDispatch.h" +#include "GLESpointer.h" +#include "objectNameManager.h" +#include <utils/threads.h> +#include <string> + +typedef std::map<GLenum,GLESpointer*>  ArraysMap; + +enum TextureTarget { +TEXTURE_2D, +TEXTURE_CUBE_MAP, +NUM_TEXTURE_TARGETS +}; + +typedef struct _textureTargetState { +    GLuint texture; +    GLboolean enabled; +} textureTargetState; + +typedef textureTargetState textureUnitState[NUM_TEXTURE_TARGETS]; + +class Version{ +public: +    Version(); +    Version(int major,int minor,int release); +    Version(const char* versionString); +    Version(const Version& ver); +    bool operator<(const Version& ver) const; +    Version& operator=(const Version& ver); +private: +    int m_major; +    int m_minor; +    int m_release; +}; + +struct GLSupport { +    GLSupport():maxLights(0),maxVertexAttribs(0),maxClipPlane(0),maxTexUnits(0), \ +                maxTexImageUnits(0),maxTexSize(0) , \ +                GL_EXT_TEXTURE_FORMAT_BGRA8888(false), GL_EXT_FRAMEBUFFER_OBJECT(false), \ +                GL_ARB_VERTEX_BLEND(false), GL_ARB_MATRIX_PALETTE(false), \ +                GL_EXT_PACKED_DEPTH_STENCIL(false) , GL_OES_READ_FORMAT(false), \ +                GL_ARB_HALF_FLOAT_PIXEL(false), GL_NV_HALF_FLOAT(false), \ +                GL_ARB_HALF_FLOAT_VERTEX(false),GL_SGIS_GENERATE_MIPMAP(false), +                GL_ARB_ES2_COMPATIBILITY(false),GL_OES_STANDARD_DERIVATIVES(false) {} ; +    int  maxLights; +    int  maxVertexAttribs; +    int  maxClipPlane; +    int  maxTexUnits; +    int  maxTexImageUnits; +    int  maxTexSize; +    Version glslVersion; +    bool GL_EXT_TEXTURE_FORMAT_BGRA8888; +    bool GL_EXT_FRAMEBUFFER_OBJECT; +    bool GL_ARB_VERTEX_BLEND; +    bool GL_ARB_MATRIX_PALETTE; +    bool GL_EXT_PACKED_DEPTH_STENCIL; +    bool GL_OES_READ_FORMAT; +    bool GL_ARB_HALF_FLOAT_PIXEL; +    bool GL_NV_HALF_FLOAT; +    bool GL_ARB_HALF_FLOAT_VERTEX; +    bool GL_SGIS_GENERATE_MIPMAP; +    bool GL_ARB_ES2_COMPATIBILITY; +    bool GL_OES_STANDARD_DERIVATIVES; + +}; + +struct ArrayData{ +    ArrayData():data(NULL), +                type(0), +                stride(0), +                allocated(false){}; + +    void*        data; +    GLenum       type; +    unsigned int stride; +    bool         allocated; +}; + +class GLESConversionArrays +{ +public: +    GLESConversionArrays():m_current(0){}; +    void setArr(void* data,unsigned int stride,GLenum type); +    void allocArr(unsigned int size,GLenum type); +    ArrayData& operator[](int i); +    void* getCurrentData(); +    ArrayData& getCurrentArray(); +    unsigned int getCurrentIndex(); +    void operator++(); + +    ~GLESConversionArrays(); +private: +    std::map<GLenum,ArrayData> m_arrays; +    unsigned int m_current; +}; + +class GLEScontext{ +public: +    virtual void init(); +    GLEScontext(); +    GLenum getGLerror(); +    void setGLerror(GLenum err); +    void setShareGroup(ShareGroupPtr grp){m_shareGroup = grp;}; +    ShareGroupPtr shareGroup() const { return m_shareGroup; } +    virtual void setActiveTexture(GLenum tex); +    unsigned int getBindedTexture(GLenum target); +    unsigned int getBindedTexture(GLenum unit,GLenum target); +    void setBindedTexture(GLenum target,unsigned int tex); +    bool isTextureUnitEnabled(GLenum unit); +    void setTextureEnabled(GLenum target, GLenum enable); +    ObjectLocalName getDefaultTextureName(GLenum target); +    bool isInitialized() { return m_initialized; }; +    void setUnpackAlignment(GLint param){ m_unpackAlignment = param; }; +    GLint getUnpackAlignment(){ return m_unpackAlignment; }; + +    bool  isArrEnabled(GLenum); +    void  enableArr(GLenum arr,bool enable); +    const GLvoid* setPointer(GLenum arrType,GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize = false); +    virtual const GLESpointer* getPointer(GLenum arrType); +    virtual void setupArraysPointers(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct) = 0; +    void bindBuffer(GLenum target,GLuint buffer); +    void unbindBuffer(GLuint buffer); +    bool isBuffer(GLuint buffer); +    bool isBindedBuffer(GLenum target); +    GLvoid* getBindedBuffer(GLenum target); +    void getBufferSize(GLenum target,GLint* param); +    void getBufferUsage(GLenum target,GLint* param); +    bool setBufferData(GLenum target,GLsizeiptr size,const GLvoid* data,GLenum usage); +    bool setBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid* data); +    const char * getExtensionString(); +    const char * getRendererString() const; +    void getGlobalLock(); +    void releaseGlobalLock(); +    virtual GLSupport*  getCaps(){return &s_glSupport;}; +    virtual ~GLEScontext(); +    virtual int getMaxTexUnits() = 0; +    virtual void drawValidate(void); + +    void setRenderbufferBinding(GLuint rb) { m_renderbuffer = rb; } +    GLuint getRenderbufferBinding() const { return m_renderbuffer; } +    void setFramebufferBinding(GLuint fb) { m_framebuffer = fb; } +    GLuint getFramebufferBinding() const { return m_framebuffer; } + +    static GLDispatch& dispatcher(){return s_glDispatch;}; + +    static int getMaxLights(){return s_glSupport.maxLights;} +    static int getMaxClipPlanes(){return s_glSupport.maxClipPlane;} +    static int getMaxTexSize(){return s_glSupport.maxTexSize;} +    static Version glslVersion(){return s_glSupport.glslVersion;} +    static bool isAutoMipmapSupported(){return s_glSupport.GL_SGIS_GENERATE_MIPMAP;} +    static TextureTarget GLTextureTargetToLocal(GLenum target); +    static int findMaxIndex(GLsizei count,GLenum type,const GLvoid* indices); + +    virtual bool glGetIntegerv(GLenum pname, GLint *params); +    virtual bool glGetBooleanv(GLenum pname, GLboolean *params); +    virtual bool glGetFloatv(GLenum pname, GLfloat *params); +    virtual bool glGetFixedv(GLenum pname, GLfixed *params); + +protected: +    virtual bool needConvert(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id) = 0; +    void convertDirect(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p); +    void convertDirectVBO(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p); +    void convertIndirect(GLESConversionArrays& fArrs,GLsizei count,GLenum type,const GLvoid* indices,GLenum array_id,GLESpointer* p); +    void convertIndirectVBO(GLESConversionArrays& fArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p); +    void initCapsLocked(const GLubyte * extensionString); +    virtual void initExtensionString() =0; +    static android::Mutex s_lock; +    static GLDispatch     s_glDispatch; +    bool                  m_initialized; +    unsigned int          m_activeTexture; +    GLint                 m_unpackAlignment; +    ArraysMap             m_map; +    static std::string*   s_glExtensions; +    static std::string    s_glRenderer; +    static GLSupport      s_glSupport; + +private: + +    virtual void setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride, GLboolean normalized, int pointsIndex = -1) = 0 ; +    GLuint getBuffer(GLenum target); + +    ShareGroupPtr         m_shareGroup; +    GLenum                m_glError; +    textureUnitState*     m_texState; +    unsigned int          m_arrayBuffer; +    unsigned int          m_elementBuffer; +    GLuint                m_renderbuffer; +    GLuint                m_framebuffer; +}; + +#endif + diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLESmacros.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESmacros.h new file mode 100644 index 0000000..95ffadb --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESmacros.h @@ -0,0 +1,47 @@ +#ifndef GLES_MACROS_H +#define GLES_MACROS_H + +#define GET_CTX() \ +            if(!s_eglIface) return; \ +            GLEScontext *ctx = s_eglIface->getGLESContext(); \ + +#define GET_CTX_CM() \ +            if(!s_eglIface) return; \ +            GLEScmContext *ctx = static_cast<GLEScmContext *>(s_eglIface->getGLESContext()); \ +            if(!ctx) return; + +#define GET_CTX_V2() \ +            if(!s_eglIface) return; \ +            GLESv2Context *ctx = static_cast<GLESv2Context *>(s_eglIface->getGLESContext()); \ +            if(!ctx) return; + +#define GET_CTX_RET(failure_ret) \ +            if(!s_eglIface) return failure_ret; \ +            GLEScontext *ctx = s_eglIface->getGLESContext(); \ +            if(!ctx) return failure_ret; + +#define GET_CTX_CM_RET(failure_ret) \ +            if(!s_eglIface) return failure_ret; \ +            GLEScmContext *ctx = static_cast<GLEScmContext *>(s_eglIface->getGLESContext()); \ +            if(!ctx) return failure_ret; + +#define GET_CTX_V2_RET(failure_ret) \ +            if(!s_eglIface) return failure_ret; \ +            GLESv2Context *ctx = static_cast<GLESv2Context *>(s_eglIface->getGLESContext()); \ +            if(!ctx) return failure_ret; + + +#define SET_ERROR_IF(condition,err) if((condition)) {                            \ +                        fprintf(stderr, "%s:%s:%d error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \ +                        ctx->setGLerror(err);                                    \ +                        return;                                                  \ +                    } + + +#define RET_AND_SET_ERROR_IF(condition,err,ret) if((condition)) {                \ +                        fprintf(stderr, "%s:%s:%d error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \ +                        ctx->setGLerror(err);                                    \ +                        return ret;                                              \ +                    } + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLESpointer.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESpointer.h new file mode 100644 index 0000000..851fe45 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESpointer.h @@ -0,0 +1,58 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef GLES_POINTER_H +#define GLES_POINTER_H + +#include <GLES/gl.h> +#include "GLESbuffer.h" + +class GLESpointer +{ + +public: +    GLESpointer(); +    GLenum        getType() const; +    GLint         getSize() const; +    GLsizei       getStride() const; +    const GLvoid* getArrayData() const; +    GLvoid*       getBufferData() const; +    GLuint        getBufferName() const; +    GLboolean     getNormalized() const { return m_normalize ? GL_TRUE : GL_FALSE; } +    const GLvoid* getData() const; +    unsigned int  getBufferOffset() const; +    void          redirectPointerData(); +    void          getBufferConversions(const RangeList& rl,RangeList& rlOut); +    bool          bufferNeedConversion(){ return !m_buffer->fullyConverted();} +    void          setArray (GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize = false); +    void          setBuffer(GLint size,GLenum type,GLsizei stride,GLESbuffer* buf,GLuint bufferName,int offset,bool normalize = false); +    bool          isEnable() const; +    bool          isNormalize() const; +    bool          isVBO() const; +    void          enable(bool b); + +private: +    GLint         m_size; +    GLenum        m_type; +    GLsizei       m_stride; +    bool          m_enabled; +    bool          m_normalize; +    const GLvoid* m_data; +    GLESbuffer*   m_buffer; +    GLuint        m_bufferName; +    unsigned int  m_buffOffset; +    bool          m_isVBO; +}; +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h new file mode 100644 index 0000000..3daaa7c --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h @@ -0,0 +1,43 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef GLES_VALIDATE_H +#define GLES_VALIDATE_H + +#include <GLES/gl.h> +#include "GLEScontext.h" +struct GLESvalidate +{ +static bool textureEnum(GLenum e,unsigned int maxTex); +static bool pixelType(GLEScontext * ctx,GLenum type); +static bool pixelOp(GLenum format,GLenum type); +static bool pixelFrmt(GLEScontext* ctx , GLenum format); +static bool bufferTarget(GLenum target); +static bool bufferParam(GLenum param); +static bool drawMode(GLenum mode); +static bool drawType(GLenum mode); +static bool textureTarget(GLenum target); +static bool textureTargetLimited(GLenum target); +static bool textureTargetEx(GLenum target); +static bool texImgDim(GLsizei width,GLsizei height,int maxTexSize); +static bool blendEquationMode(GLenum mode); +static bool framebufferTarget(GLenum target); +static bool framebufferAttachment(GLenum attachment); +static bool framebufferAttachmentParams(GLenum pname); +static bool renderbufferTarget(GLenum target); +static bool renderbufferParams(GLenum pname); +}; + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLconversion_macros.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLconversion_macros.h new file mode 100644 index 0000000..83e99b4 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLconversion_macros.h @@ -0,0 +1,31 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef _GL_FIXED_OPS_H +#define _GL_FIXED_OPS_H + +#define X2F(x)        (((float)(x))/65536.0f) +#define X2D(x)        (((double)(x))/65536.0) +#define X2I(x)        ((x) /65536) +#define B2S(x)        ((short)x) + + +#define F2X(d) ((d) > 32767.65535 ? 32767 * 65536 + 65535 :  \ +               (d) < -32768.65535 ? -32768 * 65536 + 65535 : \ +               ((GLfixed) ((d) * 65536))) + +#define I2X(d) ((d)*65536) + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLutils.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLutils.h new file mode 100644 index 0000000..2aed646 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLutils.h @@ -0,0 +1,51 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef GL_UTILS_H +#define GL_UTILS_H + +#include <inttypes.h> +#include <assert.h> + +typedef enum{ +             GLES_1_1 = 1, +             GLES_2_0 = 2, +             MAX_GLES_VERSION //Must be last +            }GLESVersion; + +template <class T> +void swap(T& x,T& y) { +     T temp; +     temp=x; +     x=y; +     y=temp; +} + +bool isPowerOf2(int num); + +inline +unsigned int ToTargetCompatibleHandle(uintptr_t hostHandle) +{ +    // The host and target handles can have different sizes (e.g. 32-bit +    // target handle for ARM, and 64-bit host handle on x86_64). +    // This function checks that the input host handle value can be +    // converted into a target handle one without losing any bits. +    // +    unsigned int targetHandle = (unsigned int)hostHandle; +    assert(sizeof(targetHandle) == sizeof(hostHandle) || targetHandle == hostHandle); +    return targetHandle; +} + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/PaletteTexture.h b/emulator/opengl/host/libs/Translator/include/GLcommon/PaletteTexture.h new file mode 100644 index 0000000..90b206d --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/PaletteTexture.h @@ -0,0 +1,25 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef __PALETTE_TEXTURE_H__ +#define __PALETTE_TEXTURE_H__ + +#include <GLES/gl.h> + +#define MAX_SUPPORTED_PALETTE 10 + +unsigned char* uncompressTexture(GLenum internalformat,GLenum& formatOut,GLsizei width,GLsizei height,GLsizei imageSize, const GLvoid* data,GLint level); + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/RangeManip.h b/emulator/opengl/host/libs/Translator/include/GLcommon/RangeManip.h new file mode 100644 index 0000000..e3162b8 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/RangeManip.h @@ -0,0 +1,69 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef RANGE_H +#define RANGE_H + +#include <vector> + +class Range { + +public: +    Range():m_start(0),m_end(0),m_size(0){}; +    Range(int start,int size):m_start(start),m_end(start+size),m_size(size){}; +    Range(const Range& r):m_start(r.m_start),m_end(r.m_end),m_size(r.m_size){}; +    void setRange(int start,int size){m_start = start; m_end = start+size; m_size = size;}; +    inline int getStart() const{return m_start;}; +    inline int getEnd() const{return m_end;}; +    inline int getSize() const{return m_size;}; +    Range& operator=(const Range& r) { +        m_start = r.m_start; +        m_end = r.m_end; +        m_size = r.m_size; +        return *this; +    } +    bool operator ==(const Range& r) const { +        return m_start == r.m_start && m_size == r.m_size && m_end == r.m_end; +    } +    bool operator !=(const Range& r) const {return !((*this) == r);}; +    bool rangeIntersection(const Range& r,Range& rOut) const ; +    bool rangeUnion(const Range& r,Range& rOut) const ; + +private: +    int m_start; +    int m_end; +    int m_size; +}; + +class RangeList { +public: +      void addRange(const Range& r); +      void addRanges(const RangeList& rl); +      void delRange(const Range& r,RangeList& deleted); +      void delRanges(const RangeList& rl,RangeList& deleted); +      bool empty() const; +      void merge(); +      int  size() const; +      void clear(); +      Range& operator[](unsigned int i){return list[i];}; +private: +  void erase(unsigned int i); +  std::vector<Range> list; +}; + + + + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/SmartPtr.h b/emulator/opengl/host/libs/Translator/include/GLcommon/SmartPtr.h new file mode 100644 index 0000000..8ac93fb --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/SmartPtr.h @@ -0,0 +1,163 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef __SMART_PTR_H +#define __SMART_PTR_H + +#include <cutils/threads.h> +#include <cutils/atomic.h> + +template <class T, bool threadSafe = false> +class SmartPtr +{ +public: +    explicit SmartPtr(T* ptr = (T*)NULL) { +        if (threadSafe) { +            m_lock = new mutex_t; +            mutex_init(m_lock); +        } +        else m_lock = NULL; + +        m_ptr = ptr; +        if (ptr) +           m_pRefCount = new int32_t(1); +        else +           m_pRefCount = NULL; +    } + +    SmartPtr<T,threadSafe>(const SmartPtr<T,false>& rhs) { +        if (threadSafe) { +            m_lock = new mutex_t; +            mutex_init(m_lock); +        } +        else m_lock = NULL; + +        m_pRefCount = rhs.m_pRefCount; +        m_ptr       = rhs.m_ptr; +        use(); +    } + +    SmartPtr<T,threadSafe>(SmartPtr<T,true>& rhs) { +        if (threadSafe) { +            m_lock = new mutex_t; +            mutex_init(m_lock); +        } +        else m_lock = NULL; + +        if (rhs.m_lock) mutex_lock(rhs.m_lock); +        m_pRefCount = rhs.m_pRefCount; +        m_ptr       = rhs.m_ptr; +        use(); +        if (rhs.m_lock) mutex_unlock(rhs.m_lock); +    } + +    ~SmartPtr() { +        if (m_lock) mutex_lock(m_lock); +        release(); +        if (m_lock) +        { +            mutex_unlock(m_lock); +            mutex_destroy(m_lock); +            delete m_lock; +        } +    } + +    T* Ptr() const { +        return m_ptr; +    } + +    const T* constPtr() const +    { +        return m_ptr; +    } + +    T* operator->() const { +        return m_ptr; +    } + +    T& operator*() const { +        return *m_ptr; +    } + +    // This gives STL lists something to compare. +    bool operator <(const SmartPtr<T>& t1) const { +        return m_ptr < t1.m_ptr; +    } + +    SmartPtr<T,threadSafe>& operator=(const SmartPtr<T,false>& rhs) +    { +        if (m_ptr == rhs.m_ptr) +            return *this; + +        if (m_lock) mutex_lock(m_lock); +        release(); +        m_pRefCount = rhs.m_pRefCount; +        m_ptr       = rhs.m_ptr; +        use(); +        if (m_lock) mutex_unlock(m_lock); + +        return *this; +    } + +    SmartPtr<T,threadSafe>& operator=(SmartPtr<T,true>& rhs) +    { +        if (m_ptr == rhs.m_ptr) +            return *this; + +        if (m_lock) mutex_lock(m_lock); +        release(); +        if (rhs.m_lock) mutex_lock(rhs.m_lock); +        m_pRefCount = rhs.m_pRefCount; +        m_ptr       = rhs.m_ptr; +        use(); +        if (rhs.m_lock) mutex_unlock(rhs.m_lock); +        if (m_lock) mutex_unlock(m_lock); + +        return *this; +    } + +private: +    int32_t  *m_pRefCount; +    mutex_t  *m_lock; +    T* m_ptr; + +    // Increment the reference count on this pointer by 1. +    int use() { +        if (!m_pRefCount) return 0; +        return android_atomic_inc(m_pRefCount) + 1; +    } + +    // Decrement the reference count on the pointer by 1. +    // If the reference count goes to (or below) 0, the pointer is deleted. +    int release() { +        if (!m_pRefCount) return 0; + +        int iVal = android_atomic_dec(m_pRefCount); +        if (iVal > 1) +            return iVal - 1; + +        delete m_pRefCount; +        m_pRefCount = NULL; + +        if (m_ptr) { +            delete m_ptr; +            m_ptr = NULL; +        } +        return 0; +    } + +}; + +#endif // of  __SMART_PTR_H diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/TextureUtils.h b/emulator/opengl/host/libs/Translator/include/GLcommon/TextureUtils.h new file mode 100644 index 0000000..9b0c4ea --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/TextureUtils.h @@ -0,0 +1,31 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef _TEXTURE_UTILS_H +#define _TEXTURE_UTILS_H + +#include <GLES/gl.h> +#include <GLES/glext.h> +#include "GLEScontext.h" +#include "PaletteTexture.h" +#include "etc1.h" + +int getCompressedFormats(int* formats); +void  doCompressedTexImage2D(GLEScontext * ctx, GLenum target, GLint level,  +                                          GLenum internalformat, GLsizei width,  +                                          GLsizei height, GLint border,  +                                          GLsizei imageSize, const GLvoid* data, void * funcPtr); + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h b/emulator/opengl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h new file mode 100644 index 0000000..3c5e15a --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h @@ -0,0 +1,102 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef TRANSLATOR_IFACES_H +#define TRANSLATOR_IFACES_H +#include <GLES/gl.h> +#include <string.h> +#include "objectNameManager.h" + +extern "C" { + +/* This is a generic function pointer type, whose name indicates it must + * be cast to the proper type *and calling convention* before use. + */ +typedef void (*__translatorMustCastToProperFunctionPointerType)(void); + +typedef struct { +  const char*                                     name; +  __translatorMustCastToProperFunctionPointerType address; +}ExtentionDescriptor; + +class TextureData : public ObjectData +{ +public: +    ~TextureData() { +        if (sourceEGLImage && eglImageDetach) (*eglImageDetach)(sourceEGLImage); +    } +    TextureData():  ObjectData(TEXTURE_DATA), +                    width(0), +                    height(0), +                    border(0), +                    internalFormat(GL_RGBA), +                    sourceEGLImage(0), +                    wasBound(false), +                    requiresAutoMipmap(false), +                    target(0), +                    oldGlobal(0) { +        memset(crop_rect,0,4*sizeof(int)); +    }; + +    unsigned int width; +    unsigned int height; +    unsigned int border; +    unsigned int internalFormat; +    unsigned int sourceEGLImage; +    bool wasBound; +    bool requiresAutoMipmap; +    int          crop_rect[4]; +    void (*eglImageDetach)(unsigned int imageId); +    GLenum target; +    GLuint oldGlobal; +}; + +struct EglImage +{ +    ~EglImage(){}; +    unsigned int imageId; +    unsigned int globalTexName; +    unsigned int width; +    unsigned int height; +    unsigned int internalFormat; +    unsigned int border; +}; + +typedef SmartPtr<EglImage> ImagePtr; +typedef  std::map< unsigned int, ImagePtr>       ImagesHndlMap; + +class GLEScontext; + +typedef struct { +    GLEScontext*                                    (*createGLESContext)(); +    void                                            (*initContext)(GLEScontext*,ShareGroupPtr); +    void                                            (*deleteGLESContext)(GLEScontext*); +    void                                            (*flush)(); +    void                                            (*finish)(); +    void                                            (*setShareGroup)(GLEScontext*,ShareGroupPtr); +    __translatorMustCastToProperFunctionPointerType (*getProcAddress)(const char*); +}GLESiface; + + +typedef struct { +    GLEScontext* (*getGLESContext)(); +    EglImage* (*eglAttachEGLImage)(unsigned int imageId); +    void        (*eglDetachEGLImage)(unsigned int imageId); +}EGLiface; + +typedef GLESiface* (*__translator_getGLESIfaceFunc)(EGLiface*); + +} +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/etc1.h b/emulator/opengl/host/libs/Translator/include/GLcommon/etc1.h new file mode 100644 index 0000000..15ee9ac --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/etc1.h @@ -0,0 +1,108 @@ +// Copyright 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +//     http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef __etc1_h__ +#define __etc1_h__ + +#define MAX_ETC_SUPPORTED 1 + +#define ETC1_ENCODED_BLOCK_SIZE 8 +#define ETC1_DECODED_BLOCK_SIZE 48 + +#ifndef ETC1_RGB8_OES +#define ETC1_RGB8_OES 0x8D64 +#endif + +typedef unsigned char etc1_byte; +typedef int etc1_bool; +typedef unsigned int etc1_uint32; + +#ifdef __cplusplus +extern "C" { +#endif + +// Encode a block of pixels. +// +// pIn is a pointer to a ETC_DECODED_BLOCK_SIZE array of bytes that represent a +// 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R +// value of pixel (x, y). +// +// validPixelMask is a 16-bit mask where bit (1 << (x + y * 4)) indicates whether +// the corresponding (x,y) pixel is valid. Invalid pixel color values are ignored when compressing. +// +// pOut is an ETC1 compressed version of the data. + +void etc1_encode_block(const etc1_byte* pIn, etc1_uint32 validPixelMask, etc1_byte* pOut); + +// Decode a block of pixels. +// +// pIn is an ETC1 compressed version of the data. +// +// pOut is a pointer to a ETC_DECODED_BLOCK_SIZE array of bytes that represent a +// 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R +// value of pixel (x, y). + +void etc1_decode_block(const etc1_byte* pIn, etc1_byte* pOut); + +// Return the size of the encoded image data (does not include size of PKM header). + +etc1_uint32 etc1_get_encoded_data_size(etc1_uint32 width, etc1_uint32 height); + +// Encode an entire image. +// pIn - pointer to the image data. Formatted such that +//       pixel (x,y) is at pIn + pixelSize * x + stride * y; +// pOut - pointer to encoded data. Must be large enough to store entire encoded image. +// pixelSize can be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image. +// returns non-zero if there is an error. + +int etc1_encode_image(const etc1_byte* pIn, etc1_uint32 width, etc1_uint32 height, +        etc1_uint32 pixelSize, etc1_uint32 stride, etc1_byte* pOut); + +// Decode an entire image. +// pIn - pointer to encoded data. +// pOut - pointer to the image data. Will be written such that +//        pixel (x,y) is at pIn + pixelSize * x + stride * y. Must be +//        large enough to store entire image. +// pixelSize can be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image. +// returns non-zero if there is an error. + +int etc1_decode_image(const etc1_byte* pIn, etc1_byte* pOut, +        etc1_uint32 width, etc1_uint32 height, +        etc1_uint32 pixelSize, etc1_uint32 stride); + +// Size of a PKM header, in bytes. + +#define ETC_PKM_HEADER_SIZE 16 + +// Format a PKM header + +void etc1_pkm_format_header(etc1_byte* pHeader, etc1_uint32 width, etc1_uint32 height); + +// Check if a PKM header is correctly formatted. + +etc1_bool etc1_pkm_is_valid(const etc1_byte* pHeader); + +// Read the image width from a PKM header + +etc1_uint32 etc1_pkm_get_width(const etc1_byte* pHeader); + +// Read the image height from a PKM header + +etc1_uint32 etc1_pkm_get_height(const etc1_byte* pHeader); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/gldefs.h b/emulator/opengl/host/libs/Translator/include/GLcommon/gldefs.h new file mode 100644 index 0000000..1f0c7ef --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/gldefs.h @@ -0,0 +1,42 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +typedef double      GLclampd;   /* double precision float in [0,1] */ +typedef double      GLdouble;   /* double precision float */ + +#define GL_S                    0x2000 +#define GL_T                    0x2001 +#define GL_R                    0x2002 +#define GL_Q                    0x2003 +#define GL_TEXTURE_GEN_S            0x0C60 +#define GL_TEXTURE_GEN_T            0x0C61 +#define GL_TEXTURE_GEN_R            0x0C62 +#define GL_CLIENT_VERTEX_ARRAY_BIT    0x00000002 +#define GL_TRANSFORM_BIT      0x00001000 +#define GL_INT                0x1404 +#define GL_HALF_FLOAT_NV      0x140B +#define GL_HALF_FLOAT         0x140B +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_POINT_SPRITE       0x8861 +#define GL_FRAMEBUFFER_EXT                0x8D40 +#define GL_TEXTURE_WIDTH			0x1000 +#define GL_TEXTURE_HEIGHT			0x1001 +#define GL_TEXTURE_RED_SIZE			0x805C +#define GL_TEXTURE_GREEN_SIZE			0x805D +#define GL_TEXTURE_BLUE_SIZE			0x805E +#define GL_TEXTURE_ALPHA_SIZE			0x805F +#define GL_TEXTURE_DEPTH_SIZE             0x884A +#define GL_TEXTURE_INTERNAL_FORMAT		0x1003 diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h b/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h new file mode 100644 index 0000000..605fd29 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h @@ -0,0 +1,269 @@ +/* +* Copyright (C) 2011 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#ifndef _OBJECT_NAME_MANAGER_H +#define _OBJECT_NAME_MANAGER_H + +#include <cutils/threads.h> +#include <map> +#include "SmartPtr.h" + +enum NamedObjectType { +    VERTEXBUFFER = 0, +    TEXTURE = 1, +    RENDERBUFFER = 2, +    FRAMEBUFFER = 3, +    SHADER = 4, +    NUM_OBJECT_TYPES = 5  // Must be last +}; + +enum ObjectDataType { +    SHADER_DATA, +    PROGRAM_DATA, +    TEXTURE_DATA, +    BUFFER_DATA, +    UNDEFINED_DATA +}; + +class ObjectData +{ +public: +    ObjectData() : m_dataType(UNDEFINED_DATA) {}; +    ObjectData(ObjectDataType type): m_dataType(type) {}; +    ObjectDataType getDataType() { return m_dataType; }; +    virtual ~ObjectData() {}; +private: +    ObjectDataType m_dataType; +}; +typedef SmartPtr<ObjectData> ObjectDataPtr; +typedef unsigned long long ObjectLocalName; +typedef std::map<ObjectLocalName, unsigned int> NamesMap; + +// +// Class NameSpace - this class manages allocations and deletions of objects +//                   from a single "local" namespace (private to context group). +//                   For each allocated object name, a "global" name is +//                   generated as well to be used in the space where all +//                   contexts are shared. +// +//   NOTE: this class does not used by the EGL/GLES layer directly, +//         the EGL/GLES layer creates objects using the ShareGroup class +//         interface (see below). +class GlobalNameSpace; +class NameSpace +{ +    friend class ShareGroup; +    friend class GlobalNameSpace; + +private: +    NameSpace(NamedObjectType p_type, GlobalNameSpace *globalNameSpace); +    ~NameSpace(); + +    // +    // genName - creates new object in the namespace and  returns its name. +    //           if genLocal is false then the specified p_localName will be used. +    //           This function also generate a global name for the object, +    //           the value of the global name can be retrieved using the +    //           getGlobalName function. +    // +    ObjectLocalName genName(ObjectLocalName p_localName, bool genGlobal, bool genLocal); + +    // genGlobalName() - This function creates a global name +    //                   with no associated local name, for the +    //                   translator internal use. +    unsigned int genGlobalName(void); + +    // +    // getGlobalName - returns the global name of an object or 0 if the object +    //                 does not exist. +    // +    unsigned int getGlobalName(ObjectLocalName p_localName); + +    // +    // getLocaalName - returns the local name of an object or 0 if the object +    //                 does not exist. +    // +    ObjectLocalName getLocalName(unsigned int p_globalName); + +    // +    // deleteName - deletes and object from the namespace as well as its +    //              global name from the global name space. +    // +    void deleteName(ObjectLocalName p_localName); + +    // +    // isObject - returns true if the named object exist. +    // +    bool isObject(ObjectLocalName p_localName); + +    // +    // replaces an object to map to an existing global object +    // +    void replaceGlobalName(ObjectLocalName p_localName, unsigned int p_globalName); + +private: +    ObjectLocalName m_nextName; +    NamesMap m_localToGlobalMap; +    const NamedObjectType m_type; +    GlobalNameSpace *m_globalNameSpace; +}; + +class GlobalNameSpace +{ +public: +    GlobalNameSpace(); +    ~GlobalNameSpace(); +    unsigned int genName(NamedObjectType p_type); +    void deleteName(NamedObjectType p_type, unsigned int p_name); + +private: +    mutex_t m_lock; +}; + +// +// class ShareGroup - +//   That class manages objects of one "local" context share group, typically +//   there will be one inctance of ShareGroup for each user OpenGL context +//   unless the user context share with another user context. In that case they +//   both will share the same ShareGroup instance. +//   calls into that class gets serialized through a lock so it is thread safe. +// +class ShareGroup +{ +    friend class ObjectNameManager; +    friend class SmartPtr<ShareGroup>;  // to allow destructing when ShareGroupPtr refcount reaches zero + +public: + +    // +    // genName - generates new object name and returns its name value. +    //           if genLocal is false, p_localName will be used as the name. +    //           This function also generates a "global" name for the object +    //           which can be queried using the getGlobalName function. +    // +    ObjectLocalName genName(NamedObjectType p_type, ObjectLocalName p_localName = 0, bool genLocal= false); + +    // genGlobalName() - This function creates a global name +    //                   with no associated local name, for the +    //                   translator internal use. +    unsigned int genGlobalName(NamedObjectType p_type); + +    // +    // getGlobalName - retrieves the "global" name of an object or 0 if the +    //                 object does not exist. +    // +    unsigned int getGlobalName(NamedObjectType p_type, ObjectLocalName p_localName); + +    // +    // getLocalName - retrieves the "local" name of an object or 0 if the +    //                 object does not exist. +    // +    ObjectLocalName getLocalName(NamedObjectType p_type, unsigned int p_globalName); + +    // +    // deleteName - deletes and object from the namespace as well as its +    //              global name from the global name space. +    // +    void deleteName(NamedObjectType p_type, ObjectLocalName p_localName); + +    // +    // replaceGlobalName - replaces an object to map to an existing global +    //        named object. (used when creating EGLImage siblings) +    // +    void replaceGlobalName(NamedObjectType p_type, ObjectLocalName p_localName, unsigned int p_globalName); + +    // +    // isObject - returns true if the named object exist. +    // +    bool isObject(NamedObjectType p_type, ObjectLocalName p_localName); + +    // +    // Assign object global data to a names object +    // +    void setObjectData(NamedObjectType p_type, ObjectLocalName p_localName, ObjectDataPtr data); + +    // +    // Retrieve object global data +    // +    ObjectDataPtr getObjectData(NamedObjectType p_type, ObjectLocalName p_localName); + +private: +    explicit ShareGroup(GlobalNameSpace *globalNameSpace); +    ~ShareGroup(); + +private: +    mutex_t m_lock; +    NameSpace *m_nameSpace[NUM_OBJECT_TYPES]; +    void *m_objectsData; +}; + +typedef SmartPtr<ShareGroup> ShareGroupPtr; +typedef std::multimap<void *, ShareGroupPtr> ShareGroupsMap; + +// +// ObjectNameManager - +//   This class manages the set of all ShareGroups instances, +//   each ShareGroup instance can be accessed through one or more 'groupName' +//   values. the type of 'groupName' is void *, the intent is that the EGL +//   layer will use the user context handle as the name for its ShareGroup +//   object. Multiple names can be attached to a ShareGroup object to support +//   user context sharing. +// +class ObjectNameManager +{ +public: +    explicit ObjectNameManager(GlobalNameSpace *globalNameSpace); +    ~ObjectNameManager(); + +    // +    // createShareGroup - create a new ShareGroup object and attach it with +    //                    the "name" specified by p_groupName. +    // +    ShareGroupPtr createShareGroup(void *p_groupName); + +    // +    // attachShareGroup - find the ShareGroup object attached to the name +    //    specified in p_existingGroupName and attach p_groupName to the same +    //    ShareGroup instance. +    // +    ShareGroupPtr attachShareGroup(void *p_groupName, void *p_existingGroupName); + +    // +    // getShareGroup - retreive a ShareGroup object based on its "name" +    // +    ShareGroupPtr getShareGroup(void *p_groupName); + +    // +    // deleteShareGroup - deletes the attachment of the p_groupName to its +    //           attached ShareGroup. When the last name of ShareGroup is +    //           deleted the ShareGroup object is destroyed. +    // +    void deleteShareGroup(void *p_groupName); + +    // +    //  getGlobalContext() - this function returns a name of an existing +    //                       ShareGroup. The intent is that the EGL layer will +    //                       use that function to get the GL context which each +    //                       new context needs to share with. +    // +    void *getGlobalContext(); + +private: +    ShareGroupsMap m_groups; +    mutex_t m_lock; +    GlobalNameSpace *m_globalNameSpace; +}; + +#endif | 
