diff options
author | Keith Whitwell <[email protected]> | 2003-11-24 15:23:18 +0000 |
---|---|---|
committer | Keith Whitwell <[email protected]> | 2003-11-24 15:23:18 +0000 |
commit | ae0eaf93e092ac8e8b1c98f3e986de96940663fa (patch) | |
tree | 56aae7c4b985f657384df5e088227c4dd08130fb /src/mesa/tnl/t_vtx_api.h | |
parent | 57c9814b9e87924696df4c741861c29d4236d1eb (diff) |
Merge vtx-0-2-branch
Diffstat (limited to 'src/mesa/tnl/t_vtx_api.h')
-rw-r--r-- | src/mesa/tnl/t_vtx_api.h | 208 |
1 files changed, 16 insertions, 192 deletions
diff --git a/src/mesa/tnl/t_vtx_api.h b/src/mesa/tnl/t_vtx_api.h index 6bfdbe8fe39..25003202132 100644 --- a/src/mesa/tnl/t_vtx_api.h +++ b/src/mesa/tnl/t_vtx_api.h @@ -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 |