nv50_stateobj.h revision 8f060df60d1f5ad63a341e39f2ec5a0c3c452cf5
1
2#ifndef __NV50_STATEOBJ_H__
3#define __NV50_STATEOBJ_H__
4
5#include "pipe/p_state.h"
6
7#define NV50_SCISSORS_CLIPPING
8
9#define SB_BEGIN_3D(so, m, s)                                                  \
10   (so)->state[(so)->size++] =                                                 \
11      ((s) << 18) | (NV50_SUBCH_3D << 13) | NV50_3D_##m
12
13#define SB_BEGIN_3D_(so, m, s)                                                 \
14   (so)->state[(so)->size++] =                                                 \
15      ((s) << 18) | (NV50_SUBCH_3D << 13) | m
16
17#define SB_DATA(so, u) (so)->state[(so)->size++] = (u)
18
19#include "nv50_stateobj_tex.h"
20
21struct nv50_blend_stateobj {
22   struct pipe_blend_state pipe;
23   int size;
24   uint32_t state[78];
25};
26
27struct nv50_rasterizer_stateobj {
28   struct pipe_rasterizer_state pipe;
29   int size;
30   uint32_t state[42];
31};
32
33struct nv50_zsa_stateobj {
34   struct pipe_depth_stencil_alpha_state pipe;
35   int size;
36   uint32_t state[29];
37};
38
39struct nv50_vertex_element {
40   struct pipe_vertex_element pipe;
41   uint32_t state;
42};
43
44struct nv50_vertex_stateobj {
45   struct translate *translate;
46   unsigned num_elements;
47   uint32_t instance_elts;
48   uint32_t instance_bufs;
49   boolean need_conversion;
50   unsigned vertex_size;
51   unsigned packet_vertex_limit;
52   struct nv50_vertex_element element[0];
53};
54
55#endif
56