Added missing launcher
[mupen64plus-pandora.git] / source / rice_gles / src / CGLESCombiner.h
1 /*
2 Copyright (C) 2003 Rice1964
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
17 */
18
19 #ifndef _GLES_COMBINER_H_
20 #define _GLES_COMBINER_H_
21
22 #include <vector>
23
24 #include "Combiner.h"
25
26 typedef struct
27 {
28     uint8   arg0;
29     uint8   arg1;
30     uint8   arg2;
31     uint8   arg3;
32 } GLESCombType;
33
34 typedef struct {
35     union {
36         struct {
37             unsigned int    rgbOp;
38             unsigned int    alphaOp;
39         };
40         unsigned int ops[2];
41     };
42
43     union {
44         struct {
45             uint8   rgbArg0;
46             uint8   rgbArg1;
47             uint8   rgbArg2;
48             uint8   rgbArg3;
49             uint8   alphaArg0;
50             uint8   alphaArg1;
51             uint8   alphaArg2;
52             uint8   alphaArg3;
53         };
54         GLESCombType Combs[2];
55         uint8 args[2][4];
56     };
57
58     int constant;
59 } GLESCombinerType;
60
61 typedef struct {
62     uint32  dwMux0;
63     uint32  dwMux1;
64     union {
65         struct {
66             GLESCombinerType    unit1;
67             GLESCombinerType    unit2;
68         };
69         GLESCombinerType units[2];
70     };
71     int     numOfUnits;
72 } GLESCombinerSaveType;
73
74 class CGLESCombiner
75 {
76 protected:
77     CGLESCombiner();
78         virtual ~CGLESCombiner();
79
80     int FindCompiledMux();
81     int ParseDecodedMux();              // Compile the decodedMux into NV register combiner setting
82     virtual void ParseDecodedMuxForConstants(GLESCombinerSaveType &res);
83     int SaveParserResult(GLESCombinerSaveType &result);
84     
85 #ifdef DEBUGGER
86     void DisplaySimpleMuxString();
87 #endif
88     std::vector<GLESCombinerSaveType>   m_vCompiledGLESSettings;
89     int m_lastIndexGLES;
90     DecodedMux **m_ppDecodedMux;
91 };
92
93 #endif
94