Lines Matching refs:pc
66 struct primconvert_context *pc = CALLOC_STRUCT(primconvert_context);
67 if (!pc)
69 pc->pipe = pipe;
70 pc->cfg = *cfg;
71 return pc;
82 util_primconvert_destroy(struct primconvert_context *pc)
84 FREE(pc);
88 util_primconvert_save_rasterizer_state(struct primconvert_context *pc,
92 util_primconvert_save_flatshade_first(pc, rast->flatshade_first);
96 util_primconvert_save_flatshade_first(struct primconvert_context *pc, bool flatshade_first)
102 pc->api_pv = flatshade_first ? PV_FIRST : PV_LAST;
106 primconvert_init_draw(struct primconvert_context *pc,
141 enum pipe_prim_type mode = new_info->mode = u_index_prim_type_convert(pc->cfg.primtypes_mask, info->mode, true);
150 src = pipe_buffer_map_range(pc->pipe, info->index.resource,
164 (!(pc->cfg.restart_primtypes_mask & BITFIELD_BIT(mode)) ||
165 !(pc->cfg.primtypes_mask & BITFIELD_BIT(info->mode)))) {
177 pc->api_pv, pc->api_pv,
190 pipe_buffer_unmap(pc->pipe, src_transfer);
195 u_index_translator(pc->cfg.primtypes_mask,
197 pc->api_pv, pc->api_pv,
208 u_index_generator(pc->cfg.primtypes_mask,
210 pc->api_pv, pc->api_pv,
218 u_upload_alloc(pc->pipe->stream_uploader, 0, new_info->index_size * new_draw->count, 4,
233 unsigned tmp_count = u_index_count_converted_indices(pc->cfg.primtypes_mask, true, info->mode, direct_draws[i].count);
245 new_draw->count = u_index_count_converted_indices(pc->cfg.primtypes_mask, true, info->mode, total_index_count);
249 if (pc->cfg.fixed_prim_restart && new_info->primitive_restart) {
263 pipe_buffer_unmap(pc->pipe, src_transfer);
265 u_upload_unmap(pc->pipe->stream_uploader);
273 util_primconvert_draw_single_vbo(struct primconvert_context *pc,
281 if (!primconvert_init_draw(pc, info, draw, &new_info, &new_draw))
284 pc->pipe->draw_vbo(pc->pipe, &new_info, drawid_offset, NULL, &new_draw, 1);
290 util_primconvert_draw_vbo(struct primconvert_context *pc,
302 struct u_indirect_params *new_draws = util_draw_indirect_read(pc->pipe, info, indirect, &draw_count);
307 util_primconvert_draw_single_vbo(pc, &new_draws[i].info, drawid_offset + i, &new_draws[i].draw);
313 util_primconvert_draw_single_vbo(pc, info, drawid, &draws[i]);
327 util_primconvert_draw_vertex_state(struct primconvert_context *pc,
337 if (pc->cfg.primtypes_mask & BITFIELD_BIT(info.mode)) {
338 pc->pipe->draw_vertex_state(pc->pipe, vstate, partial_velem_mask, info, draws, num_draws);
345 util_primconvert_draw_vertex_state(pc, vstate, partial_velem_mask, info, &draws[i], 1);
355 if (!primconvert_init_draw(pc, &dinfo, draws, &new_info, &new_draw))
358 struct pipe_vertex_state *new_state = pc->pipe->screen->create_vertex_state(pc->pipe->screen,
369 pc->pipe->draw_vertex_state(pc->pipe, new_state, partial_velem_mask, new_vinfo, &new_draw, 1);