diff options
author | Brian Paul <[email protected]> | 2010-10-21 19:03:38 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2010-10-21 19:03:38 -0600 |
commit | be45255ab1f63c10fefcf2f399ac7d1c9294cf6a (patch) | |
tree | e6d81cc269749e8ac9449d757fd883e88cefd80a /src/mesa/vbo/vbo_exec_api.c | |
parent | b3de6e703d91da4f7f402f9ca33ccbbe31e97d99 (diff) |
vbo: support for primitive restart
We handle splitting of glDrawArrays() calls into two primitives here
so that drivers don't have to worry about it.
Diffstat (limited to 'src/mesa/vbo/vbo_exec_api.c')
-rw-r--r-- | src/mesa/vbo/vbo_exec_api.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index 80ca1d866e7..1ef49174193 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -568,6 +568,28 @@ static void GLAPIENTRY vbo_exec_End( void ) } +/** + * Called via glPrimitiveRestartNV() + */ +static void GLAPIENTRY +vbo_exec_PrimitiveRestartNV(void) +{ + GLenum curPrim; + GET_CURRENT_CONTEXT( ctx ); + + curPrim = ctx->Driver.CurrentExecPrimitive; + + if (curPrim == PRIM_OUTSIDE_BEGIN_END) { + _mesa_error( ctx, GL_INVALID_OPERATION, "glPrimitiveRestartNV" ); + } + else { + vbo_exec_End(); + vbo_exec_Begin(curPrim); + } +} + + + static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec ) { GLvertexformat *vfmt = &exec->vtxfmt; @@ -576,6 +598,7 @@ static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec ) vfmt->Begin = vbo_exec_Begin; vfmt->End = vbo_exec_End; + vfmt->PrimitiveRestartNV = vbo_exec_PrimitiveRestartNV; _MESA_INIT_DLIST_VTXFMT(vfmt, _mesa_); _MESA_INIT_EVAL_VTXFMT(vfmt, vbo_exec_); |