Hook in split functionality
authorkeithw <keithw@keithw-laptop.(none)>
Mon, 15 Jan 2007 11:58:06 +0000 (11:58 +0000)
committerkeithw <keithw@keithw-laptop.(none)>
Mon, 15 Jan 2007 11:58:06 +0000 (11:58 +0000)
src/mesa/vbo/vbo.h
src/mesa/vbo/vbo_context.h

index 80f7a33..c81d83f 100644 (file)
@@ -65,4 +65,40 @@ void _vbo_DestroyContext( GLcontext *ctx );
 void _vbo_InvalidateState( GLcontext *ctx, GLuint new_state );
 
 
+typedef void (*vbo_draw_func)( GLcontext *ctx,
+                              const struct gl_client_array **arrays,
+                              const struct _mesa_prim *prims,
+                              GLuint nr_prims,
+                              const struct _mesa_index_buffer *ib,
+                              GLuint min_index,
+                              GLuint max_index );
+
+
+
+
+/* Utility function to cope with various constraints on tnl modules or
+ * hardware.  This can be used to split an incoming set of arrays and
+ * primitives against the following constraints:
+ *    - Maximum number of indices in index buffer.
+ *    - Maximum number of vertices referenced by index buffer.
+ *    - Maximum hardware vertex buffer size.
+ */
+struct split_limits {
+   GLuint max_verts;
+   GLuint max_indices;
+   GLuint max_vb_size;         /* bytes */
+};
+
+
+void vbo_split_prims( GLcontext *ctx,
+                     const struct gl_client_array *arrays[],
+                     const struct _mesa_prim *prim,
+                     GLuint nr_prims,
+                     const struct _mesa_index_buffer *ib,
+                     GLuint min_index,
+                     GLuint max_index,
+                     vbo_draw_func draw,
+                     const struct split_limits *limits );
+
+
 #endif
index 4c5ed96..0dc1019 100644 (file)
@@ -79,13 +79,7 @@ struct vbo_context {
    /* Callback into the driver.  This must always succeed, the driver
     * is responsible for initiating any fallback actions required:
     */
-   void (*draw_prims)( GLcontext *ctx,
-                      const struct gl_client_array *arrays[],
-                      const struct _mesa_prim *prims,
-                      GLuint nr_prims,
-                      const struct _mesa_index_buffer *ib,
-                      GLuint min_index,
-                      GLuint max_index );
+   vbo_draw_func draw_prims;
 };