keeping things safe: sanity check back
[mesa.git] / src / mesa / tnl / t_vtx_api.h
index 6bfdbe8fe39a9cd9ecff41f676d517e3b4d0d509..2500320213213945d8fadcb7ebb2205986f6190f 100644 (file)
@@ -32,203 +32,27 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  */
 
-#ifndef __RADEON_VTXFMT_H__
-#define __RADEON_VTXFMT_H__
+#ifndef __T_VTX_API_H__
+#define __T_VTX_API_H__
 
-#ifdef GLX_DIRECT_RENDERING
+#include "t_context.h"
 
-#include "_tnl__context.h"
+extern void _tnl_vtx_init( GLcontext *ctx );
+extern void _tnl_vtx_destroy( GLcontext *ctx );
 
-extern void _tnl_UpdateVtxfmt( GLcontext *ctx );
-extern void _tnl_InitVtxfmt( GLcontext *ctx );
-extern void _tnl_InvalidateVtxfmt( GLcontext *ctx );
-extern void _tnl_DestroyVtxfmt( GLcontext *ctx );
+extern void _tnl_FlushVertices( GLcontext *ctx, GLuint flags );
+extern void _tnl_flush_vtx( GLcontext *ctx );
 
-typedef void (*p4f)( GLfloat, GLfloat, GLfloat, GLfloat );
-typedef void (*p3f)( GLfloat, GLfloat, GLfloat );
-typedef void (*p2f)( GLfloat, GLfloat );
-typedef void (*p1f)( GLfloat );
-typedef void (*pe2f)( GLenum, GLfloat, GLfloat );
-typedef void (*pe1f)( GLenum, GLfloat );
-typedef void (*p4ub)( GLubyte, GLubyte, GLubyte, GLubyte );
-typedef void (*p3ub)( GLubyte, GLubyte, GLubyte );
-typedef void (*pfv)( const GLfloat * );
-typedef void (*pefv)( GLenum, const GLfloat * );
-typedef void (*pubv)( const GLubyte * );
+extern void _tnl_do_EvalCoord2f( GLcontext* ctx, GLfloat u, GLfloat v );
+extern void _tnl_do_EvalCoord1f(GLcontext* ctx, GLfloat u);
+extern void _tnl_update_eval( GLcontext *ctx );
 
-/* Want to keep a cache of these around.  Each is parameterized by
- * only a single value which has only a small range.  Only expect a
- * few, so just rescan the list each time?
- */
-struct dynfn {
-   struct dynfn *next, *prev;
-   int key;
-   char *code;
-};
-
-struct dfn_lists {
-   struct dynfn Vertex2f;
-   struct dynfn Vertex2fv;
-   struct dynfn Vertex3f;
-   struct dynfn Vertex3fv;
-   struct dynfn Color4ub;
-   struct dynfn Color4ubv;
-   struct dynfn Color3ub;
-   struct dynfn Color3ubv;
-   struct dynfn Color4f;
-   struct dynfn Color4fv;
-   struct dynfn Color3f;
-   struct dynfn Color3fv;
-   struct dynfn SecondaryColor3ubEXT;
-   struct dynfn SecondaryColor3ubvEXT;
-   struct dynfn SecondaryColor3fEXT;
-   struct dynfn SecondaryColor3fvEXT;
-   struct dynfn Normal3f;
-   struct dynfn Normal3fv;
-   struct dynfn TexCoord2f;
-   struct dynfn TexCoord2fv;
-   struct dynfn TexCoord1f;
-   struct dynfn TexCoord1fv;
-   struct dynfn MultiTexCoord2fARB;
-   struct dynfn MultiTexCoord2fvARB;
-   struct dynfn MultiTexCoord1fARB;
-   struct dynfn MultiTexCoord1fvARB;
-};
-
-struct _vb;
-
-struct dfn_generators {
-   struct dynfn *(*Vertex2f)( struct _vb *, int );
-   struct dynfn *(*Vertex2fv)( struct _vb *, int );
-   struct dynfn *(*Vertex3f)( struct _vb *, int );
-   struct dynfn *(*Vertex3fv)( struct _vb *, int );
-   struct dynfn *(*Color4ub)( struct _vb *, int );
-   struct dynfn *(*Color4ubv)( struct _vb *, int );
-   struct dynfn *(*Color3ub)( struct _vb *, int );
-   struct dynfn *(*Color3ubv)( struct _vb *, int );
-   struct dynfn *(*Color4f)( struct _vb *, int );
-   struct dynfn *(*Color4fv)( struct _vb *, int );
-   struct dynfn *(*Color3f)( struct _vb *, int );
-   struct dynfn *(*Color3fv)( struct _vb *, int );
-   struct dynfn *(*SecondaryColor3ubEXT)( struct _vb *, int );
-   struct dynfn *(*SecondaryColor3ubvEXT)( struct _vb *, int );
-   struct dynfn *(*SecondaryColor3fEXT)( struct _vb *, int );
-   struct dynfn *(*SecondaryColor3fvEXT)( struct _vb *, int );
-   struct dynfn *(*Normal3f)( struct _vb *, int );
-   struct dynfn *(*Normal3fv)( struct _vb *, int );
-   struct dynfn *(*TexCoord2f)( struct _vb *, int );
-   struct dynfn *(*TexCoord2fv)( struct _vb *, int );
-   struct dynfn *(*TexCoord1f)( struct _vb *, int );
-   struct dynfn *(*TexCoord1fv)( struct _vb *, int );
-   struct dynfn *(*MultiTexCoord2fARB)( struct _vb *, int );
-   struct dynfn *(*MultiTexCoord2fvARB)( struct _vb *, int );
-   struct dynfn *(*MultiTexCoord1fARB)( struct _vb *, int );
-   struct dynfn *(*MultiTexCoord1fvARB)( struct _vb *, int );
-};
-
-struct prim {
-   GLuint start;
-   GLuint end;
-   GLuint prim;
-};
-
-#define _TNL__MAX_PRIMS 64
-
-
-
-struct tnl_vbinfo {
-   /* Keep these first: referenced from codegen templates:
-    */
-   GLint counter;
-   GLint *dmaptr;
-   void (*notify)( void );
-   union { float f; int i; GLubyte ub4[4]; } vertex[16*4];
-
-   GLfloat *attrptr[16];
-   GLuint size[16];
-
-   GLenum *prim;               /* &ctx->Driver.CurrentExecPrimitive */
-   GLuint primflags;
-
-   GLboolean installed;
-   GLboolean recheck;
-
-   GLint vertex_size;
-   GLint initial_counter;
-   GLint nrverts;
-   GLuint vertex_format;
-
-   GLuint installed_vertex_format;
-
-   struct prim primlist[RADEON_MAX_PRIMS];
-   int nrprims;
+extern GLboolean *_tnl_translate_edgeflag( GLcontext *ctx, 
+                                          const GLfloat *data, 
+                                          GLuint count,
+                                          GLuint stride );
 
-   struct dfn_lists dfn_cache;
-   struct dfn_generators codegen;
-   GLvertexformat vtxfmt;
-};
+extern GLboolean *_tnl_import_current_edgeflag( GLcontext *ctx,
+                                               GLuint count );
 
-
-extern void _tnl_InitVtxfmtChoosers( GLvertexformat *vfmt );
-
-
-#define FIXUP( CODE, OFFSET, CHECKVAL, NEWVAL )        \
-do {                                           \
-   int *icode = (int *)(CODE+OFFSET);          \
-   assert (*icode == CHECKVAL);                        \
-   *icode = (int)NEWVAL;                       \
-} while (0)
-
-
-/* Useful for figuring out the offsets:
- */
-#define FIXUP2( CODE, OFFSET, CHECKVAL, NEWVAL )               \
-do {                                                           \
-   while (*(int *)(CODE+OFFSET) != CHECKVAL) OFFSET++;         \
-   fprintf(stderr, "%s/%d CVAL %x OFFSET %d\n", __FUNCTION__,  \
-          __LINE__, CHECKVAL, OFFSET);                         \
-   *(int *)(CODE+OFFSET) = (int)NEWVAL;                                \
-   OFFSET += 4;                                                        \
-} while (0)
-
-/* 
- */
-void _tnl_InitCodegen( struct dfn_generators *gen );
-void _tnl_InitX86Codegen( struct dfn_generators *gen );
-void _tnl_InitSSECodegen( struct dfn_generators *gen );
-
-void _tnl_copy_to_current( GLcontext *ctx );
-
-
-/* Defined in tnl_vtxfmt_c.c.
- */
-struct dynfn *tnl_makeX86Vertex2f( TNLcontext *, int );
-struct dynfn *tnl_makeX86Vertex2fv( TNLcontext *, int );
-struct dynfn *tnl_makeX86Vertex3f( TNLcontext *, int );
-struct dynfn *tnl_makeX86Vertex3fv( TNLcontext *, int );
-struct dynfn *tnl_makeX86Color4ub( TNLcontext *, int );
-struct dynfn *tnl_makeX86Color4ubv( TNLcontext *, int );
-struct dynfn *tnl_makeX86Color3ub( TNLcontext *, int );
-struct dynfn *tnl_makeX86Color3ubv( TNLcontext *, int );
-struct dynfn *tnl_makeX86Color4f( TNLcontext *, int );
-struct dynfn *tnl_makeX86Color4fv( TNLcontext *, int );
-struct dynfn *tnl_makeX86Color3f( TNLcontext *, int );
-struct dynfn *tnl_makeX86Color3fv( TNLcontext *, int );
-struct dynfn *tnl_makeX86SecondaryColor3ubEXT( TNLcontext *, int );
-struct dynfn *tnl_makeX86SecondaryColor3ubvEXT( TNLcontext *, int );
-struct dynfn *tnl_makeX86SecondaryColor3fEXT( TNLcontext *, int );
-struct dynfn *tnl_makeX86SecondaryColor3fvEXT( TNLcontext *, int );
-struct dynfn *tnl_makeX86Normal3f( TNLcontext *, int );
-struct dynfn *tnl_makeX86Normal3fv( TNLcontext *, int );
-struct dynfn *tnl_makeX86TexCoord2f( TNLcontext *, int );
-struct dynfn *tnl_makeX86TexCoord2fv( TNLcontext *, int );
-struct dynfn *tnl_makeX86TexCoord1f( TNLcontext *, int );
-struct dynfn *tnl_makeX86TexCoord1fv( TNLcontext *, int );
-struct dynfn *tnl_makeX86MultiTexCoord2fARB( TNLcontext *, int );
-struct dynfn *tnl_makeX86MultiTexCoord2fvARB( TNLcontext *, int );
-struct dynfn *tnl_makeX86MultiTexCoord1fARB( TNLcontext *, int );
-struct dynfn *tnl_makeX86MultiTexCoord1fvARB( TNLcontext *, int );
-
-
-#endif
 #endif