194d256591d83ac1330f7237e865784618d124d09Chia-I Wu#define FUNC_VARS                               \
294d256591d83ac1330f7237e865784618d124d09Chia-I Wu   struct pt_so_emit *so,                       \
394d256591d83ac1330f7237e865784618d124d09Chia-I Wu   const struct draw_prim_info *input_prims,    \
494d256591d83ac1330f7237e865784618d124d09Chia-I Wu   const struct draw_vertex_info *input_verts,  \
594d256591d83ac1330f7237e865784618d124d09Chia-I Wu   unsigned start,                              \
694d256591d83ac1330f7237e865784618d124d09Chia-I Wu   unsigned count
794d256591d83ac1330f7237e865784618d124d09Chia-I Wu
894d256591d83ac1330f7237e865784618d124d09Chia-I Wu#define FUNC_ENTER                                                \
994d256591d83ac1330f7237e865784618d124d09Chia-I Wu   /* declare more local vars */                                  \
1094d256591d83ac1330f7237e865784618d124d09Chia-I Wu   const unsigned prim = input_prims->prim;                       \
11f141abdc8fdbff41e16b0ce53fa3fa8fba32a7f9Chia-I Wu   const unsigned prim_flags = input_prims->flags;                \
128b4f7b0672d663273310fffa9490ad996f5b914aChristoph Bumiller   const boolean quads_flatshade_last = FALSE;                    \
137b3beb22405ee2de0cf02951b6547964a2989ee5Chia-I Wu   const boolean last_vertex_last = TRUE;                         \
1494d256591d83ac1330f7237e865784618d124d09Chia-I Wu   do {                                                           \
1594d256591d83ac1330f7237e865784618d124d09Chia-I Wu      debug_assert(input_prims->primitive_count == 1);            \
1694d256591d83ac1330f7237e865784618d124d09Chia-I Wu      switch (prim) {                                             \
1794d256591d83ac1330f7237e865784618d124d09Chia-I Wu      case PIPE_PRIM_LINES_ADJACENCY:                             \
1894d256591d83ac1330f7237e865784618d124d09Chia-I Wu      case PIPE_PRIM_LINE_STRIP_ADJACENCY:                        \
1994d256591d83ac1330f7237e865784618d124d09Chia-I Wu      case PIPE_PRIM_TRIANGLES_ADJACENCY:                         \
2094d256591d83ac1330f7237e865784618d124d09Chia-I Wu      case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY:                    \
2194d256591d83ac1330f7237e865784618d124d09Chia-I Wu         debug_assert(!"unexpected primitive type in stream output"); \
2294d256591d83ac1330f7237e865784618d124d09Chia-I Wu         return;                                                  \
2394d256591d83ac1330f7237e865784618d124d09Chia-I Wu      default:                                                    \
2494d256591d83ac1330f7237e865784618d124d09Chia-I Wu         break;                                                   \
2594d256591d83ac1330f7237e865784618d124d09Chia-I Wu      }                                                           \
2694d256591d83ac1330f7237e865784618d124d09Chia-I Wu   } while (0)                                                    \
2794d256591d83ac1330f7237e865784618d124d09Chia-I Wu
2894d256591d83ac1330f7237e865784618d124d09Chia-I Wu#define POINT(i0)                so_point(so,i0)
2994d256591d83ac1330f7237e865784618d124d09Chia-I Wu#define LINE(flags,i0,i1)        so_line(so,i0,i1)
3094d256591d83ac1330f7237e865784618d124d09Chia-I Wu#define TRIANGLE(flags,i0,i1,i2) so_tri(so,i0,i1,i2)
3194d256591d83ac1330f7237e865784618d124d09Chia-I Wu
3294d256591d83ac1330f7237e865784618d124d09Chia-I Wu#include "draw_decompose_tmp.h"
33