Lines Matching refs:vao
38 _mesa_glthread_reset_vao(struct glthread_vao *vao) in _mesa_glthread_reset_vao() argument
49 vao->CurrentElementBufferName = 0; in _mesa_glthread_reset_vao()
50 vao->UserEnabled = 0; in _mesa_glthread_reset_vao()
51 vao->Enabled = 0; in _mesa_glthread_reset_vao()
52 vao->BufferEnabled = 0; in _mesa_glthread_reset_vao()
53 vao->UserPointerMask = 0; in _mesa_glthread_reset_vao()
54 vao->NonZeroDivisorMask = 0; in _mesa_glthread_reset_vao()
56 for (unsigned i = 0; i < ARRAY_SIZE(vao->Attrib); i++) { in _mesa_glthread_reset_vao()
61 vao->Attrib[i].ElementSize = elem_size; in _mesa_glthread_reset_vao()
62 vao->Attrib[i].RelativeOffset = 0; in _mesa_glthread_reset_vao()
63 vao->Attrib[i].BufferIndex = i; in _mesa_glthread_reset_vao()
64 vao->Attrib[i].Stride = elem_size; in _mesa_glthread_reset_vao()
65 vao->Attrib[i].Divisor = 0; in _mesa_glthread_reset_vao()
66 vao->Attrib[i].EnabledAttribCount = 0; in _mesa_glthread_reset_vao()
67 vao->Attrib[i].Pointer = NULL; in _mesa_glthread_reset_vao()
75 struct glthread_vao *vao; in lookup_vao() local
81 vao = glthread->LastLookedUpVAO; in lookup_vao()
83 vao = _mesa_HashLookupLocked(glthread->VAOs, id); in lookup_vao()
84 if (!vao) in lookup_vao()
87 glthread->LastLookedUpVAO = vao; in lookup_vao()
90 return vao; in lookup_vao()
101 struct glthread_vao *vao = lookup_vao(ctx, id); in _mesa_glthread_BindVertexArray() local
103 if (vao) in _mesa_glthread_BindVertexArray()
104 glthread->CurrentVAO = vao; in _mesa_glthread_BindVertexArray()
122 struct glthread_vao *vao = lookup_vao(ctx, ids[i]); in _mesa_glthread_DeleteVertexArrays() local
123 if (!vao) in _mesa_glthread_DeleteVertexArrays()
130 if (glthread->CurrentVAO == vao) in _mesa_glthread_DeleteVertexArrays()
133 if (glthread->LastLookedUpVAO == vao) in _mesa_glthread_DeleteVertexArrays()
137 _mesa_HashRemoveLocked(glthread->VAOs, vao->Name); in _mesa_glthread_DeleteVertexArrays()
138 free(vao); in _mesa_glthread_DeleteVertexArrays()
154 struct glthread_vao *vao; in _mesa_glthread_GenVertexArrays() local
156 vao = calloc(1, sizeof(*vao)); in _mesa_glthread_GenVertexArrays()
157 if (!vao) in _mesa_glthread_GenVertexArrays()
160 vao->Name = id; in _mesa_glthread_GenVertexArrays()
161 _mesa_glthread_reset_vao(vao); in _mesa_glthread_GenVertexArrays()
162 _mesa_HashInsertLocked(glthread->VAOs, id, vao, true); in _mesa_glthread_GenVertexArrays()
217 enable_buffer(struct glthread_vao *vao, unsigned binding_index) in enable_buffer() argument
219 int attrib_count = ++vao->Attrib[binding_index].EnabledAttribCount; in enable_buffer()
222 vao->BufferEnabled |= 1 << binding_index; in enable_buffer()
224 vao->BufferInterleaved |= 1 << binding_index; in enable_buffer()
228 disable_buffer(struct glthread_vao *vao, unsigned binding_index) in disable_buffer() argument
230 int attrib_count = --vao->Attrib[binding_index].EnabledAttribCount; in disable_buffer()
233 vao->BufferEnabled &= ~(1 << binding_index); in disable_buffer()
235 vao->BufferInterleaved &= ~(1 << binding_index); in disable_buffer()
254 struct glthread_vao *vao = get_vao(ctx, vaobj); in _mesa_glthread_ClientState() local
255 if (!vao) in _mesa_glthread_ClientState()
260 if (enable && !(vao->UserEnabled & attrib_bit)) { in _mesa_glthread_ClientState()
261 vao->UserEnabled |= attrib_bit; in _mesa_glthread_ClientState()
267 if (!(vao->UserEnabled & VERT_BIT_GENERIC0)) in _mesa_glthread_ClientState()
268 enable_buffer(vao, vao->Attrib[VERT_ATTRIB_POS].BufferIndex); in _mesa_glthread_ClientState()
270 enable_buffer(vao, vao->Attrib[attrib].BufferIndex); in _mesa_glthread_ClientState()
272 if (attrib == VERT_ATTRIB_GENERIC0 && vao->UserEnabled & VERT_BIT_POS) in _mesa_glthread_ClientState()
273 disable_buffer(vao, vao->Attrib[VERT_ATTRIB_POS].BufferIndex); in _mesa_glthread_ClientState()
275 } else if (!enable && (vao->UserEnabled & attrib_bit)) { in _mesa_glthread_ClientState()
276 vao->UserEnabled &= ~attrib_bit; in _mesa_glthread_ClientState()
282 if (!(vao->UserEnabled & VERT_BIT_GENERIC0)) in _mesa_glthread_ClientState()
283 disable_buffer(vao, vao->Attrib[VERT_ATTRIB_POS].BufferIndex); in _mesa_glthread_ClientState()
285 disable_buffer(vao, vao->Attrib[attrib].BufferIndex); in _mesa_glthread_ClientState()
287 if (attrib == VERT_ATTRIB_GENERIC0 && vao->UserEnabled & VERT_BIT_POS) in _mesa_glthread_ClientState()
288 enable_buffer(vao, vao->Attrib[VERT_ATTRIB_POS].BufferIndex); in _mesa_glthread_ClientState()
293 vao->Enabled = vao->UserEnabled; in _mesa_glthread_ClientState()
294 if (vao->Enabled & VERT_BIT_GENERIC0) in _mesa_glthread_ClientState()
295 vao->Enabled &= ~VERT_BIT_POS; in _mesa_glthread_ClientState()
299 set_attrib_binding(struct glthread_state *glthread, struct glthread_vao *vao, in set_attrib_binding() argument
302 unsigned old_binding_index = vao->Attrib[attrib].BufferIndex; in set_attrib_binding()
305 vao->Attrib[attrib].BufferIndex = new_binding_index; in set_attrib_binding()
307 if (vao->Enabled & (1u << attrib)) { in set_attrib_binding()
309 enable_buffer(vao, new_binding_index); in set_attrib_binding()
310 disable_buffer(vao, old_binding_index); in set_attrib_binding()
321 struct glthread_vao *vao = get_vao(ctx, vaobj); in _mesa_glthread_AttribDivisor() local
322 if (!vao) in _mesa_glthread_AttribDivisor()
325 vao->Attrib[attrib].Divisor = divisor; in _mesa_glthread_AttribDivisor()
327 set_attrib_binding(&ctx->GLThread, vao, attrib, attrib); in _mesa_glthread_AttribDivisor()
330 vao->NonZeroDivisorMask |= 1u << attrib; in _mesa_glthread_AttribDivisor()
332 vao->NonZeroDivisorMask &= ~(1u << attrib); in _mesa_glthread_AttribDivisor()
336 attrib_pointer(struct glthread_state *glthread, struct glthread_vao *vao, in attrib_pointer() argument
346 vao->Attrib[attrib].ElementSize = elem_size; in attrib_pointer()
347 vao->Attrib[attrib].Stride = stride ? stride : elem_size; in attrib_pointer()
348 vao->Attrib[attrib].Pointer = pointer; in attrib_pointer()
349 vao->Attrib[attrib].RelativeOffset = 0; in attrib_pointer()
351 set_attrib_binding(glthread, vao, attrib, attrib); in attrib_pointer()
354 vao->UserPointerMask &= ~(1u << attrib); in attrib_pointer()
356 vao->UserPointerMask |= 1u << attrib; in attrib_pointer()
378 struct glthread_vao *vao; in _mesa_glthread_DSAAttribPointer() local
380 vao = lookup_vao(ctx, vaobj); in _mesa_glthread_DSAAttribPointer()
381 if (!vao) in _mesa_glthread_DSAAttribPointer()
384 attrib_pointer(glthread, vao, buffer, attrib, size, type, stride, in _mesa_glthread_DSAAttribPointer()
389 attrib_format(struct glthread_state *glthread, struct glthread_vao *vao, in attrib_format() argument
399 vao->Attrib[i].ElementSize = elem_size; in attrib_format()
400 vao->Attrib[i].RelativeOffset = relativeoffset; in attrib_format()
419 struct glthread_vao *vao = lookup_vao(ctx, vaobj); in _mesa_glthread_DSAAttribFormat() local
421 if (vao) in _mesa_glthread_DSAAttribFormat()
422 attrib_format(glthread, vao, attribindex, size, type, relativeoffset); in _mesa_glthread_DSAAttribFormat()
426 bind_vertex_buffer(struct glthread_state *glthread, struct glthread_vao *vao, in bind_vertex_buffer() argument
434 vao->Attrib[i].Pointer = (const void*)offset; in bind_vertex_buffer()
435 vao->Attrib[i].Stride = stride; in bind_vertex_buffer()
438 vao->UserPointerMask &= ~(1u << i); in bind_vertex_buffer()
440 vao->UserPointerMask |= 1u << i; in bind_vertex_buffer()
459 struct glthread_vao *vao = lookup_vao(ctx, vaobj); in _mesa_glthread_DSAVertexBuffer() local
461 if (vao) in _mesa_glthread_DSAVertexBuffer()
462 bind_vertex_buffer(glthread, vao, bindingindex, buffer, offset, stride); in _mesa_glthread_DSAVertexBuffer()
473 struct glthread_vao *vao; in _mesa_glthread_DSAVertexBuffers() local
475 vao = lookup_vao(ctx, vaobj); in _mesa_glthread_DSAVertexBuffers()
476 if (!vao) in _mesa_glthread_DSAVertexBuffers()
480 bind_vertex_buffer(glthread, vao, first + i, buffers[i], offsets[i], in _mesa_glthread_DSAVertexBuffers()
486 binding_divisor(struct glthread_state *glthread, struct glthread_vao *vao, in binding_divisor() argument
493 vao->Attrib[i].Divisor = divisor; in binding_divisor()
496 vao->NonZeroDivisorMask |= 1u << i; in binding_divisor()
498 vao->NonZeroDivisorMask &= ~(1u << i); in binding_divisor()
515 struct glthread_vao *vao = lookup_vao(ctx, vaobj); in _mesa_glthread_DSABindingDivisor() local
517 if (vao) in _mesa_glthread_DSABindingDivisor()
518 binding_divisor(glthread, vao, bindingindex, divisor); in _mesa_glthread_DSABindingDivisor()
546 struct glthread_vao *vao = lookup_vao(ctx, vaobj); in _mesa_glthread_DSAAttribBinding() local
547 if (vao) { in _mesa_glthread_DSAAttribBinding()
548 set_attrib_binding(glthread, vao, in _mesa_glthread_DSAAttribBinding()
558 struct glthread_vao *vao = lookup_vao(ctx, vaobj); in _mesa_glthread_DSAElementBuffer() local
560 if (vao) in _mesa_glthread_DSAElementBuffer()
561 vao->CurrentElementBufferName = buffer; in _mesa_glthread_DSAElementBuffer()
611 struct glthread_vao *vao = NULL; in _mesa_glthread_PopClientAttrib() local
613 vao = lookup_vao(ctx, top->VAO.Name); in _mesa_glthread_PopClientAttrib()
614 if (!vao) in _mesa_glthread_PopClientAttrib()
625 if (!vao) in _mesa_glthread_PopClientAttrib()
626 vao = &glthread->DefaultVAO; in _mesa_glthread_PopClientAttrib()
628 assert(top->VAO.Name == vao->Name); in _mesa_glthread_PopClientAttrib()
629 *vao = top->VAO; /* Copy all fields. */ in _mesa_glthread_PopClientAttrib()
630 glthread->CurrentVAO = vao; in _mesa_glthread_PopClientAttrib()