Merge remote branch 'upstream/gallium-0.1' into nouveau-gallium-0.1
[mesa.git] / src / gallium / drivers / nv30 / nv30_state.h
1 #ifndef __NV30_STATE_H__
2 #define __NV30_STATE_H__
3
4 #include "pipe/p_state.h"
5
6 struct nv30_blend_state {
7 uint32_t b_enable;
8 uint32_t b_srcfunc;
9 uint32_t b_dstfunc;
10 uint32_t b_eqn;
11
12 uint32_t l_enable;
13 uint32_t l_op;
14
15 uint32_t c_mask;
16
17 uint32_t d_enable;
18 };
19
20 struct nv30_sampler_state {
21 uint32_t fmt;
22 uint32_t wrap;
23 uint32_t en;
24 uint32_t filt;
25 uint32_t bcol;
26 };
27
28 struct nv30_rasterizer_state {
29 uint32_t shade_model;
30
31 uint32_t line_width;
32 uint32_t line_smooth_en;
33 uint32_t line_stipple_en;
34 uint32_t line_stipple;
35
36 uint32_t point_size;
37
38 uint32_t poly_smooth_en;
39 uint32_t poly_stipple_en;
40
41 uint32_t poly_mode_front;
42 uint32_t poly_mode_back;
43
44 uint32_t front_face;
45 uint32_t cull_face;
46 uint32_t cull_face_en;
47
48 uint32_t point_sprite;
49 };
50
51 struct nv30_vertex_program_exec {
52 uint32_t data[4];
53 boolean has_branch_offset;
54 int const_index;
55 };
56
57 struct nv30_vertex_program_data {
58 int index; /* immediates == -1 */
59 float value[4];
60 };
61
62 struct nv30_vertex_program {
63 struct pipe_shader_state pipe;
64
65 boolean translated;
66 struct nv30_vertex_program_exec *insns;
67 unsigned nr_insns;
68 struct nv30_vertex_program_data *consts;
69 unsigned nr_consts;
70
71 struct nouveau_resource *exec;
72 unsigned exec_start;
73 struct nouveau_resource *data;
74 unsigned data_start;
75 unsigned data_start_min;
76
77 uint32_t ir;
78 uint32_t or;
79 };
80
81 struct nv30_fragment_program_data {
82 unsigned offset;
83 unsigned index;
84 };
85
86 struct nv30_fragment_program {
87 struct pipe_shader_state pipe;
88
89 boolean translated;
90 boolean on_hw;
91 unsigned samplers;
92
93 uint32_t *insn;
94 int insn_len;
95
96 struct nv30_fragment_program_data *consts;
97 unsigned nr_consts;
98
99 struct pipe_buffer *buffer;
100
101 uint32_t fp_control;
102 uint32_t fp_reg_control;
103 };
104
105 struct nv30_stencil_push {
106 uint32_t enable;
107 uint32_t wmask;
108 uint32_t func;
109 uint32_t ref;
110 uint32_t vmask;
111 uint32_t fail;
112 uint32_t zfail;
113 uint32_t zpass;
114 };
115
116 struct nv30_depth_stencil_alpha_state {
117 struct {
118 uint32_t func;
119 uint32_t write_enable;
120 uint32_t test_enable;
121 } depth;
122
123 struct {
124 struct nv30_stencil_push back;
125 struct nv30_stencil_push front;
126 } stencil;
127
128 struct {
129 uint32_t enabled;
130 uint32_t func;
131 uint32_t ref;
132 } alpha;
133 };
134
135 struct nv30_miptree {
136 struct pipe_texture base;
137
138 struct pipe_buffer *buffer;
139 uint total_size;
140
141 struct {
142 uint pitch;
143 uint *image_offset;
144 } level[PIPE_MAX_TEXTURE_LEVELS];
145 };
146
147 #endif