1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef __NV30_CONTEXT_H__
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __NV30_CONTEXT_H__
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "pipe/p_format.h"
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nv30_screen.h"
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nv30_state.h"
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nouveau/nouveau_context.h"
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BUFCTX_FB          0
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BUFCTX_VTXTMP      1
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BUFCTX_VTXBUF      2
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BUFCTX_IDXBUF      3
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BUFCTX_VERTTEX(n) (4 + (n))
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BUFCTX_FRAGPROG    8
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define BUFCTX_FRAGTEX(n) (9 + (n))
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_BLEND        (1 << 0)
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_RASTERIZER   (1 << 1)
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_ZSA          (1 << 2)
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_VERTPROG     (1 << 3)
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_VERTCONST    (1 << 4)
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_FRAGPROG     (1 << 5)
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_FRAGCONST    (1 << 6)
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_BLEND_COLOUR (1 << 7)
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_STENCIL_REF  (1 << 8)
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_CLIP         (1 << 9)
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_SAMPLE_MASK  (1 << 10)
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_FRAMEBUFFER  (1 << 11)
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_STIPPLE      (1 << 12)
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_SCISSOR      (1 << 13)
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_VIEWPORT     (1 << 14)
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_ARRAYS       (1 << 15)
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_VERTEX       (1 << 16)
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_CONSTBUF     (1 << 17)
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_FRAGTEX      (1 << 18)
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_VERTTEX      (1 << 19)
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_SWTNL        (1 << 31)
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_NEW_ALL          0x000fffff
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct nv30_context {
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_context base;
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nv30_screen *screen;
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_bufctx *bufctx;
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct {
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned rt_enable;
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned scissor_off;
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned num_vtxelts;
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      boolean  prim_restart;
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct nv30_fragprog *fragprog;
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   } state;
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   uint32_t dirty;
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct draw_context *draw;
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   uint32_t draw_flags;
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   uint32_t draw_dirty;
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nv30_blend_stateobj *blend;
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nv30_rasterizer_stateobj *rast;
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nv30_zsa_stateobj *zsa;
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nv30_vertex_stateobj *vertex;
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct {
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned filter;
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned aniso;
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   } config;
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct {
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct nv30_vertprog *program;
74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct pipe_resource *constbuf;
76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned constbuf_nr;
77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct pipe_sampler_view *textures[PIPE_MAX_SAMPLERS];
79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned num_textures;
80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct nv30_sampler_state *samplers[PIPE_MAX_SAMPLERS];
81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned num_samplers;
82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned dirty_samplers;
83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   } vertprog;
84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct {
86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct nv30_fragprog *program;
87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct pipe_resource *constbuf;
89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned constbuf_nr;
90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct pipe_sampler_view *textures[PIPE_MAX_SAMPLERS];
92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned num_textures;
93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      struct nv30_sampler_state *samplers[PIPE_MAX_SAMPLERS];
94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned num_samplers;
95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      unsigned dirty_samplers;
96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   } fragprog;
97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_framebuffer_state framebuffer;
99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_blend_color blend_colour;
100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_stencil_ref stencil_ref;
101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_poly_stipple stipple;
102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_scissor_state scissor;
103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_viewport_state viewport;
104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_clip_state clip;
105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned sample_mask;
107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_vertex_buffer vtxbuf[PIPE_MAX_ATTRIBS];
109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned num_vtxbufs;
110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_index_buffer idxbuf;
111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   uint32_t vbo_fifo;
112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   uint32_t vbo_user;
113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned vbo_min_index;
114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned vbo_max_index;
115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   boolean  vbo_push_hint;
116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_heap  *blit_vp;
118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct pipe_resource *blit_fp;
119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*XXX: nvfx state, DO NOT USE EVER OUTSIDE "STOLEN" NVFX code */
121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned is_nv4x;
122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned use_nv4x;
123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   bool hw_pointsprite_control;
124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   enum {
125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      HW,
126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   } render_mode;
127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic INLINE struct nv30_context *
130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_context(struct pipe_context *pipe)
131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return (struct nv30_context *)pipe;
133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct pipe_context *
136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_context_create(struct pipe_screen *pscreen, void *priv);
137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_vbo_init(struct pipe_context *pipe);
140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_vbo_validate(struct nv30_context *nv30);
143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_query_init(struct pipe_context *pipe);
146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_state_init(struct pipe_context *pipe);
149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_clear_init(struct pipe_context *pipe);
152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_vertprog_init(struct pipe_context *pipe);
155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_vertprog_validate(struct nv30_context *nv30);
158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_fragprog_init(struct pipe_context *pipe);
161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_fragprog_validate(struct nv30_context *nv30);
164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_texture_init(struct pipe_context *pipe);
167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_texture_validate(struct nv30_context *nv30);
170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_fragtex_init(struct pipe_context *pipe);
173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_fragtex_validate(struct nv30_context *nv30);
176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv40_verttex_init(struct pipe_context *pipe);
179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv40_verttex_validate(struct nv30_context *nv30);
182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_push_vbo(struct nv30_context *nv30, const struct pipe_draw_info *info);
185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_draw_init(struct pipe_context *pipe);
188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_render_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info);
191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgboolean
193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_state_validate(struct nv30_context *nv30, boolean hwtnl);
194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_state_release(struct nv30_context *nv30);
197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//XXX: needed to make it build, clean this up!
199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid
200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_nvfx_fragprog_translate(struct nv30_context *nvfx, struct nv30_fragprog *fp,
201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org         boolean emulate_sprite_flipping);
202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgboolean
204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_nvfx_vertprog_translate(struct nv30_context *nv30, struct nv30_vertprog *vp);
205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifdef NV30_3D_VERTEX_BEGIN_END
207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_PRIM_GL_CASE(n) \
208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   case PIPE_PRIM_##n: return NV30_3D_VERTEX_BEGIN_END_##n
209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic INLINE unsigned
211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_prim_gl(unsigned prim)
212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   switch (prim) {
214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(POINTS);
215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(LINES);
216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(LINE_LOOP);
217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(LINE_STRIP);
218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(TRIANGLES);
219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(TRIANGLE_STRIP);
220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(TRIANGLE_FAN);
221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(QUADS);
222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(QUAD_STRIP);
223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   NV30_PRIM_GL_CASE(POLYGON);
224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   default:
225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return NV30_3D_VERTEX_BEGIN_END_POINTS;
226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      break;
227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
232