Lines Matching refs:vtx
78 if (exec->vtx.prim_count == 0) { in vbo_exec_wrap_buffers()
79 exec->vtx.copied.nr = 0; in vbo_exec_wrap_buffers()
80 exec->vtx.vert_count = 0; in vbo_exec_wrap_buffers()
81 exec->vtx.buffer_ptr = exec->vtx.buffer_map; in vbo_exec_wrap_buffers()
85 unsigned last = exec->vtx.prim_count - 1; in vbo_exec_wrap_buffers()
86 struct pipe_draw_start_count_bias *last_draw = &exec->vtx.draw[last]; in vbo_exec_wrap_buffers()
87 const bool last_begin = exec->vtx.markers[last].begin; in vbo_exec_wrap_buffers()
91 last_draw->count = exec->vtx.vert_count - last_draw->start; in vbo_exec_wrap_buffers()
93 exec->vtx.markers[last].end = 0; in vbo_exec_wrap_buffers()
97 if (exec->vtx.mode[last] == GL_LINE_LOOP && in vbo_exec_wrap_buffers()
99 !exec->vtx.markers[last].end) { in vbo_exec_wrap_buffers()
101 exec->vtx.mode[last] = GL_LINE_STRIP; in vbo_exec_wrap_buffers()
114 if (exec->vtx.vert_count) in vbo_exec_wrap_buffers()
117 exec->vtx.prim_count = 0; in vbo_exec_wrap_buffers()
118 exec->vtx.copied.nr = 0; in vbo_exec_wrap_buffers()
123 assert(exec->vtx.prim_count == 0); in vbo_exec_wrap_buffers()
126 exec->vtx.mode[0] = ctx->Driver.CurrentExecPrimitive; in vbo_exec_wrap_buffers()
127 exec->vtx.draw[0].start = 0; in vbo_exec_wrap_buffers()
128 exec->vtx.markers[0].begin = 0; in vbo_exec_wrap_buffers()
129 exec->vtx.prim_count++; in vbo_exec_wrap_buffers()
131 if (exec->vtx.copied.nr == last_count) in vbo_exec_wrap_buffers()
132 exec->vtx.markers[0].begin = last_begin; in vbo_exec_wrap_buffers()
152 if (!exec->vtx.buffer_ptr) { in vbo_exec_vtx_wrap()
159 assert(exec->vtx.max_vert - exec->vtx.vert_count > exec->vtx.copied.nr); in vbo_exec_vtx_wrap()
161 numComponents = exec->vtx.copied.nr * exec->vtx.vertex_size; in vbo_exec_vtx_wrap()
162 memcpy(exec->vtx.buffer_ptr, in vbo_exec_vtx_wrap()
163 exec->vtx.copied.buffer, in vbo_exec_vtx_wrap()
165 exec->vtx.buffer_ptr += numComponents; in vbo_exec_vtx_wrap()
166 exec->vtx.vert_count += exec->vtx.copied.nr; in vbo_exec_vtx_wrap()
168 exec->vtx.copied.nr = 0; in vbo_exec_vtx_wrap()
180 GLbitfield64 enabled = exec->vtx.enabled & (~BITFIELD64_BIT(VBO_ATTRIB_POS)); in vbo_exec_copy_to_current()
193 assert(exec->vtx.attr[i].size); in vbo_exec_copy_to_current()
195 if (exec->vtx.attr[i].type == GL_DOUBLE || in vbo_exec_copy_to_current()
196 exec->vtx.attr[i].type == GL_UNSIGNED_INT64_ARB) { in vbo_exec_copy_to_current()
198 memcpy(tmp, exec->vtx.attrptr[i], exec->vtx.attr[i].size * sizeof(GLfloat)); in vbo_exec_copy_to_current()
202 exec->vtx.attr[i].size, in vbo_exec_copy_to_current()
203 exec->vtx.attrptr[i], in vbo_exec_copy_to_current()
204 exec->vtx.attr[i].type); in vbo_exec_copy_to_current()
233 if (exec->vtx.attr[i].type != vbo->current[i].Format.Type || in vbo_exec_copy_to_current()
234 (exec->vtx.attr[i].size >> dmul_shift) != vbo->current[i].Format.Size) { in vbo_exec_copy_to_current()
236 exec->vtx.attr[i].size >> dmul_shift, in vbo_exec_copy_to_current()
237 exec->vtx.attr[i].type); in vbo_exec_copy_to_current()
262 const GLint lastcount = exec->vtx.vert_count; in vbo_exec_wrap_upgrade_vertex()
264 const GLuint old_vtx_size_no_pos = exec->vtx.vertex_size_no_pos; in vbo_exec_wrap_upgrade_vertex()
265 const GLuint old_vtx_size = exec->vtx.vertex_size; /* floats per vertex */ in vbo_exec_wrap_upgrade_vertex()
266 const GLuint oldSize = exec->vtx.attr[attr].size; in vbo_exec_wrap_upgrade_vertex()
271 if (unlikely(!exec->vtx.buffer_ptr)) { in vbo_exec_wrap_upgrade_vertex()
273 assert(exec->vtx.bufferobj); in vbo_exec_wrap_upgrade_vertex()
275 assert(exec->vtx.buffer_ptr); in vbo_exec_wrap_upgrade_vertex()
283 if (unlikely(exec->vtx.copied.nr)) { in vbo_exec_wrap_upgrade_vertex()
288 memcpy(old_attrptr, exec->vtx.attrptr, sizeof(old_attrptr)); in vbo_exec_wrap_upgrade_vertex()
295 !oldSize && lastcount > 8 && exec->vtx.vertex_size) { in vbo_exec_wrap_upgrade_vertex()
302 exec->vtx.attr[attr].size = newSize; in vbo_exec_wrap_upgrade_vertex()
303 exec->vtx.attr[attr].active_size = newSize; in vbo_exec_wrap_upgrade_vertex()
304 exec->vtx.attr[attr].type = newType; in vbo_exec_wrap_upgrade_vertex()
305 exec->vtx.vertex_size += newSize - oldSize; in vbo_exec_wrap_upgrade_vertex()
306 exec->vtx.vertex_size_no_pos = exec->vtx.vertex_size - exec->vtx.attr[0].size; in vbo_exec_wrap_upgrade_vertex()
307 exec->vtx.max_vert = vbo_compute_max_verts(exec); in vbo_exec_wrap_upgrade_vertex()
308 exec->vtx.vert_count = 0; in vbo_exec_wrap_upgrade_vertex()
309 exec->vtx.buffer_ptr = exec->vtx.buffer_map; in vbo_exec_wrap_upgrade_vertex()
310 exec->vtx.enabled |= BITFIELD64_BIT(attr); in vbo_exec_wrap_upgrade_vertex()
314 unsigned offset = exec->vtx.attrptr[attr] - exec->vtx.vertex; in vbo_exec_wrap_upgrade_vertex()
319 fi_type *old_first = exec->vtx.attrptr[attr] + oldSize; in vbo_exec_wrap_upgrade_vertex()
320 fi_type *new_first = exec->vtx.attrptr[attr] + newSize; in vbo_exec_wrap_upgrade_vertex()
321 fi_type *old_last = exec->vtx.vertex + old_vtx_size_no_pos - 1; in vbo_exec_wrap_upgrade_vertex()
322 fi_type *new_last = exec->vtx.vertex + exec->vtx.vertex_size_no_pos - 1; in vbo_exec_wrap_upgrade_vertex()
349 GLbitfield64 enabled = exec->vtx.enabled & in vbo_exec_wrap_upgrade_vertex()
355 if (exec->vtx.attrptr[i] > exec->vtx.attrptr[attr]) in vbo_exec_wrap_upgrade_vertex()
356 exec->vtx.attrptr[i] += size_diff; in vbo_exec_wrap_upgrade_vertex()
361 exec->vtx.attrptr[attr] = exec->vtx.vertex + in vbo_exec_wrap_upgrade_vertex()
362 exec->vtx.vertex_size_no_pos - newSize; in vbo_exec_wrap_upgrade_vertex()
367 exec->vtx.attrptr[0] = exec->vtx.vertex + exec->vtx.vertex_size_no_pos; in vbo_exec_wrap_upgrade_vertex()
374 if (unlikely(exec->vtx.copied.nr)) { in vbo_exec_wrap_upgrade_vertex()
375 fi_type *data = exec->vtx.copied.buffer; in vbo_exec_wrap_upgrade_vertex()
376 fi_type *dest = exec->vtx.buffer_ptr; in vbo_exec_wrap_upgrade_vertex()
378 assert(exec->vtx.buffer_ptr == exec->vtx.buffer_map); in vbo_exec_wrap_upgrade_vertex()
380 for (i = 0 ; i < exec->vtx.copied.nr ; i++) { in vbo_exec_wrap_upgrade_vertex()
381 GLbitfield64 enabled = exec->vtx.enabled; in vbo_exec_wrap_upgrade_vertex()
384 GLuint sz = exec->vtx.attr[j].size; in vbo_exec_wrap_upgrade_vertex()
385 GLint old_offset = old_attrptr[j] - exec->vtx.vertex; in vbo_exec_wrap_upgrade_vertex()
386 GLint new_offset = exec->vtx.attrptr[j] - exec->vtx.vertex; in vbo_exec_wrap_upgrade_vertex()
395 exec->vtx.attr[j].type); in vbo_exec_wrap_upgrade_vertex()
408 dest += exec->vtx.vertex_size; in vbo_exec_wrap_upgrade_vertex()
411 exec->vtx.buffer_ptr = dest; in vbo_exec_wrap_upgrade_vertex()
412 exec->vtx.vert_count += exec->vtx.copied.nr; in vbo_exec_wrap_upgrade_vertex()
413 exec->vtx.copied.nr = 0; in vbo_exec_wrap_upgrade_vertex()
433 if (newSize > exec->vtx.attr[attr].size || in vbo_exec_fixup_vertex()
434 newType != exec->vtx.attr[attr].type) { in vbo_exec_fixup_vertex()
440 else if (newSize < exec->vtx.attr[attr].active_size) { in vbo_exec_fixup_vertex()
443 vbo_get_default_vals_as_union(exec->vtx.attr[attr].type); in vbo_exec_fixup_vertex()
448 for (i = newSize; i <= exec->vtx.attr[attr].size; i++) in vbo_exec_fixup_vertex()
449 exec->vtx.attrptr[attr][i-1] = id[i-1]; in vbo_exec_fixup_vertex()
451 exec->vtx.attr[attr].active_size = newSize; in vbo_exec_fixup_vertex()
501 if (unlikely(exec->vtx.attr[A].active_size != N * sz || \
502 exec->vtx.attr[A].type != T)) { \
506 C *dest = (C *)exec->vtx.attrptr[A]; \
511 assert(exec->vtx.attr[A].type == T); \
517 int size = exec->vtx.attr[0].size; \
521 exec->vtx.attr[0].type != T)) { \
525 uint32_t *dst = (uint32_t *)exec->vtx.buffer_ptr; \
526 uint32_t *src = (uint32_t *)exec->vtx.vertex; \
527 unsigned vertex_size_no_pos = exec->vtx.vertex_size_no_pos; \
562 exec->vtx.buffer_ptr = (fi_type*)dst; \
567 if (unlikely(++exec->vtx.vert_count >= exec->vtx.max_vert)) \
690 if (exec->vtx.vert_count) { in vbo_exec_FlushVertices_internal()
694 if (exec->vtx.vertex_size) { in vbo_exec_FlushVertices_internal()
728 if (exec->vtx.attr[i].active_size != exec->eval.map1[i].sz) in vbo_exec_EvalCoord1f()
733 memcpy(exec->vtx.copied.buffer, exec->vtx.vertex, in vbo_exec_EvalCoord1f()
734 exec->vtx.vertex_size * sizeof(GLfloat)); in vbo_exec_EvalCoord1f()
738 memcpy(exec->vtx.vertex, exec->vtx.copied.buffer, in vbo_exec_EvalCoord1f()
739 exec->vtx.vertex_size * sizeof(GLfloat)); in vbo_exec_EvalCoord1f()
756 if (exec->vtx.attr[i].active_size != exec->eval.map2[i].sz) in vbo_exec_EvalCoord2f()
761 if (exec->vtx.attr[VBO_ATTRIB_NORMAL].active_size != 3) in vbo_exec_EvalCoord2f()
765 memcpy(exec->vtx.copied.buffer, exec->vtx.vertex, in vbo_exec_EvalCoord2f()
766 exec->vtx.vertex_size * sizeof(GLfloat)); in vbo_exec_EvalCoord2f()
770 memcpy(exec->vtx.vertex, exec->vtx.copied.buffer, in vbo_exec_EvalCoord2f()
771 exec->vtx.vertex_size * sizeof(GLfloat)); in vbo_exec_EvalCoord2f()
847 if (exec->vtx.vertex_size && !exec->vtx.attr[VBO_ATTRIB_POS].size) in vbo_exec_Begin()
850 i = exec->vtx.prim_count++; in vbo_exec_Begin()
851 exec->vtx.mode[i] = mode; in vbo_exec_Begin()
852 exec->vtx.draw[i].start = exec->vtx.vert_count; in vbo_exec_Begin()
853 exec->vtx.markers[i].begin = 1; in vbo_exec_Begin()
879 unsigned cur = exec->vtx.prim_count - 1; in try_vbo_merge()
881 assert(exec->vtx.prim_count >= 1); in try_vbo_merge()
883 vbo_try_prim_conversion(&exec->vtx.mode[cur], &exec->vtx.draw[cur].count); in try_vbo_merge()
885 if (exec->vtx.prim_count >= 2) { in try_vbo_merge()
890 exec->vtx.mode[prev], in try_vbo_merge()
891 exec->vtx.mode[cur], in try_vbo_merge()
892 exec->vtx.draw[prev].start, in try_vbo_merge()
893 exec->vtx.draw[cur].start, in try_vbo_merge()
894 &exec->vtx.draw[prev].count, in try_vbo_merge()
895 exec->vtx.draw[cur].count, in try_vbo_merge()
897 &exec->vtx.markers[prev].end, in try_vbo_merge()
898 exec->vtx.markers[cur].begin, in try_vbo_merge()
899 exec->vtx.markers[cur].end)) in try_vbo_merge()
900 exec->vtx.prim_count--; /* drop the last primitive */ in try_vbo_merge()
928 if (exec->vtx.prim_count > 0) { in vbo_exec_End()
930 unsigned last = exec->vtx.prim_count - 1; in vbo_exec_End()
931 struct pipe_draw_start_count_bias *last_draw = &exec->vtx.draw[last]; in vbo_exec_End()
932 unsigned count = exec->vtx.vert_count - last_draw->start; in vbo_exec_End()
935 exec->vtx.markers[last].end = 1; in vbo_exec_End()
941 if (exec->vtx.mode[last] == GL_LINE_LOOP && in vbo_exec_End()
942 exec->vtx.markers[last].begin == 0) { in vbo_exec_End()
946 const fi_type *src = exec->vtx.buffer_map + in vbo_exec_End()
947 last_draw->start * exec->vtx.vertex_size; in vbo_exec_End()
948 fi_type *dst = exec->vtx.buffer_map + in vbo_exec_End()
949 exec->vtx.vert_count * exec->vtx.vertex_size; in vbo_exec_End()
952 memcpy(dst, src, exec->vtx.vertex_size * sizeof(fi_type)); in vbo_exec_End()
956 exec->vtx.mode[last] = GL_LINE_STRIP; in vbo_exec_End()
961 exec->vtx.vert_count++; in vbo_exec_End()
962 exec->vtx.buffer_ptr += exec->vtx.vertex_size; in vbo_exec_End()
970 if (exec->vtx.prim_count == VBO_MAX_PRIM) in vbo_exec_End()
1018 while (exec->vtx.enabled) { in vbo_reset_all_attr()
1019 const int i = u_bit_scan64(&exec->vtx.enabled); in vbo_reset_all_attr()
1022 exec->vtx.attr[i].size = 0; in vbo_reset_all_attr()
1023 exec->vtx.attr[i].type = GL_FLOAT; in vbo_reset_all_attr()
1024 exec->vtx.attr[i].active_size = 0; in vbo_reset_all_attr()
1025 exec->vtx.attrptr[i] = NULL; in vbo_reset_all_attr()
1028 exec->vtx.vertex_size = 0; in vbo_reset_all_attr()
1040 exec->vtx.bufferobj = ctx->Driver.NewBufferObject(ctx, IMM_BUFFER_NAME); in vbo_exec_vtx_init()
1043 exec->vtx.bufferobj = NULL; in vbo_exec_vtx_init()
1044 exec->vtx.buffer_map = in vbo_exec_vtx_init()
1046 exec->vtx.buffer_ptr = exec->vtx.buffer_map; in vbo_exec_vtx_init()
1052 exec->vtx.enabled = u_bit_consecutive64(0, VBO_ATTRIB_MAX); /* reset all */ in vbo_exec_vtx_init()
1055 exec->vtx.info.instance_count = 1; in vbo_exec_vtx_init()
1056 exec->vtx.info.max_index = ~0; in vbo_exec_vtx_init()
1068 if (exec->vtx.buffer_map) { in vbo_exec_vtx_destroy()
1069 assert(!exec->vtx.bufferobj || in vbo_exec_vtx_destroy()
1070 exec->vtx.bufferobj->Name == IMM_BUFFER_NAME); in vbo_exec_vtx_destroy()
1071 if (!exec->vtx.bufferobj) { in vbo_exec_vtx_destroy()
1072 align_free(exec->vtx.buffer_map); in vbo_exec_vtx_destroy()
1073 exec->vtx.buffer_map = NULL; in vbo_exec_vtx_destroy()
1074 exec->vtx.buffer_ptr = NULL; in vbo_exec_vtx_destroy()
1080 if (exec->vtx.bufferobj && in vbo_exec_vtx_destroy()
1081 _mesa_bufferobj_mapped(exec->vtx.bufferobj, MAP_INTERNAL)) { in vbo_exec_vtx_destroy()
1082 ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj, MAP_INTERNAL); in vbo_exec_vtx_destroy()
1084 _mesa_reference_buffer_object(ctx, &exec->vtx.bufferobj, NULL); in vbo_exec_vtx_destroy()