Merge commit 'origin/gallium-0.1' into gallium-0.2
[mesa.git] / src / mesa / tnl / t_vertex.h
index caa222014c9b6e0594ba4e3734960bbdc277cefc..712311a1463e5797bbc921fd60a5186dbb4f9682 100644 (file)
@@ -28,7 +28,7 @@
 #ifndef _TNL_VERTEX_H
 #define _TNL_VERTEX_H
 
-#include "mtypes.h"
+#include "main/mtypes.h"
 #include "t_context.h"
 
 /* New mechanism to specify hardware vertices so that tnl can build
@@ -65,7 +65,15 @@ struct tnl_attr_map {
    enum tnl_attr_format format;
    GLuint offset;
 };
-   
+
+struct tnl_format_info {
+   const char *name;
+   tnl_extract_func extract;
+   tnl_insert_func insert[4];
+   const GLuint attrsize;
+};
+
+extern const struct tnl_format_info _tnl_format_info[EMIT_MAX];
 
 
 /* Interpolate between two vertices to produce a third:
@@ -95,18 +103,11 @@ extern void _tnl_set_attr( GLcontext *ctx, void *vout, GLenum attrib,
 
 extern void *_tnl_get_vertex( GLcontext *ctx, GLuint nr );
 
-
-/*
- */
 extern GLuint _tnl_install_attrs( GLcontext *ctx,
                                  const struct tnl_attr_map *map,
                                  GLuint nr, const GLfloat *vp,
                                  GLuint unpacked_size );
 
-
-
-
-
 extern void _tnl_free_vertices( GLcontext *ctx );
 
 extern void _tnl_init_vertices( GLcontext *ctx, 
@@ -127,24 +128,42 @@ extern void _tnl_invalidate_vertices( GLcontext *ctx, GLuint newinputs );
 
 extern void _tnl_invalidate_vertex_state( GLcontext *ctx, GLuint new_state );
 
-extern tnl_emit_func _tnl_codegen_emit( GLcontext *ctx );
+extern void _tnl_notify_pipeline_output_change( GLcontext *ctx );
 
-#define REG_IN   (0<<16)
-#define REG_OUT  (1<<16)
-#define REG_VP   (2<<16)
-#define REG_TMP  (3<<16)
-#define REG_MASK (3<<16)
 
-#define REG_OFFSET_MASK  0xffff
+#define GET_VERTEX_STATE(ctx)  &(TNL_CONTEXT(ctx)->clipspace)
 
-#define in( offset )  (REG_IN  | (offset))
-#define out( offset ) (REG_OUT | (offset))
-#define vp( offset )  (REG_VP  | (offset))
-#define tmp( offset ) (REG_TMP | (offset))
+/* Internal function:
+ */
+void _tnl_register_fastpath( struct tnl_clipspace *vtx,
+                            GLboolean match_strides );
 
 
-extern void _tnl_init_c_codegen( struct tnl_clipspace_codegen *p );
+/* t_vertex_generic.c -- Internal functions for t_vertex.c
+ */
+void _tnl_generic_copy_pv_extras( GLcontext *ctx, 
+                                 GLuint dst, GLuint src );
 
-#define GET_VERTEX_STATE(ctx)  &(TNL_CONTEXT(ctx)->clipspace)
+void _tnl_generic_interp_extras( GLcontext *ctx,
+                                GLfloat t,
+                                GLuint dst, GLuint out, GLuint in,
+                                GLboolean force_boundary );
+
+void _tnl_generic_copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc );
+
+void _tnl_generic_interp( GLcontext *ctx,
+                         GLfloat t,
+                         GLuint edst, GLuint eout, GLuint ein,
+                         GLboolean force_boundary );
+
+void _tnl_generic_emit( GLcontext *ctx,
+                       GLuint count,
+                       GLubyte *v );
+
+void _tnl_generate_hardwired_emit( GLcontext *ctx );
+
+/* t_vertex_sse.c -- Internal functions for t_vertex.c
+ */
+void _tnl_generate_sse_emit( GLcontext *ctx );
 
 #endif