mesa: remove powf macro
[mesa.git] / src / mesa / tnl / t_vertex.h
index 16071fb69550234db28b5d7908ca161090e7de69..36d8a969e660c252caffe6a0c0bb798e0be49bf4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Tungsten Graphics, inc.
+ * Copyright 2003 VMware, Inc.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  * Authors:
- *    Keith Whitwell <keithw@tungstengraphics.com>
+ *    Keith Whitwell <keithw@vmware.com>
  */
 
 #ifndef _TNL_VERTEX_H
 #define _TNL_VERTEX_H
 
-#include "main/mtypes.h"
+#include "main/glheader.h"
 #include "t_context.h"
 
+struct gl_context;
+struct tnl_clipspace;
+
 /* New mechanism to specify hardware vertices so that tnl can build
  * and manipulate them directly.  
  */
@@ -78,63 +81,69 @@ extern const struct tnl_format_info _tnl_format_info[EMIT_MAX];
 
 /* Interpolate between two vertices to produce a third:
  */
-extern void _tnl_interp( GLcontext *ctx,
+extern void _tnl_interp( struct gl_context *ctx,
                         GLfloat t,
                         GLuint edst, GLuint eout, GLuint ein,
                         GLboolean force_boundary );
 
 /* Copy colors from one vertex to another:
  */
-extern void _tnl_copy_pv(  GLcontext *ctx, GLuint edst, GLuint esrc );
+extern void _tnl_copy_pv(  struct gl_context *ctx, GLuint edst, GLuint esrc );
 
 
 /* Extract a named attribute from a hardware vertex.  Will have to
  * reverse any viewport transformation, swizzling or other conversions
  * which may have been applied:
  */
-extern void _tnl_get_attr( GLcontext *ctx, const void *vertex, GLenum attrib,
+extern void _tnl_get_attr( struct gl_context *ctx, const void *vertex, GLenum attrib,
                           GLfloat *dest );
 
 /* Complementary to the above.
  */
-extern void _tnl_set_attr( GLcontext *ctx, void *vout, GLenum attrib, 
+extern void _tnl_set_attr( struct gl_context *ctx, void *vout, GLenum attrib, 
                           const GLfloat *src );
 
 
-extern void *_tnl_get_vertex( GLcontext *ctx, GLuint nr );
+extern void *_tnl_get_vertex( struct gl_context *ctx, GLuint nr );
 
-extern GLuint _tnl_install_attrs( GLcontext *ctx,
+extern GLuint _tnl_install_attrs( struct gl_context *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_free_vertices( struct gl_context *ctx );
 
-extern void _tnl_init_vertices( GLcontext *ctx, 
+extern void _tnl_init_vertices( struct gl_context *ctx, 
                                GLuint vb_size,
                                GLuint max_vertex_size );
 
-extern void *_tnl_emit_vertices_to_buffer( GLcontext *ctx,
+extern void *_tnl_emit_vertices_to_buffer( struct gl_context *ctx,
                                           GLuint start,
                                           GLuint end,
                                           void *dest );
-extern void *_tnl_emit_indexed_vertices_to_buffer( GLcontext *ctx,
+
+/* This function isn't optimal. Check out 
+ * gallium/auxilary/translate for a more comprehensive implementation of
+ * the same functionality.
+ */
+  
+extern void *_tnl_emit_indexed_vertices_to_buffer( struct gl_context *ctx,
                                                   const GLuint *elts,
                                                   GLuint start,
                                                   GLuint end,
                                                   void *dest );
 
 
-extern void _tnl_build_vertices( GLcontext *ctx,
+extern void _tnl_build_vertices( struct gl_context *ctx,
                                 GLuint start,
                                 GLuint end,
                                 GLuint newinputs );
 
-extern void _tnl_invalidate_vertices( GLcontext *ctx, GLuint newinputs );
+extern void _tnl_invalidate_vertices( struct gl_context *ctx, GLuint newinputs );
 
-extern void _tnl_invalidate_vertex_state( GLcontext *ctx, GLuint new_state );
+extern void _tnl_invalidate_vertex_state( struct gl_context *ctx, GLuint new_state );
 
-extern void _tnl_notify_pipeline_output_change( GLcontext *ctx );
+extern void _tnl_notify_pipeline_output_change( struct gl_context *ctx );
 
 
 #define GET_VERTEX_STATE(ctx)  &(TNL_CONTEXT(ctx)->clipspace)
@@ -147,29 +156,29 @@ void _tnl_register_fastpath( struct tnl_clipspace *vtx,
 
 /* t_vertex_generic.c -- Internal functions for t_vertex.c
  */
-void _tnl_generic_copy_pv_extras( GLcontext *ctx, 
+void _tnl_generic_copy_pv_extras( struct gl_context *ctx, 
                                  GLuint dst, GLuint src );
 
-void _tnl_generic_interp_extras( GLcontext *ctx,
+void _tnl_generic_interp_extras( struct gl_context *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_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc );
 
-void _tnl_generic_interp( GLcontext *ctx,
+void _tnl_generic_interp( struct gl_context *ctx,
                          GLfloat t,
                          GLuint edst, GLuint eout, GLuint ein,
                          GLboolean force_boundary );
 
-void _tnl_generic_emit( GLcontext *ctx,
+void _tnl_generic_emit( struct gl_context *ctx,
                        GLuint count,
                        GLubyte *v );
 
-void _tnl_generate_hardwired_emit( GLcontext *ctx );
+void _tnl_generate_hardwired_emit( struct gl_context *ctx );
 
 /* t_vertex_sse.c -- Internal functions for t_vertex.c
  */
-void _tnl_generate_sse_emit( GLcontext *ctx );
+void _tnl_generate_sse_emit( struct gl_context *ctx );
 
 #endif