aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/main
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src/mesa/main')
-rw-r--r--mesalib/src/mesa/main/APIspec.xml13
-rw-r--r--mesalib/src/mesa/main/extensions.c1
-rw-r--r--mesalib/src/mesa/main/get.c32
-rw-r--r--mesalib/src/mesa/main/mtypes.h1
4 files changed, 41 insertions, 6 deletions
diff --git a/mesalib/src/mesa/main/APIspec.xml b/mesalib/src/mesa/main/APIspec.xml
index f23857ad2..64e666eff 100644
--- a/mesalib/src/mesa/main/APIspec.xml
+++ b/mesalib/src/mesa/main/APIspec.xml
@@ -3534,6 +3534,13 @@
</proto>
</template>
+<template name="ReadBuffer">
+ <proto>
+ <return type="void"/>
+ <param name="mode" type="GLenum"/>
+ </proto>
+</template>
+
<api name="mesa" implementation="true">
<category name="MESA"/>
@@ -3810,6 +3817,9 @@
<function name="EGLImageTargetRenderbufferStorageOES" template="EGLImageTargetRenderbufferStorage"/>
<function name="DrawBuffersARB" template="DrawBuffers"/>
+
+ <function name="ReadBuffer" template="ReadBuffer"/>
+
</api>
<api name="GLES1.1">
@@ -4150,7 +4160,10 @@
<category name="EXT_unpack_subimage"/>
<category name="NV_draw_buffers"/>
+ <category name="NV_read_buffer"/>
+
<function name="DrawBuffersNV" template="DrawBuffers"/>
+ <function name="ReadBufferNV" template="ReadBuffer"/>
<function name="CullFace" template="CullFace"/>
diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c
index 2688f7ace..0e8178397 100644
--- a/mesalib/src/mesa/main/extensions.c
+++ b/mesalib/src/mesa/main/extensions.c
@@ -300,6 +300,7 @@ static const struct extension extension_table[] = {
{ "GL_NV_packed_depth_stencil", o(EXT_packed_depth_stencil), GL, 2000 },
{ "GL_NV_point_sprite", o(NV_point_sprite), GL, 2001 },
{ "GL_NV_primitive_restart", o(NV_primitive_restart), GL, 2002 },
+ { "GL_NV_read_buffer", o(dummy_true), ES2, 2011 },
{ "GL_NV_texgen_reflection", o(NV_texgen_reflection), GL, 1999 },
{ "GL_NV_texture_barrier", o(NV_texture_barrier), GL, 2009 },
{ "GL_NV_texture_env_combine4", o(NV_texture_env_combine4), GL, 1999 },
diff --git a/mesalib/src/mesa/main/get.c b/mesalib/src/mesa/main/get.c
index 55dc20550..8dc47306f 100644
--- a/mesalib/src/mesa/main/get.c
+++ b/mesalib/src/mesa/main/get.c
@@ -131,7 +131,8 @@ enum value_extra {
EXTRA_VERSION_30,
EXTRA_VERSION_31,
EXTRA_VERSION_32,
- EXTRA_VERSION_ES2,
+ EXTRA_API_GL,
+ EXTRA_API_ES2,
EXTRA_NEW_BUFFERS,
EXTRA_NEW_FRAG_CLAMP,
EXTRA_VALID_DRAW_BUFFER,
@@ -363,9 +364,18 @@ static const int extra_version_31[] = { EXTRA_VERSION_31, EXTRA_END };
static const int extra_version_32[] = { EXTRA_VERSION_32, EXTRA_END };
static const int
-extra_ARB_vertex_program_version_es2[] = {
+extra_ARB_vertex_program_api_es2[] = {
EXT(ARB_vertex_program),
- EXTRA_VERSION_ES2,
+ EXTRA_API_ES2,
+ EXTRA_END
+};
+
+/* The ReadBuffer get token is valid under either full GL or under
+ * GLES2 if the NV_read_buffer extension is available. */
+static const int
+extra_NV_read_buffer_api_gl[] = {
+ EXT(NV_read_buffer),
+ EXTRA_API_GL,
EXTRA_END
};
@@ -740,7 +750,7 @@ static const struct value_desc values[] = {
{ GL_MAX_VERTEX_ATTRIBS_ARB,
CONTEXT_INT(Const.VertexProgram.MaxAttribs),
- extra_ARB_vertex_program_version_es2 },
+ extra_ARB_vertex_program_api_es2 },
/* OES_texture_3D */
{ GL_TEXTURE_BINDING_3D, LOC_CUSTOM, TYPE_INT, TEXTURE_3D_INDEX, NO_EXTRA },
@@ -750,6 +760,11 @@ static const struct value_desc values[] = {
/* GL_ARB_fragment_program/OES_standard_derivatives */
{ GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB,
CONTEXT_ENUM(Hint.FragmentShaderDerivative), extra_ARB_fragment_shader },
+
+ /* GL_NV_read_buffer */
+ { GL_READ_BUFFER,
+ LOC_CUSTOM, TYPE_ENUM, NO_OFFSET, extra_NV_read_buffer_api_gl },
+
#endif /* FEATURE_GL || FEATURE_ES2 */
#if FEATURE_ES2
@@ -884,7 +899,6 @@ static const struct value_desc values[] = {
{ GL_POLYGON_SMOOTH, CONTEXT_BOOL(Polygon.SmoothFlag), NO_EXTRA },
{ GL_POLYGON_SMOOTH_HINT, CONTEXT_ENUM(Hint.PolygonSmooth), NO_EXTRA },
{ GL_POLYGON_STIPPLE, CONTEXT_BOOL(Polygon.StippleFlag), NO_EXTRA },
- { GL_READ_BUFFER, LOC_CUSTOM, TYPE_ENUM, NO_OFFSET, NO_EXTRA },
{ GL_RED_BIAS, CONTEXT_FLOAT(Pixel.RedBias), NO_EXTRA },
{ GL_RED_SCALE, CONTEXT_FLOAT(Pixel.RedScale), NO_EXTRA },
{ GL_RENDER_MODE, CONTEXT_ENUM(RenderMode), NO_EXTRA },
@@ -1808,12 +1822,18 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d
if (ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP))
_mesa_update_state(ctx);
break;
- case EXTRA_VERSION_ES2:
+ case EXTRA_API_ES2:
if (ctx->API == API_OPENGLES2) {
total++;
enabled++;
}
break;
+ case EXTRA_API_GL:
+ if (ctx->API == API_OPENGL) {
+ total++;
+ enabled++;
+ }
+ break;
case EXTRA_NEW_BUFFERS:
if (ctx->NewState & _NEW_BUFFERS)
_mesa_update_state(ctx);
diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h
index ea40ffc9c..3d18b7c48 100644
--- a/mesalib/src/mesa/main/mtypes.h
+++ b/mesalib/src/mesa/main/mtypes.h
@@ -2995,6 +2995,7 @@ struct gl_extensions
GLboolean NV_light_max_exponent;
GLboolean NV_point_sprite;
GLboolean NV_primitive_restart;
+ GLboolean NV_read_buffer;
GLboolean NV_texture_barrier;
GLboolean NV_texgen_reflection;
GLboolean NV_texture_env_combine4;