2 #ifndef __NV50_STATEOBJ_H__
3 #define __NV50_STATEOBJ_H__
5 #include "pipe/p_state.h"
7 #define NV50_SCISSORS_CLIPPING
9 #define SB_BEGIN_3D(so, m, s) \
10 (so)->state[(so)->size++] = \
11 ((s) << 18) | (NV50_SUBCH_3D << 13) | NV50_3D_##m
13 #define SB_BEGIN_3D_(so, m, s) \
14 (so)->state[(so)->size++] = \
15 ((s) << 18) | (NV50_SUBCH_3D << 13) | m
17 #define SB_DATA(so, u) (so)->state[(so)->size++] = (u)
19 #include "nv50_stateobj_tex.h"
21 struct nv50_blend_stateobj
{
22 struct pipe_blend_state pipe
;
24 uint32_t state
[82]; // TODO: allocate less if !independent_blend_enable
27 struct nv50_rasterizer_stateobj
{
28 struct pipe_rasterizer_state pipe
;
33 struct nv50_zsa_stateobj
{
34 struct pipe_depth_stencil_alpha_state pipe
;
39 struct nv50_vertex_element
{
40 struct pipe_vertex_element pipe
;
44 struct 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
;
51 unsigned packet_vertex_limit
;
52 struct nv50_vertex_element element
[0];