2 * Mesa 3-D graphics library ATI Fragment Shader
4 * Copyright (C) 2004 David Airlie All Rights Reserved.
8 #ifndef ATIFRAGSHADER_H
9 #define ATIFRAGSHADER_H
11 #define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8
12 #define MAX_NUM_PASSES_ATI 2
13 #define MAX_NUM_FRAGMENT_REGISTERS_ATI 6
15 struct ati_fs_opcode_st
21 extern struct ati_fs_opcode_st ati_fs_opcodes
[];
23 struct atifragshader_src_register
30 struct atifragshader_dst_register
38 #define ATI_FRAGMENT_SHADER_COLOR_OP 0
39 #define ATI_FRAGMENT_SHADER_ALPHA_OP 1
40 #define ATI_FRAGMENT_SHADER_PASS_OP 2
41 #define ATI_FRAGMENT_SHADER_SAMPLE_OP 3
43 /* two opcodes - one for color/one for alpha - also pass/sample */
44 /* up to three source registers for most ops */
45 struct atifs_instruction
49 struct atifragshader_src_register SrcReg
[2][3];
50 struct atifragshader_dst_register DstReg
[2];
53 extern GLuint GLAPIENTRY
_mesa_GenFragmentShadersATI(GLuint range
);
55 extern void GLAPIENTRY
_mesa_BindFragmentShaderATI(GLuint id
);
57 extern void GLAPIENTRY
_mesa_DeleteFragmentShaderATI(GLuint id
);
59 extern void GLAPIENTRY
_mesa_BeginFragmentShaderATI(void);
61 extern void GLAPIENTRY
_mesa_EndFragmentShaderATI(void);
63 extern void GLAPIENTRY
64 _mesa_PassTexCoordATI(GLuint dst
, GLuint coord
, GLenum swizzle
);
66 extern void GLAPIENTRY
67 _mesa_SampleMapATI(GLuint dst
, GLuint interp
, GLenum swizzle
);
69 extern void GLAPIENTRY
70 _mesa_ColorFragmentOp1ATI(GLenum op
, GLuint dst
, GLuint dstMask
,
71 GLuint dstMod
, GLuint arg1
, GLuint arg1Rep
,
74 extern void GLAPIENTRY
75 _mesa_ColorFragmentOp2ATI(GLenum op
, GLuint dst
, GLuint dstMask
,
76 GLuint dstMod
, GLuint arg1
, GLuint arg1Rep
,
77 GLuint arg1Mod
, GLuint arg2
, GLuint arg2Rep
,
80 extern void GLAPIENTRY
81 _mesa_ColorFragmentOp3ATI(GLenum op
, GLuint dst
, GLuint dstMask
,
82 GLuint dstMod
, GLuint arg1
, GLuint arg1Rep
,
83 GLuint arg1Mod
, GLuint arg2
, GLuint arg2Rep
,
84 GLuint arg2Mod
, GLuint arg3
, GLuint arg3Rep
,
87 extern void GLAPIENTRY
88 _mesa_AlphaFragmentOp1ATI(GLenum op
, GLuint dst
, GLuint dstMod
, GLuint arg1
,
89 GLuint arg1Rep
, GLuint arg1Mod
);
91 extern void GLAPIENTRY
92 _mesa_AlphaFragmentOp2ATI(GLenum op
, GLuint dst
, GLuint dstMod
, GLuint arg1
,
93 GLuint arg1Rep
, GLuint arg1Mod
, GLuint arg2
,
94 GLuint arg2Rep
, GLuint arg2Mod
);
96 extern void GLAPIENTRY
97 _mesa_AlphaFragmentOp3ATI(GLenum op
, GLuint dst
, GLuint dstMod
, GLuint arg1
,
98 GLuint arg1Rep
, GLuint arg1Mod
, GLuint arg2
,
99 GLuint arg2Rep
, GLuint arg2Mod
, GLuint arg3
,
100 GLuint arg3Rep
, GLuint arg3Mod
);
102 extern void GLAPIENTRY
103 _mesa_SetFragmentShaderConstantATI(GLuint dst
, const GLfloat
* value
);