/** cast wrapper */
-static INLINE struct llvm_middle_end *
+static inline struct llvm_middle_end *
llvm_middle_end(struct draw_pt_middle_end *middle)
{
return (struct llvm_middle_end *) middle;
draw->vs.vertex_shader->info.writes_viewport_index)) {
clipped = draw_pt_post_vs_run( fpme->post_vs, vert_info, prim_info );
}
+ /* "clipped" also includes non-one edgeflag */
if (clipped) {
opt |= PT_PIPELINE;
}
}
+static inline unsigned
+prim_type(unsigned prim, unsigned flags)
+{
+ if (flags & DRAW_LINE_LOOP_AS_STRIP)
+ return PIPE_PRIM_LINE_STRIP;
+ else
+ return prim;
+}
+
+
static void
llvm_middle_end_run(struct draw_pt_middle_end *middle,
const unsigned *fetch_elts,
prim_info.start = 0;
prim_info.count = draw_count;
prim_info.elts = draw_elts;
- prim_info.prim = fpme->input_prim;
+ prim_info.prim = prim_type(fpme->input_prim, prim_flags);
prim_info.flags = prim_flags;
prim_info.primitive_count = 1;
prim_info.primitive_lengths = &draw_count;
prim_info.start = 0;
prim_info.count = count;
prim_info.elts = NULL;
- prim_info.prim = fpme->input_prim;
+ prim_info.prim = prim_type(fpme->input_prim, prim_flags);
prim_info.flags = prim_flags;
prim_info.primitive_count = 1;
prim_info.primitive_lengths = &count;
prim_info.start = 0;
prim_info.count = draw_count;
prim_info.elts = draw_elts;
- prim_info.prim = fpme->input_prim;
+ prim_info.prim = prim_type(fpme->input_prim, prim_flags);
prim_info.flags = prim_flags;
prim_info.primitive_count = 1;
prim_info.primitive_lengths = &draw_count;