Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/gallium/drivers/nouveau/nv30/nv30_state.h
4574 views
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_MTHD35(so, mthd, size) \
17
SB_DATA((so), ((size) << 18) | (7 << 13) | NV35_3D_##mthd)
18
#define SB_MTHD40(so, mthd, size) \
19
SB_DATA((so), ((size) << 18) | (7 << 13) | NV40_3D_##mthd)
20
21
struct nv30_blend_stateobj {
22
struct pipe_blend_state pipe;
23
unsigned data[16];
24
unsigned size;
25
};
26
27
struct nv30_rasterizer_stateobj {
28
struct pipe_rasterizer_state pipe;
29
unsigned data[32];
30
unsigned size;
31
};
32
33
struct nv30_zsa_stateobj {
34
struct pipe_depth_stencil_alpha_state pipe;
35
unsigned data[36];
36
unsigned size;
37
};
38
39
struct nv30_sampler_state {
40
struct pipe_sampler_state pipe;
41
unsigned fmt;
42
unsigned wrap;
43
unsigned en;
44
unsigned filt;
45
unsigned bcol;
46
/* 4.8 */
47
unsigned min_lod;
48
unsigned max_lod;
49
};
50
51
struct nv30_sampler_view {
52
struct pipe_sampler_view pipe;
53
unsigned fmt;
54
unsigned swz;
55
unsigned filt;
56
unsigned filt_mask;
57
unsigned wrap;
58
unsigned wrap_mask;
59
unsigned npot_size0;
60
unsigned npot_size1;
61
/* 4.8 */
62
unsigned base_lod;
63
unsigned high_lod;
64
};
65
66
struct nv30_shader_reloc {
67
unsigned location;
68
int target;
69
};
70
71
struct nv30_vertprog_exec {
72
uint32_t data[4];
73
};
74
75
struct nv30_vertprog_data {
76
int index; /* immediates == -1 */
77
float value[4];
78
};
79
80
struct nv30_vertprog {
81
struct pipe_shader_state pipe;
82
struct tgsi_shader_info info;
83
84
struct draw_vertex_shader *draw;
85
bool translated;
86
unsigned enabled_ucps;
87
uint16_t texcoord[10];
88
89
struct util_dynarray branch_relocs;
90
struct nv30_vertprog_exec *insns;
91
unsigned nr_insns;
92
93
struct util_dynarray const_relocs;
94
struct nv30_vertprog_data *consts;
95
unsigned nr_consts;
96
97
struct nouveau_heap *exec;
98
struct nouveau_heap *data;
99
uint32_t ir;
100
uint32_t or;
101
void *nvfx;
102
};
103
104
struct nv30_fragprog_data {
105
unsigned offset;
106
unsigned index;
107
};
108
109
struct nv30_fragprog {
110
struct pipe_shader_state pipe;
111
struct tgsi_shader_info info;
112
113
struct draw_fragment_shader *draw;
114
bool translated;
115
116
uint32_t *insn;
117
unsigned insn_len;
118
119
uint16_t texcoord[10];
120
struct nv30_fragprog_data *consts;
121
unsigned nr_consts;
122
123
struct pipe_resource *buffer;
124
uint32_t vp_or; /* appended to VP_RESULT_EN */
125
uint32_t fp_control;
126
uint32_t point_sprite_control;
127
uint32_t coord_conventions;
128
uint32_t texcoords;
129
uint32_t rt_enable;
130
};
131
132
struct nv30_vertex_element {
133
unsigned state;
134
};
135
136
struct nv30_vertex_stateobj {
137
struct pipe_vertex_element pipe[PIPE_MAX_ATTRIBS];
138
struct translate *translate;
139
bool need_conversion;
140
unsigned num_elements;
141
unsigned vtx_size;
142
unsigned vtx_per_packet_max;
143
struct nv30_vertex_element element[];
144
};
145
146
#endif
147
148