1 // Copyright © 2016, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 use super::*;
4 pub const D3DCOMPILER_DLL: &'static str = "d3dcompiler_47.dll";
5 pub const D3D_COMPILER_VERSION: DWORD = 47;
6 pub const D3DCOMPILE_DEBUG: DWORD = 1 << 0;
7 pub const D3DCOMPILE_SKIP_VALIDATION: DWORD = 1 << 1;
8 pub const D3DCOMPILE_SKIP_OPTIMIZATION: DWORD = 1 << 2;
9 pub const D3DCOMPILE_PACK_MATRIX_ROW_MAJOR: DWORD = 1 << 3;
10 pub const D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR: DWORD = 1 << 4;
11 pub const D3DCOMPILE_PARTIAL_PRECISION: DWORD = 1 << 5;
12 pub const D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT: DWORD = 1 << 6;
13 pub const D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT: DWORD = 1 << 7;
14 pub const D3DCOMPILE_NO_PRESHADER: DWORD = 1 << 8;
15 pub const D3DCOMPILE_AVOID_FLOW_CONTROL: DWORD = 1 << 9;
16 pub const D3DCOMPILE_PREFER_FLOW_CONTROL: DWORD = 1 << 10;
17 pub const D3DCOMPILE_ENABLE_STRICTNESS: DWORD = 1 << 11;
18 pub const D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY: DWORD = 1 << 12;
19 pub const D3DCOMPILE_IEEE_STRICTNESS: DWORD = 1 << 13;
20 pub const D3DCOMPILE_OPTIMIZATION_LEVEL0: DWORD = 1 << 14;
21 pub const D3DCOMPILE_OPTIMIZATION_LEVEL1: DWORD = 0;
22 pub const D3DCOMPILE_OPTIMIZATION_LEVEL2: DWORD = (1 << 14) | (1 << 15);
23 pub const D3DCOMPILE_OPTIMIZATION_LEVEL3: DWORD = 1 << 15;
24 pub const D3DCOMPILE_RESERVED16: DWORD = 1 << 16;
25 pub const D3DCOMPILE_RESERVED17: DWORD = 1 << 17;
26 pub const D3DCOMPILE_WARNINGS_ARE_ERRORS: DWORD = 1 << 18;
27 pub const D3DCOMPILE_RESOURCES_MAY_ALIAS: DWORD = 1 << 19;
28 pub const D3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLES: DWORD = 1 << 20;
29 pub const D3DCOMPILE_ALL_RESOURCES_BOUND: DWORD = 1 << 21;
30 pub const D3DCOMPILE_EFFECT_CHILD_EFFECT: DWORD = 1 << 0;
31 pub const D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS: DWORD = 1 << 1;
32 pub const D3D_COMPILE_STANDARD_FILE_INCLUDE: *mut ID3DInclude = 1 as *mut ID3DInclude;
33 pub const D3DCOMPILE_SECDATA_MERGE_UAV_SLOTS: DWORD = 0x00000001;
34 pub const D3DCOMPILE_SECDATA_PRESERVE_TEMPLATE_SLOTS: DWORD = 0x00000002;
35 pub const D3DCOMPILE_SECDATA_REQUIRE_TEMPLATE_MATCH: DWORD = 0x00000004;
36 pub const D3D_DISASM_ENABLE_COLOR_CODE: DWORD = 0x00000001;
37 pub const D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS: DWORD = 0x00000002;
38 pub const D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING: DWORD = 0x00000004;
39 pub const D3D_DISASM_ENABLE_INSTRUCTION_CYCLE: DWORD = 0x00000008;
40 pub const D3D_DISASM_DISABLE_DEBUG_INFO: DWORD = 0x00000010;
41 pub const D3D_DISASM_ENABLE_INSTRUCTION_OFFSET: DWORD = 0x00000020;
42 pub const D3D_DISASM_INSTRUCTION_ONLY: DWORD = 0x00000040;
43 pub const D3D_DISASM_PRINT_HEX_LITERALS: DWORD = 0x00000080;
44 pub const D3D_GET_INST_OFFSETS_INCLUDE_NON_EXECUTABLE: DWORD = 0x00000001;
45 FLAGS!{enum D3DCOMPILER_STRIP_FLAGS {
46     D3DCOMPILER_STRIP_REFLECTION_DATA = 0x00000001,
47     D3DCOMPILER_STRIP_DEBUG_INFO = 0x00000002,
48     D3DCOMPILER_STRIP_TEST_BLOBS = 0x00000004,
49     D3DCOMPILER_STRIP_PRIVATE_DATA = 0x00000008,
50     D3DCOMPILER_STRIP_ROOT_SIGNATURE = 0x00000010,
51     D3DCOMPILER_STRIP_FORCE_DWORD = 0x7fffffff,
52 }}
53 ENUM!{enum D3D_BLOB_PART {
54     D3D_BLOB_INPUT_SIGNATURE_BLOB,
55     D3D_BLOB_OUTPUT_SIGNATURE_BLOB,
56     D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB,
57     D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB,
58     D3D_BLOB_ALL_SIGNATURE_BLOB,
59     D3D_BLOB_DEBUG_INFO,
60     D3D_BLOB_LEGACY_SHADER,
61     D3D_BLOB_XNA_PREPASS_SHADER,
62     D3D_BLOB_XNA_SHADER,
63     D3D_BLOB_PDB,
64     D3D_BLOB_PRIVATE_DATA,
65     D3D_BLOB_ROOT_SIGNATURE,
66     D3D_BLOB_TEST_ALTERNATE_SHADER = 0x8000,
67     D3D_BLOB_TEST_COMPILE_DETAILS,
68     D3D_BLOB_TEST_COMPILE_PERF,
69     D3D_BLOB_TEST_COMPILE_REPORT,
70 }}
71 STRUCT!{struct D3D_SHADER_DATA {
72     pBytecode: LPCVOID,
73     BytecodeLength: SIZE_T,
74 }}
75