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 /** DCL sampler texture type **/
35 #define WINED3DSP_TEXTURETYPE_SHIFT 27
36 #define WINED3DSP_TEXTURETYPE_MASK 0x78000000
38 typedef enum _WINED3DSAMPLER_TEXTURE_TYPE
{
39 WINED3DSTT_UNKNOWN
= 0 << WINED3DSP_TEXTURETYPE_SHIFT
,
40 WINED3DSTT_1D
= 1 << WINED3DSP_TEXTURETYPE_SHIFT
,
41 WINED3DSTT_2D
= 2 << WINED3DSP_TEXTURETYPE_SHIFT
,
42 WINED3DSTT_CUBE
= 3 << WINED3DSP_TEXTURETYPE_SHIFT
,
43 WINED3DSTT_VOLUME
= 4 << WINED3DSP_TEXTURETYPE_SHIFT
,
45 WINED3DSTT_FORCE_DWORD
= 0x7FFFFFFF
46 } WINED3DSAMPLER_TEXTURE_TYPE
;
48 /** Register types **/
49 typedef enum _WINED3DSHADER_PARAM_REGISTER_TYPE
{
54 WINED3DSPR_TEXTURE
= 3,
55 WINED3DSPR_RASTOUT
= 4,
56 WINED3DSPR_ATTROUT
= 5,
57 WINED3DSPR_TEXCRDOUT
= 6,
58 WINED3DSPR_OUTPUT
= 6,
59 WINED3DSPR_CONSTINT
= 7,
60 WINED3DSPR_COLOROUT
= 8,
61 WINED3DSPR_DEPTHOUT
= 9,
62 WINED3DSPR_SAMPLER
= 10,
63 WINED3DSPR_CONST2
= 11,
64 WINED3DSPR_CONST3
= 12,
65 WINED3DSPR_CONST4
= 13,
66 WINED3DSPR_CONSTBOOL
= 14,
68 WINED3DSPR_TEMPFLOAT16
= 16,
69 WINED3DSPR_MISCTYPE
= 17,
70 WINED3DSPR_LABEL
= 18,
71 WINED3DSPR_PREDICATE
= 19,
73 WINED3DSPR_FORCE_DWORD
= 0x7FFFFFFF
74 } WINED3DSHADER_PARAM_REGISTER_TYPE
;
76 /* RASTOUT register offsets */
77 typedef enum _WINED3DVS_RASTOUT_OFFSETS
{
78 WINED3DSRO_POSITION
= 0,
80 WINED3DSRO_POINT_SIZE
= 2,
82 WINED3DSRO_FORCE_DWORD
= 0x7FFFFFFF
83 } WINED3DVS_RASTOUT_OFFSETS
;
85 #define WINED3DSP_NOSWIZZLE (0 | (1 << 2) | (2 << 4) | (3 << 6))
87 typedef enum _WINED3DSHADER_PARAM_SRCMOD_TYPE
{
91 WINED3DSPSM_BIASNEG
= 3,
93 WINED3DSPSM_SIGNNEG
= 5,
96 WINED3DSPSM_X2NEG
= 8,
100 WINED3DSPSM_ABSNEG
= 12,
101 WINED3DSPSM_NOT
= 13,
103 WINED3DSPSM_FORCE_DWORD
= 0x7FFFFFFF
104 } WINED3DSHADER_PARAM_SRCMOD_TYPE
;
106 /** Destination register modifiers **/
107 #define WINED3DSP_WRITEMASK_0 0x00010000 /* .x r */
108 #define WINED3DSP_WRITEMASK_1 0x00020000 /* .y g */
109 #define WINED3DSP_WRITEMASK_2 0x00040000 /* .z b */
110 #define WINED3DSP_WRITEMASK_3 0x00080000 /* .w a */
111 #define WINED3DSP_WRITEMASK_ALL 0x000F0000 /* all */
113 typedef enum _WINED3DSHADER_PARAM_DSTMOD_TYPE
{
114 WINED3DSPDM_NONE
= 0,
115 WINED3DSPDM_SATURATE
= 1,
116 WINED3DSPDM_PARTIALPRECISION
= 2,
117 WINED3DSPDM_MSAMPCENTROID
= 4,
119 WINED3DSPDM_FORCE_DWORD
= 0x7FFFFFFF
120 } WINED3DSHADER_PARAM_DSTMOD_TYPE
;
123 typedef enum _WINED3DSHADER_INSTRUCTION_OPCODE_TYPE
{
144 WINED3DSIO_M4x4
= 20,
145 WINED3DSIO_M4x3
= 21,
146 WINED3DSIO_M3x4
= 22,
147 WINED3DSIO_M3x3
= 23,
148 WINED3DSIO_M3x2
= 24,
149 WINED3DSIO_CALL
= 25,
150 WINED3DSIO_CALLNZ
= 26,
151 WINED3DSIO_LOOP
= 27,
153 WINED3DSIO_ENDLOOP
= 29,
154 WINED3DSIO_LABEL
= 30,
161 WINED3DSIO_SINCOS
= 37,
163 WINED3DSIO_ENDREP
= 39,
166 WINED3DSIO_ELSE
= 42,
167 WINED3DSIO_ENDIF
= 43,
168 WINED3DSIO_BREAK
= 44,
169 WINED3DSIO_BREAKC
= 45,
170 WINED3DSIO_MOVA
= 46,
171 WINED3DSIO_DEFB
= 47,
172 WINED3DSIO_DEFI
= 48,
174 WINED3DSIO_TEXCOORD
= 64,
175 WINED3DSIO_TEXKILL
= 65,
177 WINED3DSIO_TEXBEM
= 67,
178 WINED3DSIO_TEXBEML
= 68,
179 WINED3DSIO_TEXREG2AR
= 69,
180 WINED3DSIO_TEXREG2GB
= 70,
181 WINED3DSIO_TEXM3x2PAD
= 71,
182 WINED3DSIO_TEXM3x2TEX
= 72,
183 WINED3DSIO_TEXM3x3PAD
= 73,
184 WINED3DSIO_TEXM3x3TEX
= 74,
185 WINED3DSIO_TEXM3x3DIFF
= 75,
186 WINED3DSIO_TEXM3x3SPEC
= 76,
187 WINED3DSIO_TEXM3x3VSPEC
= 77,
188 WINED3DSIO_EXPP
= 78,
189 WINED3DSIO_LOGP
= 79,
192 WINED3DSIO_TEXREG2RGB
= 82,
193 WINED3DSIO_TEXDP3TEX
= 83,
194 WINED3DSIO_TEXM3x2DEPTH
= 84,
195 WINED3DSIO_TEXDP3
= 85,
196 WINED3DSIO_TEXM3x3
= 86,
197 WINED3DSIO_TEXDEPTH
= 87,
200 WINED3DSIO_DP2ADD
= 90,
203 WINED3DSIO_TEXLDD
= 93,
204 WINED3DSIO_SETP
= 94,
205 WINED3DSIO_TEXLDL
= 95,
206 WINED3DSIO_BREAKP
= 96,
208 WINED3DSIO_PHASE
= 0xFFFD,
209 WINED3DSIO_COMMENT
= 0xFFFE,
210 WINED3DSIO_END
= 0XFFFF,
212 WINED3DSIO_FORCE_DWORD
= 0X7FFFFFFF /** for 32-bit alignment */
213 } WINED3DSHADER_INSTRUCTION_OPCODE_TYPE
;
215 /* Undocumented opcode control to identify projective texture lookups in ps 2.0 and later */
216 #define WINED3DSI_TEXLD_PROJECT 1
217 #define WINED3DSI_TEXLD_BIAS 2
219 /** Shader version tokens, and shader end tokens **/
221 #define WINED3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
222 #define WINED3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
223 #define WINED3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
224 #define WINED3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
225 #define WINED3DPS_END() 0x0000FFFF
226 #define WINED3DVS_END() 0x0000FFFF
228 /* Multithreaded flag. Removed from the public header to signal that IWineD3D::CreateDevice ignores it */
229 #define WINED3DCREATE_MULTITHREADED 0x00000004