Lines Matching +full:attrib +full:-
43 init_attrib(struct glthread_attrib *attrib, int index, int size, GLenum type) in init_attrib() argument
45 attrib->Format = MESA_PACK_VFORMAT(type, size, 0, 0, 0); in init_attrib()
46 attrib->ElementSize = element_size(attrib->Format); in init_attrib()
47 attrib->RelativeOffset = 0; in init_attrib()
48 attrib->BufferIndex = index; in init_attrib()
49 attrib->Stride = attrib->ElementSize; in init_attrib()
50 attrib->Divisor = 0; in init_attrib()
51 attrib->EnabledAttribCount = 0; in init_attrib()
52 attrib->Pointer = NULL; in init_attrib()
58 vao->CurrentElementBufferName = 0; in _mesa_glthread_reset_vao()
59 vao->UserEnabled = 0; in _mesa_glthread_reset_vao()
60 vao->Enabled = 0; in _mesa_glthread_reset_vao()
61 vao->BufferEnabled = 0; in _mesa_glthread_reset_vao()
62 vao->UserPointerMask = 0; in _mesa_glthread_reset_vao()
63 vao->NonNullPointerMask = 0; in _mesa_glthread_reset_vao()
64 vao->NonZeroDivisorMask = 0; in _mesa_glthread_reset_vao()
66 for (unsigned i = 0; i < ARRAY_SIZE(vao->Attrib); i++) { in _mesa_glthread_reset_vao()
69 init_attrib(&vao->Attrib[i], i, 3, GL_FLOAT); in _mesa_glthread_reset_vao()
72 init_attrib(&vao->Attrib[i], i, 3, GL_FLOAT); in _mesa_glthread_reset_vao()
75 init_attrib(&vao->Attrib[i], i, 1, GL_FLOAT); in _mesa_glthread_reset_vao()
78 init_attrib(&vao->Attrib[i], i, 1, GL_FLOAT); in _mesa_glthread_reset_vao()
81 init_attrib(&vao->Attrib[i], i, 1, GL_UNSIGNED_BYTE); in _mesa_glthread_reset_vao()
84 init_attrib(&vao->Attrib[i], i, 1, GL_FLOAT); in _mesa_glthread_reset_vao()
87 init_attrib(&vao->Attrib[i], i, 4, GL_FLOAT); in _mesa_glthread_reset_vao()
96 struct glthread_state *glthread = &ctx->GLThread; in lookup_vao()
101 if (glthread->LastLookedUpVAO && in lookup_vao()
102 glthread->LastLookedUpVAO->Name == id) { in lookup_vao()
103 vao = glthread->LastLookedUpVAO; in lookup_vao()
105 vao = _mesa_HashLookupLocked(&glthread->VAOs, id); in lookup_vao()
109 glthread->LastLookedUpVAO = vao; in lookup_vao()
118 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_BindVertexArray()
121 glthread->CurrentVAO = &glthread->DefaultVAO; in _mesa_glthread_BindVertexArray()
126 glthread->CurrentVAO = vao; in _mesa_glthread_BindVertexArray()
134 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_DeleteVertexArrays()
152 if (glthread->CurrentVAO == vao) in _mesa_glthread_DeleteVertexArrays()
153 glthread->CurrentVAO = &glthread->DefaultVAO; in _mesa_glthread_DeleteVertexArrays()
155 if (glthread->LastLookedUpVAO == vao) in _mesa_glthread_DeleteVertexArrays()
156 glthread->LastLookedUpVAO = NULL; in _mesa_glthread_DeleteVertexArrays()
158 /* The ID is immediately freed for re-use */ in _mesa_glthread_DeleteVertexArrays()
159 _mesa_HashRemoveLocked(&glthread->VAOs, vao->Name); in _mesa_glthread_DeleteVertexArrays()
168 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_GenVertexArrays()
182 vao->Name = id; in _mesa_glthread_GenVertexArrays()
184 _mesa_HashInsertLocked(&glthread->VAOs, id, vao); in _mesa_glthread_GenVertexArrays()
188 /* If vaobj is NULL, use the currently-bound VAO. */
195 return ctx->GLThread.CurrentVAO; in get_vao()
201 struct glthread_state *glthread = &ctx->GLThread; in update_primitive_restart()
203 glthread->_PrimitiveRestart = glthread->PrimitiveRestart || in update_primitive_restart()
204 glthread->PrimitiveRestartFixedIndex; in update_primitive_restart()
205 glthread->_RestartIndex[0] = in update_primitive_restart()
206 _mesa_get_prim_restart_index(glthread->PrimitiveRestartFixedIndex, in update_primitive_restart()
207 glthread->RestartIndex, 1); in update_primitive_restart()
208 glthread->_RestartIndex[1] = in update_primitive_restart()
209 _mesa_get_prim_restart_index(glthread->PrimitiveRestartFixedIndex, in update_primitive_restart()
210 glthread->RestartIndex, 2); in update_primitive_restart()
211 glthread->_RestartIndex[3] = in update_primitive_restart()
212 _mesa_get_prim_restart_index(glthread->PrimitiveRestartFixedIndex, in update_primitive_restart()
213 glthread->RestartIndex, 4); in update_primitive_restart()
221 ctx->GLThread.PrimitiveRestart = value; in _mesa_glthread_set_prim_restart()
224 ctx->GLThread.PrimitiveRestartFixedIndex = value; in _mesa_glthread_set_prim_restart()
234 ctx->GLThread.RestartIndex = index; in _mesa_glthread_PrimitiveRestartIndex()
241 int attrib_count = ++vao->Attrib[binding_index].EnabledAttribCount; in enable_buffer()
244 vao->BufferEnabled |= 1 << binding_index; in enable_buffer()
246 vao->BufferInterleaved |= 1 << binding_index; in enable_buffer()
252 int attrib_count = --vao->Attrib[binding_index].EnabledAttribCount; in disable_buffer()
255 vao->BufferEnabled &= ~(1 << binding_index); in disable_buffer()
257 vao->BufferInterleaved &= ~(1 << binding_index); in disable_buffer()
264 gl_vert_attrib attrib, bool enable) in _mesa_glthread_ClientState() argument
267 if (attrib == VERT_ATTRIB_PRIMITIVE_RESTART_NV) { in _mesa_glthread_ClientState()
268 ctx->GLThread.PrimitiveRestart = enable; in _mesa_glthread_ClientState()
273 if (attrib >= VERT_ATTRIB_MAX) in _mesa_glthread_ClientState()
280 const unsigned attrib_bit = 1u << attrib; in _mesa_glthread_ClientState()
282 if (enable && !(vao->UserEnabled & attrib_bit)) { in _mesa_glthread_ClientState()
283 vao->UserEnabled |= attrib_bit; in _mesa_glthread_ClientState()
288 if (attrib == VERT_ATTRIB_POS) { in _mesa_glthread_ClientState()
289 if (!(vao->UserEnabled & VERT_BIT_GENERIC0)) in _mesa_glthread_ClientState()
290 enable_buffer(vao, vao->Attrib[VERT_ATTRIB_POS].BufferIndex); in _mesa_glthread_ClientState()
292 enable_buffer(vao, vao->Attrib[attrib].BufferIndex); in _mesa_glthread_ClientState()
294 if (attrib == VERT_ATTRIB_GENERIC0 && vao->UserEnabled & VERT_BIT_POS) in _mesa_glthread_ClientState()
295 disable_buffer(vao, vao->Attrib[VERT_ATTRIB_POS].BufferIndex); in _mesa_glthread_ClientState()
297 } else if (!enable && (vao->UserEnabled & attrib_bit)) { in _mesa_glthread_ClientState()
298 vao->UserEnabled &= ~attrib_bit; in _mesa_glthread_ClientState()
303 if (attrib == VERT_ATTRIB_POS) { in _mesa_glthread_ClientState()
304 if (!(vao->UserEnabled & VERT_BIT_GENERIC0)) in _mesa_glthread_ClientState()
305 disable_buffer(vao, vao->Attrib[VERT_ATTRIB_POS].BufferIndex); in _mesa_glthread_ClientState()
307 disable_buffer(vao, vao->Attrib[attrib].BufferIndex); in _mesa_glthread_ClientState()
309 if (attrib == VERT_ATTRIB_GENERIC0 && vao->UserEnabled & VERT_BIT_POS) in _mesa_glthread_ClientState()
310 enable_buffer(vao, vao->Attrib[VERT_ATTRIB_POS].BufferIndex); in _mesa_glthread_ClientState()
315 vao->Enabled = vao->UserEnabled; in _mesa_glthread_ClientState()
316 if (vao->Enabled & VERT_BIT_GENERIC0) in _mesa_glthread_ClientState()
317 vao->Enabled &= ~VERT_BIT_POS; in _mesa_glthread_ClientState()
322 gl_vert_attrib attrib, unsigned new_binding_index) in set_attrib_binding() argument
324 unsigned old_binding_index = vao->Attrib[attrib].BufferIndex; in set_attrib_binding()
327 vao->Attrib[attrib].BufferIndex = new_binding_index; in set_attrib_binding()
329 if (vao->Enabled & (1u << attrib)) { in set_attrib_binding()
338 gl_vert_attrib attrib, GLuint divisor) in _mesa_glthread_AttribDivisor() argument
340 if (attrib >= VERT_ATTRIB_MAX) in _mesa_glthread_AttribDivisor()
347 vao->Attrib[attrib].Divisor = divisor; in _mesa_glthread_AttribDivisor()
349 set_attrib_binding(&ctx->GLThread, vao, attrib, attrib); in _mesa_glthread_AttribDivisor()
352 vao->NonZeroDivisorMask |= 1u << attrib; in _mesa_glthread_AttribDivisor()
354 vao->NonZeroDivisorMask &= ~(1u << attrib); in _mesa_glthread_AttribDivisor()
359 GLuint buffer, gl_vert_attrib attrib, in attrib_pointer() argument
363 if (attrib >= VERT_ATTRIB_MAX) in attrib_pointer()
368 vao->Attrib[attrib].Format = format; in attrib_pointer()
369 vao->Attrib[attrib].ElementSize = elem_size; in attrib_pointer()
370 vao->Attrib[attrib].Stride = stride ? stride : elem_size; in attrib_pointer()
371 vao->Attrib[attrib].Pointer = pointer; in attrib_pointer()
372 vao->Attrib[attrib].RelativeOffset = 0; in attrib_pointer()
374 set_attrib_binding(glthread, vao, attrib, attrib); in attrib_pointer()
377 vao->UserPointerMask &= ~(1u << attrib); in attrib_pointer()
379 vao->UserPointerMask |= 1u << attrib; in attrib_pointer()
382 vao->NonNullPointerMask |= 1u << attrib; in attrib_pointer()
384 vao->NonNullPointerMask &= ~(1u << attrib); in attrib_pointer()
388 _mesa_glthread_AttribPointer(struct gl_context *ctx, gl_vert_attrib attrib, in _mesa_glthread_AttribPointer() argument
392 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_AttribPointer()
394 attrib_pointer(glthread, glthread->CurrentVAO, in _mesa_glthread_AttribPointer()
395 glthread->CurrentArrayBufferName, in _mesa_glthread_AttribPointer()
396 attrib, format, stride, pointer); in _mesa_glthread_AttribPointer()
401 GLuint buffer, gl_vert_attrib attrib, in _mesa_glthread_DSAAttribPointer() argument
405 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_DSAAttribPointer()
412 attrib_pointer(glthread, vao, buffer, attrib, format, stride, in _mesa_glthread_DSAAttribPointer()
427 vao->Attrib[i].Format = format; in attrib_format()
428 vao->Attrib[i].ElementSize = elem_size; in attrib_format()
429 vao->Attrib[i].RelativeOffset = relativeoffset; in attrib_format()
437 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_AttribFormat()
439 attrib_format(glthread, glthread->CurrentVAO, attribindex, format, in _mesa_glthread_AttribFormat()
449 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_DSAAttribFormat()
465 vao->Attrib[i].Pointer = (const void*)offset; in bind_vertex_buffer()
466 vao->Attrib[i].Stride = stride; in bind_vertex_buffer()
469 vao->UserPointerMask &= ~(1u << i); in bind_vertex_buffer()
471 vao->UserPointerMask |= 1u << i; in bind_vertex_buffer()
474 vao->NonNullPointerMask |= 1u << i; in bind_vertex_buffer()
476 vao->NonNullPointerMask &= ~(1u << i); in bind_vertex_buffer()
483 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_VertexBuffer()
485 bind_vertex_buffer(glthread, glthread->CurrentVAO, bindingindex, buffer, in _mesa_glthread_VertexBuffer()
494 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_DSAVertexBuffer()
508 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_DSAVertexBuffers()
529 vao->Attrib[i].Divisor = divisor; in binding_divisor()
532 vao->NonZeroDivisorMask |= 1u << i; in binding_divisor()
534 vao->NonZeroDivisorMask &= ~(1u << i); in binding_divisor()
541 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_BindingDivisor()
543 binding_divisor(glthread, glthread->CurrentVAO, bindingindex, divisor); in _mesa_glthread_BindingDivisor()
550 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_DSABindingDivisor()
561 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_AttribBinding()
567 set_attrib_binding(glthread, glthread->CurrentVAO, in _mesa_glthread_AttribBinding()
576 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_DSAAttribBinding()
597 vao->CurrentElementBufferName = buffer; in _mesa_glthread_DSAElementBuffer()
604 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_PushClientAttrib()
606 if (glthread->ClientAttribStackTop >= MAX_CLIENT_ATTRIB_STACK_DEPTH) in _mesa_glthread_PushClientAttrib()
610 &glthread->ClientAttribStack[glthread->ClientAttribStackTop]; in _mesa_glthread_PushClientAttrib()
613 top->VAO = *glthread->CurrentVAO; in _mesa_glthread_PushClientAttrib()
614 top->CurrentArrayBufferName = glthread->CurrentArrayBufferName; in _mesa_glthread_PushClientAttrib()
615 top->ClientActiveTexture = glthread->ClientActiveTexture; in _mesa_glthread_PushClientAttrib()
616 top->RestartIndex = glthread->RestartIndex; in _mesa_glthread_PushClientAttrib()
617 top->PrimitiveRestart = glthread->PrimitiveRestart; in _mesa_glthread_PushClientAttrib()
618 top->PrimitiveRestartFixedIndex = glthread->PrimitiveRestartFixedIndex; in _mesa_glthread_PushClientAttrib()
619 top->Valid = true; in _mesa_glthread_PushClientAttrib()
621 top->Valid = false; in _mesa_glthread_PushClientAttrib()
624 glthread->ClientAttribStackTop++; in _mesa_glthread_PushClientAttrib()
633 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_PopClientAttrib()
635 if (glthread->ClientAttribStackTop == 0) in _mesa_glthread_PopClientAttrib()
638 glthread->ClientAttribStackTop--; in _mesa_glthread_PopClientAttrib()
641 &glthread->ClientAttribStack[glthread->ClientAttribStackTop]; in _mesa_glthread_PopClientAttrib()
643 if (!top->Valid) in _mesa_glthread_PopClientAttrib()
648 if (top->VAO.Name) { in _mesa_glthread_PopClientAttrib()
649 vao = lookup_vao(ctx, top->VAO.Name); in _mesa_glthread_PopClientAttrib()
655 glthread->CurrentArrayBufferName = top->CurrentArrayBufferName; in _mesa_glthread_PopClientAttrib()
656 glthread->ClientActiveTexture = top->ClientActiveTexture; in _mesa_glthread_PopClientAttrib()
657 glthread->RestartIndex = top->RestartIndex; in _mesa_glthread_PopClientAttrib()
658 glthread->PrimitiveRestart = top->PrimitiveRestart; in _mesa_glthread_PopClientAttrib()
659 glthread->PrimitiveRestartFixedIndex = top->PrimitiveRestartFixedIndex; in _mesa_glthread_PopClientAttrib()
662 vao = &glthread->DefaultVAO; in _mesa_glthread_PopClientAttrib()
664 assert(top->VAO.Name == vao->Name); in _mesa_glthread_PopClientAttrib()
665 *vao = top->VAO; /* Copy all fields. */ in _mesa_glthread_PopClientAttrib()
666 glthread->CurrentVAO = vao; in _mesa_glthread_PopClientAttrib()
672 struct glthread_state *glthread = &ctx->GLThread; in _mesa_glthread_ClientAttribDefault()
677 glthread->CurrentArrayBufferName = 0; in _mesa_glthread_ClientAttribDefault()
678 glthread->ClientActiveTexture = 0; in _mesa_glthread_ClientAttribDefault()
679 glthread->RestartIndex = 0; in _mesa_glthread_ClientAttribDefault()
680 glthread->PrimitiveRestart = false; in _mesa_glthread_ClientAttribDefault()
681 glthread->PrimitiveRestartFixedIndex = false; in _mesa_glthread_ClientAttribDefault()
682 glthread->CurrentVAO = &glthread->DefaultVAO; in _mesa_glthread_ClientAttribDefault()
683 _mesa_glthread_reset_vao(glthread->CurrentVAO); in _mesa_glthread_ClientAttribDefault()
691 unsigned tex = VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture); in _mesa_glthread_InterleavedArrays()
749 assert(ctx->API != API_OPENGL_CORE); in unbind_uploaded_vbos()
751 for (unsigned i = 0; i < ARRAY_SIZE(vao->BufferBinding); i++) { in unbind_uploaded_vbos()
752 if (vao->BufferBinding[i].BufferObj && in unbind_uploaded_vbos()
753 vao->BufferBinding[i].BufferObj->GLThreadInternal) { in unbind_uploaded_vbos()
759 vao->BufferBinding[i].Stride, false, false); in unbind_uploaded_vbos()
764 /* Unbind VBOs in all VAOs that glthread bound for non-VBO vertex uploads
770 assert(ctx->API != API_OPENGL_CORE); in _mesa_glthread_unbind_uploaded_vbos()
773 _mesa_HashWalk(&ctx->Array.Objects, unbind_uploaded_vbos, ctx); in _mesa_glthread_unbind_uploaded_vbos()
774 unbind_uploaded_vbos(ctx->Array.DefaultVAO, ctx); in _mesa_glthread_unbind_uploaded_vbos()