Merge branch 'llvm-cliptest-viewport'
[mesa.git] / src / mesa / state_tracker / st_draw.h
index 659c3ac834f194386daae2cf92a4230847cf7ce0..2e4c468cff5a26884677065035ac7e6f1f72a261 100644 (file)
 #ifndef ST_DRAW_H
 #define ST_DRAW_H
 
-struct _mesa_prim;
+#include "main/compiler.h"
+#include "main/glheader.h"
+#include "main/mtypes.h"
+
 struct _mesa_index_buffer;
+struct _mesa_prim;
+struct st_context;
 
 void st_init_draw( struct st_context *st );
 
 void st_destroy_draw( struct st_context *st );
 
 extern void
-st_draw_vbo(GLcontext *ctx,
+st_draw_vbo(struct gl_context *ctx,
             const struct gl_client_array **arrays,
             const struct _mesa_prim *prims,
             GLuint nr_prims,
             const struct _mesa_index_buffer *ib,
+           GLboolean index_bounds_valid,
             GLuint min_index,
             GLuint max_index);
 
 extern void
-st_feedback_draw_vbo(GLcontext *ctx,
+st_feedback_draw_vbo(struct gl_context *ctx,
                      const struct gl_client_array **arrays,
                      const struct _mesa_prim *prims,
                      GLuint nr_prims,
                      const struct _mesa_index_buffer *ib,
+                    GLboolean index_bounds_valid,
                      GLuint min_index,
                      GLuint max_index);
 
 /* Internal function:
  */
 extern GLuint
-st_pipe_vertex_format(GLenum type, GLuint size, GLboolean normalized);
+st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
+                      GLboolean normalized);
+
+
+/**
+ * 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) (((unsigned long) ptr) & 0xffffffffUL);
+}
+
 
 #endif