| #ifndef __NV30_STATE_H__ |
| #define __NV30_STATE_H__ |
| |
| #include "pipe/p_state.h" |
| #include "tgsi/tgsi_scan.h" |
| #include "util/u_dynarray.h" |
| |
| #define NV30_QUERY_ZCULL_0 (PIPE_QUERY_TYPES + 0) |
| #define NV30_QUERY_ZCULL_1 (PIPE_QUERY_TYPES + 1) |
| #define NV30_QUERY_ZCULL_2 (PIPE_QUERY_TYPES + 2) |
| #define NV30_QUERY_ZCULL_3 (PIPE_QUERY_TYPES + 3) |
| |
| #define SB_DATA(so, u) (so)->data[(so)->size++] = (u) |
| #define SB_MTHD30(so, mthd, size) \ |
| SB_DATA((so), ((size) << 18) | (7 << 13) | NV30_3D_##mthd) |
| #define SB_MTHD40(so, mthd, size) \ |
| SB_DATA((so), ((size) << 18) | (7 << 13) | NV40_3D_##mthd) |
| |
| struct nv30_blend_stateobj { |
| struct pipe_blend_state pipe; |
| unsigned data[16]; |
| unsigned size; |
| }; |
| |
| struct nv30_rasterizer_stateobj { |
| struct pipe_rasterizer_state pipe; |
| unsigned data[32]; |
| unsigned size; |
| }; |
| |
| struct nv30_zsa_stateobj { |
| struct pipe_depth_stencil_alpha_state pipe; |
| unsigned data[32]; |
| unsigned size; |
| }; |
| |
| struct nv30_sampler_state { |
| struct pipe_sampler_state pipe; |
| unsigned fmt; |
| unsigned wrap; |
| unsigned en; |
| unsigned filt; |
| unsigned bcol; |
| /* 4.8 */ |
| unsigned min_lod; |
| unsigned max_lod; |
| }; |
| |
| struct nv30_sampler_view { |
| struct pipe_sampler_view pipe; |
| unsigned fmt; |
| unsigned swz; |
| unsigned filt; |
| unsigned filt_mask; |
| unsigned wrap; |
| unsigned wrap_mask; |
| unsigned npot_size0; |
| unsigned npot_size1; |
| /* 4.8 */ |
| unsigned base_lod; |
| unsigned high_lod; |
| }; |
| |
| struct nv30_shader_reloc { |
| unsigned location; |
| int target; |
| }; |
| |
| struct nv30_vertprog_exec { |
| uint32_t data[4]; |
| }; |
| |
| struct nv30_vertprog_data { |
| int index; /* immediates == -1 */ |
| float value[4]; |
| }; |
| |
| struct nv30_vertprog { |
| struct pipe_shader_state pipe; |
| struct tgsi_shader_info info; |
| |
| struct draw_vertex_shader *draw; |
| boolean translated; |
| unsigned enabled_ucps; |
| uint16_t texcoord[10]; |
| |
| struct util_dynarray branch_relocs; |
| struct nv30_vertprog_exec *insns; |
| unsigned nr_insns; |
| |
| struct util_dynarray const_relocs; |
| struct nv30_vertprog_data *consts; |
| unsigned nr_consts; |
| |
| struct nouveau_heap *exec; |
| struct nouveau_heap *data; |
| uint32_t ir; |
| uint32_t or; |
| void *nvfx; |
| }; |
| |
| struct nv30_fragprog_data { |
| unsigned offset; |
| unsigned index; |
| }; |
| |
| struct nv30_fragprog { |
| struct pipe_shader_state pipe; |
| struct tgsi_shader_info info; |
| |
| struct draw_fragment_shader *draw; |
| boolean translated; |
| |
| uint32_t *insn; |
| unsigned insn_len; |
| |
| uint16_t texcoord[10]; |
| struct nv30_fragprog_data *consts; |
| unsigned nr_consts; |
| |
| struct pipe_resource *buffer; |
| uint32_t vp_or; /* appended to VP_RESULT_EN */ |
| uint32_t fp_control; |
| uint32_t point_sprite_control; |
| uint32_t coord_conventions; |
| uint32_t texcoords; |
| uint32_t rt_enable; |
| }; |
| |
| struct nv30_vertex_element { |
| unsigned state; |
| }; |
| |
| struct nv30_vertex_stateobj { |
| struct pipe_vertex_element pipe[PIPE_MAX_ATTRIBS]; |
| struct translate *translate; |
| bool need_conversion; |
| unsigned num_elements; |
| unsigned vtx_size; |
| unsigned vtx_per_packet_max; |
| struct nv30_vertex_element element[]; |
| }; |
| |
| #endif |