push 20d539bd3127e997ce79233e3988ba5740356ce5
[wine/hacks.git] / dlls / wined3d / wined3d_private_types.h
blob30d6900f0f408e023874994a83ab4790a0031cbd
1 /*
2 * Direct3D wine internal header: D3D equivalent types
4 * Copyright 2002-2003 Jason Edmeades
5 * Copyright 2002-2003 Raphael Junqueira
6 * Copyright 2005 Oliver Stieber
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 #ifndef __WINE_WINED3D_TYPES_INTERNAL_H
24 #define __WINE_WINED3D_TYPES_INTERNAL_H
26 /* WineD3D pixel format flags */
27 #define WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING 0x1
28 #define WINED3DFMT_FLAG_FILTERING 0x2
29 #define WINED3DFMT_FLAG_DEPTH 0x4
30 #define WINED3DFMT_FLAG_STENCIL 0x8
31 #define WINED3DFMT_FLAG_RENDERTARGET 0x10
32 #define WINED3DFMT_FLAG_FOURCC 0x20
34 typedef enum _WINED3DSAMPLER_TEXTURE_TYPE
36 WINED3DSTT_UNKNOWN = 0,
37 WINED3DSTT_1D = 1,
38 WINED3DSTT_2D = 2,
39 WINED3DSTT_CUBE = 3,
40 WINED3DSTT_VOLUME = 4,
42 WINED3DSTT_FORCE_DWORD = 0x7FFFFFFF
43 } WINED3DSAMPLER_TEXTURE_TYPE;
45 /** Register types **/
46 typedef enum _WINED3DSHADER_PARAM_REGISTER_TYPE {
47 WINED3DSPR_TEMP = 0,
48 WINED3DSPR_INPUT = 1,
49 WINED3DSPR_CONST = 2,
50 WINED3DSPR_ADDR = 3,
51 WINED3DSPR_TEXTURE = 3,
52 WINED3DSPR_RASTOUT = 4,
53 WINED3DSPR_ATTROUT = 5,
54 WINED3DSPR_TEXCRDOUT = 6,
55 WINED3DSPR_OUTPUT = 6,
56 WINED3DSPR_CONSTINT = 7,
57 WINED3DSPR_COLOROUT = 8,
58 WINED3DSPR_DEPTHOUT = 9,
59 WINED3DSPR_SAMPLER = 10,
60 WINED3DSPR_CONST2 = 11,
61 WINED3DSPR_CONST3 = 12,
62 WINED3DSPR_CONST4 = 13,
63 WINED3DSPR_CONSTBOOL = 14,
64 WINED3DSPR_LOOP = 15,
65 WINED3DSPR_TEMPFLOAT16 = 16,
66 WINED3DSPR_MISCTYPE = 17,
67 WINED3DSPR_LABEL = 18,
68 WINED3DSPR_PREDICATE = 19,
70 WINED3DSPR_FORCE_DWORD = 0x7FFFFFFF
71 } WINED3DSHADER_PARAM_REGISTER_TYPE;
73 /* RASTOUT register offsets */
74 typedef enum _WINED3DVS_RASTOUT_OFFSETS {
75 WINED3DSRO_POSITION = 0,
76 WINED3DSRO_FOG = 1,
77 WINED3DSRO_POINT_SIZE = 2,
79 WINED3DSRO_FORCE_DWORD = 0x7FFFFFFF
80 } WINED3DVS_RASTOUT_OFFSETS;
82 #define WINED3DSP_NOSWIZZLE (0 | (1 << 2) | (2 << 4) | (3 << 6))
84 typedef enum _WINED3DSHADER_PARAM_SRCMOD_TYPE {
85 WINED3DSPSM_NONE = 0,
86 WINED3DSPSM_NEG = 1,
87 WINED3DSPSM_BIAS = 2,
88 WINED3DSPSM_BIASNEG = 3,
89 WINED3DSPSM_SIGN = 4,
90 WINED3DSPSM_SIGNNEG = 5,
91 WINED3DSPSM_COMP = 6,
92 WINED3DSPSM_X2 = 7,
93 WINED3DSPSM_X2NEG = 8,
94 WINED3DSPSM_DZ = 9,
95 WINED3DSPSM_DW = 10,
96 WINED3DSPSM_ABS = 11,
97 WINED3DSPSM_ABSNEG = 12,
98 WINED3DSPSM_NOT = 13,
100 WINED3DSPSM_FORCE_DWORD = 0x7FFFFFFF
101 } WINED3DSHADER_PARAM_SRCMOD_TYPE;
103 /** Destination register modifiers **/
104 #define WINED3DSP_WRITEMASK_0 0x00010000 /* .x r */
105 #define WINED3DSP_WRITEMASK_1 0x00020000 /* .y g */
106 #define WINED3DSP_WRITEMASK_2 0x00040000 /* .z b */
107 #define WINED3DSP_WRITEMASK_3 0x00080000 /* .w a */
108 #define WINED3DSP_WRITEMASK_ALL 0x000F0000 /* all */
110 typedef enum _WINED3DSHADER_PARAM_DSTMOD_TYPE {
111 WINED3DSPDM_NONE = 0,
112 WINED3DSPDM_SATURATE = 1,
113 WINED3DSPDM_PARTIALPRECISION = 2,
114 WINED3DSPDM_MSAMPCENTROID = 4,
116 WINED3DSPDM_FORCE_DWORD = 0x7FFFFFFF
117 } WINED3DSHADER_PARAM_DSTMOD_TYPE;
119 /** Opcode types */
120 typedef enum _WINED3DSHADER_INSTRUCTION_OPCODE_TYPE {
121 WINED3DSIO_NOP = 0,
122 WINED3DSIO_MOV = 1,
123 WINED3DSIO_ADD = 2,
124 WINED3DSIO_SUB = 3,
125 WINED3DSIO_MAD = 4,
126 WINED3DSIO_MUL = 5,
127 WINED3DSIO_RCP = 6,
128 WINED3DSIO_RSQ = 7,
129 WINED3DSIO_DP3 = 8,
130 WINED3DSIO_DP4 = 9,
131 WINED3DSIO_MIN = 10,
132 WINED3DSIO_MAX = 11,
133 WINED3DSIO_SLT = 12,
134 WINED3DSIO_SGE = 13,
135 WINED3DSIO_EXP = 14,
136 WINED3DSIO_LOG = 15,
137 WINED3DSIO_LIT = 16,
138 WINED3DSIO_DST = 17,
139 WINED3DSIO_LRP = 18,
140 WINED3DSIO_FRC = 19,
141 WINED3DSIO_M4x4 = 20,
142 WINED3DSIO_M4x3 = 21,
143 WINED3DSIO_M3x4 = 22,
144 WINED3DSIO_M3x3 = 23,
145 WINED3DSIO_M3x2 = 24,
146 WINED3DSIO_CALL = 25,
147 WINED3DSIO_CALLNZ = 26,
148 WINED3DSIO_LOOP = 27,
149 WINED3DSIO_RET = 28,
150 WINED3DSIO_ENDLOOP = 29,
151 WINED3DSIO_LABEL = 30,
152 WINED3DSIO_DCL = 31,
153 WINED3DSIO_POW = 32,
154 WINED3DSIO_CRS = 33,
155 WINED3DSIO_SGN = 34,
156 WINED3DSIO_ABS = 35,
157 WINED3DSIO_NRM = 36,
158 WINED3DSIO_SINCOS = 37,
159 WINED3DSIO_REP = 38,
160 WINED3DSIO_ENDREP = 39,
161 WINED3DSIO_IF = 40,
162 WINED3DSIO_IFC = 41,
163 WINED3DSIO_ELSE = 42,
164 WINED3DSIO_ENDIF = 43,
165 WINED3DSIO_BREAK = 44,
166 WINED3DSIO_BREAKC = 45,
167 WINED3DSIO_MOVA = 46,
168 WINED3DSIO_DEFB = 47,
169 WINED3DSIO_DEFI = 48,
171 WINED3DSIO_TEXCOORD = 64,
172 WINED3DSIO_TEXKILL = 65,
173 WINED3DSIO_TEX = 66,
174 WINED3DSIO_TEXBEM = 67,
175 WINED3DSIO_TEXBEML = 68,
176 WINED3DSIO_TEXREG2AR = 69,
177 WINED3DSIO_TEXREG2GB = 70,
178 WINED3DSIO_TEXM3x2PAD = 71,
179 WINED3DSIO_TEXM3x2TEX = 72,
180 WINED3DSIO_TEXM3x3PAD = 73,
181 WINED3DSIO_TEXM3x3TEX = 74,
182 WINED3DSIO_TEXM3x3DIFF = 75,
183 WINED3DSIO_TEXM3x3SPEC = 76,
184 WINED3DSIO_TEXM3x3VSPEC = 77,
185 WINED3DSIO_EXPP = 78,
186 WINED3DSIO_LOGP = 79,
187 WINED3DSIO_CND = 80,
188 WINED3DSIO_DEF = 81,
189 WINED3DSIO_TEXREG2RGB = 82,
190 WINED3DSIO_TEXDP3TEX = 83,
191 WINED3DSIO_TEXM3x2DEPTH = 84,
192 WINED3DSIO_TEXDP3 = 85,
193 WINED3DSIO_TEXM3x3 = 86,
194 WINED3DSIO_TEXDEPTH = 87,
195 WINED3DSIO_CMP = 88,
196 WINED3DSIO_BEM = 89,
197 WINED3DSIO_DP2ADD = 90,
198 WINED3DSIO_DSX = 91,
199 WINED3DSIO_DSY = 92,
200 WINED3DSIO_TEXLDD = 93,
201 WINED3DSIO_SETP = 94,
202 WINED3DSIO_TEXLDL = 95,
203 WINED3DSIO_BREAKP = 96,
205 WINED3DSIO_PHASE = 0xFFFD,
206 WINED3DSIO_COMMENT = 0xFFFE,
207 WINED3DSIO_END = 0XFFFF,
209 WINED3DSIO_FORCE_DWORD = 0X7FFFFFFF /** for 32-bit alignment */
210 } WINED3DSHADER_INSTRUCTION_OPCODE_TYPE;
212 /* Undocumented opcode control to identify projective texture lookups in ps 2.0 and later */
213 #define WINED3DSI_TEXLD_PROJECT 1
214 #define WINED3DSI_TEXLD_BIAS 2
216 /** Shader version tokens, and shader end tokens **/
218 #define WINED3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
219 #define WINED3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
220 #define WINED3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
221 #define WINED3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
222 #define WINED3DPS_END() 0x0000FFFF
223 #define WINED3DVS_END() 0x0000FFFF
225 /* Multithreaded flag. Removed from the public header to signal that IWineD3D::CreateDevice ignores it */
226 #define WINED3DCREATE_MULTITHREADED 0x00000004
228 #endif