mutter/cogl/gl-prototypes/cogl-all-functions.h
Daniel Stone 5253264f2f GLES: Support glMapBufferRange from ES3
ES3 provides glMapBufferRange as core, with the added bonus that it also
supports read mappings. Use this where possible.

Signed-off-by: Daniel Stone <daniels@collabora.com>

https://bugzilla.gnome.org/show_bug.cgi?id=728355
2015-09-23 13:57:11 +01:00

329 lines
12 KiB
C

/*
* Cogl
*
* A Low Level GPU Graphics and Utilities API
*
* Copyright (C) 2009, 2011 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is
* 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 Software.
*
* THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*
*/
/* This is included multiple times with different definitions for
* these macros. The macros are given the following arguments:
*
* COGL_EXT_BEGIN:
*
* @name: a unique symbol name for this feature
*
* @min_gl_major: the major part of the minimum GL version where these
* functions are available in core, or 255 if it isn't available in
* any version.
* @min_gl_minor: the minor part of the minimum GL version where these
* functions are available in core, or 255 if it isn't available in
* any version.
*
* @gles_availability: flags to specify which versions of GLES the
* functions are available in. Should be a combination of
* COGL_EXT_IN_GLES and COGL_EXT_IN_GLES2.
*
* @extension_suffixes: A zero-separated list of suffixes in a
* string. These are appended to the extension name to get a complete
* extension name to try. The suffix is also appended to all of the
* function names. The suffix can optionally include a ':' to specify
* an alternate suffix for the function names.
*
* @extension_names: A list of extension names to try. If any of these
* extensions match then it will be used.
*/
/* The functions in this file are part of the core GL,GLES1 and GLES2 apis */
#include "cogl-core-functions.h"
/* The functions in this file are core to GLES1 only but may also be
* extensions available for GLES2 and GL */
#include "cogl-in-gles1-core-functions.h"
/* The functions in this file are core to GLES2 only but
* may be extensions for GLES1 and GL */
#include "cogl-in-gles2-core-functions.h"
/* The functions in this file are core to GLES1 and GLES2 but not core
* to GL but they may be extensions available for GL */
#include "cogl-in-gles-core-functions.h"
/* These are fixed-function APIs core to GL and GLES1 */
#include "cogl-fixed-functions.h"
/* These are GLSL shader APIs core to GL 2.0 and GLES2 */
#include "cogl-glsl-functions.h"
/* These are the core GL functions which are only available in big
GL */
COGL_EXT_BEGIN (only_in_big_gl,
0, 0,
0, /* not in GLES */
"\0",
"\0")
COGL_EXT_FUNCTION (void, glGetTexLevelParameteriv,
(GLenum target, GLint level,
GLenum pname, GLint *params))
COGL_EXT_FUNCTION (void, glGetTexImage,
(GLenum target, GLint level,
GLenum format, GLenum type,
GLvoid *pixels))
COGL_EXT_FUNCTION (void, glClipPlane,
(GLenum plane, const double *equation))
COGL_EXT_FUNCTION (void, glDepthRange,
(double near_val, double far_val))
COGL_EXT_FUNCTION (void, glDrawBuffer,
(GLenum mode))
COGL_EXT_END ()
/* GLES doesn't support mapping buffers in core so this has to be a
separate check */
COGL_EXT_BEGIN (map_vbos, 1, 5,
0, /* not in GLES core */
"ARB\0OES\0",
"vertex_buffer_object\0mapbuffer\0")
COGL_EXT_FUNCTION (void *, glMapBuffer,
(GLenum target,
GLenum access))
COGL_EXT_FUNCTION (GLboolean, glUnmapBuffer,
(GLenum target))
COGL_EXT_END ()
COGL_EXT_BEGIN (texture_3d, 1, 2,
0, /* not in either GLES */
"OES\0",
"texture_3D\0")
COGL_EXT_FUNCTION (void, glTexImage3D,
(GLenum target, GLint level,
GLint internalFormat,
GLsizei width, GLsizei height,
GLsizei depth, GLint border,
GLenum format, GLenum type,
const GLvoid *pixels))
COGL_EXT_FUNCTION (void, glTexSubImage3D,
(GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLint zoffset, GLsizei width,
GLsizei height, GLsizei depth,
GLenum format,
GLenum type, const GLvoid *pixels))
COGL_EXT_END ()
COGL_EXT_BEGIN (offscreen_blit, 3, 0,
0, /* not in either GLES */
"EXT\0ANGLE\0",
"framebuffer_blit\0")
COGL_EXT_FUNCTION (void, glBlitFramebuffer,
(GLint srcX0,
GLint srcY0,
GLint srcX1,
GLint srcY1,
GLint dstX0,
GLint dstY0,
GLint dstX1,
GLint dstY1,
GLbitfield mask,
GLenum filter))
COGL_EXT_END ()
/* ARB_fragment_program */
COGL_EXT_BEGIN (arbfp, 255, 255,
0, /* not in either GLES */
"ARB\0",
"fragment_program\0")
COGL_EXT_FUNCTION (void, glGenPrograms,
(GLsizei n,
GLuint *programs))
COGL_EXT_FUNCTION (void, glDeletePrograms,
(GLsizei n,
GLuint *programs))
COGL_EXT_FUNCTION (void, glBindProgram,
(GLenum target,
GLuint program))
COGL_EXT_FUNCTION (void, glProgramString,
(GLenum target,
GLenum format,
GLsizei len,
const void *program))
COGL_EXT_FUNCTION (void, glProgramLocalParameter4fv,
(GLenum target,
GLuint index,
GLfloat *params))
COGL_EXT_END ()
COGL_EXT_BEGIN (EGL_image, 255, 255,
0, /* not in either GLES */
"OES\0",
"EGL_image\0")
COGL_EXT_FUNCTION (void, glEGLImageTargetTexture2D,
(GLenum target,
GLeglImageOES image))
COGL_EXT_FUNCTION (void, glEGLImageTargetRenderbufferStorage,
(GLenum target,
GLeglImageOES image))
COGL_EXT_END ()
COGL_EXT_BEGIN (framebuffer_discard, 255, 255,
0, /* not in either GLES */
"EXT\0",
"framebuffer_discard\0")
COGL_EXT_FUNCTION (void, glDiscardFramebuffer,
(GLenum target,
GLsizei numAttachments,
const GLenum *attachments))
COGL_EXT_END ()
COGL_EXT_BEGIN (IMG_multisampled_render_to_texture, 255, 255,
0, /* not in either GLES */
"\0",
"IMG_multisampled_render_to_texture\0")
COGL_EXT_FUNCTION (void, glRenderbufferStorageMultisampleIMG,
(GLenum target,
GLsizei samples,
GLenum internal_format,
GLsizei width,
GLsizei height))
COGL_EXT_FUNCTION (void, glFramebufferTexture2DMultisampleIMG,
(GLenum target,
GLenum attachment,
GLenum textarget,
GLuint texture,
GLint level,
GLsizei samples))
COGL_EXT_END ()
COGL_EXT_BEGIN (ARB_sampler_objects, 3, 3,
0, /* not in either GLES */
"ARB:\0",
"sampler_objects\0")
COGL_EXT_FUNCTION (void, glGenSamplers,
(GLsizei count,
GLuint *samplers))
COGL_EXT_FUNCTION (void, glDeleteSamplers,
(GLsizei count,
const GLuint *samplers))
COGL_EXT_FUNCTION (void, glBindSampler,
(GLuint unit,
GLuint sampler))
COGL_EXT_FUNCTION (void, glSamplerParameteri,
(GLuint sampler,
GLenum pname,
GLint param))
COGL_EXT_END ()
/* These only list functions that come from the old GLSL extensions.
* Functions that are common to the extensions and GLSL 2.0 should
* instead be listed in cogl-glsl-functions.h */
COGL_EXT_BEGIN (shader_objects, 255, 255,
0, /* not in either GLES */
"ARB\0",
"shader_objects\0")
COGL_EXT_FUNCTION (GLuint, glCreateProgramObject,
(void))
COGL_EXT_FUNCTION (GLuint, glCreateShaderObject,
(GLenum shaderType))
COGL_EXT_FUNCTION (void, glDeleteObject,
(GLuint obj))
COGL_EXT_FUNCTION (void, glAttachObject,
(GLuint container, GLuint obj))
COGL_EXT_FUNCTION (void, glUseProgramObject,
(GLuint programObj))
COGL_EXT_FUNCTION (void, glGetInfoLog,
(GLuint obj,
GLsizei maxLength,
GLsizei *length,
char *infoLog))
COGL_EXT_FUNCTION (void, glGetObjectParameteriv,
(GLuint obj,
GLenum pname,
GLint *params))
COGL_EXT_FUNCTION (void, glDetachObject,
(GLuint container, GLuint obj))
COGL_EXT_FUNCTION (void, glGetAttachedObjects,
(GLuint program,
GLsizei maxcount,
GLsizei* count,
GLuint* shaders))
COGL_EXT_END ()
COGL_EXT_BEGIN (only_gl3, 3, 0,
0, /* not in either GLES */
"\0",
"\0")
COGL_EXT_FUNCTION (const GLubyte *, glGetStringi,
(GLenum name, GLuint index))
COGL_EXT_END ()
COGL_EXT_BEGIN (vertex_array_object, 3, 0,
0, /* not in either GLES */
"ARB\0OES\0",
"vertex_array_object\0")
COGL_EXT_FUNCTION (void, glBindVertexArray,
(GLuint array))
COGL_EXT_FUNCTION (void, glDeleteVertexArrays,
(GLsizei n,
const GLuint *arrays))
COGL_EXT_FUNCTION (void, glGenVertexArrays,
(GLsizei n,
GLuint *arrays))
COGL_EXT_END ()
COGL_EXT_BEGIN (map_region, 3, 0,
COGL_EXT_IN_GLES3,
"ARB:\0",
"map_buffer_range\0")
COGL_EXT_FUNCTION (GLvoid *, glMapBufferRange,
(GLenum target,
GLintptr offset,
GLsizeiptr length,
GLbitfield access))
COGL_EXT_END ()
#ifdef GL_ARB_sync
COGL_EXT_BEGIN (sync, 3, 2,
0, /* not in either GLES */
"ARB:\0",
"sync\0")
COGL_EXT_FUNCTION (GLsync, glFenceSync,
(GLenum condition, GLbitfield flags))
COGL_EXT_FUNCTION (GLenum, glClientWaitSync,
(GLsync sync, GLbitfield flags, GLuint64 timeout))
COGL_EXT_FUNCTION (void, glDeleteSync,
(GLsync sync))
COGL_EXT_END ()
#endif
COGL_EXT_BEGIN (draw_buffers, 2, 0,
COGL_EXT_IN_GLES3,
"ARB\0EXT\0",
"draw_buffers\0")
COGL_EXT_FUNCTION (void, glDrawBuffers,
(GLsizei n, const GLenum *bufs))
COGL_EXT_END ()