summaryrefslogtreecommitdiffstats
path: root/src/mesa/vbo/vbo.h
diff options
context:
space:
mode:
authorChad Versace <[email protected]>2011-10-06 11:38:29 -0700
committerChad Versace <[email protected]>2011-10-18 11:42:54 -0700
commit8c7c589c4e70d7cdcceb350aa4edd3d9eec4403e (patch)
tree2eca1b86a696ea13731617c1f9bbdbca14429008 /src/mesa/vbo/vbo.h
parentfd7c46f53f3a7ae5c67f3c44ba283eeb4f72b366 (diff)
vbo: Redeclare bind_array() as non-static vbo_bind_array()
This is necessary because i965 will need to call vbo_bind_array() when cleaning up after a buffer resolve meta-op. Detailed Explanation -------------------- The vbo module tracks vertex attributes separately from the gl_context. Specifically, the vbo module maintins vertex attributes in vbo_exec_context::array::inputs, which is synchronized with gl_context::Array::ArrayObj::VertexAttrib by vbo_bind_array(). vbo_draw_arrays() calls vbo_bind_array() to perform the synchronization before calling the real draw call, vbo_context::draw_arrays. Intel hardware accomplishes buffer resolves with a meta-op. Frequently, that meta-op must be performed within glDraw* in the moment immediately before the draw occurs (The hardware designers hate us...). After performing the meta-op, but before calling vbo_bind_array(), the gl_context's vertex attributes will have been restored to their original state (that is, their state before the meta-op began), but the vbo module's vertex attribute are those used in the last meta-op. Therefore we must manually synchronize the two with vbo_bind_array() before continuing with the original draw command (that is, the one requested with glDraw*). See brw_predraw_resolve_buffers(), which will be added in a future commit. Reviewed-by: Brian Paul <[email protected]> Signed-off-by: Chad Versace <[email protected]>
Diffstat (limited to 'src/mesa/vbo/vbo.h')
-rw-r--r--src/mesa/vbo/vbo.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mesa/vbo/vbo.h b/src/mesa/vbo/vbo.h
index 26c3d4e0a72..9fbb07f3d72 100644
--- a/src/mesa/vbo/vbo.h
+++ b/src/mesa/vbo/vbo.h
@@ -133,6 +133,7 @@ void vbo_set_draw_func(struct gl_context *ctx, vbo_draw_func func);
void vbo_check_buffers_are_unmapped(struct gl_context *ctx);
+void vbo_bind_arrays(struct gl_context *ctx);
void GLAPIENTRY
_es_Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a);