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