vbo: Remove the VBO_SAVE_FALLBACK flag.
[mesa.git] / src / mesa / vbo / vbo_exec.h
index bb265def8ab83a4a934bf922d730e0728b68ae37..1170883f87180110a5c4103c80b099d41e5332c8 100644 (file)
@@ -31,10 +31,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  */
 
-#ifndef __VBO_EXEC_H__
-#define __VBO_EXEC_H__
+#ifndef VBO_EXEC_H
+#define VBO_EXEC_H
 
-#include "main/mtypes.h"
+#include "main/dd.h"
+#include "main/imports.h"
 #include "vbo.h"
 #include "vbo_attrib.h"
 
@@ -46,16 +47,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
 /**
- * Size of the VBO to use for glBegin/glVertex/glEnd-style rendering.
+ * Size (in bytes) of the VBO to use for glBegin/glVertex/glEnd-style rendering.
  */
-#define VBO_VERT_BUFFER_SIZE (1024*64) /* bytes */
-
-
-/** Current vertex program mode */
-enum vp_mode {
-   VP_NONE,   /**< fixed function */
-   VP_ARB     /**< ARB vertex program or GLSL vertex shader */
-};
+#define VBO_VERT_BUFFER_SIZE (1024 * 64)
 
 
 struct vbo_exec_eval1_map {
@@ -71,17 +65,16 @@ struct vbo_exec_eval2_map {
 
 
 struct vbo_exec_copied_vtx {
-   GLfloat buffer[VBO_ATTRIB_MAX * 4 * VBO_MAX_COPIED_VERTS];
+   fi_type buffer[VBO_ATTRIB_MAX * 4 * VBO_MAX_COPIED_VERTS];
    GLuint nr;
 };
 
 
 struct vbo_exec_context
 {
-   struct gl_context *ctx;   
+   struct gl_context *ctx;
    GLvertexformat vtxfmt;
    GLvertexformat vtxfmt_noop;
-   GLboolean validating; /**< if we're in the middle of state validation */
 
    struct {
       struct gl_buffer_object *bufferobj;
@@ -91,46 +84,31 @@ struct vbo_exec_context
       struct _mesa_prim prim[VBO_MAX_PRIM];
       GLuint prim_count;
 
-      GLfloat *buffer_map;
-      GLfloat *buffer_ptr;              /* cursor, points into buffer */
+      fi_type *buffer_map;
+      fi_type *buffer_ptr;              /* cursor, points into buffer */
       GLuint   buffer_used;             /* in bytes */
-      GLfloat vertex[VBO_ATTRIB_MAX*4]; /* current vertex */
+      fi_type vertex[VBO_ATTRIB_MAX*4]; /* current vertex */
 
-      GLuint vert_count;
-      GLuint max_vert;
+      GLuint vert_count;   /**< Number of vertices currently in buffer */
+      GLuint max_vert;     /**< Max number of vertices allowed in buffer */
       struct vbo_exec_copied_vtx copied;
 
-      GLubyte attrsz[VBO_ATTRIB_MAX];
-      GLenum attrtype[VBO_ATTRIB_MAX];
-      GLubyte active_sz[VBO_ATTRIB_MAX];
+      GLbitfield64 enabled;             /**< mask of enabled vbo arrays. */
+      GLubyte attrsz[VBO_ATTRIB_MAX];   /**< nr. of attrib components (1..4) */
+      GLenum16 attrtype[VBO_ATTRIB_MAX];  /**< GL_FLOAT, GL_DOUBLE, GL_INT, etc */
+      GLubyte active_sz[VBO_ATTRIB_MAX];  /**< attrib size (nr. 32-bit words) */
 
-      GLfloat *attrptr[VBO_ATTRIB_MAX]; 
-      struct gl_client_array arrays[VERT_ATTRIB_MAX];
-
-      /* According to program mode, the values above plus current
-       * values are squashed down to the 32 attributes passed to the
-       * vertex program below:
-       */
-      const struct gl_client_array *inputs[VERT_ATTRIB_MAX];
+      /** pointers into the current 'vertex' array, declared above */
+      fi_type *attrptr[VBO_ATTRIB_MAX];
    } vtx;
 
-   
    struct {
       GLboolean recalculate_maps;
       struct vbo_exec_eval1_map map1[VERT_ATTRIB_MAX];
       struct vbo_exec_eval2_map map2[VERT_ATTRIB_MAX];
    } eval;
 
-   struct {
-      /* Arrays and current values manipulated according to program
-       * mode, etc.  These are the attributes as seen by vertex
-       * programs:
-       */
-      const struct gl_client_array *inputs[VERT_ATTRIB_MAX];
-      GLboolean recalculate_inputs;
-   } array;
-
-   /* Which flags to set in vbo_exec_BeginVertices() */
+   /* Which flags to set in vbo_exec_begin_vertices() */
    GLbitfield begin_vertices_flags;
 
 #ifdef DEBUG
@@ -140,35 +118,31 @@ struct vbo_exec_context
 
 
 
-/* External API:
- */
-void vbo_exec_init( struct gl_context *ctx );
-void vbo_exec_destroy( struct gl_context *ctx );
-void vbo_exec_invalidate_state( struct gl_context *ctx, GLuint new_state );
-
-void vbo_exec_BeginVertices( struct gl_context *ctx );
-void vbo_exec_FlushVertices( struct gl_context *ctx, GLuint flags );
-
-
-/* Internal functions:
- */
+void
+vbo_exec_init(struct gl_context *ctx);
 
-void vbo_exec_vtx_init( struct vbo_exec_context *exec );
-void vbo_exec_vtx_destroy( struct vbo_exec_context *exec );
+void
+vbo_exec_destroy(struct gl_context *ctx);
 
+void
+vbo_exec_vtx_init(struct vbo_exec_context *exec);
 
-void vbo_exec_vtx_flush( struct vbo_exec_context *exec, GLboolean unmap );
-void vbo_exec_vtx_map( struct vbo_exec_context *exec );
+void
+vbo_exec_vtx_destroy(struct vbo_exec_context *exec);
 
+void
+vbo_exec_vtx_flush(struct vbo_exec_context *exec, GLboolean unmap);
 
-void vbo_exec_vtx_wrap( struct vbo_exec_context *exec );
+void
+vbo_exec_vtx_map(struct vbo_exec_context *exec);
 
-void vbo_exec_eval_update( struct vbo_exec_context *exec );
+void
+vbo_exec_eval_update(struct vbo_exec_context *exec);
 
-void vbo_exec_do_EvalCoord2f( struct vbo_exec_context *exec, 
-                                    GLfloat u, GLfloat v );
+void
+vbo_exec_do_EvalCoord2f(struct vbo_exec_context *exec, GLfloat u, GLfloat v);
 
-void vbo_exec_do_EvalCoord1f( struct vbo_exec_context *exec,
-                                    GLfloat u);
+void
+vbo_exec_do_EvalCoord1f(struct vbo_exec_context *exec, GLfloat u);
 
 #endif