mesa: add EXT_dsa glEnableVertexArrayEXT / glDisableVertexArrayEXT

Reviewed-by: default avatarMarek Olšák <marek.olsak@amd.com>
parent a0533617
......@@ -1150,6 +1150,16 @@
<param name="offset" type="GLintptr" />
</function>
<function name="EnableVertexArrayEXT">
<param name="vaobj" type="GLuint" />
<param name="array" type="GLenum" />
</function>
<function name="DisableVertexArrayEXT">
<param name="vaobj" type="GLuint" />
<param name="array" type="GLenum" />
</function>
<!-- ARB_vertex_program -->
<function name="NamedProgramStringEXT">
<param name="program" type="GLuint" />
......
......@@ -1608,6 +1608,8 @@ offsets = {
"VertexArraySecondaryColorOffsetEXT": 1572,
"VertexArrayVertexAttribOffsetEXT": 1573,
"VertexArrayVertexAttribIOffsetEXT": 1574,
"EnableVertexArrayEXT": 1575,
"DisableVertexArrayEXT": 1576,
}
functions = [
......
......@@ -183,6 +183,37 @@ _mesa_EnableClientState( GLenum cap )
}
void GLAPIENTRY
_mesa_EnableVertexArrayEXT( GLuint vaobj, GLenum cap )
{
GET_CURRENT_CONTEXT(ctx);
struct gl_vertex_array_object* vao = _mesa_lookup_vao_err(ctx, vaobj,
true,
"glEnableVertexArrayEXT");
if (!vao)
return;
/* The EXT_direct_state_access spec says:
* "Additionally EnableVertexArrayEXT and DisableVertexArrayEXT accept
* the tokens TEXTURE0 through TEXTUREn where n is less than the
* implementation-dependent limit of MAX_TEXTURE_COORDS. For these
* GL_TEXTUREi tokens, EnableVertexArrayEXT and DisableVertexArrayEXT
* act identically to EnableVertexArrayEXT(vaobj, TEXTURE_COORD_ARRAY)
* or DisableVertexArrayEXT(vaobj, TEXTURE_COORD_ARRAY) respectively
* as if the active client texture is set to texture coordinate set i
* based on the token TEXTUREi indicated by array."
*/
if (GL_TEXTURE0 <= cap && cap < GL_TEXTURE0 + ctx->Const.MaxTextureCoordUnits) {
GLuint saved_active = ctx->Array.ActiveTexture;
_mesa_ClientActiveTexture(cap);
client_state(ctx, vao, GL_TEXTURE_COORD_ARRAY, GL_TRUE);
_mesa_ClientActiveTexture(GL_TEXTURE0 + saved_active);
} else {
client_state(ctx, vao, cap, GL_TRUE);
}
}
void GLAPIENTRY
_mesa_EnableClientStateiEXT( GLenum cap, GLuint index )
{
......@@ -205,6 +236,36 @@ _mesa_DisableClientState( GLenum cap )
client_state( ctx, ctx->Array.VAO, cap, GL_FALSE );
}
void GLAPIENTRY
_mesa_DisableVertexArrayEXT( GLuint vaobj, GLenum cap )
{
GET_CURRENT_CONTEXT(ctx);
struct gl_vertex_array_object* vao = _mesa_lookup_vao_err(ctx, vaobj,
true,
"glDisableVertexArrayEXT");
if (!vao)
return;
/* The EXT_direct_state_access spec says:
* "Additionally EnableVertexArrayEXT and DisableVertexArrayEXT accept
* the tokens TEXTURE0 through TEXTUREn where n is less than the
* implementation-dependent limit of MAX_TEXTURE_COORDS. For these
* GL_TEXTUREi tokens, EnableVertexArrayEXT and DisableVertexArrayEXT
* act identically to EnableVertexArrayEXT(vaobj, TEXTURE_COORD_ARRAY)
* or DisableVertexArrayEXT(vaobj, TEXTURE_COORD_ARRAY) respectively
* as if the active client texture is set to texture coordinate set i
* based on the token TEXTUREi indicated by array."
*/
if (GL_TEXTURE0 <= cap && cap < GL_TEXTURE0 + ctx->Const.MaxTextureCoordUnits) {
GLuint saved_active = ctx->Array.ActiveTexture;
_mesa_ClientActiveTexture(cap);
client_state(ctx, vao, GL_TEXTURE_COORD_ARRAY, GL_FALSE);
_mesa_ClientActiveTexture(GL_TEXTURE0 + saved_active);
} else {
client_state(ctx, vao, cap, GL_FALSE);
}
}
void GLAPIENTRY
_mesa_DisableClientStateiEXT( GLenum cap, GLuint index )
{
......
......@@ -67,12 +67,18 @@ _mesa_EnableClientState( GLenum cap );
extern void GLAPIENTRY
_mesa_EnableClientStateiEXT( GLenum cap, GLuint index );
extern void GLAPIENTRY
_mesa_EnableVertexArrayEXT( GLuint vaobj, GLenum cap );
extern void GLAPIENTRY
_mesa_DisableClientState( GLenum cap );
extern void GLAPIENTRY
_mesa_DisableClientStateiEXT( GLenum cap, GLuint index );
extern void GLAPIENTRY
_mesa_DisableVertexArrayEXT( GLuint vaobj, GLenum cap );
extern void
_mesa_set_multisample(struct gl_context *ctx, GLboolean state);
......
......@@ -1180,8 +1180,8 @@ const struct function common_desktop_functions_possible[] = {
{ "glVertexArraySecondaryColorOffsetEXT", 30, -1 },
{ "glVertexArrayVertexAttribOffsetEXT", 30, -1 },
{ "glVertexArrayVertexAttribIOffsetEXT", 30, -1 },
//{ "glEnableVertexArrayEXT", 30, -1 },
//{ "glDisableVertexArrayEXT", 30, -1 },
{ "glEnableVertexArrayEXT", 30, -1 },
{ "glDisableVertexArrayEXT", 30, -1 },
//{ "glEnableVertexArrayAttribEXT", 30, -1 },
//{ "glDisableVertexArrayAttribEXT", 30, -1 },
//{ "glGetVertexArrayIntegervEXT", 30, -1 },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment