Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 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 */