1 // Copyright © 2016-2017 winapi-rs developers 2 // Licensed under the Apache License, Version 2.0 3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 5 // All files in the project carrying such notice may not be copied, modified, or distributed 6 // except according to those terms. 7 //! Direct3D capabilities include file 8 use ctypes::{c_char, c_float, c_void}; 9 use shared::basetsd::UINT64; 10 use shared::guiddef::GUID; 11 use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, INT, UINT, USHORT, WORD}; 12 use shared::windef::HWND; 13 use um::winnt::{HANDLE, HRESULT, LARGE_INTEGER, LONG, SHORT}; 14 pub type D3DCOLOR = DWORD; 15 STRUCT!{struct D3DVECTOR { 16 x: c_float, 17 y: c_float, 18 z: c_float, 19 }} 20 STRUCT!{struct D3DCOLORVALUE { 21 r: c_float, 22 g: c_float, 23 b: c_float, 24 a: c_float, 25 }} 26 STRUCT!{struct D3DRECT { 27 x1: LONG, 28 y1: LONG, 29 x2: LONG, 30 y2: LONG, 31 }} 32 STRUCT!{struct D3DMATRIX { 33 m: [[c_float; 4]; 4], 34 }} 35 STRUCT!{struct D3DVIEWPORT9 { 36 X: DWORD, 37 Y: DWORD, 38 Width: DWORD, 39 Height: DWORD, 40 MinZ: c_float, 41 MaxZ: c_float, 42 }} 43 pub const D3DMAXUSERCLIPPLANES: DWORD = 32; 44 pub const D3DCLIPPLANE0: DWORD = 1 << 0; 45 pub const D3DCLIPPLANE1: DWORD = 1 << 1; 46 pub const D3DCLIPPLANE2: DWORD = 1 << 2; 47 pub const D3DCLIPPLANE3: DWORD = 1 << 3; 48 pub const D3DCLIPPLANE4: DWORD = 1 << 4; 49 pub const D3DCLIPPLANE5: DWORD = 1 << 5; 50 pub const D3DCS_LEFT: DWORD = 0x00000001; 51 pub const D3DCS_RIGHT: DWORD = 0x00000002; 52 pub const D3DCS_TOP: DWORD = 0x00000004; 53 pub const D3DCS_BOTTOM: DWORD = 0x00000008; 54 pub const D3DCS_FRONT: DWORD = 0x00000010; 55 pub const D3DCS_BACK: DWORD = 0x00000020; 56 pub const D3DCS_PLANE0: DWORD = 0x00000040; 57 pub const D3DCS_PLANE1: DWORD = 0x00000080; 58 pub const D3DCS_PLANE2: DWORD = 0x00000100; 59 pub const D3DCS_PLANE3: DWORD = 0x00000200; 60 pub const D3DCS_PLANE4: DWORD = 0x00000400; 61 pub const D3DCS_PLANE5: DWORD = 0x00000800; 62 pub const D3DCS_ALL: DWORD = D3DCS_LEFT | D3DCS_RIGHT | D3DCS_TOP | D3DCS_BOTTOM | D3DCS_FRONT 63 | D3DCS_BACK | D3DCS_PLANE0 | D3DCS_PLANE1 | D3DCS_PLANE2 | D3DCS_PLANE3 | D3DCS_PLANE4 64 | D3DCS_PLANE5; 65 STRUCT!{struct D3DCLIPSTATUS9 { 66 ClipUnion: DWORD, 67 ClipIntersection: DWORD, 68 }} 69 STRUCT!{struct D3DMATERIAL9 { 70 Diffuse: D3DCOLORVALUE, 71 Ambient: D3DCOLORVALUE, 72 Specular: D3DCOLORVALUE, 73 Emissive: D3DCOLORVALUE, 74 Power: c_float, 75 }} 76 ENUM!{enum D3DLIGHTTYPE { 77 D3DLIGHT_POINT = 1, 78 D3DLIGHT_SPOT = 2, 79 D3DLIGHT_DIRECTIONAL = 3, 80 }} 81 STRUCT!{struct D3DLIGHT9 { 82 Type: D3DLIGHTTYPE, 83 Diffuse: D3DCOLORVALUE, 84 Specular: D3DCOLORVALUE, 85 Ambient: D3DCOLORVALUE, 86 Position: D3DVECTOR, 87 Direction: D3DVECTOR, 88 Range: c_float, 89 Falloff: c_float, 90 Attenuation0: c_float, 91 Attenuation1: c_float, 92 Attenuation2: c_float, 93 Theta: c_float, 94 Phi: c_float, 95 }} 96 pub const D3DCLEAR_TARGET: DWORD = 0x00000001; 97 pub const D3DCLEAR_ZBUFFER: DWORD = 0x00000002; 98 pub const D3DCLEAR_STENCIL: DWORD = 0x00000004; 99 ENUM!{enum D3DSHADEMODE { 100 D3DSHADE_FLAT = 1, 101 D3DSHADE_GOURAUD = 2, 102 D3DSHADE_PHONG = 3, 103 }} 104 ENUM!{enum D3DFILLMODE { 105 D3DFILL_POINT = 1, 106 D3DFILL_WIREFRAME = 2, 107 D3DFILL_SOLID = 3, 108 }} 109 ENUM!{enum D3DBLEND { 110 D3DBLEND_ZERO = 1, 111 D3DBLEND_ONE = 2, 112 D3DBLEND_SRCCOLOR = 3, 113 D3DBLEND_INVSRCCOLOR = 4, 114 D3DBLEND_SRCALPHA = 5, 115 D3DBLEND_INVSRCALPHA = 6, 116 D3DBLEND_DESTALPHA = 7, 117 D3DBLEND_INVDESTALPHA = 8, 118 D3DBLEND_DESTCOLOR = 9, 119 D3DBLEND_INVDESTCOLOR = 10, 120 D3DBLEND_SRCALPHASAT = 11, 121 D3DBLEND_BOTHSRCALPHA = 12, 122 D3DBLEND_BOTHINVSRCALPHA = 13, 123 D3DBLEND_BLENDFACTOR = 14, 124 D3DBLEND_INVBLENDFACTOR = 15, 125 D3DBLEND_SRCCOLOR2 = 16, 126 D3DBLEND_INVSRCCOLOR2 = 17, 127 }} 128 ENUM!{enum D3DBLENDOP { 129 D3DBLENDOP_ADD = 1, 130 D3DBLENDOP_SUBTRACT = 2, 131 D3DBLENDOP_REVSUBTRACT = 3, 132 D3DBLENDOP_MIN = 4, 133 D3DBLENDOP_MAX = 5, 134 }} 135 ENUM!{enum D3DTEXTUREADDRESS { 136 D3DTADDRESS_WRAP = 1, 137 D3DTADDRESS_MIRROR = 2, 138 D3DTADDRESS_CLAMP = 3, 139 D3DTADDRESS_BORDER = 4, 140 D3DTADDRESS_MIRRORONCE = 5, 141 }} 142 ENUM!{enum D3DCULL { 143 D3DCULL_NONE = 1, 144 D3DCULL_CW = 2, 145 D3DCULL_CCW = 3, 146 }} 147 ENUM!{enum D3DCMPFUNC { 148 D3DCMP_NEVER = 1, 149 D3DCMP_LESS = 2, 150 D3DCMP_EQUAL = 3, 151 D3DCMP_LESSEQUAL = 4, 152 D3DCMP_GREATER = 5, 153 D3DCMP_NOTEQUAL = 6, 154 D3DCMP_GREATEREQUAL = 7, 155 D3DCMP_ALWAYS = 8, 156 }} 157 ENUM!{enum D3DSTENCILOP { 158 D3DSTENCILOP_KEEP = 1, 159 D3DSTENCILOP_ZERO = 2, 160 D3DSTENCILOP_REPLACE = 3, 161 D3DSTENCILOP_INCRSAT = 4, 162 D3DSTENCILOP_DECRSAT = 5, 163 D3DSTENCILOP_INVERT = 6, 164 D3DSTENCILOP_INCR = 7, 165 D3DSTENCILOP_DECR = 8, 166 }} 167 ENUM!{enum D3DFOGMODE { 168 D3DFOG_NONE = 0, 169 D3DFOG_EXP = 1, 170 D3DFOG_EXP2 = 2, 171 D3DFOG_LINEAR = 3, 172 }} 173 ENUM!{enum D3DZBUFFERTYPE { 174 D3DZB_FALSE = 0, 175 D3DZB_TRUE = 1, 176 D3DZB_USEW = 2, 177 }} 178 ENUM!{enum D3DPRIMITIVETYPE { 179 D3DPT_POINTLIST = 1, 180 D3DPT_LINELIST = 2, 181 D3DPT_LINESTRIP = 3, 182 D3DPT_TRIANGLELIST = 4, 183 D3DPT_TRIANGLESTRIP = 5, 184 D3DPT_TRIANGLEFAN = 6, 185 }} 186 ENUM!{enum D3DTRANSFORMSTATETYPE { 187 D3DTS_VIEW = 2, 188 D3DTS_PROJECTION = 3, 189 D3DTS_TEXTURE0 = 16, 190 D3DTS_TEXTURE1 = 17, 191 D3DTS_TEXTURE2 = 18, 192 D3DTS_TEXTURE3 = 19, 193 D3DTS_TEXTURE4 = 20, 194 D3DTS_TEXTURE5 = 21, 195 D3DTS_TEXTURE6 = 22, 196 D3DTS_TEXTURE7 = 23, 197 }} 198 macro_rules! D3DTS_WORLDMATRIX { 199 ($index:expr) => ($index + 256) 200 } 201 pub const D3DTS_WORLD: D3DTRANSFORMSTATETYPE = D3DTS_WORLDMATRIX!(0); 202 pub const D3DTS_WORLD1: D3DTRANSFORMSTATETYPE = D3DTS_WORLDMATRIX!(1); 203 pub const D3DTS_WORLD2: D3DTRANSFORMSTATETYPE = D3DTS_WORLDMATRIX!(2); 204 pub const D3DTS_WORLD3: D3DTRANSFORMSTATETYPE = D3DTS_WORLDMATRIX!(3); 205 ENUM!{enum D3DRENDERSTATETYPE { 206 D3DRS_ZENABLE = 7, 207 D3DRS_FILLMODE = 8, 208 D3DRS_SHADEMODE = 9, 209 D3DRS_ZWRITEENABLE = 14, 210 D3DRS_ALPHATESTENABLE = 15, 211 D3DRS_LASTPIXEL = 16, 212 D3DRS_SRCBLEND = 19, 213 D3DRS_DESTBLEND = 20, 214 D3DRS_CULLMODE = 22, 215 D3DRS_ZFUNC = 23, 216 D3DRS_ALPHAREF = 24, 217 D3DRS_ALPHAFUNC = 25, 218 D3DRS_DITHERENABLE = 26, 219 D3DRS_ALPHABLENDENABLE = 27, 220 D3DRS_FOGENABLE = 28, 221 D3DRS_SPECULARENABLE = 29, 222 D3DRS_FOGCOLOR = 34, 223 D3DRS_FOGTABLEMODE = 35, 224 D3DRS_FOGSTART = 36, 225 D3DRS_FOGEND = 37, 226 D3DRS_FOGDENSITY = 38, 227 D3DRS_RANGEFOGENABLE = 48, 228 D3DRS_STENCILENABLE = 52, 229 D3DRS_STENCILFAIL = 53, 230 D3DRS_STENCILZFAIL = 54, 231 D3DRS_STENCILPASS = 55, 232 D3DRS_STENCILFUNC = 56, 233 D3DRS_STENCILREF = 57, 234 D3DRS_STENCILMASK = 58, 235 D3DRS_STENCILWRITEMASK = 59, 236 D3DRS_TEXTUREFACTOR = 60, 237 D3DRS_WRAP0 = 128, 238 D3DRS_WRAP1 = 129, 239 D3DRS_WRAP2 = 130, 240 D3DRS_WRAP3 = 131, 241 D3DRS_WRAP4 = 132, 242 D3DRS_WRAP5 = 133, 243 D3DRS_WRAP6 = 134, 244 D3DRS_WRAP7 = 135, 245 D3DRS_CLIPPING = 136, 246 D3DRS_LIGHTING = 137, 247 D3DRS_AMBIENT = 139, 248 D3DRS_FOGVERTEXMODE = 140, 249 D3DRS_COLORVERTEX = 141, 250 D3DRS_LOCALVIEWER = 142, 251 D3DRS_NORMALIZENORMALS = 143, 252 D3DRS_DIFFUSEMATERIALSOURCE = 145, 253 D3DRS_SPECULARMATERIALSOURCE = 146, 254 D3DRS_AMBIENTMATERIALSOURCE = 147, 255 D3DRS_EMISSIVEMATERIALSOURCE = 148, 256 D3DRS_VERTEXBLEND = 151, 257 D3DRS_CLIPPLANEENABLE = 152, 258 D3DRS_POINTSIZE = 154, 259 D3DRS_POINTSIZE_MIN = 155, 260 D3DRS_POINTSPRITEENABLE = 156, 261 D3DRS_POINTSCALEENABLE = 157, 262 D3DRS_POINTSCALE_A = 158, 263 D3DRS_POINTSCALE_B = 159, 264 D3DRS_POINTSCALE_C = 160, 265 D3DRS_MULTISAMPLEANTIALIAS = 161, 266 D3DRS_MULTISAMPLEMASK = 162, 267 D3DRS_PATCHEDGESTYLE = 163, 268 D3DRS_DEBUGMONITORTOKEN = 165, 269 D3DRS_POINTSIZE_MAX = 166, 270 D3DRS_INDEXEDVERTEXBLENDENABLE = 167, 271 D3DRS_COLORWRITEENABLE = 168, 272 D3DRS_TWEENFACTOR = 170, 273 D3DRS_BLENDOP = 171, 274 D3DRS_POSITIONDEGREE = 172, 275 D3DRS_NORMALDEGREE = 173, 276 D3DRS_SCISSORTESTENABLE = 174, 277 D3DRS_SLOPESCALEDEPTHBIAS = 175, 278 D3DRS_ANTIALIASEDLINEENABLE = 176, 279 D3DRS_MINTESSELLATIONLEVEL = 178, 280 D3DRS_MAXTESSELLATIONLEVEL = 179, 281 D3DRS_ADAPTIVETESS_X = 180, 282 D3DRS_ADAPTIVETESS_Y = 181, 283 D3DRS_ADAPTIVETESS_Z = 182, 284 D3DRS_ADAPTIVETESS_W = 183, 285 D3DRS_ENABLEADAPTIVETESSELLATION = 184, 286 D3DRS_TWOSIDEDSTENCILMODE = 185, 287 D3DRS_CCW_STENCILFAIL = 186, 288 D3DRS_CCW_STENCILZFAIL = 187, 289 D3DRS_CCW_STENCILPASS = 188, 290 D3DRS_CCW_STENCILFUNC = 189, 291 D3DRS_COLORWRITEENABLE1 = 190, 292 D3DRS_COLORWRITEENABLE2 = 191, 293 D3DRS_COLORWRITEENABLE3 = 192, 294 D3DRS_BLENDFACTOR = 193, 295 D3DRS_SRGBWRITEENABLE = 194, 296 D3DRS_DEPTHBIAS = 195, 297 D3DRS_WRAP8 = 198, 298 D3DRS_WRAP9 = 199, 299 D3DRS_WRAP10 = 200, 300 D3DRS_WRAP11 = 201, 301 D3DRS_WRAP12 = 202, 302 D3DRS_WRAP13 = 203, 303 D3DRS_WRAP14 = 204, 304 D3DRS_WRAP15 = 205, 305 D3DRS_SEPARATEALPHABLENDENABLE = 206, 306 D3DRS_SRCBLENDALPHA = 207, 307 D3DRS_DESTBLENDALPHA = 208, 308 D3DRS_BLENDOPALPHA = 209, 309 }} 310 pub const D3D_MAX_SIMULTANEOUS_RENDERTARGETS: DWORD = 4; 311 ENUM!{enum D3DMATERIALCOLORSOURCE { 312 D3DMCS_MATERIAL = 0, 313 D3DMCS_COLOR1 = 1, 314 D3DMCS_COLOR2 = 2, 315 }} 316 pub const D3DRENDERSTATE_WRAPBIAS: DWORD = 128; 317 pub const D3DWRAP_U: DWORD = 0x00000001; 318 pub const D3DWRAP_V: DWORD = 0x00000002; 319 pub const D3DWRAP_W: DWORD = 0x00000004; 320 pub const D3DWRAPCOORD_0: DWORD = 0x00000001; 321 pub const D3DWRAPCOORD_1: DWORD = 0x00000002; 322 pub const D3DWRAPCOORD_2: DWORD = 0x00000004; 323 pub const D3DWRAPCOORD_3: DWORD = 0x00000008; 324 pub const D3DCOLORWRITEENABLE_RED: DWORD = 1 << 0; 325 pub const D3DCOLORWRITEENABLE_GREEN: DWORD = 1 << 1; 326 pub const D3DCOLORWRITEENABLE_BLUE: DWORD = 1 << 2; 327 pub const D3DCOLORWRITEENABLE_ALPHA: DWORD = 1 << 3; 328 ENUM!{enum D3DTEXTURESTAGESTATETYPE { 329 D3DTSS_COLOROP = 1, 330 D3DTSS_COLORARG1 = 2, 331 D3DTSS_COLORARG2 = 3, 332 D3DTSS_ALPHAOP = 4, 333 D3DTSS_ALPHAARG1 = 5, 334 D3DTSS_ALPHAARG2 = 6, 335 D3DTSS_BUMPENVMAT00 = 7, 336 D3DTSS_BUMPENVMAT01 = 8, 337 D3DTSS_BUMPENVMAT10 = 9, 338 D3DTSS_BUMPENVMAT11 = 10, 339 D3DTSS_TEXCOORDINDEX = 11, 340 D3DTSS_BUMPENVLSCALE = 22, 341 D3DTSS_BUMPENVLOFFSET = 23, 342 D3DTSS_TEXTURETRANSFORMFLAGS = 24, 343 D3DTSS_COLORARG0 = 26, 344 D3DTSS_ALPHAARG0 = 27, 345 D3DTSS_RESULTARG = 28, 346 D3DTSS_CONSTANT = 32, 347 }} 348 ENUM!{enum D3DSAMPLERSTATETYPE { 349 D3DSAMP_ADDRESSU = 1, 350 D3DSAMP_ADDRESSV = 2, 351 D3DSAMP_ADDRESSW = 3, 352 D3DSAMP_BORDERCOLOR = 4, 353 D3DSAMP_MAGFILTER = 5, 354 D3DSAMP_MINFILTER = 6, 355 D3DSAMP_MIPFILTER = 7, 356 D3DSAMP_MIPMAPLODBIAS = 8, 357 D3DSAMP_MAXMIPLEVEL = 9, 358 D3DSAMP_MAXANISOTROPY = 10, 359 D3DSAMP_SRGBTEXTURE = 11, 360 D3DSAMP_ELEMENTINDEX = 12, 361 D3DSAMP_DMAPOFFSET = 13, 362 }} 363 pub const D3DDMAPSAMPLER: DWORD = 256; 364 pub const D3DVERTEXTEXTURESAMPLER0: DWORD = D3DDMAPSAMPLER + 1; 365 pub const D3DVERTEXTEXTURESAMPLER1: DWORD = D3DDMAPSAMPLER + 2; 366 pub const D3DVERTEXTEXTURESAMPLER2: DWORD = D3DDMAPSAMPLER + 3; 367 pub const D3DVERTEXTEXTURESAMPLER3: DWORD = D3DDMAPSAMPLER + 4; 368 pub const D3DTSS_TCI_PASSTHRU: DWORD = 0x00000000; 369 pub const D3DTSS_TCI_CAMERASPACENORMAL: DWORD = 0x00010000; 370 pub const D3DTSS_TCI_CAMERASPACEPOSITION: DWORD = 0x00020000; 371 pub const D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR: DWORD = 0x00030000; 372 pub const D3DTSS_TCI_SPHEREMAP: DWORD = 0x00040000; 373 ENUM!{enum D3DTEXTUREOP { 374 D3DTOP_DISABLE = 1, 375 D3DTOP_SELECTARG1 = 2, 376 D3DTOP_SELECTARG2 = 3, 377 D3DTOP_MODULATE = 4, 378 D3DTOP_MODULATE2X = 5, 379 D3DTOP_MODULATE4X = 6, 380 D3DTOP_ADD = 7, 381 D3DTOP_ADDSIGNED = 8, 382 D3DTOP_ADDSIGNED2X = 9, 383 D3DTOP_SUBTRACT = 10, 384 D3DTOP_ADDSMOOTH = 11, 385 D3DTOP_BLENDDIFFUSEALPHA = 12, 386 D3DTOP_BLENDTEXTUREALPHA = 13, 387 D3DTOP_BLENDFACTORALPHA = 14, 388 D3DTOP_BLENDTEXTUREALPHAPM = 15, 389 D3DTOP_BLENDCURRENTALPHA = 16, 390 D3DTOP_PREMODULATE = 17, 391 D3DTOP_MODULATEALPHA_ADDCOLOR = 18, 392 D3DTOP_MODULATECOLOR_ADDALPHA = 19, 393 D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20, 394 D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21, 395 D3DTOP_BUMPENVMAP = 22, 396 D3DTOP_BUMPENVMAPLUMINANCE = 23, 397 D3DTOP_DOTPRODUCT3 = 24, 398 D3DTOP_MULTIPLYADD = 25, 399 D3DTOP_LERP = 26, 400 }} 401 pub const D3DTA_SELECTMASK: DWORD = 0x0000000f; 402 pub const D3DTA_DIFFUSE: DWORD = 0x00000000; 403 pub const D3DTA_CURRENT: DWORD = 0x00000001; 404 pub const D3DTA_TEXTURE: DWORD = 0x00000002; 405 pub const D3DTA_TFACTOR: DWORD = 0x00000003; 406 pub const D3DTA_SPECULAR: DWORD = 0x00000004; 407 pub const D3DTA_TEMP: DWORD = 0x00000005; 408 pub const D3DTA_CONSTANT: DWORD = 0x00000006; 409 pub const D3DTA_COMPLEMENT: DWORD = 0x00000010; 410 pub const D3DTA_ALPHAREPLICATE: DWORD = 0x00000020; 411 ENUM!{enum D3DTEXTUREFILTERTYPE { 412 D3DTEXF_NONE = 0, 413 D3DTEXF_POINT = 1, 414 D3DTEXF_LINEAR = 2, 415 D3DTEXF_ANISOTROPIC = 3, 416 D3DTEXF_PYRAMIDALQUAD = 6, 417 D3DTEXF_GAUSSIANQUAD = 7, 418 D3DTEXF_CONVOLUTIONMONO = 8, 419 }} 420 pub const D3DPV_DONOTCOPYDATA: DWORD = 1 << 0; 421 pub const D3DFVF_RESERVED0: DWORD = 0x001; 422 pub const D3DFVF_POSITION_MASK: DWORD = 0x400E; 423 pub const D3DFVF_XYZ: DWORD = 0x002; 424 pub const D3DFVF_XYZRHW: DWORD = 0x004; 425 pub const D3DFVF_XYZB1: DWORD = 0x006; 426 pub const D3DFVF_XYZB2: DWORD = 0x008; 427 pub const D3DFVF_XYZB3: DWORD = 0x00a; 428 pub const D3DFVF_XYZB4: DWORD = 0x00c; 429 pub const D3DFVF_XYZB5: DWORD = 0x00e; 430 pub const D3DFVF_XYZW: DWORD = 0x4002; 431 pub const D3DFVF_NORMAL: DWORD = 0x010; 432 pub const D3DFVF_PSIZE: DWORD = 0x020; 433 pub const D3DFVF_DIFFUSE: DWORD = 0x040; 434 pub const D3DFVF_SPECULAR: DWORD = 0x080; 435 pub const D3DFVF_TEXCOUNT_MASK: DWORD = 0xf00; 436 pub const D3DFVF_TEXCOUNT_SHIFT: DWORD = 8; 437 pub const D3DFVF_TEX0: DWORD = 0x000; 438 pub const D3DFVF_TEX1: DWORD = 0x100; 439 pub const D3DFVF_TEX2: DWORD = 0x200; 440 pub const D3DFVF_TEX3: DWORD = 0x300; 441 pub const D3DFVF_TEX4: DWORD = 0x400; 442 pub const D3DFVF_TEX5: DWORD = 0x500; 443 pub const D3DFVF_TEX6: DWORD = 0x600; 444 pub const D3DFVF_TEX7: DWORD = 0x700; 445 pub const D3DFVF_TEX8: DWORD = 0x800; 446 pub const D3DFVF_LASTBETA_UBYTE4: DWORD = 0x1000; 447 pub const D3DFVF_LASTBETA_D3DCOLOR: DWORD = 0x8000; 448 pub const D3DFVF_RESERVED2: DWORD = 0x6000; 449 ENUM!{enum D3DDECLUSAGE { 450 D3DDECLUSAGE_POSITION = 0, 451 D3DDECLUSAGE_BLENDWEIGHT, 452 D3DDECLUSAGE_BLENDINDICES, 453 D3DDECLUSAGE_NORMAL, 454 D3DDECLUSAGE_PSIZE, 455 D3DDECLUSAGE_TEXCOORD, 456 D3DDECLUSAGE_TANGENT, 457 D3DDECLUSAGE_BINORMAL, 458 D3DDECLUSAGE_TESSFACTOR, 459 D3DDECLUSAGE_POSITIONT, 460 D3DDECLUSAGE_COLOR, 461 D3DDECLUSAGE_FOG, 462 D3DDECLUSAGE_DEPTH, 463 D3DDECLUSAGE_SAMPLE, 464 }} 465 pub const MAXD3DDECLUSAGE: D3DDECLUSAGE = D3DDECLUSAGE_SAMPLE; 466 pub const MAXD3DDECLUSAGEINDEX: DWORD = 15; 467 pub const MAXD3DDECLLENGTH: DWORD = 64; 468 ENUM!{enum D3DDECLMETHOD { 469 D3DDECLMETHOD_DEFAULT = 0, 470 D3DDECLMETHOD_PARTIALU, 471 D3DDECLMETHOD_PARTIALV, 472 D3DDECLMETHOD_CROSSUV, 473 D3DDECLMETHOD_UV, 474 D3DDECLMETHOD_LOOKUP, 475 D3DDECLMETHOD_LOOKUPPRESAMPLED, 476 }} 477 pub const MAXD3DDECLMETHOD: D3DDECLMETHOD = D3DDECLMETHOD_LOOKUPPRESAMPLED; 478 ENUM!{enum D3DDECLTYPE { 479 D3DDECLTYPE_FLOAT1 = 0, 480 D3DDECLTYPE_FLOAT2 = 1, 481 D3DDECLTYPE_FLOAT3 = 2, 482 D3DDECLTYPE_FLOAT4 = 3, 483 D3DDECLTYPE_D3DCOLOR = 4, 484 D3DDECLTYPE_UBYTE4 = 5, 485 D3DDECLTYPE_SHORT2 = 6, 486 D3DDECLTYPE_SHORT4 = 7, 487 D3DDECLTYPE_UBYTE4N = 8, 488 D3DDECLTYPE_SHORT2N = 9, 489 D3DDECLTYPE_SHORT4N = 10, 490 D3DDECLTYPE_USHORT2N = 11, 491 D3DDECLTYPE_USHORT4N = 12, 492 D3DDECLTYPE_UDEC3 = 13, 493 D3DDECLTYPE_DEC3N = 14, 494 D3DDECLTYPE_FLOAT16_2 = 15, 495 D3DDECLTYPE_FLOAT16_4 = 16, 496 D3DDECLTYPE_UNUSED = 17, 497 }} 498 pub const MAXD3DDECLTYPE: D3DDECLTYPE = D3DDECLTYPE_UNUSED; 499 STRUCT!{struct D3DVERTEXELEMENT9 { 500 Stream: WORD, 501 Offset: WORD, 502 Type: BYTE, 503 Method: BYTE, 504 Usage: BYTE, 505 UsageIndex: BYTE, 506 }} 507 pub type LPD3DVERTEXELEMENT9 = *mut D3DVERTEXELEMENT9; 508 pub const D3DDECL_END: D3DVERTEXELEMENT9 = D3DVERTEXELEMENT9 { 509 Stream: 0xFF, 510 Offset: 0, 511 Type: D3DDECLTYPE_UNUSED as BYTE, 512 Method: 0, 513 Usage: 0, 514 UsageIndex: 0, 515 }; 516 pub const D3DDP_MAXTEXCOORD: DWORD = 8; 517 pub const D3DSTREAMSOURCE_INDEXEDDATA: DWORD = 1 << 30; 518 pub const D3DSTREAMSOURCE_INSTANCEDATA: DWORD = 2 << 30; 519 pub const D3DSI_OPCODE_MASK: DWORD = 0x0000FFFF; 520 pub const D3DSI_INSTLENGTH_MASK: DWORD = 0x0F000000; 521 pub const D3DSI_INSTLENGTH_SHIFT: DWORD = 24; 522 ENUM!{enum D3DSHADER_INSTRUCTION_OPCODE_TYPE { 523 D3DSIO_NOP = 0, 524 D3DSIO_MOV, 525 D3DSIO_ADD, 526 D3DSIO_SUB, 527 D3DSIO_MAD, 528 D3DSIO_MUL, 529 D3DSIO_RCP, 530 D3DSIO_RSQ, 531 D3DSIO_DP3, 532 D3DSIO_DP4, 533 D3DSIO_MIN, 534 D3DSIO_MAX, 535 D3DSIO_SLT, 536 D3DSIO_SGE, 537 D3DSIO_EXP, 538 D3DSIO_LOG, 539 D3DSIO_LIT, 540 D3DSIO_DST, 541 D3DSIO_LRP, 542 D3DSIO_FRC, 543 D3DSIO_M4x4, 544 D3DSIO_M4x3, 545 D3DSIO_M3x4, 546 D3DSIO_M3x3, 547 D3DSIO_M3x2, 548 D3DSIO_CALL, 549 D3DSIO_CALLNZ, 550 D3DSIO_LOOP, 551 D3DSIO_RET, 552 D3DSIO_ENDLOOP, 553 D3DSIO_LABEL, 554 D3DSIO_DCL, 555 D3DSIO_POW, 556 D3DSIO_CRS, 557 D3DSIO_SGN, 558 D3DSIO_ABS, 559 D3DSIO_NRM, 560 D3DSIO_SINCOS, 561 D3DSIO_REP, 562 D3DSIO_ENDREP, 563 D3DSIO_IF, 564 D3DSIO_IFC, 565 D3DSIO_ELSE, 566 D3DSIO_ENDIF, 567 D3DSIO_BREAK, 568 D3DSIO_BREAKC, 569 D3DSIO_MOVA, 570 D3DSIO_DEFB, 571 D3DSIO_DEFI, 572 D3DSIO_TEXCOORD = 64, 573 D3DSIO_TEXKILL, 574 D3DSIO_TEX, 575 D3DSIO_TEXBEM, 576 D3DSIO_TEXBEML, 577 D3DSIO_TEXREG2AR, 578 D3DSIO_TEXREG2GB, 579 D3DSIO_TEXM3x2PAD, 580 D3DSIO_TEXM3x2TEX, 581 D3DSIO_TEXM3x3PAD, 582 D3DSIO_TEXM3x3TEX, 583 D3DSIO_RESERVED0, 584 D3DSIO_TEXM3x3SPEC, 585 D3DSIO_TEXM3x3VSPEC, 586 D3DSIO_EXPP, 587 D3DSIO_LOGP, 588 D3DSIO_CND, 589 D3DSIO_DEF, 590 D3DSIO_TEXREG2RGB, 591 D3DSIO_TEXDP3TEX, 592 D3DSIO_TEXM3x2DEPTH, 593 D3DSIO_TEXDP3, 594 D3DSIO_TEXM3x3, 595 D3DSIO_TEXDEPTH, 596 D3DSIO_CMP, 597 D3DSIO_BEM, 598 D3DSIO_DP2ADD, 599 D3DSIO_DSX, 600 D3DSIO_DSY, 601 D3DSIO_TEXLDD, 602 D3DSIO_SETP, 603 D3DSIO_TEXLDL, 604 D3DSIO_BREAKP, 605 D3DSIO_PHASE = 0xFFFD, 606 D3DSIO_COMMENT = 0xFFFE, 607 D3DSIO_END = 0xFFFF, 608 }} 609 pub const D3DSI_COISSUE: DWORD = 0x40000000; 610 pub const D3DSP_OPCODESPECIFICCONTROL_MASK: DWORD = 0x00ff0000; 611 pub const D3DSP_OPCODESPECIFICCONTROL_SHIFT: DWORD = 16; 612 pub const D3DSI_TEXLD_PROJECT: DWORD = 0x01 << D3DSP_OPCODESPECIFICCONTROL_SHIFT; 613 pub const D3DSI_TEXLD_BIAS: DWORD = 0x02 << D3DSP_OPCODESPECIFICCONTROL_SHIFT; 614 ENUM!{enum D3DSHADER_COMPARISON { 615 D3DSPC_RESERVED0 = 0, 616 D3DSPC_GT = 1, 617 D3DSPC_EQ = 2, 618 D3DSPC_GE = 3, 619 D3DSPC_LT = 4, 620 D3DSPC_NE = 5, 621 D3DSPC_LE = 6, 622 D3DSPC_RESERVED1 = 7, 623 }} 624 pub const D3DSHADER_COMPARISON_SHIFT: DWORD = D3DSP_OPCODESPECIFICCONTROL_SHIFT; 625 pub const D3DSHADER_COMPARISON_MASK: DWORD = 0x7 << D3DSHADER_COMPARISON_SHIFT; 626 pub const D3DSHADER_INSTRUCTION_PREDICATED: DWORD = 0x1 << 28; 627 pub const D3DSP_DCL_USAGE_SHIFT: DWORD = 0; 628 pub const D3DSP_DCL_USAGE_MASK: DWORD = 0x0000000f; 629 pub const D3DSP_DCL_USAGEINDEX_SHIFT: DWORD = 16; 630 pub const D3DSP_DCL_USAGEINDEX_MASK: DWORD = 0x000f0000; 631 pub const D3DSP_TEXTURETYPE_SHIFT: DWORD = 27; 632 pub const D3DSP_TEXTURETYPE_MASK: DWORD = 0x78000000; 633 ENUM!{enum D3DSAMPLER_TEXTURE_TYPE { 634 D3DSTT_UNKNOWN = 0 << D3DSP_TEXTURETYPE_SHIFT, 635 D3DSTT_2D = 2 << D3DSP_TEXTURETYPE_SHIFT, 636 D3DSTT_CUBE = 3 << D3DSP_TEXTURETYPE_SHIFT, 637 D3DSTT_VOLUME = 4 << D3DSP_TEXTURETYPE_SHIFT, 638 }} 639 pub const D3DSP_REGNUM_MASK: DWORD = 0x000007FF; 640 pub const D3DSP_WRITEMASK_0: DWORD = 0x00010000; 641 pub const D3DSP_WRITEMASK_1: DWORD = 0x00020000; 642 pub const D3DSP_WRITEMASK_2: DWORD = 0x00040000; 643 pub const D3DSP_WRITEMASK_3: DWORD = 0x00080000; 644 pub const D3DSP_WRITEMASK_ALL: DWORD = 0x000F0000; 645 pub const D3DSP_DSTMOD_SHIFT: DWORD = 20; 646 pub const D3DSP_DSTMOD_MASK: DWORD = 0x00F00000; 647 pub const D3DSPDM_NONE: DWORD = 0 << D3DSP_DSTMOD_SHIFT; 648 pub const D3DSPDM_SATURATE: DWORD = 1 << D3DSP_DSTMOD_SHIFT; 649 pub const D3DSPDM_PARTIALPRECISION: DWORD = 2 << D3DSP_DSTMOD_SHIFT; 650 pub const D3DSPDM_MSAMPCENTROID: DWORD = 4 << D3DSP_DSTMOD_SHIFT; 651 pub const D3DSP_DSTSHIFT_SHIFT: DWORD = 24; 652 pub const D3DSP_DSTSHIFT_MASK: DWORD = 0x0F000000; 653 pub const D3DSP_REGTYPE_SHIFT: DWORD = 28; 654 pub const D3DSP_REGTYPE_SHIFT2: DWORD = 8; 655 pub const D3DSP_REGTYPE_MASK: DWORD = 0x70000000; 656 pub const D3DSP_REGTYPE_MASK2: DWORD = 0x00001800; 657 ENUM!{enum D3DSHADER_PARAM_REGISTER_TYPE { 658 D3DSPR_TEMP = 0, 659 D3DSPR_INPUT = 1, 660 D3DSPR_CONST = 2, 661 D3DSPR_ADDR = 3, 662 D3DSPR_TEXTURE = 3, 663 D3DSPR_RASTOUT = 4, 664 D3DSPR_ATTROUT = 5, 665 D3DSPR_TEXCRDOUT = 6, 666 D3DSPR_OUTPUT = 6, 667 D3DSPR_CONSTINT = 7, 668 D3DSPR_COLOROUT = 8, 669 D3DSPR_DEPTHOUT = 9, 670 D3DSPR_SAMPLER = 10, 671 D3DSPR_CONST2 = 11, 672 D3DSPR_CONST3 = 12, 673 D3DSPR_CONST4 = 13, 674 D3DSPR_CONSTBOOL = 14, 675 D3DSPR_LOOP = 15, 676 D3DSPR_TEMPFLOAT16 = 16, 677 D3DSPR_MISCTYPE = 17, 678 D3DSPR_LABEL = 18, 679 D3DSPR_PREDICATE = 19, 680 }} 681 ENUM!{enum D3DSHADER_MISCTYPE_OFFSETS { 682 D3DSMO_POSITION = 0, 683 D3DSMO_FACE = 1, 684 }} 685 ENUM!{enum D3DVS_RASTOUT_OFFSETS { 686 D3DSRO_POSITION = 0, 687 D3DSRO_FOG, 688 D3DSRO_POINT_SIZE, 689 }} 690 pub const D3DVS_ADDRESSMODE_SHIFT: DWORD = 13; 691 pub const D3DVS_ADDRESSMODE_MASK: DWORD = 1 << D3DVS_ADDRESSMODE_SHIFT; 692 ENUM!{enum D3DVS_ADDRESSMODE_TYPE { 693 D3DVS_ADDRMODE_ABSOLUTE = 0 << D3DVS_ADDRESSMODE_SHIFT, 694 D3DVS_ADDRMODE_RELATIVE = 1 << D3DVS_ADDRESSMODE_SHIFT, 695 }} 696 pub const D3DSHADER_ADDRESSMODE_SHIFT: DWORD = 13; 697 pub const D3DSHADER_ADDRESSMODE_MASK: DWORD = 1 << D3DSHADER_ADDRESSMODE_SHIFT; 698 ENUM!{enum D3DSHADER_ADDRESSMODE_TYPE { 699 D3DSHADER_ADDRMODE_ABSOLUTE = 0 << D3DSHADER_ADDRESSMODE_SHIFT, 700 D3DSHADER_ADDRMODE_RELATIVE = 1 << D3DSHADER_ADDRESSMODE_SHIFT, 701 }} 702 pub const D3DVS_SWIZZLE_SHIFT: DWORD = 16; 703 pub const D3DVS_SWIZZLE_MASK: DWORD = 0x00FF0000; 704 pub const D3DVS_X_X: DWORD = 0 << D3DVS_SWIZZLE_SHIFT; 705 pub const D3DVS_X_Y: DWORD = 1 << D3DVS_SWIZZLE_SHIFT; 706 pub const D3DVS_X_Z: DWORD = 2 << D3DVS_SWIZZLE_SHIFT; 707 pub const D3DVS_X_W: DWORD = 3 << D3DVS_SWIZZLE_SHIFT; 708 pub const D3DVS_Y_X: DWORD = 0 << (D3DVS_SWIZZLE_SHIFT + 2); 709 pub const D3DVS_Y_Y: DWORD = 1 << (D3DVS_SWIZZLE_SHIFT + 2); 710 pub const D3DVS_Y_Z: DWORD = 2 << (D3DVS_SWIZZLE_SHIFT + 2); 711 pub const D3DVS_Y_W: DWORD = 3 << (D3DVS_SWIZZLE_SHIFT + 2); 712 pub const D3DVS_Z_X: DWORD = 0 << (D3DVS_SWIZZLE_SHIFT + 4); 713 pub const D3DVS_Z_Y: DWORD = 1 << (D3DVS_SWIZZLE_SHIFT + 4); 714 pub const D3DVS_Z_Z: DWORD = 2 << (D3DVS_SWIZZLE_SHIFT + 4); 715 pub const D3DVS_Z_W: DWORD = 3 << (D3DVS_SWIZZLE_SHIFT + 4); 716 pub const D3DVS_W_X: DWORD = 0 << (D3DVS_SWIZZLE_SHIFT + 6); 717 pub const D3DVS_W_Y: DWORD = 1 << (D3DVS_SWIZZLE_SHIFT + 6); 718 pub const D3DVS_W_Z: DWORD = 2 << (D3DVS_SWIZZLE_SHIFT + 6); 719 pub const D3DVS_W_W: DWORD = 3 << (D3DVS_SWIZZLE_SHIFT + 6); 720 pub const D3DVS_NOSWIZZLE: DWORD = D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W; 721 pub const D3DSP_SWIZZLE_SHIFT: DWORD = 16; 722 pub const D3DSP_SWIZZLE_MASK: DWORD = 0x00FF0000; 723 pub const D3DSP_NOSWIZZLE: DWORD = (0 << (D3DSP_SWIZZLE_SHIFT + 0)) 724 | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) 725 | (3 << (D3DSP_SWIZZLE_SHIFT + 6)); 726 pub const D3DSP_REPLICATERED: DWORD = (0 << (D3DSP_SWIZZLE_SHIFT + 0)) 727 | (0 << (D3DSP_SWIZZLE_SHIFT + 2)) | (0 << (D3DSP_SWIZZLE_SHIFT + 4)) 728 | (0 << (D3DSP_SWIZZLE_SHIFT + 6)); 729 pub const D3DSP_REPLICATEGREEN: DWORD = (1 << (D3DSP_SWIZZLE_SHIFT + 0)) 730 | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (1 << (D3DSP_SWIZZLE_SHIFT + 4)) 731 | (1 << (D3DSP_SWIZZLE_SHIFT + 6)); 732 pub const D3DSP_REPLICATEBLUE: DWORD = (2 << (D3DSP_SWIZZLE_SHIFT + 0)) 733 | (2 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) 734 | (2 << (D3DSP_SWIZZLE_SHIFT + 6)); 735 pub const D3DSP_REPLICATEALPHA: DWORD = (3 << (D3DSP_SWIZZLE_SHIFT + 0)) 736 | (3 << (D3DSP_SWIZZLE_SHIFT + 2)) | (3 << (D3DSP_SWIZZLE_SHIFT + 4)) 737 | (3 << (D3DSP_SWIZZLE_SHIFT + 6)); 738 pub const D3DSP_SRCMOD_SHIFT: DWORD = 24; 739 pub const D3DSP_SRCMOD_MASK: DWORD = 0x0F000000; 740 ENUM!{enum D3DSHADER_PARAM_SRCMOD_TYPE { 741 D3DSPSM_NONE = 0 << D3DSP_SRCMOD_SHIFT, 742 D3DSPSM_NEG = 1 << D3DSP_SRCMOD_SHIFT, 743 D3DSPSM_BIAS = 2 << D3DSP_SRCMOD_SHIFT, 744 D3DSPSM_BIASNEG = 3 << D3DSP_SRCMOD_SHIFT, 745 D3DSPSM_SIGN = 4 << D3DSP_SRCMOD_SHIFT, 746 D3DSPSM_SIGNNEG = 5 << D3DSP_SRCMOD_SHIFT, 747 D3DSPSM_COMP = 6 << D3DSP_SRCMOD_SHIFT, 748 D3DSPSM_X2 = 7 << D3DSP_SRCMOD_SHIFT, 749 D3DSPSM_X2NEG = 8 << D3DSP_SRCMOD_SHIFT, 750 D3DSPSM_DZ = 9 << D3DSP_SRCMOD_SHIFT, 751 D3DSPSM_DW = 10 << D3DSP_SRCMOD_SHIFT, 752 D3DSPSM_ABS = 11 << D3DSP_SRCMOD_SHIFT, 753 D3DSPSM_ABSNEG = 12 << D3DSP_SRCMOD_SHIFT, 754 D3DSPSM_NOT = 13 << D3DSP_SRCMOD_SHIFT, 755 }} 756 pub const D3DSP_MIN_PRECISION_SHIFT: DWORD = 14; 757 pub const D3DSP_MIN_PRECISION_MASK: DWORD = 0x0000C000; 758 ENUM!{enum D3DSHADER_MIN_PRECISION { 759 D3DMP_DEFAULT = 0, 760 D3DMP_16 = 1, 761 D3DMP_2_8 = 2, 762 }} 763 pub const D3DSI_COMMENTSIZE_SHIFT: DWORD = 16; 764 pub const D3DSI_COMMENTSIZE_MASK: DWORD = 0x7FFF0000; 765 pub const D3DPS_END: DWORD = 0x0000FFFF; 766 pub const D3DVS_END: DWORD = 0x0000FFFF; 767 ENUM!{enum D3DBASISTYPE { 768 D3DBASIS_BEZIER = 0, 769 D3DBASIS_BSPLINE = 1, 770 D3DBASIS_CATMULL_ROM = 2, 771 }} 772 ENUM!{enum D3DDEGREETYPE { 773 D3DDEGREE_LINEAR = 1, 774 D3DDEGREE_QUADRATIC = 2, 775 D3DDEGREE_CUBIC = 3, 776 D3DDEGREE_QUINTIC = 5, 777 }} 778 ENUM!{enum D3DPATCHEDGESTYLE { 779 D3DPATCHEDGE_DISCRETE = 0, 780 D3DPATCHEDGE_CONTINUOUS = 1, 781 }} 782 ENUM!{enum D3DSTATEBLOCKTYPE { 783 D3DSBT_ALL = 1, 784 D3DSBT_PIXELSTATE = 2, 785 D3DSBT_VERTEXSTATE = 3, 786 }} 787 ENUM!{enum D3DVERTEXBLENDFLAGS { 788 D3DVBF_DISABLE = 0, 789 D3DVBF_1WEIGHTS = 1, 790 D3DVBF_2WEIGHTS = 2, 791 D3DVBF_3WEIGHTS = 3, 792 D3DVBF_TWEENING = 255, 793 D3DVBF_0WEIGHTS = 256, 794 }} 795 ENUM!{enum D3DTEXTURETRANSFORMFLAGS { 796 D3DTTFF_DISABLE = 0, 797 D3DTTFF_COUNT1 = 1, 798 D3DTTFF_COUNT2 = 2, 799 D3DTTFF_COUNT3 = 3, 800 D3DTTFF_COUNT4 = 4, 801 D3DTTFF_PROJECTED = 256, 802 }} 803 pub const D3DFVF_TEXTUREFORMAT2: DWORD = 0; 804 pub const D3DFVF_TEXTUREFORMAT1: DWORD = 3; 805 pub const D3DFVF_TEXTUREFORMAT3: DWORD = 1; 806 pub const D3DFVF_TEXTUREFORMAT4: DWORD = 2; 807 ENUM!{enum D3DDEVTYPE { 808 D3DDEVTYPE_HAL = 1, 809 D3DDEVTYPE_REF = 2, 810 D3DDEVTYPE_SW = 3, 811 D3DDEVTYPE_NULLREF = 4, 812 }} 813 ENUM!{enum D3DMULTISAMPLE_TYPE { 814 D3DMULTISAMPLE_NONE = 0, 815 D3DMULTISAMPLE_NONMASKABLE = 1, 816 D3DMULTISAMPLE_2_SAMPLES = 2, 817 D3DMULTISAMPLE_3_SAMPLES = 3, 818 D3DMULTISAMPLE_4_SAMPLES = 4, 819 D3DMULTISAMPLE_5_SAMPLES = 5, 820 D3DMULTISAMPLE_6_SAMPLES = 6, 821 D3DMULTISAMPLE_7_SAMPLES = 7, 822 D3DMULTISAMPLE_8_SAMPLES = 8, 823 D3DMULTISAMPLE_9_SAMPLES = 9, 824 D3DMULTISAMPLE_10_SAMPLES = 10, 825 D3DMULTISAMPLE_11_SAMPLES = 11, 826 D3DMULTISAMPLE_12_SAMPLES = 12, 827 D3DMULTISAMPLE_13_SAMPLES = 13, 828 D3DMULTISAMPLE_14_SAMPLES = 14, 829 D3DMULTISAMPLE_15_SAMPLES = 15, 830 D3DMULTISAMPLE_16_SAMPLES = 16, 831 }} 832 ENUM!{enum D3DFORMAT { 833 D3DFMT_UNKNOWN = 0, 834 D3DFMT_R8G8B8 = 20, 835 D3DFMT_A8R8G8B8 = 21, 836 D3DFMT_X8R8G8B8 = 22, 837 D3DFMT_R5G6B5 = 23, 838 D3DFMT_X1R5G5B5 = 24, 839 D3DFMT_A1R5G5B5 = 25, 840 D3DFMT_A4R4G4B4 = 26, 841 D3DFMT_R3G3B2 = 27, 842 D3DFMT_A8 = 28, 843 D3DFMT_A8R3G3B2 = 29, 844 D3DFMT_X4R4G4B4 = 30, 845 D3DFMT_A2B10G10R10 = 31, 846 D3DFMT_A8B8G8R8 = 32, 847 D3DFMT_X8B8G8R8 = 33, 848 D3DFMT_G16R16 = 34, 849 D3DFMT_A2R10G10B10 = 35, 850 D3DFMT_A16B16G16R16 = 36, 851 D3DFMT_A8P8 = 40, 852 D3DFMT_P8 = 41, 853 D3DFMT_L8 = 50, 854 D3DFMT_A8L8 = 51, 855 D3DFMT_A4L4 = 52, 856 D3DFMT_V8U8 = 60, 857 D3DFMT_L6V5U5 = 61, 858 D3DFMT_X8L8V8U8 = 62, 859 D3DFMT_Q8W8V8U8 = 63, 860 D3DFMT_V16U16 = 64, 861 D3DFMT_A2W10V10U10 = 67, 862 D3DFMT_UYVY = MAKEFOURCC!(b'U', b'Y', b'V', b'Y'), 863 D3DFMT_R8G8_B8G8 = MAKEFOURCC!(b'R', b'G', b'B', b'G'), 864 D3DFMT_YUY2 = MAKEFOURCC!(b'Y', b'U', b'Y', b'2'), 865 D3DFMT_G8R8_G8B8 = MAKEFOURCC!(b'G', b'R', b'G', b'B'), 866 D3DFMT_DXT1 = MAKEFOURCC!(b'D', b'X', b'T', b'1'), 867 D3DFMT_DXT2 = MAKEFOURCC!(b'D', b'X', b'T', b'2'), 868 D3DFMT_DXT3 = MAKEFOURCC!(b'D', b'X', b'T', b'3'), 869 D3DFMT_DXT4 = MAKEFOURCC!(b'D', b'X', b'T', b'4'), 870 D3DFMT_DXT5 = MAKEFOURCC!(b'D', b'X', b'T', b'5'), 871 D3DFMT_D16_LOCKABLE = 70, 872 D3DFMT_D32 = 71, 873 D3DFMT_D15S1 = 73, 874 D3DFMT_D24S8 = 75, 875 D3DFMT_D24X8 = 77, 876 D3DFMT_D24X4S4 = 79, 877 D3DFMT_D16 = 80, 878 D3DFMT_D32F_LOCKABLE = 82, 879 D3DFMT_D24FS8 = 83, 880 D3DFMT_D32_LOCKABLE = 84, 881 D3DFMT_S8_LOCKABLE = 85, 882 D3DFMT_L16 = 81, 883 D3DFMT_VERTEXDATA = 100, 884 D3DFMT_INDEX16 = 101, 885 D3DFMT_INDEX32 = 102, 886 D3DFMT_Q16W16V16U16 = 110, 887 D3DFMT_MULTI2_ARGB8 = MAKEFOURCC!(b'M', b'E', b'T', b'1'), 888 D3DFMT_R16F = 111, 889 D3DFMT_G16R16F = 112, 890 D3DFMT_A16B16G16R16F = 113, 891 D3DFMT_R32F = 114, 892 D3DFMT_G32R32F = 115, 893 D3DFMT_A32B32G32R32F = 116, 894 D3DFMT_CxV8U8 = 117, 895 D3DFMT_A1 = 118, 896 D3DFMT_A2B10G10R10_XR_BIAS = 119, 897 D3DFMT_BINARYBUFFER = 199, 898 }} 899 STRUCT!{struct D3DDISPLAYMODE { 900 Width: UINT, 901 Height: UINT, 902 RefreshRate: UINT, 903 Format: D3DFORMAT, 904 }} 905 STRUCT!{struct D3DDEVICE_CREATION_PARAMETERS { 906 AdapterOrdinal: UINT, 907 DeviceType: D3DDEVTYPE, 908 hFocusWindow: HWND, 909 BehaviorFlags: DWORD, 910 }} 911 ENUM!{enum D3DSWAPEFFECT { 912 D3DSWAPEFFECT_DISCARD = 1, 913 D3DSWAPEFFECT_FLIP = 2, 914 D3DSWAPEFFECT_COPY = 3, 915 D3DSWAPEFFECT_OVERLAY = 4, 916 D3DSWAPEFFECT_FLIPEX = 5, 917 }} 918 ENUM!{enum D3DPOOL { 919 D3DPOOL_DEFAULT = 0, 920 D3DPOOL_MANAGED = 1, 921 D3DPOOL_SYSTEMMEM = 2, 922 D3DPOOL_SCRATCH = 3, 923 }} 924 pub const D3DPRESENT_RATE_DEFAULT: DWORD = 0x00000000; 925 STRUCT!{struct D3DPRESENT_PARAMETERS { 926 BackBufferWidth: UINT, 927 BackBufferHeight: UINT, 928 BackBufferFormat: D3DFORMAT, 929 BackBufferCount: UINT, 930 MultiSampleType: D3DMULTISAMPLE_TYPE, 931 MultiSampleQuality: DWORD, 932 SwapEffect: D3DSWAPEFFECT, 933 hDeviceWindow: HWND, 934 Windowed: BOOL, 935 EnableAutoDepthStencil: BOOL, 936 AutoDepthStencilFormat: D3DFORMAT, 937 Flags: DWORD, 938 FullScreen_RefreshRateInHz: UINT, 939 PresentationInterval: UINT, 940 }} 941 pub const D3DPRESENTFLAG_LOCKABLE_BACKBUFFER: DWORD = 0x00000001; 942 pub const D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL: DWORD = 0x00000002; 943 pub const D3DPRESENTFLAG_DEVICECLIP: DWORD = 0x00000004; 944 pub const D3DPRESENTFLAG_VIDEO: DWORD = 0x00000010; 945 pub const D3DPRESENTFLAG_NOAUTOROTATE: DWORD = 0x00000020; 946 pub const D3DPRESENTFLAG_UNPRUNEDMODE: DWORD = 0x00000040; 947 pub const D3DPRESENTFLAG_OVERLAY_LIMITEDRGB: DWORD = 0x00000080; 948 pub const D3DPRESENTFLAG_OVERLAY_YCbCr_BT709: DWORD = 0x00000100; 949 pub const D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC: DWORD = 0x00000200; 950 pub const D3DPRESENTFLAG_RESTRICTED_CONTENT: DWORD = 0x00000400; 951 pub const D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER: DWORD = 0x00000800; 952 STRUCT!{struct D3DGAMMARAMP { 953 red: [WORD; 256], 954 green: [WORD; 256], 955 blue: [WORD; 256], 956 }} 957 ENUM!{enum D3DBACKBUFFER_TYPE { 958 D3DBACKBUFFER_TYPE_MONO = 0, 959 D3DBACKBUFFER_TYPE_LEFT = 1, 960 D3DBACKBUFFER_TYPE_RIGHT = 2, 961 }} 962 ENUM!{enum D3DRESOURCETYPE { 963 D3DRTYPE_SURFACE = 1, 964 D3DRTYPE_VOLUME = 2, 965 D3DRTYPE_TEXTURE = 3, 966 D3DRTYPE_VOLUMETEXTURE = 4, 967 D3DRTYPE_CUBETEXTURE = 5, 968 D3DRTYPE_VERTEXBUFFER = 6, 969 D3DRTYPE_INDEXBUFFER = 7, 970 }} 971 pub const D3DUSAGE_RENDERTARGET: DWORD = 0x00000001; 972 pub const D3DUSAGE_DEPTHSTENCIL: DWORD = 0x00000002; 973 pub const D3DUSAGE_DYNAMIC: DWORD = 0x00000200; 974 pub const D3DUSAGE_NONSECURE: DWORD = 0x00800000; 975 pub const D3DUSAGE_AUTOGENMIPMAP: DWORD = 0x00000400; 976 pub const D3DUSAGE_DMAP: DWORD = 0x00004000; 977 pub const D3DUSAGE_QUERY_LEGACYBUMPMAP: DWORD = 0x00008000; 978 pub const D3DUSAGE_QUERY_SRGBREAD: DWORD = 0x00010000; 979 pub const D3DUSAGE_QUERY_FILTER: DWORD = 0x00020000; 980 pub const D3DUSAGE_QUERY_SRGBWRITE: DWORD = 0x00040000; 981 pub const D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING: DWORD = 0x00080000; 982 pub const D3DUSAGE_QUERY_VERTEXTEXTURE: DWORD = 0x00100000; 983 pub const D3DUSAGE_QUERY_WRAPANDMIP: DWORD = 0x00200000; 984 pub const D3DUSAGE_WRITEONLY: DWORD = 0x00000008; 985 pub const D3DUSAGE_SOFTWAREPROCESSING: DWORD = 0x00000010; 986 pub const D3DUSAGE_DONOTCLIP: DWORD = 0x00000020; 987 pub const D3DUSAGE_POINTS: DWORD = 0x00000040; 988 pub const D3DUSAGE_RTPATCHES: DWORD = 0x00000080; 989 pub const D3DUSAGE_NPATCHES: DWORD = 0x00000100; 990 pub const D3DUSAGE_TEXTAPI: DWORD = 0x10000000; 991 pub const D3DUSAGE_RESTRICTED_CONTENT: DWORD = 0x00000800; 992 pub const D3DUSAGE_RESTRICT_SHARED_RESOURCE: DWORD = 0x00002000; 993 pub const D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER: DWORD = 0x00001000; 994 ENUM!{enum D3DCUBEMAP_FACES { 995 D3DCUBEMAP_FACE_POSITIVE_X = 0, 996 D3DCUBEMAP_FACE_NEGATIVE_X = 1, 997 D3DCUBEMAP_FACE_POSITIVE_Y = 2, 998 D3DCUBEMAP_FACE_NEGATIVE_Y = 3, 999 D3DCUBEMAP_FACE_POSITIVE_Z = 4, 1000 D3DCUBEMAP_FACE_NEGATIVE_Z = 5, 1001 }} 1002 pub const D3DLOCK_READONLY: DWORD = 0x00000010; 1003 pub const D3DLOCK_DISCARD: DWORD = 0x00002000; 1004 pub const D3DLOCK_NOOVERWRITE: DWORD = 0x00001000; 1005 pub const D3DLOCK_NOSYSLOCK: DWORD = 0x00000800; 1006 pub const D3DLOCK_DONOTWAIT: DWORD = 0x00004000; 1007 pub const D3DLOCK_NO_DIRTY_UPDATE: DWORD = 0x00008000; 1008 STRUCT!{struct D3DVERTEXBUFFER_DESC { 1009 Format: D3DFORMAT, 1010 Type: D3DRESOURCETYPE, 1011 Usage: DWORD, 1012 Pool: D3DPOOL, 1013 Size: UINT, 1014 FVF: DWORD, 1015 }} 1016 STRUCT!{struct D3DINDEXBUFFER_DESC { 1017 Format: D3DFORMAT, 1018 Type: D3DRESOURCETYPE, 1019 Usage: DWORD, 1020 Pool: D3DPOOL, 1021 Size: UINT, 1022 }} 1023 STRUCT!{struct D3DSURFACE_DESC { 1024 Format: D3DFORMAT, 1025 Type: D3DRESOURCETYPE, 1026 Usage: DWORD, 1027 Pool: D3DPOOL, 1028 MultiSampleType: D3DMULTISAMPLE_TYPE, 1029 MultiSampleQuality: DWORD, 1030 Width: UINT, 1031 Height: UINT, 1032 }} 1033 STRUCT!{struct D3DVOLUME_DESC { 1034 Format: D3DFORMAT, 1035 Type: D3DRESOURCETYPE, 1036 Usage: DWORD, 1037 Pool: D3DPOOL, 1038 Width: UINT, 1039 Height: UINT, 1040 Depth: UINT, 1041 }} 1042 STRUCT!{struct D3DLOCKED_RECT { 1043 Pitch: INT, 1044 pBits: *mut c_void, 1045 }} 1046 STRUCT!{struct D3DBOX { 1047 Left: UINT, 1048 Top: UINT, 1049 Right: UINT, 1050 Bottom: UINT, 1051 Front: UINT, 1052 Back: UINT, 1053 }} 1054 STRUCT!{struct D3DLOCKED_BOX { 1055 RowPitch: INT, 1056 SlicePitch: INT, 1057 pBits: *mut c_void, 1058 }} 1059 STRUCT!{struct D3DRANGE { 1060 Offset: UINT, 1061 Size: UINT, 1062 }} 1063 STRUCT!{struct D3DRECTPATCH_INFO { 1064 StartVertexOffsetWidth: UINT, 1065 StartVertexOffsetHeight: UINT, 1066 Width: UINT, 1067 Height: UINT, 1068 Stride: UINT, 1069 Basis: D3DBASISTYPE, 1070 Degree: D3DDEGREETYPE, 1071 }} 1072 STRUCT!{struct D3DTRIPATCH_INFO { 1073 StartVertexOffset: UINT, 1074 NumVertices: UINT, 1075 Basis: D3DBASISTYPE, 1076 Degree: D3DDEGREETYPE, 1077 }} 1078 pub const MAX_DEVICE_IDENTIFIER_STRING: usize = 512; 1079 // FIXME packed(4) 1080 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct D3DADAPTER_IDENTIFIER9 { 1081 Driver: [c_char; MAX_DEVICE_IDENTIFIER_STRING], 1082 Description: [c_char; MAX_DEVICE_IDENTIFIER_STRING], 1083 DeviceName: [c_char; 32], 1084 DriverVersion: LARGE_INTEGER, 1085 VendorId: DWORD, 1086 DeviceId: DWORD, 1087 SubSysId: DWORD, 1088 Revision: DWORD, 1089 DeviceIdentifier: GUID, 1090 WHQLLevel: DWORD, 1091 }} 1092 STRUCT!{struct D3DRASTER_STATUS { 1093 InVBlank: BOOL, 1094 ScanLine: UINT, 1095 }} 1096 ENUM!{enum D3DDEBUGMONITORTOKENS { 1097 D3DDMT_ENABLE = 0, 1098 D3DDMT_DISABLE = 1, 1099 }} 1100 ENUM!{enum D3DQUERYTYPE { 1101 D3DQUERYTYPE_VCACHE = 4, 1102 D3DQUERYTYPE_RESOURCEMANAGER = 5, 1103 D3DQUERYTYPE_VERTEXSTATS = 6, 1104 D3DQUERYTYPE_EVENT = 8, 1105 D3DQUERYTYPE_OCCLUSION = 9, 1106 D3DQUERYTYPE_TIMESTAMP = 10, 1107 D3DQUERYTYPE_TIMESTAMPDISJOINT = 11, 1108 D3DQUERYTYPE_TIMESTAMPFREQ = 12, 1109 D3DQUERYTYPE_PIPELINETIMINGS = 13, 1110 D3DQUERYTYPE_INTERFACETIMINGS = 14, 1111 D3DQUERYTYPE_VERTEXTIMINGS = 15, 1112 D3DQUERYTYPE_PIXELTIMINGS = 16, 1113 D3DQUERYTYPE_BANDWIDTHTIMINGS = 17, 1114 D3DQUERYTYPE_CACHEUTILIZATION = 18, 1115 D3DQUERYTYPE_MEMORYPRESSURE = 19, 1116 }} 1117 pub const D3DISSUE_END: DWORD = 1 << 0; 1118 pub const D3DISSUE_BEGIN: DWORD = 1 << 1; 1119 pub const D3DGETDATA_FLUSH: DWORD = 1 << 0; 1120 STRUCT!{struct D3DRESOURCESTATS { 1121 bThrashing: BOOL, 1122 ApproxBytesDownloaded: DWORD, 1123 NumEvicts: DWORD, 1124 NumVidCreates: DWORD, 1125 LastPri: DWORD, 1126 NumUsed: DWORD, 1127 NumUsedInVidMem: DWORD, 1128 WorkingSet: DWORD, 1129 WorkingSetBytes: DWORD, 1130 TotalManaged: DWORD, 1131 TotalBytes: DWORD, 1132 }} 1133 pub const D3DRTYPECOUNT: usize = D3DRTYPE_INDEXBUFFER as usize + 1; 1134 STRUCT!{struct D3DDEVINFO_RESOURCEMANAGER { 1135 stats: [D3DRESOURCESTATS; D3DRTYPECOUNT], 1136 }} 1137 pub type LPD3DDEVINFO_RESOURCEMANAGER = *mut D3DDEVINFO_RESOURCEMANAGER; 1138 STRUCT!{struct D3DDEVINFO_D3DVERTEXSTATS { 1139 NumRenderedTriangles: DWORD, 1140 NumExtraClippingTriangles: DWORD, 1141 }} 1142 pub type LPD3DDEVINFO_D3DVERTEXSTATS = *mut D3DDEVINFO_D3DVERTEXSTATS; 1143 STRUCT!{struct D3DDEVINFO_VCACHE { 1144 Pattern: DWORD, 1145 OptMethod: DWORD, 1146 CacheSize: DWORD, 1147 MagicNumber: DWORD, 1148 }} 1149 pub type LPD3DDEVINFO_VCACHE = *mut D3DDEVINFO_VCACHE; 1150 STRUCT!{struct D3DDEVINFO_D3D9PIPELINETIMINGS { 1151 VertexProcessingTimePercent: FLOAT, 1152 PixelProcessingTimePercent: FLOAT, 1153 OtherGPUProcessingTimePercent: FLOAT, 1154 GPUIdleTimePercent: FLOAT, 1155 }} 1156 STRUCT!{struct D3DDEVINFO_D3D9INTERFACETIMINGS { 1157 WaitingForGPUToUseApplicationResourceTimePercent: FLOAT, 1158 WaitingForGPUToAcceptMoreCommandsTimePercent: FLOAT, 1159 WaitingForGPUToStayWithinLatencyTimePercent: FLOAT, 1160 WaitingForGPUExclusiveResourceTimePercent: FLOAT, 1161 WaitingForGPUOtherTimePercent: FLOAT, 1162 }} 1163 STRUCT!{struct D3DDEVINFO_D3D9STAGETIMINGS { 1164 MemoryProcessingPercent: FLOAT, 1165 ComputationProcessingPercent: FLOAT, 1166 }} 1167 STRUCT!{struct D3DDEVINFO_D3D9BANDWIDTHTIMINGS { 1168 MaxBandwidthUtilized: FLOAT, 1169 FrontEndUploadMemoryUtilizedPercent: FLOAT, 1170 VertexRateUtilizedPercent: FLOAT, 1171 TriangleSetupRateUtilizedPercent: FLOAT, 1172 FillRateUtilizedPercent: FLOAT, 1173 }} 1174 STRUCT!{struct D3DDEVINFO_D3D9CACHEUTILIZATION { 1175 TextureCacheHitRate: FLOAT, 1176 PostTransformVertexCacheHitRate: FLOAT, 1177 }} 1178 // FIXME packed(4) 1179 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct D3DMEMORYPRESSURE { 1180 BytesEvictedFromProcess: UINT64, 1181 SizeOfInefficientAllocation: UINT64, 1182 LevelOfEfficiency: DWORD, 1183 }} 1184 ENUM!{enum D3DCOMPOSERECTSOP { 1185 D3DCOMPOSERECTS_COPY = 1, 1186 D3DCOMPOSERECTS_OR = 2, 1187 D3DCOMPOSERECTS_AND = 3, 1188 D3DCOMPOSERECTS_NEG = 4, 1189 }} 1190 STRUCT!{struct D3DCOMPOSERECTDESC { 1191 X: USHORT, 1192 Y: USHORT, 1193 Width: USHORT, 1194 Height: USHORT, 1195 }} 1196 STRUCT!{struct D3DCOMPOSERECTDESTINATION { 1197 SrcRectIndex: USHORT, 1198 Reserved: USHORT, 1199 X: SHORT, 1200 Y: SHORT, 1201 }} 1202 pub const D3DCOMPOSERECTS_MAXNUMRECTS: DWORD = 0xFFFF; 1203 pub const D3DCONVOLUTIONMONO_MAXWIDTH: DWORD = 7; 1204 pub const D3DCONVOLUTIONMONO_MAXHEIGHT: DWORD = D3DCONVOLUTIONMONO_MAXWIDTH; 1205 pub const D3DFMT_A1_SURFACE_MAXWIDTH: DWORD = 8192; 1206 pub const D3DFMT_A1_SURFACE_MAXHEIGHT: DWORD = 2048; 1207 // FIXME packed(4) 1208 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct D3DPRESENTSTATS { 1209 PresentCount: UINT, 1210 PresentRefreshCount: UINT, 1211 SyncRefreshCount: UINT, 1212 SyncQPCTime: LARGE_INTEGER, 1213 SyncGPUTime: LARGE_INTEGER, 1214 }} 1215 ENUM!{enum D3DSCANLINEORDERING { 1216 D3DSCANLINEORDERING_UNKNOWN = 0, 1217 D3DSCANLINEORDERING_PROGRESSIVE = 1, 1218 D3DSCANLINEORDERING_INTERLACED = 2, 1219 }} 1220 STRUCT!{struct D3DDISPLAYMODEEX { 1221 Size: UINT, 1222 Width: UINT, 1223 Height: UINT, 1224 RefreshRate: UINT, 1225 Format: D3DFORMAT, 1226 ScanLineOrdering: D3DSCANLINEORDERING, 1227 }} 1228 STRUCT!{struct D3DDISPLAYMODEFILTER { 1229 Size: UINT, 1230 Format: D3DFORMAT, 1231 ScanLineOrdering: D3DSCANLINEORDERING, 1232 }} 1233 ENUM!{enum D3DDISPLAYROTATION { 1234 D3DDISPLAYROTATION_IDENTITY = 1, 1235 D3DDISPLAYROTATION_90 = 2, 1236 D3DDISPLAYROTATION_180 = 3, 1237 D3DDISPLAYROTATION_270 = 4, 1238 }} 1239 pub const D3D9_RESOURCE_PRIORITY_MINIMUM: DWORD = 0x28000000; 1240 pub const D3D9_RESOURCE_PRIORITY_LOW: DWORD = 0x50000000; 1241 pub const D3D9_RESOURCE_PRIORITY_NORMAL: DWORD = 0x78000000; 1242 pub const D3D9_RESOURCE_PRIORITY_HIGH: DWORD = 0xa0000000; 1243 pub const D3D9_RESOURCE_PRIORITY_MAXIMUM: DWORD = 0xc8000000; 1244 pub const D3D_OMAC_SIZE: usize = 16; 1245 STRUCT!{struct D3D_OMAC { 1246 Omac: [BYTE; D3D_OMAC_SIZE], 1247 }} 1248 ENUM!{enum D3DAUTHENTICATEDCHANNELTYPE { 1249 D3DAUTHENTICATEDCHANNEL_D3D9 = 1, 1250 D3DAUTHENTICATEDCHANNEL_DRIVER_SOFTWARE = 2, 1251 D3DAUTHENTICATEDCHANNEL_DRIVER_HARDWARE = 3, 1252 }} 1253 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERY_INPUT { 1254 QueryType: GUID, 1255 hChannel: HANDLE, 1256 SequenceNumber: UINT, 1257 }} 1258 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT { 1259 omac: D3D_OMAC, 1260 QueryType: GUID, 1261 hChannel: HANDLE, 1262 SequenceNumber: UINT, 1263 ReturnCode: HRESULT, 1264 }} 1265 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_PROTECTION, 1266 0xa84eb584, 0xc495, 0x48aa, 0xb9, 0x4d, 0x8b, 0xd2, 0xd6, 0xfb, 0xce, 0x5} 1267 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_PROTECTION_FLAGS { 1268 Value: UINT, 1269 }} 1270 BITFIELD!{D3DAUTHENTICATEDCHANNEL_PROTECTION_FLAGS Value: UINT [ 1271 ProtectionEnabled set_ProtectionEnabled[0..1], 1272 OverlayOrFullscreenRequired set_OverlayOrFullscreenRequired[1..2], 1273 ]} 1274 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYPROTECTION_OUTPUT { 1275 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1276 ProtectionFlags: D3DAUTHENTICATEDCHANNEL_PROTECTION_FLAGS, 1277 }} 1278 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_CHANNELTYPE, 1279 0xbc1b18a5, 0xb1fb, 0x42ab, 0xbd, 0x94, 0xb5, 0x82, 0x8b, 0x4b, 0xf7, 0xbe} 1280 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYCHANNELTYPE_OUTPUT { 1281 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1282 ChannelType: D3DAUTHENTICATEDCHANNELTYPE, 1283 }} 1284 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_DEVICEHANDLE, 1285 0xec1c539d, 0x8cff, 0x4e2a, 0xbc, 0xc4, 0xf5, 0x69, 0x2f, 0x99, 0xf4, 0x80} 1286 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYDEVICEHANDLE_OUTPUT { 1287 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1288 DeviceHandle: HANDLE, 1289 }} 1290 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_CRYPTOSESSION, 1291 0x2634499e, 0xd018, 0x4d74, 0xac, 0x17, 0x7f, 0x72, 0x40, 0x59, 0x52, 0x8d} 1292 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYCRYPTOSESSION_INPUT { 1293 Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT, 1294 DXVA2DecodeHandle: HANDLE, 1295 }} 1296 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYCRYPTOSESSION_OUTPUT { 1297 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1298 DXVA2DecodeHandle: HANDLE, 1299 CryptoSessionHandle: HANDLE, 1300 DeviceHandle: HANDLE, 1301 }} 1302 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_RESTRICTEDSHAREDRESOURCEPROCESSCOUNT, 1303 0xdb207b3, 0x9450, 0x46a6, 0x82, 0xde, 0x1b, 0x96, 0xd4, 0x4f, 0x9c, 0xf2} 1304 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESSCOUNT_OUTPUT { 1305 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1306 NumRestrictedSharedResourceProcesses: UINT, 1307 }} 1308 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_RESTRICTEDSHAREDRESOURCEPROCESS, 1309 0x649bbadb, 0xf0f4, 0x4639, 0xa1, 0x5b, 0x24, 0x39, 0x3f, 0xc3, 0xab, 0xac} 1310 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESS_INPUT { 1311 Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT, 1312 ProcessIndex: UINT, 1313 }} 1314 ENUM!{enum D3DAUTHENTICATEDCHANNEL_PROCESSIDENTIFIERTYPE { 1315 PROCESSIDTYPE_UNKNOWN = 0, 1316 PROCESSIDTYPE_DWM = 1, 1317 PROCESSIDTYPE_HANDLE = 2, 1318 }} 1319 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESS_OUTPUT { 1320 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1321 ProcessIndex: UINT, 1322 ProcessIdentifer: D3DAUTHENTICATEDCHANNEL_PROCESSIDENTIFIERTYPE, 1323 ProcessHandle: HANDLE, 1324 }} 1325 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_UNRESTRICTEDPROTECTEDSHAREDRESOURCECOUNT, 1326 0x12f0bd6, 0xe662, 0x4474, 0xbe, 0xfd, 0xaa, 0x53, 0xe5, 0x14, 0x3c, 0x6d} 1327 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYUNRESTRICTEDPROTECTEDSHAREDRESOURCECOUNT_OUTPUT { 1328 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1329 NumUnrestrictedProtectedSharedResources: UINT, 1330 }} 1331 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT, 1332 0x2c042b5e, 0x8c07, 0x46d5, 0xaa, 0xbe, 0x8f, 0x75, 0xcb, 0xad, 0x4c, 0x31} 1333 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTIDCOUNT_INPUT { 1334 Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT, 1335 DeviceHandle: HANDLE, 1336 CryptoSessionHandle: HANDLE, 1337 }} 1338 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTIDCOUNT_OUTPUT { 1339 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1340 DeviceHandle: HANDLE, 1341 CryptoSessionHandle: HANDLE, 1342 NumOutputIDs: UINT, 1343 }} 1344 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_OUTPUTID, 1345 0x839ddca3, 0x9b4e, 0x41e4, 0xb0, 0x53, 0x89, 0x2b, 0xd2, 0xa1, 0x1e, 0xe7} 1346 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTID_INPUT { 1347 Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT, 1348 DeviceHandle: HANDLE, 1349 CryptoSessionHandle: HANDLE, 1350 OutputIDIndex: UINT, 1351 }} 1352 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTID_OUTPUT { 1353 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1354 DeviceHandle: HANDLE, 1355 CryptoSessionHandle: HANDLE, 1356 OutputIDIndex: UINT, 1357 OutputID: UINT64, 1358 }} 1359 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_ACCESSIBILITYATTRIBUTES, 1360 0x6214d9d2, 0x432c, 0x4abb, 0x9f, 0xce, 0x21, 0x6e, 0xea, 0x26, 0x9e, 0x3b} 1361 ENUM!{enum D3DBUSTYPE { 1362 D3DBUSTYPE_OTHER = 0x00000000, 1363 D3DBUSTYPE_PCI = 0x00000001, 1364 D3DBUSTYPE_PCIX = 0x00000002, 1365 D3DBUSTYPE_PCIEXPRESS = 0x00000003, 1366 D3DBUSTYPE_AGP = 0x00000004, 1367 D3DBUSIMPL_MODIFIER_INSIDE_OF_CHIPSET = 0x00010000, 1368 MD3DBUSIMPL_ODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP = 0x00020000, 1369 D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET = 0x00030000, 1370 D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR = 0x00040000, 1371 D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE = 0x00050000, 1372 D3DBUSIMPL_MODIFIER_NON_STANDARD = 0x80000000, 1373 }} 1374 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYINFOBUSTYPE_OUTPUT { 1375 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1376 BusType: D3DBUSTYPE, 1377 bAccessibleInContiguousBlocks: BOOL, 1378 bAccessibleInNonContiguousBlocks: BOOL, 1379 }} 1380 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_ENCRYPTIONWHENACCESSIBLEGUIDCOUNT, 1381 0xb30f7066, 0x203c, 0x4b07, 0x93, 0xfc, 0xce, 0xaa, 0xfd, 0x61, 0x24, 0x1e} 1382 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUIDCOUNT_OUTPUT { 1383 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1384 NumEncryptionGuids: UINT, 1385 }} 1386 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_ENCRYPTIONWHENACCESSIBLEGUID, 1387 0xf83a5958, 0xe986, 0x4bda, 0xbe, 0xb0, 0x41, 0x1f, 0x6a, 0x7a, 0x1, 0xb7} 1388 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUID_INPUT { 1389 Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT, 1390 EncryptionGuidIndex: UINT, 1391 }} 1392 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUID_OUTPUT { 1393 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1394 EncryptionGuidIndex: UINT, 1395 EncryptionGuid: GUID, 1396 }} 1397 DEFINE_GUID!{D3DAUTHENTICATEDQUERY_CURRENTENCRYPTIONWHENACCESSIBLE, 1398 0xec1791c7, 0xdad3, 0x4f15, 0x9e, 0xc3, 0xfa, 0xa9, 0x3d, 0x60, 0xd4, 0xf0} 1399 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYUNCOMPRESSEDENCRYPTIONLEVEL_OUTPUT { 1400 Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT, 1401 EncryptionGuid: GUID, 1402 }} 1403 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT { 1404 omac: D3D_OMAC, 1405 ConfigureType: GUID, 1406 hChannel: HANDLE, 1407 SequenceNumber: UINT, 1408 }} 1409 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT { 1410 omac: D3D_OMAC, 1411 ConfigureType: GUID, 1412 hChannel: HANDLE, 1413 SequenceNumber: UINT, 1414 ReturnCode: HRESULT, 1415 }} 1416 DEFINE_GUID!{D3DAUTHENTICATEDCONFIGURE_INITIALIZE, 1417 0x6114bdb, 0x3523, 0x470a, 0x8d, 0xca, 0xfb, 0xc2, 0x84, 0x51, 0x54, 0xf0} 1418 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGUREINITIALIZE { 1419 Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT, 1420 StartSequenceQuery: UINT, 1421 StartSequenceConfigure: UINT, 1422 }} 1423 DEFINE_GUID!{D3DAUTHENTICATEDCONFIGURE_PROTECTION, 1424 0x50455658, 0x3f47, 0x4362, 0xbf, 0x99, 0xbf, 0xdf, 0xcd, 0xe9, 0xed, 0x29} 1425 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGUREPROTECTION { 1426 Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT, 1427 Protections: D3DAUTHENTICATEDCHANNEL_PROTECTION_FLAGS, 1428 }} 1429 DEFINE_GUID!{D3DAUTHENTICATEDCONFIGURE_CRYPTOSESSION, 1430 0x6346cc54, 0x2cfc, 0x4ad4, 0x82, 0x24, 0xd1, 0x58, 0x37, 0xde, 0x77, 0x0} 1431 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGURECRYPTOSESSION { 1432 Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT, 1433 DXVA2DecodeHandle: HANDLE, 1434 CryptoSessionHandle: HANDLE, 1435 DeviceHandle: HANDLE, 1436 }} 1437 DEFINE_GUID!{D3DAUTHENTICATEDCONFIGURE_SHAREDRESOURCE, 1438 0x772d047, 0x1b40, 0x48e8, 0x9c, 0xa6, 0xb5, 0xf5, 0x10, 0xde, 0x9f, 0x1} 1439 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGURESHAREDRESOURCE { 1440 Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT, 1441 ProcessIdentiferType: D3DAUTHENTICATEDCHANNEL_PROCESSIDENTIFIERTYPE, 1442 ProcessHandle: HANDLE, 1443 AllowAccess: BOOL, 1444 }} 1445 DEFINE_GUID!{D3DAUTHENTICATEDCONFIGURE_ENCRYPTIONWHENACCESSIBLE, 1446 0x41fff286, 0x6ae0, 0x4d43, 0x9d, 0x55, 0xa4, 0x6e, 0x9e, 0xfd, 0x15, 0x8a} 1447 STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGUREUNCOMPRESSEDENCRYPTION { 1448 Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT, 1449 EncryptionGuid: GUID, 1450 }} 1451 STRUCT!{struct D3DENCRYPTED_BLOCK_INFO { 1452 NumEncryptedBytesAtBeginning: UINT, 1453 NumBytesInSkipPattern: UINT, 1454 NumBytesInEncryptPattern: UINT, 1455 }} 1456 STRUCT!{struct D3DAES_CTR_IV { 1457 IV: UINT64, 1458 Count: UINT64, 1459 }} 1460