diff options
Diffstat (limited to 'src/mesa/vbo/vbo_exec.c')
-rw-r--r-- | src/mesa/vbo/vbo_exec.c | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/src/mesa/vbo/vbo_exec.c b/src/mesa/vbo/vbo_exec.c index 357ec1da767..34dbc001c92 100644 --- a/src/mesa/vbo/vbo_exec.c +++ b/src/mesa/vbo/vbo_exec.c @@ -239,89 +239,3 @@ vbo_merge_prims(struct _mesa_prim *p0, const struct _mesa_prim *p1) p0->count += p1->count; p0->end = p1->end; } - - -void -_vbo_init_inputs(struct vbo_inputs *inputs) -{ - inputs->current = 0; - inputs->vertex_processing_mode = VP_MODE_FF; -} - - -/** - * Update the vbo_inputs's arrays to point to the vao->_VertexArray arrays - * according to the 'enable' bitmask. - * \param enable bitfield of VERT_BIT_x flags. - */ -static inline void -update_vao_inputs(struct gl_context *ctx, - struct vbo_inputs *inputs, GLbitfield enable) -{ - const struct gl_vertex_array_object *vao = ctx->Array._DrawVAO; - - /* Make sure we process only arrays enabled in the VAO */ - assert((enable & ~_mesa_get_vao_vp_inputs(vao)) == 0); - - /* Fill in the client arrays from the VAO */ - const GLubyte *const map = _mesa_vao_attribute_map[vao->_AttributeMapMode]; - const struct gl_array_attributes *attribs = &vao->VertexAttrib[0]; - const struct gl_vertex_buffer_binding *bindings = &vao->BufferBinding[0]; - while (enable) { - const int attr = u_bit_scan(&enable); - struct gl_vertex_array *input = &inputs->inputs[attr]; - const struct gl_array_attributes *attrib = &attribs[map[attr]]; - input->VertexAttrib = attrib; - input->BufferBinding = &bindings[attrib->BufferBindingIndex]; - } -} - - -/** - * Update the vbo_inputs's arrays to point to the vbo->currval arrays - * according to the 'current' bitmask. - * \param current bitfield of VERT_BIT_x flags. - */ -static inline void -update_current_inputs(struct gl_context *ctx, - struct vbo_inputs *inputs, GLbitfield current) -{ - gl_vertex_processing_mode mode = ctx->VertexProgram._VPMode; - - /* All previously non current array pointers need update. */ - GLbitfield mask = current & ~inputs->current; - /* On mode change, the slots aliasing with materials need update too */ - if (mode != inputs->vertex_processing_mode) - mask |= current & VERT_BIT_MAT_ALL; - - struct vbo_context *vbo = vbo_context(ctx); - const struct gl_array_attributes *const currval = &vbo->current[0]; - const GLubyte *const map = _vbo_attribute_alias_map[mode]; - while (mask) { - const int attr = u_bit_scan(&mask); - struct gl_vertex_array *input = &inputs->inputs[attr]; - input->VertexAttrib = &currval[map[attr]]; - input->BufferBinding = &vbo->binding; - } - - inputs->current = current; - inputs->vertex_processing_mode = mode; -} - - -/** - * Update the vbo_inputs's arrays to point to the vao->_VertexArray and - * vbo->currval arrays according to Array._DrawVAO and - * Array._DrawVAOEnableAttribs. - */ -void -_vbo_update_inputs(struct gl_context *ctx, struct vbo_inputs *inputs) -{ - const GLbitfield enable = ctx->Array._DrawVAOEnabledAttribs; - - /* Update array input pointers */ - update_vao_inputs(ctx, inputs, enable); - - /* The rest must be current inputs. */ - update_current_inputs(ctx, inputs, ~enable & VERT_BIT_ALL); -} |