Lines Matching refs:vao
214 struct gl_vertex_array_object *vao;
218 vao = ctx->Array.LastLookedUpVAO;
220 vao = (struct gl_vertex_array_object *)
223 _mesa_reference_vao(ctx, &ctx->Array.LastLookedUpVAO, vao);
226 return vao;
263 struct gl_vertex_array_object *vao;
267 vao = ctx->Array.LastLookedUpVAO;
269 vao = (struct gl_vertex_array_object *)
278 if (!vao || (!is_ext_dsa && !vao->EverBound)) {
292 if (vao && is_ext_dsa && !vao->EverBound)
293 vao->EverBound = true;
295 _mesa_reference_vao(ctx, &ctx->Array.LastLookedUpVAO, vao);
298 return vao;
346 * Set ptr to vao w/ reference counting.
353 struct gl_vertex_array_object *vao)
355 assert(*ptr != vao);
377 if (vao) {
379 if (vao->SharedAndImmutable) {
380 p_atomic_inc(&vao->RefCount);
382 assert(vao->RefCount > 0);
383 vao->RefCount++;
386 *ptr = vao;
396 struct gl_vertex_array_object *vao,
399 memcpy(vao, &ctx->Array.DefaultVAOState, sizeof(*vao));
400 vao->Name = name;
410 compute_vbo_offset_range(const struct gl_vertex_array_object *vao,
422 GLbitfield mask = vao->Enabled & binding->_BoundArrays;
427 const GLuint off = vao->VertexAttrib[i].RelativeOffset;
438 * Update the unique binding and pos/generic0 map tracking in the vao.
440 * The idea is to build up information in the vao so that a consuming
452 * = _mesa_draw_buffer_binding(vao, i);
463 * = _mesa_draw_array_attrib(vao, attr);
476 * = _mesa_draw_buffer_binding(vao, i);
487 * = _mesa_draw_array_attrib(vao, attr);
518 struct gl_vertex_array_object *vao)
521 assert(!vao->SharedAndImmutable || vao->NewArrays == 0);
539 const gl_attribute_map_mode mode = vao->_AttributeMapMode;
541 const GLbitfield enabled = vao->Enabled;
543 const GLbitfield vbos = vao->VertexAttribBufferMask;
544 const GLbitfield divisor_is_nonzero = vao->NonZeroDivisorMask;
547 vao->_EffEnabledVBO = _mesa_vao_enable_to_vp_inputs(mode, enabled & vbos);
548 vao->_EffEnabledNonZeroDivisor =
552 if (vao->IsDynamic)
556 if (ctx->Const.AllowDynamicVAOFastPath && ++vao->NumUpdates > 4) {
557 vao->IsDynamic = true;
567 const GLuint bindex = vao->VertexAttrib[i].BufferBindingIndex;
568 struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[bindex];
594 struct gl_array_attributes *attrib2 = &vao->VertexAttrib[j];
619 compute_vbo_offset_range(vao, binding, &min_offset, &max_offset);
629 &vao->VertexAttrib[j];
631 &vao->BufferBinding[attrib2->BufferBindingIndex];
648 compute_vbo_offset_range(vao, binding2,
666 struct gl_array_attributes *attrib2 = &vao->VertexAttrib[j];
668 &vao->BufferBinding[attrib2->BufferBindingIndex];
690 const struct gl_array_attributes *attrib = &vao->VertexAttrib[i];
708 assert(util_bitcount(binding->_BoundArrays & vao->Enabled) == 1
709 || (vao->Enabled & ~binding->_BoundArrays) == 0);
723 const struct gl_array_attributes *attrib2 = &vao->VertexAttrib[j];
725 &vao->BufferBinding[attrib2->BufferBindingIndex];
728 assert(util_bitcount(binding2->_BoundArrays & vao->Enabled) == 1
729 || (vao->Enabled & ~binding->_BoundArrays) == 0);
759 struct gl_array_attributes *attrib2 = &vao->VertexAttrib[j];
782 if (vao->Enabled & VERT_BIT(map[attr])) {
784 &vao->VertexAttrib[map[attr]];
786 &vao->BufferBinding[attrib->BufferBindingIndex];
789 &vao->BufferBinding[attrib->_EffBufferBindingIndex];
810 struct gl_vertex_array_object *vao)
812 _mesa_update_vao_derived_arrays(ctx, vao);
813 vao->NewArrays = 0;
814 vao->SharedAndImmutable = true;
819 _mesa_all_varyings_in_vbos(const struct gl_vertex_array_object *vao)
822 GLbitfield mask = vao->Enabled & ~vao->VertexAttribBufferMask;
830 &vao->VertexAttrib[i];
832 &vao->BufferBinding[attrib_array->BufferBindingIndex];
834 /* We have already masked out vao->VertexAttribBufferMask */
851 _mesa_all_buffers_are_unmapped(const struct gl_vertex_array_object *vao)
854 GLbitfield mask = vao->Enabled & vao->VertexAttribBufferMask;
859 &vao->VertexAttrib[i];
861 &vao->BufferBinding[attrib_array->BufferBindingIndex];
863 /* We have already masked with vao->VertexAttribBufferMask */
882 _mesa_vao_map_arrays(struct gl_context *ctx, struct gl_vertex_array_object *vao,
885 GLbitfield mask = vao->Enabled & vao->VertexAttribBufferMask;
889 const GLubyte bindex = vao->VertexAttrib[attr].BufferBindingIndex;
890 struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[bindex];
904 * Map buffer objects used in the vao, attribute arrays and index buffer.
907 _mesa_vao_map(struct gl_context *ctx, struct gl_vertex_array_object *vao,
910 struct gl_buffer_object *bo = vao->IndexBufferObj;
916 _mesa_vao_map_arrays(ctx, vao, access);
925 struct gl_vertex_array_object *vao)
927 GLbitfield mask = vao->Enabled & vao->VertexAttribBufferMask;
931 const GLubyte bindex = vao->VertexAttrib[attr].BufferBindingIndex;
932 struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[bindex];
946 * Unmap buffer objects used in the vao, attribute arrays and index buffer.
949 _mesa_vao_unmap(struct gl_context *ctx, struct gl_vertex_array_object *vao)
951 struct gl_buffer_object *bo = vao->IndexBufferObj;
957 _mesa_vao_unmap_arrays(ctx, vao);
1229 struct gl_vertex_array_object *vao;
1241 vao =_mesa_lookup_vao_err(ctx, vaobj, false, "glVertexArrayElementBuffer");
1242 if (!vao)
1245 vao = _mesa_lookup_vao(ctx, vaobj);
1269 _mesa_reference_buffer_object(ctx, &vao->IndexBufferObj, bufObj);
1293 struct gl_vertex_array_object *vao;
1303 vao = _mesa_lookup_vao_err(ctx, vaobj, false, "glGetVertexArrayiv");
1304 if (!vao)
1319 param[0] = vao->IndexBufferObj ? vao->IndexBufferObj->Name : 0;