Subversion Repositories Kolibri OS

Rev

Go to most recent revision | 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 "compiler.h"
  12. #include "glheader.h"
  13.  
  14. struct _glapi_table;
  15. struct gl_context;
  16.  
  17. #define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8
  18. #define MAX_NUM_PASSES_ATI                2
  19. #define MAX_NUM_FRAGMENT_REGISTERS_ATI    6
  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.