Lines Matching refs:split

67 flush_vertex( struct split_context *split)  in flush_vertex()  argument
69 struct gl_context *ctx = split->ctx; in flush_vertex()
73 if (!split->dstprim_nr) in flush_vertex()
76 if (split->ib) { in flush_vertex()
77 ib = *split->ib; in flush_vertex()
79 ib.count = split->max_index - split->min_index + 1; in flush_vertex()
81 (split->min_index << ib.index_size_shift)); in flush_vertex()
84 for (i = 0; i < split->dstprim_nr; i++) in flush_vertex()
85 split->dstprim[i].start -= split->min_index; in flush_vertex()
88 assert(split->max_index >= split->min_index); in flush_vertex()
90 split->draw(ctx, in flush_vertex()
91 split->array, in flush_vertex()
92 split->dstprim, in flush_vertex()
93 split->dstprim_nr, in flush_vertex()
94 split->ib ? &ib : NULL, in flush_vertex()
95 !split->ib, in flush_vertex()
96 split->min_index, in flush_vertex()
97 split->max_index, in flush_vertex()
98 split->num_instances, in flush_vertex()
99 split->base_instance); in flush_vertex()
101 split->dstprim_nr = 0; in flush_vertex()
102 split->min_index = ~0; in flush_vertex()
103 split->max_index = 0; in flush_vertex()
108 next_outprim(struct split_context *split) in next_outprim() argument
110 if (split->dstprim_nr == MAX_PRIM-1) { in next_outprim()
111 flush_vertex(split); in next_outprim()
115 struct _mesa_prim *prim = &split->dstprim[split->dstprim_nr++]; in next_outprim()
123 update_index_bounds(struct split_context *split, in update_index_bounds() argument
126 split->min_index = MIN2(split->min_index, prim->start); in update_index_bounds()
127 split->max_index = MAX2(split->max_index, prim->start + prim->count - 1); in update_index_bounds()
136 get_max_vertices(struct split_context *split, in get_max_vertices() argument
139 if ((prim->start > split->min_index && in get_max_vertices()
140 prim->start - split->min_index >= split->limit) || in get_max_vertices()
141 (prim->start < split->max_index && in get_max_vertices()
142 split->max_index - prim->start >= split->limit)) in get_max_vertices()
146 return MIN2(split->min_index, prim->start) + split->limit - prim->start; in get_max_vertices()
154 split_prims(struct split_context *split) in split_prims() argument
158 for (i = 0; i < split->nr_prims; i++) { in split_prims()
159 const struct _mesa_prim *prim = &split->prim[i]; in split_prims()
163 GLuint available = get_max_vertices(split, prim); in split_prims()
171 flush_vertex(split); in split_prims()
172 available = get_max_vertices(split, prim); in split_prims()
176 struct _mesa_prim *outprim = next_outprim(split); in split_prims()
179 update_index_bounds(split, outprim); in split_prims()
186 struct _mesa_prim *outprim = next_outprim(split); in split_prims()
197 update_index_bounds(split, outprim); in split_prims()
206 flush_vertex(split); in split_prims()
207 available = get_max_vertices(split, prim); in split_prims()
211 else if (split->ib == NULL) { in split_prims()
237 flush_vertex(split); in split_prims()
239 _tnl_split_copy(split->ctx, in split_prims()
240 split->array, in split_prims()
243 split->draw, in split_prims()
244 split->limits); in split_prims()
249 flush_vertex(split); in split_prims()
251 _tnl_split_copy(split->ctx, in split_prims()
252 split->array, in split_prims()
254 split->ib, in split_prims()
255 split->draw, in split_prims()
256 split->limits); in split_prims()
260 flush_vertex(split); in split_prims()
275 struct split_context split; in _tnl_split_inplace() local
277 memset(&split, 0, sizeof(split)); in _tnl_split_inplace()
279 split.ctx = ctx; in _tnl_split_inplace()
280 split.array = arrays; in _tnl_split_inplace()
281 split.prim = prim; in _tnl_split_inplace()
282 split.nr_prims = nr_prims; in _tnl_split_inplace()
283 split.ib = ib; in _tnl_split_inplace()
286 split.min_index = ~0; in _tnl_split_inplace()
287 split.max_index = 0; in _tnl_split_inplace()
288 split.num_instances = num_instances; in _tnl_split_inplace()
289 split.base_instance = base_instance; in _tnl_split_inplace()
291 split.draw = draw; in _tnl_split_inplace()
292 split.limits = limits; in _tnl_split_inplace()
293 split.limit = ib ? limits->max_indices : limits->max_verts; in _tnl_split_inplace()
295 split_prims(&split); in _tnl_split_inplace()