123176779f88c5cff7365698f391194141e11e64cChia-I Wu#define FUNC_VARS struct draw_geometry_shader *gs,             \
223176779f88c5cff7365698f391194141e11e64cChia-I Wu                  const struct draw_prim_info *input_prims,    \
323176779f88c5cff7365698f391194141e11e64cChia-I Wu                  const struct draw_vertex_info *input_verts,  \
423176779f88c5cff7365698f391194141e11e64cChia-I Wu                  struct draw_prim_info *output_prims,         \
523176779f88c5cff7365698f391194141e11e64cChia-I Wu                  struct draw_vertex_info *output_verts
623176779f88c5cff7365698f391194141e11e64cChia-I Wu
723176779f88c5cff7365698f391194141e11e64cChia-I Wu#define FUNC_ENTER                                                \
823176779f88c5cff7365698f391194141e11e64cChia-I Wu   /* declare more local vars */                                  \
923176779f88c5cff7365698f391194141e11e64cChia-I Wu   const unsigned prim = input_prims->prim;                       \
10f141abdc8fdbff41e16b0ce53fa3fa8fba32a7f9Chia-I Wu   const unsigned prim_flags = input_prims->flags;                \
117b3beb22405ee2de0cf02951b6547964a2989ee5Chia-I Wu   const unsigned count = input_prims->count;                     \
128b4f7b0672d663273310fffa9490ad996f5b914aChristoph Bumiller   const boolean quads_flatshade_last = FALSE;                    \
137b3beb22405ee2de0cf02951b6547964a2989ee5Chia-I Wu   const boolean last_vertex_last = TRUE;                         \
1423176779f88c5cff7365698f391194141e11e64cChia-I Wu   do {                                                           \
1523176779f88c5cff7365698f391194141e11e64cChia-I Wu      debug_assert(input_prims->primitive_count == 1);            \
1623176779f88c5cff7365698f391194141e11e64cChia-I Wu      switch (prim) {                                             \
1723176779f88c5cff7365698f391194141e11e64cChia-I Wu      case PIPE_PRIM_QUADS:                                       \
1823176779f88c5cff7365698f391194141e11e64cChia-I Wu      case PIPE_PRIM_QUAD_STRIP:                                  \
1923176779f88c5cff7365698f391194141e11e64cChia-I Wu      case PIPE_PRIM_POLYGON:                                     \
2023176779f88c5cff7365698f391194141e11e64cChia-I Wu         debug_assert(!"unexpected primitive type in GS");        \
2123176779f88c5cff7365698f391194141e11e64cChia-I Wu         return;                                                  \
2223176779f88c5cff7365698f391194141e11e64cChia-I Wu      default:                                                    \
2323176779f88c5cff7365698f391194141e11e64cChia-I Wu         break;                                                   \
2423176779f88c5cff7365698f391194141e11e64cChia-I Wu      }                                                           \
2523176779f88c5cff7365698f391194141e11e64cChia-I Wu   } while (0)                                                    \
2623176779f88c5cff7365698f391194141e11e64cChia-I Wu
2723176779f88c5cff7365698f391194141e11e64cChia-I Wu#define POINT(i0)                             gs_point(gs,i0)
2823176779f88c5cff7365698f391194141e11e64cChia-I Wu#define LINE(flags,i0,i1)                     gs_line(gs,i0,i1)
2923176779f88c5cff7365698f391194141e11e64cChia-I Wu#define TRIANGLE(flags,i0,i1,i2)              gs_tri(gs,i0,i1,i2)
3023176779f88c5cff7365698f391194141e11e64cChia-I Wu#define LINE_ADJ(flags,i0,i1,i2,i3)           gs_line_adj(gs,i0,i1,i2,i3)
3123176779f88c5cff7365698f391194141e11e64cChia-I Wu#define TRIANGLE_ADJ(flags,i0,i1,i2,i3,i4,i5) gs_tri_adj(gs,i0,i1,i2,i3,i4,i5)
3223176779f88c5cff7365698f391194141e11e64cChia-I Wu
3323176779f88c5cff7365698f391194141e11e64cChia-I Wu#include "draw_decompose_tmp.h"
34