0,0 → 1,144 |
#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 |