mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
mesa: add EXT_dsa glEnableVertexArrayEXT / glDisableVertexArrayEXT
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
a053361793
commit
f793a8663d
5 changed files with 81 additions and 2 deletions
|
|
@ -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 },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue