Lines Matching defs:exec

41 vbo_exec_debug_verts(struct vbo_exec_context *exec)
43 GLuint count = exec->vtx.vert_count;
49 exec->vtx.prim_count,
50 exec->vtx.vertex_size);
52 for (i = 0 ; i < exec->vtx.prim_count ; i++) {
55 _mesa_lookup_prim_by_nr(exec->vtx.mode[i]),
56 exec->vtx.draw[i].start,
57 exec->vtx.draw[i].start + exec->vtx.draw[i].count,
58 exec->vtx.markers[i].begin ? "BEGIN" : "(wrap)",
59 exec->vtx.markers[i].end ? "END" : "(wrap)");
65 vbo_exec_copy_vertices(struct vbo_exec_context *exec)
67 struct gl_context *ctx = gl_context_from_vbo_exec(exec);
68 const GLuint sz = exec->vtx.vertex_size;
69 fi_type *dst = exec->vtx.copied.buffer;
70 unsigned last = exec->vtx.prim_count - 1;
71 unsigned start = exec->vtx.draw[last].start;
72 const fi_type *src = exec->vtx.buffer_map + start * sz;
76 &exec->vtx.draw[last].count,
77 exec->vtx.markers[last].begin,
90 struct vbo_exec_context *exec = &vbo->exec;
93 if (exec->vtx.bufferobj) {
94 assert(exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Pointer);
95 buffer_offset = exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Offset +
96 exec->vtx.buffer_offset;
99 buffer_offset = (GLbyte *)exec->vtx.buffer_map - (GLbyte *)NULL;
109 vao_enabled = _vbo_get_vao_enabled_from_vbo(mode, exec->vtx.enabled);
118 const GLuint stride = exec->vtx.vertex_size*sizeof(GLfloat);
119 _mesa_bind_vertex_buffer(ctx, vao, 0, exec->vtx.bufferobj, buffer_offset,
132 const GLubyte size = exec->vtx.attr[vbo_attr].size;
133 const GLenum16 type = exec->vtx.attr[vbo_attr].type;
134 const GLuint offset = (GLuint)((GLbyte *)exec->vtx.attrptr[vbo_attr] -
135 (GLbyte *)exec->vtx.vertex);
147 assert(!exec->vtx.bufferobj ||
158 vbo_exec_vtx_unmap(struct vbo_exec_context *exec)
160 if (exec->vtx.bufferobj) {
161 struct gl_context *ctx = gl_context_from_vbo_exec(exec);
164 GLintptr offset = exec->vtx.buffer_used -
165 exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Offset;
166 GLsizeiptr length = (exec->vtx.buffer_ptr - exec->vtx.buffer_map) *
171 exec->vtx.bufferobj,
175 exec->vtx.buffer_used += (exec->vtx.buffer_ptr -
176 exec->vtx.buffer_map) * sizeof(float);
178 assert(exec->vtx.buffer_used <= ctx->Const.glBeginEndBufferSize);
179 assert(exec->vtx.buffer_ptr != NULL);
181 _mesa_bufferobj_unmap(ctx, exec->vtx.bufferobj, MAP_INTERNAL);
182 exec->vtx.buffer_map = NULL;
183 exec->vtx.buffer_ptr = NULL;
184 exec->vtx.max_vert = 0;
189 vbo_exec_buffer_has_space(struct vbo_exec_context *exec)
191 struct gl_context *ctx = gl_context_from_vbo_exec(exec);
193 return ctx->Const.glBeginEndBufferSize > exec->vtx.buffer_used + 1024;
201 vbo_exec_vtx_map(struct vbo_exec_context *exec)
203 struct gl_context *ctx = gl_context_from_vbo_exec(exec);
222 if (!exec->vtx.bufferobj)
225 assert(!exec->vtx.buffer_map);
226 assert(!exec->vtx.buffer_ptr);
228 if (vbo_exec_buffer_has_space(exec)) {
230 if (exec->vtx.bufferobj->Size > 0) {
231 exec->vtx.buffer_map = (fi_type *)
233 exec->vtx.buffer_used,
235 - exec->vtx.buffer_used,
237 exec->vtx.bufferobj,
239 exec->vtx.buffer_ptr = exec->vtx.buffer_map;
242 exec->vtx.buffer_ptr = exec->vtx.buffer_map = NULL;
246 if (!exec->vtx.buffer_map) {
248 exec->vtx.buffer_used = 0;
260 exec->vtx.bufferobj)) {
262 exec->vtx.buffer_map =
266 exec->vtx.bufferobj,
271 exec->vtx.buffer_map = NULL;
275 exec->vtx.buffer_ptr = exec->vtx.buffer_map;
276 exec->vtx.buffer_offset = 0;
278 if (!exec->vtx.buffer_map) {
293 printf("map %d..\n", exec->vtx.buffer_used);
302 vbo_exec_vtx_flush(struct vbo_exec_context *exec)
304 struct gl_context *ctx = gl_context_from_vbo_exec(exec);
308 exec->vtx.bufferobj &&
309 exec->vtx.buffer_map;
312 vbo_exec_debug_verts(exec);
314 if (exec->vtx.prim_count &&
315 exec->vtx.vert_count) {
317 exec->vtx.copied.nr = vbo_exec_copy_vertices(exec);
319 if (exec->vtx.copied.nr != exec->vtx.vert_count) {
320 /* Prepare and set the exec draws internal VAO for drawing. */
327 vbo_exec_vtx_unmap(exec);
332 printf("%s %d %d\n", __func__, exec->vtx.prim_count,
333 exec->vtx.vert_count);
335 ctx->Driver.DrawGalliumMultiMode(ctx, &exec->vtx.info,
336 exec->vtx.draw,
337 exec->vtx.mode,
338 exec->vtx.prim_count);
342 vbo_exec_vtx_map(exec);
347 exec->vtx.buffer_used += (exec->vtx.buffer_ptr - exec->vtx.buffer_map) *
349 exec->vtx.buffer_map = exec->vtx.buffer_ptr;
352 exec->vtx.buffer_offset = exec->vtx.buffer_used;
354 if (!vbo_exec_buffer_has_space(exec)) {
356 vbo_exec_vtx_unmap(exec);
357 vbo_exec_vtx_map(exec);
361 if (exec->vtx.vertex_size == 0)
362 exec->vtx.max_vert = 0;
364 exec->vtx.max_vert = vbo_compute_max_verts(exec);
366 exec->vtx.buffer_ptr = exec->vtx.buffer_map;
367 exec->vtx.prim_count = 0;
368 exec->vtx.vert_count = 0;