i965/upload: Refactor open-coded ALIGN-like computations.
[mesa.git] / src / mesa / state_tracker / st_draw.h
index 0005fbc51f388a684492509a9bccf58facb8b163..361fe7f9125a1f468a3b2ab6e577f0f8aeaec914 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
  * 
- * Copyright 2004 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2004 VMware, Inc.
  * All Rights Reserved.
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -18,7 +18,7 @@
  * 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 ITS SUPPLIERS BE LIABLE FOR
+ * IN NO EVENT SHALL VMWARE AND/OR ITS 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 <keith@tungstengraphics.com>
+  *   Keith Whitwell <keithw@vmware.com>
   */
     
 
 #ifndef ST_DRAW_H
 #define ST_DRAW_H
 
+#include "main/compiler.h"
+#include "main/glheader.h"
+
+struct _mesa_index_buffer;
+struct _mesa_prim;
+struct gl_client_array;
+struct gl_context;
+struct st_context;
 
 void st_init_draw( struct st_context *st );
 
 void st_destroy_draw( struct st_context *st );
 
-void 
-st_draw_vertices(GLcontext *ctx, unsigned prim,
-                 unsigned numVertex, float *verts,
-                 unsigned numAttribs, const unsigned attribs[]);
+extern void
+st_draw_vbo(struct gl_context *ctx,
+            const struct _mesa_prim *prims,
+            GLuint nr_prims,
+            const struct _mesa_index_buffer *ib,
+           GLboolean index_bounds_valid,
+            GLuint min_index,
+            GLuint max_index,
+            struct gl_transform_feedback_object *tfb_vertcount,
+            struct gl_buffer_object *indirect);
+
+extern void
+st_feedback_draw_vbo(struct gl_context *ctx,
+                     const struct _mesa_prim *prims,
+                     GLuint nr_prims,
+                     const struct _mesa_index_buffer *ib,
+                    GLboolean index_bounds_valid,
+                     GLuint min_index,
+                     GLuint max_index,
+                     struct gl_transform_feedback_object *tfb_vertcount,
+                     struct gl_buffer_object *indirect);
+
+/**
+ * When drawing with VBOs, the addresses specified with
+ * glVertex/Color/TexCoordPointer() are really offsets into the VBO, not real
+ * addresses.  At some point we need to convert those pointers to offsets.
+ * This function is basically a cast wrapper to avoid warnings when building
+ * in 64-bit mode.
+ */
+static INLINE unsigned
+pointer_to_offset(const void *ptr)
+{
+   return (unsigned) (((GLsizeiptr) ptr) & 0xffffffffUL);
+}
 
 
 #endif