summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_gs_tmp.h
blob: 4a17af0dea34bf542110b655ec7955d9e9f3699e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#define FUNC_VARS struct draw_geometry_shader *gs,             \
                  const struct draw_prim_info *input_prims,    \
                  const struct draw_vertex_info *input_verts,  \
                  struct draw_prim_info *output_prims,         \
                  struct draw_vertex_info *output_verts

#define FUNC_ENTER                                                \
   /* declare more local vars */                                  \
   struct draw_context *draw = gs->draw;                          \
   const unsigned prim = input_prims->prim;                       \
   const unsigned count = input_prims->count;                     \
   const boolean last_vertex_last =                               \
      !(draw->rasterizer->flatshade &&                            \
        draw->rasterizer->flatshade_first);                       \
   do {                                                           \
      debug_assert(input_prims->primitive_count == 1);            \
      switch (prim) {                                             \
      case PIPE_PRIM_QUADS:                                       \
      case PIPE_PRIM_QUAD_STRIP:                                  \
      case PIPE_PRIM_POLYGON:                                     \
         debug_assert(!"unexpected primitive type in GS");        \
         return;                                                  \
      default:                                                    \
         break;                                                   \
      }                                                           \
   } while (0)                                                    \

#define POINT(i0)                             gs_point(gs,i0)
#define LINE(flags,i0,i1)                     gs_line(gs,i0,i1)
#define TRIANGLE(flags,i0,i1,i2)              gs_tri(gs,i0,i1,i2)
#define LINE_ADJ(flags,i0,i1,i2,i3)           gs_line_adj(gs,i0,i1,i2,i3)
#define TRIANGLE_ADJ(flags,i0,i1,i2,i3,i4,i5) gs_tri_adj(gs,i0,i1,i2,i3,i4,i5)

#include "draw_decompose_tmp.h"