-
Notifications
You must be signed in to change notification settings - Fork 344
/
shadercodegen.hpp
42 lines (31 loc) · 1.02 KB
/
shadercodegen.hpp
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
// This file is distributed under a BSD license. See LICENSE.txt for details.
#ifndef __SHADERCODEGEN_HPP_
#define __SHADERCODEGEN_HPP_
#include "_types.hpp"
/****************************************************************************/
struct sShaderCodeGen
{
enum { MAXTEMP = 256, MAXTEMP2 = 512, MAXNEST = 32 };
enum { MAXPHYSREG = 12, MAXINDEX = 16 };
enum { MAXOUTINSTR = 512, LONGESTINSTR = 6 };
enum { MAXCODEWORDS = MAXOUTINSTR*LONGESTINSTR };
struct Control;
const sU32 *DataArea;
sU8 Index[MAXINDEX];
sBool IsV1Shader;
sBool IsPS11;
sU32 CodeLen; // in words
sU32 *FirstInstr; // pointer to first actual instruction in code stream
sU32 *LifeEnd[MAXTEMP2];
sU32 Code[MAXCODEWORDS];
sU32 GetFlagWord(sU32 addr);
sBool EvalCond(sU32 condition);
sBool Phase1(const sU32 *input);
sBool Phase2();
void RemoveOpcodeLengths();
public:
// frontend
sU32 *GenCode(const sU32 *input,const sU32 *data);
};
/****************************************************************************/
#endif