gles2: Add GL_NV_read_buffer extension
This lets us select the front buffer for reading under GLES2. Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
e841a2426e
commit
2d7b2d7a87
|
@ -627,4 +627,11 @@
|
|||
<enum name="REQUIRED_TEXTURE_IMAGE_UNITS_OES" value="0x8D68"/>
|
||||
</category>
|
||||
|
||||
<!-- 93. GL_NV_read_buffer -->
|
||||
<category name="NV_read_buffer">
|
||||
<function name="ReadBufferNV" offset="assign">
|
||||
<param name="mode" type="GLenum"/>
|
||||
</function>
|
||||
</category>
|
||||
|
||||
</OpenGLAPI>
|
||||
|
|
|
@ -451,4 +451,6 @@ es2_api = es2_core + (
|
|||
'ProgramBinaryOES',
|
||||
# GL_NV_draw_buffers
|
||||
'DrawBuffersNV',
|
||||
# GL_NV_read_buffer
|
||||
'ReadBufferNV',
|
||||
)
|
||||
|
|
|
@ -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"/>
|
||||
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -131,6 +131,7 @@ enum value_extra {
|
|||
EXTRA_VERSION_30,
|
||||
EXTRA_VERSION_31,
|
||||
EXTRA_VERSION_32,
|
||||
EXTRA_API_GL,
|
||||
EXTRA_API_ES2,
|
||||
EXTRA_NEW_BUFFERS,
|
||||
EXTRA_NEW_FRAG_CLAMP,
|
||||
|
@ -369,6 +370,15 @@ extra_ARB_vertex_program_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
|
||||
};
|
||||
|
||||
#define API_OPENGL_BIT (1 << API_OPENGL)
|
||||
#define API_OPENGLES_BIT (1 << API_OPENGLES)
|
||||
#define API_OPENGLES2_BIT (1 << API_OPENGLES2)
|
||||
|
@ -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 },
|
||||
|
@ -1814,6 +1828,12 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d
|
|||
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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue