Home | History | Annotate | Download | only in main
      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 #define MAX_NUM_FRAGMENT_CONSTANTS_ATI    8
     20 
     21 struct ati_fs_opcode_st
     22 {
     23    GLenum opcode;
     24    GLint num_src_args;
     25 };
     26 
     27 struct atifragshader_src_register
     28 {
     29    GLuint Index;
     30    GLuint argRep;
     31    GLuint argMod;
     32 };
     33 
     34 struct atifragshader_dst_register
     35 {
     36    GLuint Index;
     37    GLuint dstMod;
     38    GLuint dstMask;
     39 };
     40 
     41 #define ATI_FRAGMENT_SHADER_COLOR_OP 0
     42 #define ATI_FRAGMENT_SHADER_ALPHA_OP 1
     43 #define ATI_FRAGMENT_SHADER_PASS_OP  2
     44 #define ATI_FRAGMENT_SHADER_SAMPLE_OP 3
     45 
     46 /* two opcodes - one for color/one for alpha */
     47 /* up to three source registers for most ops */
     48 struct atifs_instruction
     49 {
     50    GLenum Opcode[2];
     51    GLuint ArgCount[2];
     52    struct atifragshader_src_register SrcReg[2][3];
     53    struct atifragshader_dst_register DstReg[2];
     54 };
     55 
     56 /* different from arithmetic shader instruction */
     57 struct atifs_setupinst
     58 {
     59    GLenum Opcode;
     60    GLuint src;
     61    GLenum swizzle;
     62 };
     63 
     64 
     65 extern struct ati_fragment_shader *
     66 _mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id);
     67 
     68 extern void
     69 _mesa_delete_ati_fragment_shader(struct gl_context *ctx,
     70                                  struct ati_fragment_shader *s);
     71 
     72 
     73 extern GLuint GLAPIENTRY _mesa_GenFragmentShadersATI(GLuint range);
     74 
     75 extern void GLAPIENTRY _mesa_BindFragmentShaderATI(GLuint id);
     76 
     77 extern void GLAPIENTRY _mesa_DeleteFragmentShaderATI(GLuint id);
     78 
     79 extern void GLAPIENTRY _mesa_BeginFragmentShaderATI(void);
     80 
     81 extern void GLAPIENTRY _mesa_EndFragmentShaderATI(void);
     82 
     83 extern void GLAPIENTRY
     84 _mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle);
     85 
     86 extern void GLAPIENTRY
     87 _mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle);
     88 
     89 extern void GLAPIENTRY
     90 _mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask,
     91 			  GLuint dstMod, GLuint arg1, GLuint arg1Rep,
     92 			  GLuint arg1Mod);
     93 
     94 extern void GLAPIENTRY
     95 _mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask,
     96 			  GLuint dstMod, GLuint arg1, GLuint arg1Rep,
     97 			  GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
     98 			  GLuint arg2Mod);
     99 
    100 extern void GLAPIENTRY
    101 _mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask,
    102 			  GLuint dstMod, GLuint arg1, GLuint arg1Rep,
    103 			  GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
    104 			  GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
    105 			  GLuint arg3Mod);
    106 
    107 extern void GLAPIENTRY
    108 _mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
    109 			  GLuint arg1Rep, GLuint arg1Mod);
    110 
    111 extern void GLAPIENTRY
    112 _mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
    113 			  GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
    114 			  GLuint arg2Rep, GLuint arg2Mod);
    115 
    116 extern void GLAPIENTRY
    117 _mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
    118 			  GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
    119 			  GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
    120 			  GLuint arg3Rep, GLuint arg3Mod);
    121 
    122 extern void GLAPIENTRY
    123 _mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value);
    124 
    125 
    126 #endif /* ATIFRAGSHADER_H */
    127