egl/eglinterface/include/1.2/egl.h
author Gareth Stockwell <gareth.stockwell@accenture.com>
Fri, 05 Nov 2010 17:31:20 +0000
branchbug235_bringup_0
changeset 215 097e92a68d68
parent 0 5d03bc08d59c
permissions -rw-r--r--
Added GLES 1.x spinning cube-rendering code to eglbringuptest The coordinate, color and index data are uploaded to server-side buffers by the CGLES1Cube::KhrSetup function. CGLES1Cube::KhrPaint just sets the view matrix and issues a draw command. Which demo to display can be selected by passing its name on the command line, e.g. eglbringuptest vgline eglbringuptest gles1cube If no name is provided, the application defaults to vgline.

/*
** 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_

/**
@publishedAll
@released
*/


#include <egl/egltypes.h>

/*
** egltypes.h is platform dependent. It defines:
**
**     - EGL types and resources
**     - Native types
**     - EGL and native handle values
**
** EGL types and resources are to be typedef'ed with appropriate platform
** dependent resource handle types. EGLint must be an integer of at least
** 32-bit.
**
** NativeDisplayType, NativeWindowType and NativePixmapType are to be
** replaced with corresponding types of the native window system in egl.h.
**
** EGL and native handle values must match their types.
**
** Example egltypes.h:
*/

#if 0

#include <sys/types.h>
#include <native_window_system.h>

/*
** Types and resources
*/
typedef int EGLBoolean;
typedef int32_t EGLint;
typedef int EGLenum;
typedef void *EGLDisplay;
typedef void *EGLConfig;
typedef void *EGLSurface;
typedef void *EGLContext;
typedef void* EGLClientBuffer;

/*
** EGL and native handle values
*/
#define EGL_DEFAULT_DISPLAY ((NativeDisplayType)0)
#define EGL_NO_CONTEXT ((EGLContext)0)
#define EGL_NO_DISPLAY ((EGLDisplay)0)
#define EGL_NO_SURFACE ((EGLSurface)0)

#endif

/*
** Versioning and extensions
*/
#define EGL_VERSION_1_0                1
#define EGL_VERSION_1_1                1
#define EGL_VERSION_1_2                1

/*
** Boolean
*/
#define EGL_FALSE                      0
#define EGL_TRUE                       1

/*
** Errors
*/
#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
/* 0x300F - 0x301F reserved 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_PRESERVED_RESOURCES        0x3030
#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   /* Also a config value */
#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

/*
** Config values
*/
#define EGL_DONT_CARE                  ((EGLint) -1)

#define EGL_SLOW_CONFIG                0x3050   /* EGL_CONFIG_CAVEAT value */
#define EGL_NON_CONFORMANT_CONFIG      0x3051   /* " */
#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 */
#define EGL_NO_TEXTURE                 0x305C   /* EGL_TEXTURE_FORMAT/TARGET value */
#define EGL_TEXTURE_RGB                0x305D   /* EGL_TEXTURE_FORMAT value */
#define EGL_TEXTURE_RGBA               0x305E   /* " */
#define EGL_TEXTURE_2D                 0x305F   /* EGL_TEXTURE_TARGET value */

/*
** Config attribute mask bits
*/
#define EGL_PBUFFER_BIT                0x01   /* EGL_SURFACE_TYPE mask bits */
#define EGL_PIXMAP_BIT                 0x02   /* EGL_SURFACE_TYPE mask bits */
#define EGL_WINDOW_BIT                 0x04   /* EGL_SURFACE_TYPE mask bits */
#define EGL_OPENGL_ES_BIT              0x01   /* EGL_RENDERABLE_TYPE mask bits */
#define EGL_OPENVG_BIT                 0x02   /* EGL_RENDERABLE_TYPE mask bits */

/*
** String names
*/
#define EGL_VENDOR                     0x3053
#define EGL_VERSION                    0x3054
#define EGL_EXTENSIONS                 0x3055
#define EGL_CLIENT_APIS                0x308D

/*
** Surface attributes
*/
#define EGL_HEIGHT                     0x3056
#define EGL_WIDTH                      0x3057
#define EGL_LARGEST_PBUFFER            0x3058
#define EGL_TEXTURE_FORMAT             0x3080   /* For pbuffers bound as textures */
#define EGL_TEXTURE_TARGET             0x3081   /* " */
#define EGL_MIPMAP_TEXTURE             0x3082   /* " */
#define EGL_MIPMAP_LEVEL               0x3083   /* " */
#define EGL_RENDER_BUFFER              0x3086
#define EGL_COLORSPACE                 0x3087
#define EGL_ALPHA_FORMAT               0x3088
#define EGL_HORIZONTAL_RESOLUTION      0x3090
#define EGL_VERTICAL_RESOLUTION        0x3091
#define EGL_PIXEL_ASPECT_RATIO         0x3092
#define EGL_SWAP_BEHAVIOR              0x3093

/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
#define EGL_BACK_BUFFER                0x3084
#define EGL_SINGLE_BUFFER              0x3085

/* OpenVG color spaces */
#define EGL_COLORSPACE_sRGB            0x3089   /* EGL_COLORSPACE value */
#define EGL_COLORSPACE_LINEAR          0x308A   /* EGL_COLORSPACE value */

/* OpenVG alpha formats */
#define EGL_ALPHA_FORMAT_NONPRE        0x308B   /* EGL_ALPHA_FORMAT value */
#define EGL_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

/* BindAPI/QueryAPI targets */
#define EGL_OPENGL_ES_API              0x30A0
#define EGL_OPENVG_API                 0x30A1

/*
** Current surfaces
*/
#define EGL_DRAW                       0x3059
#define EGL_READ                       0x305A

/*
** Engines
*/
#define EGL_CORE_NATIVE_ENGINE         0x305B

/* 0x305C-0x3FFFF reserved for future use */

/*
** Functions
*/
#ifdef __cplusplus
extern "C" {
#endif

EGLAPI EGLint EGL_APIENTRY eglGetError (void);

EGLAPI EGLDisplay EGL_APIENTRY eglGetDisplay (NativeDisplayType display_id);
EGLAPI EGLBoolean EGL_APIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
EGLAPI EGLBoolean EGL_APIENTRY eglTerminate (EGLDisplay dpy);
EGLAPI const char * EGL_APIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
#ifdef __cplusplus
EGLAPI void (* EGL_APIENTRY eglGetProcAddress (const char *procname))(...);
#else
EGLAPI void (* EGL_APIENTRY eglGetProcAddress (const char *procname))();
#endif

EGLAPI EGLBoolean EGL_APIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
EGLAPI EGLBoolean EGL_APIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
EGLAPI EGLBoolean EGL_APIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);

EGLAPI EGLSurface EGL_APIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, NativeWindowType win, const EGLint *attrib_list);
EGLAPI EGLSurface EGL_APIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, NativePixmapType pixmap, const EGLint *attrib_list);
EGLAPI EGLSurface EGL_APIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
EGLAPI EGLBoolean EGL_APIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
EGLAPI EGLBoolean EGL_APIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);

/* EGL 1.1 render-to-texture APIs */
EGLAPI EGLBoolean EGL_APIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
EGLAPI EGLBoolean EGL_APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
EGLAPI EGLBoolean EGL_APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);

/* EGL 1.1 swap control API */
EGLAPI EGLBoolean EGL_APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);

EGLAPI EGLContext EGL_APIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
EGLAPI EGLBoolean EGL_APIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
EGLAPI EGLBoolean EGL_APIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
EGLAPI EGLContext EGL_APIENTRY eglGetCurrentContext (void);
EGLAPI EGLSurface EGL_APIENTRY eglGetCurrentSurface (EGLint readdraw);
EGLAPI EGLDisplay EGL_APIENTRY eglGetCurrentDisplay (void);
EGLAPI EGLBoolean EGL_APIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);

EGLAPI EGLBoolean EGL_APIENTRY eglWaitGL (void);
EGLAPI EGLBoolean EGL_APIENTRY eglWaitNative (EGLint engine);
EGLAPI EGLBoolean EGL_APIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
EGLAPI EGLBoolean EGL_APIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, NativePixmapType target);

EGLAPI EGLSurface EGL_APIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
EGLAPI EGLBoolean EGL_APIENTRY eglWaitClient (void);
EGLAPI EGLBoolean EGL_APIENTRY eglBindAPI (EGLenum api);
EGLAPI EGLenum EGL_APIENTRY eglQueryAPI (void);
EGLAPI EGLBoolean EGL_APIENTRY eglReleaseThread (void);

#ifdef __cplusplus
}
#endif

#endif /* ___egl_h_ */