OSDN Git Service

mesa: plug in primitive restart function
authorBrian Paul <brianp@vmware.com>
Fri, 22 Oct 2010 01:03:38 +0000 (19:03 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 22 Oct 2010 01:03:38 +0000 (19:03 -0600)
src/mesa/main/api_exec.c
src/mesa/main/api_noop.c
src/mesa/main/vtxfmt.c

index ae653e1..2274e54 100644 (file)
@@ -494,6 +494,9 @@ _mesa_create_exec_table(void)
    SET_ActiveStencilFaceEXT(exec, _mesa_ActiveStencilFaceEXT);
 #endif
 
+   /* 285. GL_NV_primitive_restart */
+   SET_PrimitiveRestartIndexNV(exec, _mesa_PrimitiveRestartIndex);
+
    /* ???. GL_EXT_depth_bounds_test */
    SET_DepthBoundsEXT(exec, _mesa_DepthBoundsEXT);
 
index 9a36394..08b4b4a 100644 (file)
@@ -679,6 +679,16 @@ static void GLAPIENTRY _mesa_noop_End( void )
 }
 
 
+/***
+ * PrimitiveRestart called outside glBegin()/End(): raise an error
+ */
+static void GLAPIENTRY _mesa_noop_PrimitiveRestartNV( void )
+{
+   GET_CURRENT_CONTEXT(ctx);
+   _mesa_error(ctx, GL_INVALID_OPERATION, "glPrimitiveRestartNV(no glBegin)");
+}
+
+
 /**
  * Execute a glRectf() function.  This is not suitable for GL_COMPILE
  * modes (as the test for outside begin/end is not compiled),
@@ -1007,6 +1017,8 @@ _mesa_noop_vtxfmt_init( GLvertexformat *vfmt )
    vfmt->EdgeFlag = _mesa_noop_EdgeFlag;
    vfmt->End = _mesa_noop_End;
 
+   vfmt->PrimitiveRestartNV = _mesa_noop_PrimitiveRestartNV;
+
    _MESA_INIT_EVAL_VTXFMT(vfmt, _mesa_noop_);
 
    vfmt->FogCoordfEXT = _mesa_noop_FogCoordfEXT;
index 13b1aa9..9236bf8 100644 (file)
@@ -92,7 +92,10 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt )
 
    SET_Begin(tab, vfmt->Begin);
    SET_End(tab, vfmt->End);
+   SET_PrimitiveRestartNV(tab, vfmt->PrimitiveRestartNV);
+
    SET_Rectf(tab, vfmt->Rectf);
+
    SET_DrawArrays(tab, vfmt->DrawArrays);
    SET_DrawElements(tab, vfmt->DrawElements);
    SET_DrawRangeElements(tab, vfmt->DrawRangeElements);