xref: /aosp_15_r20/external/mesa3d/src/mesa/main/atifragshader.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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