Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1901 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 "compiler.h"
12
#include "glheader.h"
13
#include "mfeatures.h"
14
 
15
struct _glapi_table;
16
struct gl_context;
17
 
18
#define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8
19
#define MAX_NUM_PASSES_ATI                2
20
#define MAX_NUM_FRAGMENT_REGISTERS_ATI    6
21
 
22
struct ati_fs_opcode_st
23
{
24
   GLenum opcode;
25
   GLint num_src_args;
26
};
27
 
28
extern struct ati_fs_opcode_st ati_fs_opcodes[];
29
 
30
struct atifragshader_src_register
31
{
32
   GLuint Index;
33
   GLuint argRep;
34
   GLuint argMod;
35
};
36
 
37
struct atifragshader_dst_register
38
{
39
   GLuint Index;
40
   GLuint dstMod;
41
   GLuint dstMask;
42
};
43
 
44
#define ATI_FRAGMENT_SHADER_COLOR_OP 0
45
#define ATI_FRAGMENT_SHADER_ALPHA_OP 1
46
#define ATI_FRAGMENT_SHADER_PASS_OP  2
47
#define ATI_FRAGMENT_SHADER_SAMPLE_OP 3
48
 
49
/* two opcodes - one for color/one for alpha */
50
/* up to three source registers for most ops */
51
struct atifs_instruction
52
{
53
   GLenum Opcode[2];
54
   GLuint ArgCount[2];
55
   struct atifragshader_src_register SrcReg[2][3];
56
   struct atifragshader_dst_register DstReg[2];
57
};
58
 
59
/* different from arithmetic shader instruction */
60
struct atifs_setupinst
61
{
62
   GLenum Opcode;
63
   GLuint src;
64
   GLenum swizzle;
65
};
66
 
67
 
68
#if FEATURE_ATI_fragment_shader
69
 
70
extern void
71
_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp);
72
 
73
extern struct ati_fragment_shader *
74
_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id);
75
 
76
extern void
77
_mesa_delete_ati_fragment_shader(struct gl_context *ctx,
78
                                 struct ati_fragment_shader *s);
79
 
80
 
81
extern GLuint GLAPIENTRY _mesa_GenFragmentShadersATI(GLuint range);
82
 
83
extern void GLAPIENTRY _mesa_BindFragmentShaderATI(GLuint id);
84
 
85
extern void GLAPIENTRY _mesa_DeleteFragmentShaderATI(GLuint id);
86
 
87
extern void GLAPIENTRY _mesa_BeginFragmentShaderATI(void);
88
 
89
extern void GLAPIENTRY _mesa_EndFragmentShaderATI(void);
90
 
91
extern void GLAPIENTRY
92
_mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle);
93
 
94
extern void GLAPIENTRY
95
_mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle);
96
 
97
extern void GLAPIENTRY
98
_mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask,
99
			  GLuint dstMod, GLuint arg1, GLuint arg1Rep,
100
			  GLuint arg1Mod);
101
 
102
extern void GLAPIENTRY
103
_mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask,
104
			  GLuint dstMod, GLuint arg1, GLuint arg1Rep,
105
			  GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
106
			  GLuint arg2Mod);
107
 
108
extern void GLAPIENTRY
109
_mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask,
110
			  GLuint dstMod, GLuint arg1, GLuint arg1Rep,
111
			  GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
112
			  GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
113
			  GLuint arg3Mod);
114
 
115
extern void GLAPIENTRY
116
_mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
117
			  GLuint arg1Rep, GLuint arg1Mod);
118
 
119
extern void GLAPIENTRY
120
_mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
121
			  GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
122
			  GLuint arg2Rep, GLuint arg2Mod);
123
 
124
extern void GLAPIENTRY
125
_mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
126
			  GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
127
			  GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
128
			  GLuint arg3Rep, GLuint arg3Mod);
129
 
130
extern void GLAPIENTRY
131
_mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value);
132
 
133
#else /* FEATURE_ATI_fragment_shader */
134
 
135
static INLINE void
136
_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
137
{
138
}
139
 
140
static INLINE struct ati_fragment_shader *
141
_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id)
142
{
143
   return NULL;
144
}
145
 
146
static INLINE void
147
_mesa_delete_ati_fragment_shader(struct gl_context *ctx,
148
                                 struct ati_fragment_shader *s)
149
{
150
}
151
 
152
#endif /* FEATURE_ATI_fragment_shader */
153
 
154
#endif /* ATIFRAGSHADER_H */