blob: d2ff40cabbc2e2781648ce4557bc957b73f27469 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
#if !defined TGSI_EXEC_H
#define TGSI_EXEC_H
#if 0
#include "x86/rtasm/x86sse.h"
#endif
#if defined __cplusplus
extern "C" {
#endif // defined __cplusplus
union tgsi_exec_channel
{
GLfloat f[4];
GLint i[4];
GLuint u[4];
};
struct tgsi_exec_vector
{
union tgsi_exec_channel xyzw[4];
};
struct tgsi_sampler_state
{
const struct pipe_sampler_state *state;
const struct pipe_mipmap_tree *texture;
void (*get_sample)(const struct tgsi_sampler_state *sampler,
const GLfloat strq[4], GLfloat rgba[4]);
#if 0
GLboolean NeedLambda;
GLboolean NeedLodBias; /* if NeedLambda */
GLboolean NeedLambdaClamp; /* if NeedLambda */
GLfloat LodBias; /* if NeedLodBias */
GLfloat MinLod; /* if NeedLambdaClamp */
GLfloat MaxLod; /* if NeedLambdaClamp */
GLfloat ImageWidth;
GLfloat ImageHeight;
GLfloat ImageDepth;
#endif
};
struct tgsi_exec_labels
{
GLuint labels[128][2];
GLuint count;
};
#define TGSI_EXEC_TEMP_00000000_I 32
#define TGSI_EXEC_TEMP_00000000_C 0
#define TGSI_EXEC_TEMP_7FFFFFFF_I 32
#define TGSI_EXEC_TEMP_7FFFFFFF_C 1
#define TGSI_EXEC_TEMP_80000000_I 32
#define TGSI_EXEC_TEMP_80000000_C 2
#define TGSI_EXEC_TEMP_FFFFFFFF_I 32
#define TGSI_EXEC_TEMP_FFFFFFFF_C 3
#define TGSI_EXEC_TEMP_ONE_I 33
#define TGSI_EXEC_TEMP_ONE_C 0
#define TGSI_EXEC_TEMP_TWO_I 33
#define TGSI_EXEC_TEMP_TWO_C 1
#define TGSI_EXEC_TEMP_128_I 33
#define TGSI_EXEC_TEMP_128_C 2
#define TGSI_EXEC_TEMP_MINUS_128_I 33
#define TGSI_EXEC_TEMP_MINUS_128_C 3
#define TGSI_EXEC_TEMP_KILMASK_I 34
#define TGSI_EXEC_TEMP_KILMASK_C 0
#define TGSI_EXEC_TEMP_OUTPUT_I 34
#define TGSI_EXEC_TEMP_OUTPUT_C 1
#define TGSI_EXEC_TEMP_PRIMITIVE_I 34
#define TGSI_EXEC_TEMP_PRIMITIVE_C 2
#define TGSI_EXEC_TEMP_R0 35
#define TGSI_EXEC_NUM_TEMPS (32 + 4)
#define TGSI_EXEC_NUM_ADDRS 1
struct tgsi_exec_machine
{
/*
* 32 program temporaries
* 4 internal temporaries
* 1 address
* 1 temporary of padding to align to 16 bytes
*/
struct tgsi_exec_vector _Temps[TGSI_EXEC_NUM_TEMPS + TGSI_EXEC_NUM_ADDRS + 1];
/*
* This will point to _Temps after aligning to 16B boundary.
*/
struct tgsi_exec_vector *Temps;
struct tgsi_exec_vector *Addrs;
const struct tgsi_sampler_state *Samplers;
GLfloat Imms[256][4];
GLuint ImmLimit;
GLfloat (*Consts)[4];
const struct tgsi_exec_vector *Inputs;
struct tgsi_exec_vector *Outputs;
struct tgsi_token *Tokens;
GLuint Processor;
GLuint *Primitives;
#if XXX_SSE
struct x86_function Function;
#endif
};
void
tgsi_exec_machine_init(
struct tgsi_exec_machine *mach,
struct tgsi_token *tokens,
GLuint numSamplers,
const struct tgsi_sampler_state *samplers);
void
tgsi_exec_prepare(
struct tgsi_exec_machine *mach,
struct tgsi_exec_labels *labels );
void
tgsi_exec_machine_run(
struct tgsi_exec_machine *mach );
void
tgsi_exec_machine_run2(
struct tgsi_exec_machine *mach,
struct tgsi_exec_labels *labels );
#if defined __cplusplus
} // extern "C"
#endif // defined __cplusplus
#endif // !defined TGSI_EXEC_H
|