+ /* Finished with fetch:
+ */
+ fetch_info = NULL;
+
+ if ((fpme->opt & PT_SHADE) && gshader) {
+ draw_geometry_shader_run(gshader,
+ draw->pt.user.gs_constants,
+ draw->pt.user.gs_constants_size,
+ vert_info,
+ prim_info,
+ &vshader->info,
+ gs_vert_info,
+ gs_prim_info);
+
+ FREE(vert_info->verts);
+ vert_info = &gs_vert_info[0];
+ prim_info = &gs_prim_info[0];
+ num_vertex_streams = gshader->num_vertex_streams;
+
+ /*
+ * pt emit can only handle ushort number of vertices (see
+ * render->allocate_vertices).
+ * vsplit guarantees there's never more than 4096, however GS can
+ * easily blow this up (by a factor of 256 (or even 1024) max).
+ */
+ if (vert_info->count > 65535) {
+ opt |= PT_PIPELINE;
+ }
+ } else {
+ if (draw_prim_assembler_is_required(draw, prim_info, vert_info)) {
+ draw_prim_assembler_run(draw, prim_info, vert_info,
+ &ia_prim_info, &ia_vert_info);
+
+ if (ia_vert_info.count) {
+ FREE(vert_info->verts);
+ vert_info = &ia_vert_info;
+ prim_info = &ia_prim_info;
+ free_prim_info = TRUE;
+ }
+ }