Implemented GL_EXT_multi_draw_arrays: glMultiDrawArraysEXT() and glMultiDrawElementsEXT().
This commit is contained in:
@@ -646,5 +646,7 @@
|
|||||||
#define _gloffset_VertexAttribs4ubvNV 641
|
#define _gloffset_VertexAttribs4ubvNV 641
|
||||||
#define _gloffset_PointParameteriNV 642
|
#define _gloffset_PointParameteriNV 642
|
||||||
#define _gloffset_PointParameterivNV 643
|
#define _gloffset_PointParameterivNV 643
|
||||||
|
#define _gloffset_MultiDrawArraysEXT 644
|
||||||
|
#define _gloffset_MultiDrawElementsEXT 645
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -650,6 +650,8 @@ struct _glapi_table
|
|||||||
void (*VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 641 */
|
void (*VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 641 */
|
||||||
void (*PointParameteriNV)(GLenum pname, GLint params); /* 642 */
|
void (*PointParameteriNV)(GLenum pname, GLint params); /* 642 */
|
||||||
void (*PointParameterivNV)(GLenum pname, const GLint * params); /* 643 */
|
void (*PointParameterivNV)(GLenum pname, const GLint * params); /* 643 */
|
||||||
|
void (*MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount); /* 644 */
|
||||||
|
void (*MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 645 */
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -3169,8 +3169,16 @@ KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, G
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* No dispatch for TextureNormalEXT() */
|
/* No dispatch for TextureNormalEXT() */
|
||||||
/* No dispatch for MultiDrawArraysEXT() */
|
KEYWORD1 void KEYWORD2 NAME(MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
|
||||||
/* No dispatch for MultiDrawElementsEXT() */
|
{
|
||||||
|
DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArraysEXT(0x%x, %p, %p, %d);\n", mode, (void *) first, (void *) count, primcount));
|
||||||
|
}
|
||||||
|
|
||||||
|
KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
|
||||||
|
{
|
||||||
|
DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElementsEXT(0x%x, %p, 0x%x, %p, %d);\n", mode, (void *) count, type, (void *) indices, primcount));
|
||||||
|
}
|
||||||
|
|
||||||
KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord)
|
KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord)
|
||||||
{
|
{
|
||||||
DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord));
|
DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord));
|
||||||
@@ -4611,6 +4619,8 @@ void *DISPATCH_TABLE_NAME[] = {
|
|||||||
TABLE_ENTRY(VertexAttribs4ubvNV),
|
TABLE_ENTRY(VertexAttribs4ubvNV),
|
||||||
TABLE_ENTRY(PointParameteriNV),
|
TABLE_ENTRY(PointParameteriNV),
|
||||||
TABLE_ENTRY(PointParameterivNV),
|
TABLE_ENTRY(PointParameterivNV),
|
||||||
|
TABLE_ENTRY(MultiDrawArraysEXT),
|
||||||
|
TABLE_ENTRY(MultiDrawElementsEXT),
|
||||||
/* A whole bunch of no-op functions. These might be called
|
/* A whole bunch of no-op functions. These might be called
|
||||||
* when someone tries to call a dynamically-registered
|
* when someone tries to call a dynamically-registered
|
||||||
* extension function without a current rendering context.
|
* extension function without a current rendering context.
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: dlist.c,v 1.91 2002/06/29 19:48:15 brianp Exp $ */
|
/* $Id: dlist.c,v 1.92 2002/06/30 15:47:00 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -5725,6 +5725,26 @@ static void exec_FogCoordPointerEXT(GLenum type, GLsizei stride,
|
|||||||
ctx->Exec->FogCoordPointerEXT( type, stride, ptr);
|
ctx->Exec->FogCoordPointerEXT( type, stride, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* GL_EXT_multi_draw_arrays */
|
||||||
|
static void exec_MultiDrawArraysEXT(GLenum mode, GLint *first,
|
||||||
|
GLsizei *count, GLsizei primcount)
|
||||||
|
{
|
||||||
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
FLUSH_VERTICES(ctx, 0);
|
||||||
|
ctx->Exec->MultiDrawArraysEXT( mode, first, count, primcount );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GL_EXT_multi_draw_arrays */
|
||||||
|
static void exec_MultiDrawElementsEXT(GLenum mode, const GLsizei *count,
|
||||||
|
GLenum type, const GLvoid **indices,
|
||||||
|
GLsizei primcount)
|
||||||
|
{
|
||||||
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
FLUSH_VERTICES(ctx, 0);
|
||||||
|
ctx->Exec->MultiDrawElementsEXT(mode, count, type, indices, primcount);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Assign all the pointers in <table> to point to Mesa's display list
|
* Assign all the pointers in <table> to point to Mesa's display list
|
||||||
@@ -6045,6 +6065,10 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
|
|||||||
/* 145. GL_EXT_secondary_color */
|
/* 145. GL_EXT_secondary_color */
|
||||||
table->SecondaryColorPointerEXT = exec_SecondaryColorPointerEXT;
|
table->SecondaryColorPointerEXT = exec_SecondaryColorPointerEXT;
|
||||||
|
|
||||||
|
/* 148. GL_EXT_multi_draw_arrays */
|
||||||
|
table->MultiDrawArraysEXT = exec_MultiDrawArraysEXT;
|
||||||
|
table->MultiDrawElementsEXT = exec_MultiDrawElementsEXT;
|
||||||
|
|
||||||
/* 149. GL_EXT_fog_coord */
|
/* 149. GL_EXT_fog_coord */
|
||||||
table->FogCoordPointerEXT = exec_FogCoordPointerEXT;
|
table->FogCoordPointerEXT = exec_FogCoordPointerEXT;
|
||||||
|
|
||||||
|
@@ -619,6 +619,8 @@ static struct name_address_offset static_functions[] = {
|
|||||||
{ "glSecondaryColor3usEXT", (GLvoid *) glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT },
|
{ "glSecondaryColor3usEXT", (GLvoid *) glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT },
|
||||||
{ "glSecondaryColor3usvEXT", (GLvoid *) glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT },
|
{ "glSecondaryColor3usvEXT", (GLvoid *) glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT },
|
||||||
{ "glSecondaryColorPointerEXT", (GLvoid *) glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT },
|
{ "glSecondaryColorPointerEXT", (GLvoid *) glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT },
|
||||||
|
{ "glMultiDrawArraysEXT", (GLvoid *) glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT },
|
||||||
|
{ "glMultiDrawElementsEXT", (GLvoid *) glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT },
|
||||||
{ "glFogCoordfEXT", (GLvoid *) glFogCoordfEXT, _gloffset_FogCoordfEXT },
|
{ "glFogCoordfEXT", (GLvoid *) glFogCoordfEXT, _gloffset_FogCoordfEXT },
|
||||||
{ "glFogCoordfvEXT", (GLvoid *) glFogCoordfvEXT, _gloffset_FogCoordfvEXT },
|
{ "glFogCoordfvEXT", (GLvoid *) glFogCoordfvEXT, _gloffset_FogCoordfvEXT },
|
||||||
{ "glFogCoorddEXT", (GLvoid *) glFogCoorddEXT, _gloffset_FogCoorddEXT },
|
{ "glFogCoorddEXT", (GLvoid *) glFogCoorddEXT, _gloffset_FogCoorddEXT },
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: state.c,v 1.87 2002/06/25 02:31:37 brianp Exp $ */
|
/* $Id: state.c,v 1.88 2002/06/30 15:47:01 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -425,6 +425,10 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
|
|||||||
exec->LockArraysEXT = _mesa_LockArraysEXT;
|
exec->LockArraysEXT = _mesa_LockArraysEXT;
|
||||||
exec->UnlockArraysEXT = _mesa_UnlockArraysEXT;
|
exec->UnlockArraysEXT = _mesa_UnlockArraysEXT;
|
||||||
|
|
||||||
|
/* 148. GL_EXT_multi_draw_arrays */
|
||||||
|
exec->MultiDrawArraysEXT = _mesa_MultiDrawArraysEXT;
|
||||||
|
exec->MultiDrawElementsEXT = _mesa_MultiDrawElementsEXT;
|
||||||
|
|
||||||
/* 173. GL_INGR_blend_func_separate */
|
/* 173. GL_INGR_blend_func_separate */
|
||||||
exec->BlendFuncSeparateEXT = _mesa_BlendFuncSeparateEXT;
|
exec->BlendFuncSeparateEXT = _mesa_BlendFuncSeparateEXT;
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: varray.c,v 1.45 2002/06/15 02:38:16 brianp Exp $ */
|
/* $Id: varray.c,v 1.46 2002/06/30 15:47:01 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -799,3 +799,41 @@ _mesa_UnlockArraysEXT( void )
|
|||||||
if (ctx->Driver.UnlockArraysEXT)
|
if (ctx->Driver.UnlockArraysEXT)
|
||||||
ctx->Driver.UnlockArraysEXT( ctx );
|
ctx->Driver.UnlockArraysEXT( ctx );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* GL_EXT_multi_draw_arrays */
|
||||||
|
/* Somebody forgot to spec the first and count parameters as const! <sigh> */
|
||||||
|
void
|
||||||
|
_mesa_MultiDrawArraysEXT( GLenum mode, GLint *first,
|
||||||
|
GLsizei *count, GLsizei primcount )
|
||||||
|
{
|
||||||
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
GLint i;
|
||||||
|
|
||||||
|
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||||
|
|
||||||
|
for (i = 0; i < primcount; i++) {
|
||||||
|
if (count[i] > 0) {
|
||||||
|
(ctx->Exec->DrawArrays)(mode, first[i], count[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* GL_EXT_multi_draw_arrays */
|
||||||
|
void
|
||||||
|
_mesa_MultiDrawElementsEXT( GLenum mode, const GLsizei *count, GLenum type,
|
||||||
|
const GLvoid **indices, GLsizei primcount )
|
||||||
|
{
|
||||||
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
GLint i;
|
||||||
|
|
||||||
|
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||||
|
|
||||||
|
for (i = 0; i < primcount; i++) {
|
||||||
|
if (count[i] > 0) {
|
||||||
|
(ctx->Exec->DrawElements)(mode, count[i], type, indices[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: varray.h,v 1.13 2002/01/11 17:25:35 brianp Exp $ */
|
/* $Id: varray.h,v 1.14 2002/06/30 15:47:01 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -111,4 +111,13 @@ extern void
|
|||||||
_mesa_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer);
|
_mesa_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer);
|
||||||
|
|
||||||
|
|
||||||
|
extern void
|
||||||
|
_mesa_MultiDrawArraysEXT( GLenum mode, GLint *first,
|
||||||
|
GLsizei *count, GLsizei primcount );
|
||||||
|
|
||||||
|
extern void
|
||||||
|
_mesa_MultiDrawElementsEXT( GLenum mode, const GLsizei *count, GLenum type,
|
||||||
|
const GLvoid **indices, GLsizei primcount );
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -12936,6 +12936,48 @@ glSecondaryColorPointerEXT:
|
|||||||
jmpl %g3, %g0
|
jmpl %g3, %g0
|
||||||
nop
|
nop
|
||||||
|
|
||||||
|
.globl glMultiDrawArraysEXT
|
||||||
|
.type glMultiDrawArraysEXT,#function
|
||||||
|
glMultiDrawArraysEXT:
|
||||||
|
#ifdef __sparc_v9__
|
||||||
|
sethi %hi(0x00000000), %g2
|
||||||
|
sethi %hi(0x00000000), %g1
|
||||||
|
or %g2, %lo(0x00000000), %g2
|
||||||
|
or %g1, %lo(0x00000000), %g1
|
||||||
|
sllx %g2, 32, %g2
|
||||||
|
ldx [%g1 + %g2], %g1
|
||||||
|
sethi %hi(8 * _gloffset_MultiDrawArraysEXT), %g2
|
||||||
|
or %g2, %lo(8 * _gloffset_MultiDrawArraysEXT), %g2
|
||||||
|
ldx [%g1 + %g2], %g3
|
||||||
|
#else
|
||||||
|
sethi %hi(0x00000000), %g1
|
||||||
|
ld [%g1 + %lo(0x00000000)], %g1
|
||||||
|
ld [%g1 + (4 * _gloffset_MultiDrawArraysEXT)], %g3
|
||||||
|
#endif
|
||||||
|
jmpl %g3, %g0
|
||||||
|
nop
|
||||||
|
|
||||||
|
.globl glMultiDrawElementsEXT
|
||||||
|
.type glMultiDrawElementsEXT,#function
|
||||||
|
glMultiDrawElementsEXT:
|
||||||
|
#ifdef __sparc_v9__
|
||||||
|
sethi %hi(0x00000000), %g2
|
||||||
|
sethi %hi(0x00000000), %g1
|
||||||
|
or %g2, %lo(0x00000000), %g2
|
||||||
|
or %g1, %lo(0x00000000), %g1
|
||||||
|
sllx %g2, 32, %g2
|
||||||
|
ldx [%g1 + %g2], %g1
|
||||||
|
sethi %hi(8 * _gloffset_MultiDrawElementsEXT), %g2
|
||||||
|
or %g2, %lo(8 * _gloffset_MultiDrawElementsEXT), %g2
|
||||||
|
ldx [%g1 + %g2], %g3
|
||||||
|
#else
|
||||||
|
sethi %hi(0x00000000), %g1
|
||||||
|
ld [%g1 + %lo(0x00000000)], %g1
|
||||||
|
ld [%g1 + (4 * _gloffset_MultiDrawElementsEXT)], %g3
|
||||||
|
#endif
|
||||||
|
jmpl %g3, %g0
|
||||||
|
nop
|
||||||
|
|
||||||
.globl glFogCoordfEXT
|
.globl glFogCoordfEXT
|
||||||
.type glFogCoordfEXT,#function
|
.type glFogCoordfEXT,#function
|
||||||
glFogCoordfEXT:
|
glFogCoordfEXT:
|
||||||
|
@@ -3711,6 +3711,18 @@ GL_PREFIX(SecondaryColorPointerEXT):
|
|||||||
MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX)
|
MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX)
|
||||||
JMP(GL_OFFSET(_gloffset_SecondaryColorPointerEXT))
|
JMP(GL_OFFSET(_gloffset_SecondaryColorPointerEXT))
|
||||||
|
|
||||||
|
ALIGNTEXT16
|
||||||
|
GLOBL_FN(GL_PREFIX(MultiDrawArraysEXT))
|
||||||
|
GL_PREFIX(MultiDrawArraysEXT):
|
||||||
|
MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX)
|
||||||
|
JMP(GL_OFFSET(_gloffset_MultiDrawArraysEXT))
|
||||||
|
|
||||||
|
ALIGNTEXT16
|
||||||
|
GLOBL_FN(GL_PREFIX(MultiDrawElementsEXT))
|
||||||
|
GL_PREFIX(MultiDrawElementsEXT):
|
||||||
|
MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX)
|
||||||
|
JMP(GL_OFFSET(_gloffset_MultiDrawElementsEXT))
|
||||||
|
|
||||||
ALIGNTEXT16
|
ALIGNTEXT16
|
||||||
GLOBL_FN(GL_PREFIX(FogCoordfEXT))
|
GLOBL_FN(GL_PREFIX(FogCoordfEXT))
|
||||||
GL_PREFIX(FogCoordfEXT):
|
GL_PREFIX(FogCoordfEXT):
|
||||||
|
Reference in New Issue
Block a user