1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Mesa 3-D graphics library ATI Fragment Shader 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Copyright (C) 2004 David Airlie All Rights Reserved. 5*61046927SAndroid Build Coastguard Worker * 6*61046927SAndroid Build Coastguard Worker */ 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard Worker #ifndef ATIFRAGSHADER_H 9*61046927SAndroid Build Coastguard Worker #define ATIFRAGSHADER_H 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Worker #include "util/glheader.h" 12*61046927SAndroid Build Coastguard Worker 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard Worker struct gl_context; 15*61046927SAndroid Build Coastguard Worker 16*61046927SAndroid Build Coastguard Worker #define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8 17*61046927SAndroid Build Coastguard Worker #define MAX_NUM_PASSES_ATI 2 18*61046927SAndroid Build Coastguard Worker #define MAX_NUM_FRAGMENT_REGISTERS_ATI 6 19*61046927SAndroid Build Coastguard Worker #define MAX_NUM_FRAGMENT_CONSTANTS_ATI 8 20*61046927SAndroid Build Coastguard Worker 21*61046927SAndroid Build Coastguard Worker struct ati_fs_opcode_st 22*61046927SAndroid Build Coastguard Worker { 23*61046927SAndroid Build Coastguard Worker GLenum opcode; 24*61046927SAndroid Build Coastguard Worker GLint num_src_args; 25*61046927SAndroid Build Coastguard Worker }; 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Worker struct atifragshader_src_register 28*61046927SAndroid Build Coastguard Worker { 29*61046927SAndroid Build Coastguard Worker GLuint Index; 30*61046927SAndroid Build Coastguard Worker GLuint argRep; 31*61046927SAndroid Build Coastguard Worker GLuint argMod; 32*61046927SAndroid Build Coastguard Worker }; 33*61046927SAndroid Build Coastguard Worker 34*61046927SAndroid Build Coastguard Worker struct atifragshader_dst_register 35*61046927SAndroid Build Coastguard Worker { 36*61046927SAndroid Build Coastguard Worker GLuint Index; 37*61046927SAndroid Build Coastguard Worker GLuint dstMod; 38*61046927SAndroid Build Coastguard Worker GLuint dstMask; 39*61046927SAndroid Build Coastguard Worker }; 40*61046927SAndroid Build Coastguard Worker 41*61046927SAndroid Build Coastguard Worker #define ATI_FRAGMENT_SHADER_COLOR_OP 0 42*61046927SAndroid Build Coastguard Worker #define ATI_FRAGMENT_SHADER_ALPHA_OP 1 43*61046927SAndroid Build Coastguard Worker #define ATI_FRAGMENT_SHADER_PASS_OP 2 44*61046927SAndroid Build Coastguard Worker #define ATI_FRAGMENT_SHADER_SAMPLE_OP 3 45*61046927SAndroid Build Coastguard Worker 46*61046927SAndroid Build Coastguard Worker /* two opcodes - one for color/one for alpha */ 47*61046927SAndroid Build Coastguard Worker /* up to three source registers for most ops */ 48*61046927SAndroid Build Coastguard Worker struct atifs_instruction 49*61046927SAndroid Build Coastguard Worker { 50*61046927SAndroid Build Coastguard Worker GLenum Opcode[2]; 51*61046927SAndroid Build Coastguard Worker GLuint ArgCount[2]; 52*61046927SAndroid Build Coastguard Worker struct atifragshader_src_register SrcReg[2][3]; 53*61046927SAndroid Build Coastguard Worker struct atifragshader_dst_register DstReg[2]; 54*61046927SAndroid Build Coastguard Worker }; 55*61046927SAndroid Build Coastguard Worker 56*61046927SAndroid Build Coastguard Worker /* different from arithmetic shader instruction */ 57*61046927SAndroid Build Coastguard Worker struct atifs_setupinst 58*61046927SAndroid Build Coastguard Worker { 59*61046927SAndroid Build Coastguard Worker GLenum Opcode; 60*61046927SAndroid Build Coastguard Worker GLuint src; 61*61046927SAndroid Build Coastguard Worker GLenum swizzle; 62*61046927SAndroid Build Coastguard Worker }; 63*61046927SAndroid Build Coastguard Worker 64*61046927SAndroid Build Coastguard Worker 65*61046927SAndroid Build Coastguard Worker extern struct ati_fragment_shader * 66*61046927SAndroid Build Coastguard Worker _mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id); 67*61046927SAndroid Build Coastguard Worker 68*61046927SAndroid Build Coastguard Worker extern void 69*61046927SAndroid Build Coastguard Worker _mesa_delete_ati_fragment_shader(struct gl_context *ctx, 70*61046927SAndroid Build Coastguard Worker struct ati_fragment_shader *s); 71*61046927SAndroid Build Coastguard Worker 72*61046927SAndroid Build Coastguard Worker #endif /* ATIFRAGSHADER_H */ 73