2 #ifndef __NVC0_STATEOBJ_H__
3 #define __NVC0_STATEOBJ_H__
5 #include "pipe/p_state.h"
7 #define SB_BEGIN_3D(so, m, s) \
8 (so)->state[(so)->size++] = NVC0_FIFO_PKHDR_SQ(NVC0_3D(m), s)
10 #define SB_IMMED_3D(so, m, d) \
11 (so)->state[(so)->size++] = NVC0_FIFO_PKHDR_IL(NVC0_3D(m), d)
13 #define SB_DATA(so, u) (so)->state[(so)->size++] = (u)
15 #include "nv50/nv50_stateobj_tex.h"
17 struct nvc0_blend_stateobj
{
18 struct pipe_blend_state pipe
;
23 struct nvc0_rasterizer_stateobj
{
24 struct pipe_rasterizer_state pipe
;
29 struct nvc0_zsa_stateobj
{
30 struct pipe_depth_stencil_alpha_state pipe
;
35 struct nvc0_vertex_element
{
36 struct pipe_vertex_element pipe
;
40 struct nvc0_vertex_stateobj
{
41 struct translate
*translate
;
42 unsigned num_elements
;
43 uint32_t instance_elts
;
44 uint32_t instance_bufs
;
45 boolean need_conversion
; /* e.g. VFETCH cannot convert f64 to f32 */
47 unsigned vtx_per_packet_max
;
48 struct nvc0_vertex_element element
[0];
51 struct nvc0_so_target
{
52 struct pipe_stream_output_target pipe
;
53 struct pipe_query
*pq
;
58 static INLINE
struct nvc0_so_target
*
59 nvc0_so_target(struct pipe_stream_output_target
*ptarg
)
61 return (struct nvc0_so_target
*)ptarg
;