Lines Matching refs:vsplit

68 vsplit_clear_cache(struct vsplit_frontend *vsplit)  in vsplit_clear_cache()  argument
70 memset(vsplit->cache.fetches, 0xff, sizeof(vsplit->cache.fetches)); in vsplit_clear_cache()
71 vsplit->cache.has_max_fetch = FALSE; in vsplit_clear_cache()
72 vsplit->cache.num_fetch_elts = 0; in vsplit_clear_cache()
73 vsplit->cache.num_draw_elts = 0; in vsplit_clear_cache()
77 vsplit_flush_cache(struct vsplit_frontend *vsplit, unsigned flags) in vsplit_flush_cache() argument
79 vsplit->middle->run(vsplit->middle, in vsplit_flush_cache()
80 vsplit->fetch_elts, vsplit->cache.num_fetch_elts, in vsplit_flush_cache()
81 vsplit->draw_elts, vsplit->cache.num_draw_elts, flags); in vsplit_flush_cache()
88 vsplit_add_cache(struct vsplit_frontend *vsplit, unsigned fetch) in vsplit_add_cache() argument
96 if (vsplit->cache.fetches[hash] != fetch) { in vsplit_add_cache()
98 vsplit->cache.fetches[hash] = fetch; in vsplit_add_cache()
99 vsplit->cache.draws[hash] = vsplit->cache.num_fetch_elts; in vsplit_add_cache()
102 assert(vsplit->cache.num_fetch_elts < vsplit->segment_size); in vsplit_add_cache()
103 vsplit->fetch_elts[vsplit->cache.num_fetch_elts++] = fetch; in vsplit_add_cache()
106 vsplit->draw_elts[vsplit->cache.num_draw_elts++] = vsplit->cache.draws[hash]; in vsplit_add_cache()
121 vsplit_add_cache_ubyte(struct vsplit_frontend *vsplit, const ubyte *elts, in vsplit_add_cache_ubyte() argument
124 struct draw_context *draw = vsplit->draw; in vsplit_add_cache_ubyte()
129 if (elt_bias && elt_idx == DRAW_MAX_FETCH_IDX && !vsplit->cache.has_max_fetch) { in vsplit_add_cache_ubyte()
131 vsplit->cache.fetches[hash] = 0; in vsplit_add_cache_ubyte()
132 vsplit->cache.has_max_fetch = TRUE; in vsplit_add_cache_ubyte()
134 vsplit_add_cache(vsplit, elt_idx); in vsplit_add_cache_ubyte()
138 vsplit_add_cache_ushort(struct vsplit_frontend *vsplit, const ushort *elts, in vsplit_add_cache_ushort() argument
141 struct draw_context *draw = vsplit->draw; in vsplit_add_cache_ushort()
146 if (elt_bias && elt_idx == DRAW_MAX_FETCH_IDX && !vsplit->cache.has_max_fetch) { in vsplit_add_cache_ushort()
148 vsplit->cache.fetches[hash] = 0; in vsplit_add_cache_ushort()
149 vsplit->cache.has_max_fetch = TRUE; in vsplit_add_cache_ushort()
151 vsplit_add_cache(vsplit, elt_idx); in vsplit_add_cache_ushort()
160 vsplit_add_cache_uint(struct vsplit_frontend *vsplit, const uint *elts, in vsplit_add_cache_uint() argument
163 struct draw_context *draw = vsplit->draw; in vsplit_add_cache_uint()
171 if (elt_idx == DRAW_MAX_FETCH_IDX && !vsplit->cache.has_max_fetch) { in vsplit_add_cache_uint()
174 vsplit->cache.fetches[hash] = 0; in vsplit_add_cache_uint()
175 vsplit->cache.has_max_fetch = TRUE; in vsplit_add_cache_uint()
177 vsplit_add_cache(vsplit, elt_idx); in vsplit_add_cache_uint()
186 #define ADD_CACHE(vsplit, ib, start, fetch, bias) vsplit_add_cache_ubyte(vsplit,ib,start,fetch,bias) argument
191 #define ADD_CACHE(vsplit, ib, start, fetch, bias) vsplit_add_cache_ushort(vsplit,ib,start,fetch, bi… argument
196 #define ADD_CACHE(vsplit, ib, start, fetch, bias) vsplit_add_cache_uint(vsplit, ib, start, fetch, b… argument
205 struct vsplit_frontend *vsplit = (struct vsplit_frontend *) frontend; in vsplit_prepare() local
207 switch (vsplit->draw->pt.user.eltSize) { in vsplit_prepare()
209 vsplit->base.run = vsplit_run_linear; in vsplit_prepare()
212 vsplit->base.run = vsplit_run_ubyte; in vsplit_prepare()
215 vsplit->base.run = vsplit_run_ushort; in vsplit_prepare()
218 vsplit->base.run = vsplit_run_uint; in vsplit_prepare()
226 vsplit->prim = in_prim; in vsplit_prepare()
228 vsplit->middle = middle; in vsplit_prepare()
229 middle->prepare(middle, vsplit->prim, opt, &vsplit->max_vertices); in vsplit_prepare()
231 vsplit->segment_size = MIN2(SEGMENT_SIZE, vsplit->max_vertices); in vsplit_prepare()
237 struct vsplit_frontend *vsplit = (struct vsplit_frontend *) frontend; in vsplit_flush() local
240 vsplit->middle->finish(vsplit->middle); in vsplit_flush()
241 vsplit->middle = NULL; in vsplit_flush()
254 struct vsplit_frontend *vsplit = CALLOC_STRUCT(vsplit_frontend); in draw_pt_vsplit() local
257 if (!vsplit) in draw_pt_vsplit()
260 vsplit->base.prepare = vsplit_prepare; in draw_pt_vsplit()
261 vsplit->base.run = NULL; in draw_pt_vsplit()
262 vsplit->base.flush = vsplit_flush; in draw_pt_vsplit()
263 vsplit->base.destroy = vsplit_destroy; in draw_pt_vsplit()
264 vsplit->draw = draw; in draw_pt_vsplit()
267 vsplit->identity_draw_elts[i] = i; in draw_pt_vsplit()
269 return &vsplit->base; in draw_pt_vsplit()