Module: Mesa Branch: master Commit: b7b0c51f1fd54c666e9520e1166e24216cc72211 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b7b0c51f1fd54c666e9520e1166e24216cc72211
Author: Mathias Fröhlich <mathias.froehl...@web.de> Date: Sun Aug 14 14:03:58 2016 +0200 mesa: Move _mesa_all_buffers_are_unmapped to arrayobj.c. Move the function to check if all vao buffers are unmapped into the vao implementation file. Rename the function to _mesa_all_buffers_are_unmapped. Signed-off-by: Mathias Fröhlich <mathias.froehl...@web.de> Reviewed-by: Brian Paul <bri...@vmware.com> Reviewed-by: Eric Anholt <e...@anholt.net> --- src/mesa/main/arrayobj.c | 28 ++++++++++++++++++++++++++++ src/mesa/main/arrayobj.h | 4 ++++ src/mesa/vbo/vbo_exec_array.c | 36 +----------------------------------- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index becf32f..2d3b69c 100644 --- a/src/mesa/main/arrayobj.c +++ b/src/mesa/main/arrayobj.c @@ -393,6 +393,34 @@ _mesa_all_varyings_in_vbos(const struct gl_vertex_array_object *vao) return true; } +bool +_mesa_all_buffers_are_unmapped(const struct gl_vertex_array_object *vao) +{ + /* Walk the enabled arrays that have a vbo attached */ + GLbitfield64 mask = vao->_Enabled & vao->VertexAttribBufferMask; + + while (mask) { + const int i = ffsll(mask) - 1; + const struct gl_vertex_attrib_array *attrib_array = + &vao->VertexAttrib[i]; + const struct gl_vertex_buffer_binding *buffer_binding = + &vao->VertexBinding[attrib_array->VertexBinding]; + + /* Only enabled arrays shall appear in the _Enabled bitmask */ + assert(attrib_array->Enabled); + /* We have already masked with vao->VertexAttribBufferMask */ + assert(_mesa_is_bufferobj(buffer_binding->BufferObj)); + + /* Bail out once we find the first disallowed mapping */ + if (_mesa_check_disallowed_mapping(buffer_binding->BufferObj)) + return false; + + /* We have handled everything that is bound to this buffer_binding. */ + mask &= ~buffer_binding->_BoundArrays; + } + + return true; +} /**********************************************************************/ /* API Functions */ diff --git a/src/mesa/main/arrayobj.h b/src/mesa/main/arrayobj.h index d30c85c..830502e 100644 --- a/src/mesa/main/arrayobj.h +++ b/src/mesa/main/arrayobj.h @@ -85,6 +85,10 @@ _mesa_update_vao_client_arrays(struct gl_context *ctx, extern bool _mesa_all_varyings_in_vbos(const struct gl_vertex_array_object *vao); +/* Returns true if all vbos are unmapped */ +extern bool +_mesa_all_buffers_are_unmapped(const struct gl_vertex_array_object *vao); + /* * API functions */ diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index 8789837..e1aa3ac 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -43,40 +43,6 @@ /** - * All vertex buffers should be in an unmapped state when we're about - * to draw. - */ -static bool -check_input_buffers_are_unmapped(const struct gl_vertex_array_object *vao) -{ - /* Walk the enabled arrays that have a vbo attached */ - GLbitfield64 mask = vao->_Enabled & vao->VertexAttribBufferMask; - - while (mask) { - int i = ffsll(mask) - 1; - const struct gl_vertex_attrib_array *attrib_array = - &vao->VertexAttrib[i]; - const struct gl_vertex_buffer_binding *buffer_binding = - &vao->VertexBinding[attrib_array->VertexBinding]; - - /* Only enabled arrays shall appear in the _Enabled bitmask */ - assert(attrib_array->Enabled); - /* We have already masked with vao->VertexAttribBufferMask */ - assert(_mesa_is_bufferobj(buffer_binding->BufferObj)); - - /* Bail out once we find the first disallowed mapping */ - if (_mesa_check_disallowed_mapping(buffer_binding->BufferObj)) - return false; - - /* We have handled everything that is bound to this buffer_binding. */ - mask &= ~buffer_binding->_BoundArrays; - } - - return true; -} - - -/** * Check that element 'j' of the array has reasonable data. * Map VBO if needed. * For debugging purposes; not normally used. @@ -430,7 +396,7 @@ vbo_bind_arrays(struct gl_context *ctx) } } - if (!check_input_buffers_are_unmapped(ctx->Array.VAO)) { + if (!_mesa_all_buffers_are_unmapped(ctx->Array.VAO)) { _mesa_error(ctx, GL_INVALID_OPERATION, "draw call (vertex buffers are mapped)"); return false; _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit