1bf215546Sopenharmony_ci#define FUNC_VARS struct draw_geometry_shader *gs, \ 2bf215546Sopenharmony_ci const struct draw_prim_info *input_prims, \ 3bf215546Sopenharmony_ci const struct draw_vertex_info *input_verts, \ 4bf215546Sopenharmony_ci struct draw_prim_info *output_prims, \ 5bf215546Sopenharmony_ci struct draw_vertex_info *output_verts 6bf215546Sopenharmony_ci 7bf215546Sopenharmony_ci#define FUNC_ENTER \ 8bf215546Sopenharmony_ci /* declare more local vars */ \ 9bf215546Sopenharmony_ci const unsigned prim = input_prims->prim; \ 10bf215546Sopenharmony_ci const unsigned prim_flags = input_prims->flags; \ 11bf215546Sopenharmony_ci const unsigned count = input_prims->count; \ 12bf215546Sopenharmony_ci const boolean quads_flatshade_last = FALSE; \ 13bf215546Sopenharmony_ci const boolean last_vertex_last = !gs->draw->rasterizer->flatshade_first; \ 14bf215546Sopenharmony_ci do { \ 15bf215546Sopenharmony_ci switch (prim) { \ 16bf215546Sopenharmony_ci case PIPE_PRIM_QUADS: \ 17bf215546Sopenharmony_ci case PIPE_PRIM_QUAD_STRIP: \ 18bf215546Sopenharmony_ci case PIPE_PRIM_POLYGON: \ 19bf215546Sopenharmony_ci assert(!"unexpected primitive type in GS"); \ 20bf215546Sopenharmony_ci return; \ 21bf215546Sopenharmony_ci default: \ 22bf215546Sopenharmony_ci break; \ 23bf215546Sopenharmony_ci } \ 24bf215546Sopenharmony_ci } while (0) 25bf215546Sopenharmony_ci 26bf215546Sopenharmony_ci#define POINT(i0) gs_point(gs,i0) 27bf215546Sopenharmony_ci#define LINE(flags,i0,i1) gs_line(gs,i0,i1) 28bf215546Sopenharmony_ci#define TRIANGLE(flags,i0,i1,i2) gs_tri(gs,i0,i1,i2) 29bf215546Sopenharmony_ci#define LINE_ADJ(flags,i0,i1,i2,i3) gs_line_adj(gs,i0,i1,i2,i3) 30bf215546Sopenharmony_ci#define TRIANGLE_ADJ(flags,i0,i1,i2,i3,i4,i5) gs_tri_adj(gs,i0,i1,i2,i3,i4,i5) 31bf215546Sopenharmony_ci#define QUAD(flags,i0,i1,i2,i3) 32bf215546Sopenharmony_ci#include "draw_decompose_tmp.h" 33