Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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 */
  126.