mesa: trim down includes of compiler.h
[mesa.git] / src / mesa / main / atifragshader.h
1 /*
2 * Mesa 3-D graphics library ATI Fragment Shader
3 *
4 * Copyright (C) 2004 David Airlie All Rights Reserved.
5 *
6 */
7
8 #ifndef ATIFRAGSHADER_H
9 #define ATIFRAGSHADER_H
10
11 #include "glheader.h"
12
13
14 struct gl_context;
15
16 #define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8
17 #define MAX_NUM_PASSES_ATI 2
18 #define MAX_NUM_FRAGMENT_REGISTERS_ATI 6
19
20 struct ati_fs_opcode_st
21 {
22 GLenum opcode;
23 GLint num_src_args;
24 };
25
26 struct atifragshader_src_register
27 {
28 GLuint Index;
29 GLuint argRep;
30 GLuint argMod;
31 };
32
33 struct atifragshader_dst_register
34 {
35 GLuint Index;
36 GLuint dstMod;
37 GLuint dstMask;
38 };
39
40 #define ATI_FRAGMENT_SHADER_COLOR_OP 0
41 #define ATI_FRAGMENT_SHADER_ALPHA_OP 1
42 #define ATI_FRAGMENT_SHADER_PASS_OP 2
43 #define ATI_FRAGMENT_SHADER_SAMPLE_OP 3
44
45 /* two opcodes - one for color/one for alpha */
46 /* up to three source registers for most ops */
47 struct atifs_instruction
48 {
49 GLenum Opcode[2];
50 GLuint ArgCount[2];
51 struct atifragshader_src_register SrcReg[2][3];
52 struct atifragshader_dst_register DstReg[2];
53 };
54
55 /* different from arithmetic shader instruction */
56 struct atifs_setupinst
57 {
58 GLenum Opcode;
59 GLuint src;
60 GLenum swizzle;
61 };
62
63
64 extern struct ati_fragment_shader *
65 _mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id);
66
67 extern void
68 _mesa_delete_ati_fragment_shader(struct gl_context *ctx,
69 struct ati_fragment_shader *s);
70
71
72 extern GLuint GLAPIENTRY _mesa_GenFragmentShadersATI(GLuint range);
73
74 extern void GLAPIENTRY _mesa_BindFragmentShaderATI(GLuint id);
75
76 extern void GLAPIENTRY _mesa_DeleteFragmentShaderATI(GLuint id);
77
78 extern void GLAPIENTRY _mesa_BeginFragmentShaderATI(void);
79
80 extern void GLAPIENTRY _mesa_EndFragmentShaderATI(void);
81
82 extern void GLAPIENTRY
83 _mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle);
84
85 extern void GLAPIENTRY
86 _mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle);
87
88 extern void GLAPIENTRY
89 _mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask,
90 GLuint dstMod, GLuint arg1, GLuint arg1Rep,
91 GLuint arg1Mod);
92
93 extern void GLAPIENTRY
94 _mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask,
95 GLuint dstMod, GLuint arg1, GLuint arg1Rep,
96 GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
97 GLuint arg2Mod);
98
99 extern void GLAPIENTRY
100 _mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask,
101 GLuint dstMod, GLuint arg1, GLuint arg1Rep,
102 GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
103 GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
104 GLuint arg3Mod);
105
106 extern void GLAPIENTRY
107 _mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
108 GLuint arg1Rep, GLuint arg1Mod);
109
110 extern void GLAPIENTRY
111 _mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
112 GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
113 GLuint arg2Rep, GLuint arg2Mod);
114
115 extern void GLAPIENTRY
116 _mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
117 GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
118 GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
119 GLuint arg3Rep, GLuint arg3Mod);
120
121 extern void GLAPIENTRY
122 _mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value);
123
124
125 #endif /* ATIFRAGSHADER_H */