1 #ifndef __NV30_STATE_H__ 2 #define __NV30_STATE_H__ 3 4 #include "pipe/p_state.h" 5 #include "tgsi/tgsi_scan.h" 6 #include "util/u_dynarray.h" 7 8 #define NV30_QUERY_ZCULL_0 (PIPE_QUERY_TYPES + 0) 9 #define NV30_QUERY_ZCULL_1 (PIPE_QUERY_TYPES + 1) 10 #define NV30_QUERY_ZCULL_2 (PIPE_QUERY_TYPES + 2) 11 #define NV30_QUERY_ZCULL_3 (PIPE_QUERY_TYPES + 3) 12 13 #define SB_DATA(so, u) (so)->data[(so)->size++] = (u) 14 #define SB_MTHD30(so, mthd, size) \ 15 SB_DATA((so), ((size) << 18) | (7 << 13) | NV30_3D_##mthd) 16 #define SB_MTHD40(so, mthd, size) \ 17 SB_DATA((so), ((size) << 18) | (7 << 13) | NV40_3D_##mthd) 18 19 struct nv30_blend_stateobj { 20 struct pipe_blend_state pipe; 21 unsigned data[16]; 22 unsigned size; 23 }; 24 25 struct nv30_rasterizer_stateobj { 26 struct pipe_rasterizer_state pipe; 27 unsigned data[32]; 28 unsigned size; 29 }; 30 31 struct nv30_zsa_stateobj { 32 struct pipe_depth_stencil_alpha_state pipe; 33 unsigned data[32]; 34 unsigned size; 35 }; 36 37 struct nv30_sampler_state { 38 struct pipe_sampler_state pipe; 39 unsigned fmt; 40 unsigned wrap; 41 unsigned en; 42 unsigned filt; 43 unsigned bcol; 44 /* 4.8 */ 45 unsigned min_lod; 46 unsigned max_lod; 47 }; 48 49 struct nv30_sampler_view { 50 struct pipe_sampler_view pipe; 51 unsigned fmt; 52 unsigned swz; 53 unsigned filt; 54 unsigned filt_mask; 55 unsigned wrap; 56 unsigned wrap_mask; 57 unsigned npot_size0; 58 unsigned npot_size1; 59 /* 4.8 */ 60 unsigned base_lod; 61 unsigned high_lod; 62 }; 63 64 struct nv30_shader_reloc { 65 unsigned location; 66 int target; 67 }; 68 69 struct nv30_vertprog_exec { 70 uint32_t data[4]; 71 }; 72 73 struct nv30_vertprog_data { 74 int index; /* immediates == -1 */ 75 float value[4]; 76 }; 77 78 struct nv30_vertprog { 79 struct pipe_shader_state pipe; 80 struct tgsi_shader_info info; 81 82 struct draw_vertex_shader *draw; 83 boolean translated; 84 unsigned enabled_ucps; 85 uint16_t texcoord[10]; 86 87 struct util_dynarray branch_relocs; 88 struct nv30_vertprog_exec *insns; 89 unsigned nr_insns; 90 91 struct util_dynarray const_relocs; 92 struct nv30_vertprog_data *consts; 93 unsigned nr_consts; 94 95 struct nouveau_heap *exec; 96 struct nouveau_heap *data; 97 uint32_t ir; 98 uint32_t or; 99 void *nvfx; 100 }; 101 102 struct nv30_fragprog_data { 103 unsigned offset; 104 unsigned index; 105 }; 106 107 struct nv30_fragprog { 108 struct pipe_shader_state pipe; 109 struct tgsi_shader_info info; 110 111 struct draw_fragment_shader *draw; 112 boolean translated; 113 114 uint32_t *insn; 115 unsigned insn_len; 116 117 uint16_t texcoord[10]; 118 struct nv30_fragprog_data *consts; 119 unsigned nr_consts; 120 121 struct pipe_resource *buffer; 122 uint32_t vp_or; /* appended to VP_RESULT_EN */ 123 uint32_t fp_control; 124 uint32_t point_sprite_control; 125 uint32_t coord_conventions; 126 uint32_t texcoords; 127 uint32_t rt_enable; 128 }; 129 130 struct nv30_vertex_element { 131 unsigned state; 132 }; 133 134 struct nv30_vertex_stateobj { 135 struct pipe_vertex_element pipe[PIPE_MAX_ATTRIBS]; 136 struct translate *translate; 137 bool need_conversion; 138 unsigned num_elements; 139 unsigned vtx_size; 140 unsigned vtx_per_packet_max; 141 struct nv30_vertex_element element[]; 142 }; 143 144 #endif 145