Lines Matching refs:vao

212       struct gl_vertex_array_object *vao;
216 vao = ctx->Array.LastLookedUpVAO;
218 vao = (struct gl_vertex_array_object *)
221 _mesa_reference_vao(ctx, &ctx->Array.LastLookedUpVAO, vao);
224 return vao;
255 struct gl_vertex_array_object *vao;
259 vao = ctx->Array.LastLookedUpVAO;
261 vao = (struct gl_vertex_array_object *)
270 if (!vao || !vao->EverBound) {
276 _mesa_reference_vao(ctx, &ctx->Array.LastLookedUpVAO, vao);
279 return vao;
326 * Set ptr to vao w/ reference counting.
333 struct gl_vertex_array_object *vao)
335 assert(*ptr != vao);
357 if (vao) {
359 if (vao->SharedAndImmutable) {
360 p_atomic_inc(&vao->RefCount);
362 assert(vao->RefCount > 0);
363 vao->RefCount++;
366 *ptr = vao;
373 * \param vao the container vertex array object
380 struct gl_vertex_array_object *vao,
383 assert(index < ARRAY_SIZE(vao->VertexAttrib));
384 struct gl_array_attributes *array = &vao->VertexAttrib[index];
385 assert(index < ARRAY_SIZE(vao->BufferBinding));
386 struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[index];
413 struct gl_vertex_array_object *vao,
418 vao->Name = name;
420 vao->RefCount = 1;
421 vao->SharedAndImmutable = false;
424 for (i = 0; i < ARRAY_SIZE(vao->VertexAttrib); i++) {
427 init_array(ctx, vao, VERT_ATTRIB_NORMAL, 3, GL_FLOAT);
430 init_array(ctx, vao, VERT_ATTRIB_COLOR1, 3, GL_FLOAT);
433 init_array(ctx, vao, VERT_ATTRIB_FOG, 1, GL_FLOAT);
436 init_array(ctx, vao, VERT_ATTRIB_COLOR_INDEX, 1, GL_FLOAT);
439 init_array(ctx, vao, VERT_ATTRIB_EDGEFLAG, 1, GL_UNSIGNED_BYTE);
442 init_array(ctx, vao, VERT_ATTRIB_POINT_SIZE, 1, GL_FLOAT);
445 init_array(ctx, vao, i, 4, GL_FLOAT);
450 vao->_AttributeMapMode = ATTRIBUTE_MAP_MODE_IDENTITY;
452 _mesa_reference_buffer_object(ctx, &vao->IndexBufferObj,
463 compute_vbo_offset_range(const struct gl_vertex_array_object *vao,
475 GLbitfield mask = vao->Enabled & binding->_BoundArrays;
480 const GLuint off = vao->VertexAttrib[i].RelativeOffset;
491 * Update the unique binding and pos/generic0 map tracking in the vao.
493 * The idea is to build up information in the vao so that a consuming
505 * = _mesa_draw_buffer_binding(vao, i);
516 * = _mesa_draw_array_attrib(vao, attr);
529 * = _mesa_draw_buffer_binding(vao, i);
540 * = _mesa_draw_array_attrib(vao, attr);
571 struct gl_vertex_array_object *vao)
574 assert(!vao->SharedAndImmutable || vao->NewArrays == 0);
592 const gl_attribute_map_mode mode = vao->_AttributeMapMode;
594 const GLbitfield enabled = vao->Enabled;
596 const GLbitfield vbos = vao->VertexAttribBufferMask;
599 vao->_EffEnabledVBO = _mesa_vao_enable_to_vp_inputs(mode, enabled & vbos);
606 const GLuint bindex = vao->VertexAttrib[i].BufferBindingIndex;
607 struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[bindex];
633 struct gl_array_attributes *attrib2 = &vao->VertexAttrib[j];
658 compute_vbo_offset_range(vao, binding, &min_offset, &max_offset);
668 &vao->VertexAttrib[j];
670 &vao->BufferBinding[attrib2->BufferBindingIndex];
687 compute_vbo_offset_range(vao, binding2,
705 struct gl_array_attributes *attrib2 = &vao->VertexAttrib[j];
707 &vao->BufferBinding[attrib2->BufferBindingIndex];
729 const struct gl_array_attributes *attrib = &vao->VertexAttrib[i];
747 assert(util_bitcount(binding->_BoundArrays & vao->Enabled) == 1
748 || (vao->Enabled & ~binding->_BoundArrays) == 0);
762 const struct gl_array_attributes *attrib2 = &vao->VertexAttrib[j];
764 &vao->BufferBinding[attrib2->BufferBindingIndex];
767 assert(util_bitcount(binding2->_BoundArrays & vao->Enabled) == 1
768 || (vao->Enabled & ~binding->_BoundArrays) == 0);
798 struct gl_array_attributes *attrib2 = &vao->VertexAttrib[j];
821 if (vao->Enabled & VERT_BIT(map[attr])) {
823 &vao->VertexAttrib[map[attr]];
825 &vao->BufferBinding[attrib->BufferBindingIndex];
828 &vao->BufferBinding[attrib->_EffBufferBindingIndex];
849 struct gl_vertex_array_object *vao)
851 _mesa_update_vao_derived_arrays(ctx, vao);
852 vao->NewArrays = 0;
853 vao->SharedAndImmutable = true;
858 _mesa_all_varyings_in_vbos(const struct gl_vertex_array_object *vao)
861 GLbitfield mask = vao->Enabled & ~vao->VertexAttribBufferMask;
869 &vao->VertexAttrib[i];
871 &vao->BufferBinding[attrib_array->BufferBindingIndex];
873 /* We have already masked out vao->VertexAttribBufferMask */
890 _mesa_all_buffers_are_unmapped(const struct gl_vertex_array_object *vao)
893 GLbitfield mask = vao->Enabled & vao->VertexAttribBufferMask;
898 &vao->VertexAttrib[i];
900 &vao->BufferBinding[attrib_array->BufferBindingIndex];
902 /* We have already masked with vao->VertexAttribBufferMask */
921 _mesa_vao_map_arrays(struct gl_context *ctx, struct gl_vertex_array_object *vao,
924 GLbitfield mask = vao->Enabled & vao->VertexAttribBufferMask;
928 const GLubyte bindex = vao->VertexAttrib[attr].BufferBindingIndex;
929 struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[bindex];
943 * Map buffer objects used in the vao, attribute arrays and index buffer.
946 _mesa_vao_map(struct gl_context *ctx, struct gl_vertex_array_object *vao,
949 struct gl_buffer_object *bo = vao->IndexBufferObj;
955 _mesa_vao_map_arrays(ctx, vao, access);
964 struct gl_vertex_array_object *vao)
966 GLbitfield mask = vao->Enabled & vao->VertexAttribBufferMask;
970 const GLubyte bindex = vao->VertexAttrib[attr].BufferBindingIndex;
971 struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[bindex];
985 * Unmap buffer objects used in the vao, attribute arrays and index buffer.
988 _mesa_vao_unmap(struct gl_context *ctx, struct gl_vertex_array_object *vao)
990 struct gl_buffer_object *bo = vao->IndexBufferObj;
996 _mesa_vao_unmap_arrays(ctx, vao);
1264 struct gl_vertex_array_object *vao;
1276 vao =_mesa_lookup_vao_err(ctx, vaobj, "glVertexArrayElementBuffer");
1277 if (!vao)
1280 vao = _mesa_lookup_vao(ctx, vaobj);
1301 _mesa_reference_buffer_object(ctx, &vao->IndexBufferObj, bufObj);
1326 struct gl_vertex_array_object *vao;
1336 vao =_mesa_lookup_vao_err(ctx, vaobj, "glGetVertexArrayiv");
1337 if (!vao)
1352 param[0] = vao->IndexBufferObj->Name;