*
*/
-#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"
-#include "main/imports.h"
/**
* Max number of primitives (number of glBegin/End pairs) per VBO.
/**
- * 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 {
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;
GLuint max_vert; /**< Max number of vertices allowed in buffer */
struct vbo_exec_copied_vtx copied;
+ GLbitfield64 enabled; /**< mask of enabled vbo arrays. */
GLubyte attrsz[VBO_ATTRIB_MAX]; /**< nr. of attrib components (1..4) */
- GLenum attrtype[VBO_ATTRIB_MAX]; /**< GL_FLOAT, GL_DOUBLE, GL_INT, etc */
+ GLenum16 attrtype[VBO_ATTRIB_MAX]; /**< GL_FLOAT, GL_DOUBLE, GL_INT, etc */
GLubyte active_sz[VBO_ATTRIB_MAX]; /**< attrib size (nr. 32-bit words) */
/** pointers into the current 'vertex' array, declared above */
fi_type *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];
} vtx;
struct {
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_begin_vertices() */
GLbitfield begin_vertices_flags;
-/* 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_init(struct gl_context *ctx);
-/* Internal functions:
- */
+void
+vbo_exec_destroy(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_vtx_init(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_map( 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_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