diff options
Diffstat (limited to 'src/mesa/vbo/vbo_context.h')
-rw-r--r-- | src/mesa/vbo/vbo_context.h | 158 |
1 files changed, 2 insertions, 156 deletions
diff --git a/src/mesa/vbo/vbo_context.h b/src/mesa/vbo/vbo_context.h index 2eac0198b80..a723a6aba3a 100644 --- a/src/mesa/vbo/vbo_context.h +++ b/src/mesa/vbo/vbo_context.h @@ -86,168 +86,14 @@ struct vbo_context { }; -static inline struct vbo_context *vbo_context(struct gl_context *ctx) -{ - return ctx->vbo_context; -} - - -static inline void -vbo_exec_invalidate_state(struct gl_context *ctx) -{ - struct vbo_context *vbo = vbo_context(ctx); - struct vbo_exec_context *exec = &vbo->exec; - - if (ctx->NewState & (_NEW_PROGRAM | _NEW_ARRAY)) { - if (!exec->validating) - exec->array.recalculate_inputs = GL_TRUE; - - _ae_invalidate_state(ctx); - } - - if (ctx->NewState & _NEW_EVAL) - exec->eval.recalculate_maps = GL_TRUE; -} +void +vbo_exec_invalidate_state(struct gl_context *ctx); void _vbo_install_exec_vtxfmt(struct gl_context *ctx); -/** - * Return VP_x token to indicate whether we're running fixed-function - * vertex transformation, an NV vertex program or ARB vertex program/shader. - */ -static inline enum vp_mode -get_program_mode( struct gl_context *ctx ) -{ - if (!ctx->VertexProgram._Current) - return VP_NONE; - else if (ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) - return VP_NONE; - else - return VP_ARB; -} - - -/** - * This is called by glBegin, glDrawArrays and glDrawElements (and - * variations of those calls). When we transition from immediate mode - * drawing to array drawing we need to invalidate the array state. - * - * glBegin/End builds vertex arrays. Those arrays may look identical - * to glDrawArrays arrays except that the position of the elements may - * be different. For example, arrays of (position3v, normal3f) vs. arrays - * of (normal3f, position3f). So we need to make sure we notify drivers - * that arrays may be changing. - */ -static inline void -vbo_draw_method(struct vbo_context *vbo, gl_draw_method method) -{ - struct gl_context *ctx = vbo->exec.ctx; - - if (ctx->Array.DrawMethod != method) { - switch (method) { - case DRAW_ARRAYS: - ctx->Array._DrawArrays = vbo->exec.array.inputs; - break; - case DRAW_BEGIN_END: - ctx->Array._DrawArrays = vbo->exec.vtx.inputs; - break; - case DRAW_DISPLAY_LIST: - ctx->Array._DrawArrays = vbo->save.inputs; - break; - default: - unreachable("Bad VBO drawing method"); - } - - ctx->NewDriverState |= ctx->DriverFlags.NewArray; - ctx->Array.DrawMethod = method; - } -} - -/** - * Return if format is integer. The immediate mode commands only emit floats - * for non-integer types, thus everything else is integer. - */ -static inline GLboolean -vbo_attrtype_to_integer_flag(GLenum format) -{ - switch (format) { - case GL_FLOAT: - case GL_DOUBLE: - return GL_FALSE; - case GL_INT: - case GL_UNSIGNED_INT: - case GL_UNSIGNED_INT64_ARB: - return GL_TRUE; - default: - unreachable("Bad vertex attribute type"); - return GL_FALSE; - } -} - -static inline GLboolean -vbo_attrtype_to_double_flag(GLenum format) -{ - switch (format) { - case GL_FLOAT: - case GL_INT: - case GL_UNSIGNED_INT: - case GL_UNSIGNED_INT64_ARB: - return GL_FALSE; - case GL_DOUBLE: - return GL_TRUE; - default: - unreachable("Bad vertex attribute type"); - return GL_FALSE; - } -} - -/** - * Return default component values for the given format. - * The return type is an array of fi_types, because that's how we declare - * the vertex storage : floats , integers or unsigned integers. - */ -static inline const fi_type * -vbo_get_default_vals_as_union(GLenum format) -{ - static const GLfloat default_float[4] = { 0, 0, 0, 1 }; - static const GLint default_int[4] = { 0, 0, 0, 1 }; - - switch (format) { - case GL_FLOAT: - return (fi_type *)default_float; - case GL_INT: - case GL_UNSIGNED_INT: - return (fi_type *)default_int; - default: - unreachable("Bad vertex format"); - return NULL; - } -} - - -/** - * Compute the max number of vertices which can be stored in - * a vertex buffer, given the current vertex size, and the amount - * of space already used. - */ -static inline unsigned -vbo_compute_max_verts(const struct vbo_exec_context *exec) -{ - unsigned n = (VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used) / - (exec->vtx.vertex_size * sizeof(GLfloat)); - if (n == 0) - return 0; - /* Subtract one so we're always sure to have room for an extra - * vertex for GL_LINE_LOOP -> GL_LINE_STRIP conversion. - */ - n--; - return n; -} - - #ifdef __cplusplus } // extern "C" #endif |