Home | History | Annotate | Download | only in include
      1 /*
      2  * Copyright 2010 Rico Schller
      3  * Copyright 2013 Austin English
      4  *
      5  * This library is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Lesser General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2.1 of the License, or (at your option) any later version.
      9  *
     10  * This library is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  * Lesser General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU Lesser General Public
     16  * License along with this library; if not, write to the Free Software
     17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
     18  */
     19 
     20 import "oaidl.idl";
     21 import "ocidl.idl";
     22 import "dxgi.idl";
     23 import "d3dcommon.idl";
     24 
     25 typedef D3D_PRIMITIVE D3D11_PRIMITIVE;
     26 typedef D3D_PRIMITIVE_TOPOLOGY D3D11_PRIMITIVE_TOPOLOGY;
     27 typedef D3D_SRV_DIMENSION D3D11_SRV_DIMENSION;
     28 typedef RECT D3D11_RECT;
     29 
     30 interface ID3D11Device;
     31 interface ID3D11ClassLinkage;
     32 interface ID3D11Resource;
     33 interface ID3D11VideoProcessorInputView;
     34 
     35 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT      = 14;
     36 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS          = 4;
     37 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
     38 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT       = 15;
     39 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
     40 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
     41 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT      = 15;
     42 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
     43 const UINT D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
     44 const UINT D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT           = 64;
     45 const UINT D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
     46 const UINT D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
     47 const UINT D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
     48 const UINT D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
     49 const UINT D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
     50 const UINT D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS  = 1;
     51 const UINT D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT       = 128;
     52 const UINT D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
     53 const UINT D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS  = 1;
     54 const UINT D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT           = 128;
     55 const UINT D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS         = 1;
     56 const UINT D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT              = 16;
     57 const UINT D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST     = 1;
     58 const UINT D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS         = 1;
     59 const UINT D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT                  = 16;
     60 const UINT D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT            = 32;
     61 const UINT D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS            = 4;
     62 const UINT D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT   = 32;
     63 const UINT D3D11_COMMONSHADER_TEMP_REGISTER_COUNT                 = 4096;
     64 const UINT D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST        = 3;
     65 const UINT D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS            = 3;
     66 const UINT D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX        = 10;
     67 const INT D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN         = -10;
     68 const INT D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE            = -8;
     69 const UINT D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE           = 7;
     70 
     71 const UINT D3D11_DEFAULT_DEPTH_BIAS          = 0;
     72 cpp_quote("#define D3D11_DEFAULT_DEPTH_BIAS_CLAMP 0.0f")
     73 const UINT D3D11_DEFAULT_MAX_ANISOTROPY      = 16;
     74 cpp_quote("#define D3D11_DEFAULT_MIP_LOD_BIAS 0.0f")
     75 const UINT D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
     76 const UINT D3D11_DEFAULT_SAMPLE_MASK         = 0xffffffff;
     77 const UINT D3D11_DEFAULT_SCISSOR_ENDX        = 0;
     78 const UINT D3D11_DEFAULT_SCISSOR_ENDY        = 0;
     79 const UINT D3D11_DEFAULT_SCISSOR_STARTX      = 0;
     80 const UINT D3D11_DEFAULT_SCISSOR_STARTY      = 0;
     81 cpp_quote("#define D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS 0.0f")
     82 const UINT D3D11_DEFAULT_STENCIL_READ_MASK   = 0xff;
     83 const UINT D3D11_DEFAULT_STENCIL_REFERENCE   = 0;
     84 const UINT D3D11_DEFAULT_STENCIL_WRITE_MASK  = 0xff;
     85 const UINT D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
     86 const UINT D3D11_DEFAULT_VIEWPORT_HEIGHT     = 0;
     87 cpp_quote("#define D3D11_DEFAULT_VIEWPORT_MAX_DEPTH 0.0f")
     88 cpp_quote("#define D3D11_DEFAULT_VIEWPORT_MIN_DEPTH 0.0f")
     89 const UINT D3D11_DEFAULT_VIEWPORT_TOPLEFTX   = 0;
     90 const UINT D3D11_DEFAULT_VIEWPORT_TOPLEFTY   = 0;
     91 const UINT D3D11_DEFAULT_VIEWPORT_WIDTH      = 0;
     92 
     93 cpp_quote("#define D3D11_FLOAT32_MAX         (3.402823466e+38f)")
     94 
     95 const UINT D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
     96 
     97 const unsigned int D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
     98 
     99 const UINT D3D11_MAX_MAXANISOTROPY           = 16;
    100 const UINT D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
    101 const UINT D3D11_VIEWPORT_BOUNDS_MAX         = 32767;
    102 const INT D3D11_VIEWPORT_BOUNDS_MIN          = -32768;
    103 const UINT D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
    104 const UINT D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
    105 
    106 const UINT D3D11_SHADER_MAJOR_VERSION        = 5;
    107 const UINT D3D11_SHADER_MAX_INSTANCES        = 65535;
    108 const UINT D3D11_SHADER_MAX_INTERFACES       = 253;
    109 const UINT D3D11_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
    110 const UINT D3D11_SHADER_MAX_TYPES            = 65535;
    111 const UINT D3D11_SHADER_MINOR_VERSION        = 0;
    112 const UINT D3D11_VS_OUTPUT_REGISTER_COUNT    = 32;
    113 
    114 const UINT D3D11_OMAC_SIZE = 16;
    115 
    116 const UINT D3D11_PS_CS_UAV_REGISTER_COMPONENTS         = 1;
    117 const UINT D3D11_PS_CS_UAV_REGISTER_COUNT              = 8;
    118 const UINT D3D11_PS_CS_UAV_REGISTER_READS_PER_INST     = 1;
    119 const UINT D3D11_PS_CS_UAV_REGISTER_READ_PORTS         = 1;
    120 const UINT D3D11_PS_FRONTFACING_DEFAULT_VALUE          = 0xffffffff;
    121 const UINT D3D11_PS_FRONTFACING_FALSE_VALUE            = 0;
    122 const UINT D3D11_PS_FRONTFACING_TRUE_VALUE             = 0xffffffff;
    123 const UINT D3D11_PS_INPUT_REGISTER_COMPONENTS          = 4;
    124 const UINT D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
    125 const UINT D3D11_PS_INPUT_REGISTER_COUNT               = 32;
    126 const UINT D3D11_PS_INPUT_REGISTER_READS_PER_INST      = 2;
    127 const UINT D3D11_PS_INPUT_REGISTER_READ_PORTS          = 1;
    128 cpp_quote("#define D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT (0.0f)")
    129 const UINT D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS   = 1;
    130 const UINT D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
    131 const UINT D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT        = 1;
    132 const UINT D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS    = 1;
    133 const UINT D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
    134 const UINT D3D11_PS_OUTPUT_MASK_REGISTER_COUNT         = 1;
    135 const UINT D3D11_PS_OUTPUT_REGISTER_COMPONENTS         = 4;
    136 const UINT D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
    137 const UINT D3D11_PS_OUTPUT_REGISTER_COUNT              = 8;
    138 cpp_quote("#define D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT (0.5f)")
    139 
    140 const UINT D3D11_RAW_UAV_SRV_BYTE_ALIGNMENT            = 16;
    141 
    142 const UINT D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE     = 4096;
    143 const UINT D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
    144 const UINT D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT     = 4096;
    145 const UINT D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
    146 const UINT D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP  = 32;
    147 const UINT D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP        = 32;
    148 const UINT D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
    149 const UINT D3D11_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
    150 const UINT D3D11_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
    151 const UINT D3D11_REQ_MAXANISOTROPY                     = 16;
    152 const UINT D3D11_REQ_MIP_LEVELS                        = 15;
    153 const UINT D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
    154 const UINT D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
    155 const UINT D3D11_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH     = 16384;
    156 const UINT D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
    157 cpp_quote("#define D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM (0.25f)")
    158 const UINT D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
    159 const UINT D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
    160 const UINT D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE   = 4096;
    161 const UINT D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION    = 2048;
    162 const UINT D3D11_REQ_TEXTURE1D_U_DIMENSION             = 16384;
    163 const UINT D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION    = 2048;
    164 const UINT D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION        = 16384;
    165 const UINT D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION      = 2048;
    166 const UINT D3D11_REQ_TEXTURECUBE_DIMENSION             = 16384;
    167 
    168 const UINT D3D11_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
    169 
    170 const UINT D3D11_SHIFT_INSTRUCTION_PAD_VALUE           = 0;
    171 const UINT D3D11_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
    172 
    173 const UINT D3D11_SO_BUFFER_MAX_STRIDE_IN_BYTES         = 2048;
    174 const UINT D3D11_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES   = 512;
    175 const UINT D3D11_SO_BUFFER_SLOT_COUNT                  = 4;
    176 const UINT D3D11_SO_DDI_REGISTER_INDEX_DENOTING_GAP    = 0xffffffff;
    177 const UINT D3D11_SO_NO_RASTERIZED_STREAM               = 0xffffffff;
    178 const UINT D3D11_SO_OUTPUT_COMPONENT_COUNT             = 128;
    179 const UINT D3D11_SO_STREAM_COUNT                       = 4;
    180 
    181 const UINT D3D11_SPEC_DATE_DAY   = 16;
    182 const UINT D3D11_SPEC_DATE_MONTH = 05;
    183 const UINT D3D11_SPEC_DATE_YEAR  = 2011;
    184 
    185 cpp_quote("#define D3D11_SPEC_VERSION                   (1.07)")
    186 cpp_quote("#define D3D11_SRGB_GAMMA                     (2.2f)")
    187 cpp_quote("#define D3D11_SRGB_TO_FLOAT_DENOMINATOR_1    (12.92f)")
    188 cpp_quote("#define D3D11_SRGB_TO_FLOAT_DENOMINATOR_2    (1.055f)")
    189 cpp_quote("#define D3D11_SRGB_TO_FLOAT_EXPONENT         (2.4f)")
    190 cpp_quote("#define D3D11_SRGB_TO_FLOAT_OFFSET           (0.055f)")
    191 cpp_quote("#define D3D11_SRGB_TO_FLOAT_THRESHOLD        (0.04045f)")
    192 cpp_quote("#define D3D11_SRGB_TO_FLOAT_TOLERANCE_IN_ULP (0.5f)")
    193 
    194 const UINT D3D11_STANDARD_COMPONENT_BIT_COUNT                     = 32;
    195 const UINT D3D11_STANDARD_COMPONENT_BIT_COUNT_DOUBLED             = 64;
    196 const UINT D3D11_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
    197 const UINT D3D11_STANDARD_PIXEL_COMPONENT_COUNT                   = 128;
    198 const UINT D3D11_STANDARD_PIXEL_ELEMENT_COUNT                     = 32;
    199 const UINT D3D11_STANDARD_VECTOR_SIZE                             = 4;
    200 const UINT D3D11_STANDARD_VERTEX_ELEMENT_COUNT                    = 32;
    201 const UINT D3D11_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT            = 64;
    202 
    203 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
    204 cpp_quote("struct CD3D11_DEFAULT {};")
    205 cpp_quote("extern const DECLSPEC_SELECTANY CD3D11_DEFAULT D3D11_DEFAULT;")
    206 cpp_quote("#endif")
    207 
    208 typedef enum D3D11_BLEND
    209 {
    210     D3D11_BLEND_ZERO = 1,
    211     D3D11_BLEND_ONE = 2,
    212     D3D11_BLEND_SRC_COLOR = 3,
    213     D3D11_BLEND_INV_SRC_COLOR = 4,
    214     D3D11_BLEND_SRC_ALPHA = 5,
    215     D3D11_BLEND_INV_SRC_ALPHA = 6,
    216     D3D11_BLEND_DEST_ALPHA = 7,
    217     D3D11_BLEND_INV_DEST_ALPHA = 8,
    218     D3D11_BLEND_DEST_COLOR = 9,
    219     D3D11_BLEND_INV_DEST_COLOR = 10,
    220     D3D11_BLEND_SRC_ALPHA_SAT = 11,
    221     D3D11_BLEND_BLEND_FACTOR = 14,
    222     D3D11_BLEND_INV_BLEND_FACTOR = 15,
    223     D3D11_BLEND_SRC1_COLOR = 16,
    224     D3D11_BLEND_INV_SRC1_COLOR = 17,
    225     D3D11_BLEND_SRC1_ALPHA = 18,
    226     D3D11_BLEND_INV_SRC1_ALPHA = 19,
    227 } D3D11_BLEND;
    228 
    229 typedef enum D3D11_BLEND_OP
    230 {
    231     D3D11_BLEND_OP_ADD = 1,
    232     D3D11_BLEND_OP_SUBTRACT,
    233     D3D11_BLEND_OP_REV_SUBTRACT,
    234     D3D11_BLEND_OP_MIN,
    235     D3D11_BLEND_OP_MAX
    236 } D3D11_BLEND_OP;
    237 
    238 typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE
    239 {
    240     D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
    241     D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1,
    242     D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2,
    243     D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3,
    244     D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4,
    245     D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5,
    246     D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6,
    247     D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7,
    248     D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8,
    249 } D3D11_VIDEO_DECODER_BUFFER_TYPE;
    250 
    251 typedef enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE
    252 {
    253     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0,
    254     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1,
    255     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2,
    256     D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
    257 } D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE;
    258 
    259 typedef enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE
    260 {
    261     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0,
    262     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1,
    263     D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2,
    264 } D3D11_VIDEO_PROCESSOR_OUTPUT_RATE;
    265 
    266 typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT
    267 {
    268     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0,
    269     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1,
    270     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2,
    271     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3,
    272     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4,
    273     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5,
    274     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
    275     D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7,
    276 } D3D11_VIDEO_PROCESSOR_STEREO_FORMAT;
    277 
    278 typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE
    279 {
    280     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0,
    281     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1,
    282     D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2,
    283 } D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE;
    284 
    285 typedef enum D3D11_VIDEO_PROCESSOR_ROTATION
    286 {
    287     D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0,
    288     D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1,
    289     D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2,
    290     D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3,
    291 } D3D11_VIDEO_PROCESSOR_ROTATION;
    292 
    293 typedef struct D3D11_BOX
    294 {
    295     UINT left;
    296     UINT top;
    297     UINT front;
    298     UINT right;
    299     UINT bottom;
    300     UINT back;
    301 } D3D11_BOX;
    302 
    303 typedef struct D3D11_BUFFER_RTV
    304 {
    305     union
    306     {
    307         UINT FirstElement;
    308         UINT ElementOffset;
    309     };
    310     union
    311     {
    312         UINT NumElements;
    313         UINT ElementWidth;
    314     };
    315 } D3D11_BUFFER_RTV;
    316 
    317 typedef struct D3D11_BUFFER_SRV
    318 {
    319     union
    320     {
    321         UINT FirstElement;
    322         UINT ElementOffset;
    323     };
    324     union
    325     {
    326         UINT NumElements;
    327         UINT ElementWidth;
    328     };
    329 } D3D11_BUFFER_SRV;
    330 
    331 typedef struct D3D11_BUFFER_UAV
    332 {
    333     UINT FirstElement;
    334     UINT NumElements;
    335     UINT Flags;
    336 } D3D11_BUFFER_UAV;
    337 
    338 typedef struct D3D11_BUFFEREX_SRV
    339 {
    340     UINT FirstElement;
    341     UINT NumElements;
    342     UINT Flags;
    343 } D3D11_BUFFEREX_SRV;
    344 
    345 typedef struct D3D11_CLASS_INSTANCE_DESC
    346 {
    347     UINT InstanceId;
    348     UINT InstanceIndex;
    349     UINT TypeId;
    350     UINT ConstantBuffer;
    351     UINT BaseConstantBufferOffset;
    352     UINT BaseTexture;
    353     UINT BaseSampler;
    354     BOOL Created;
    355 } D3D11_CLASS_INSTANCE_DESC;
    356 
    357 typedef enum D3D11_COMPARISON_FUNC
    358 {
    359     D3D11_COMPARISON_NEVER = 1,
    360     D3D11_COMPARISON_LESS,
    361     D3D11_COMPARISON_EQUAL,
    362     D3D11_COMPARISON_LESS_EQUAL,
    363     D3D11_COMPARISON_GREATER,
    364     D3D11_COMPARISON_NOT_EQUAL,
    365     D3D11_COMPARISON_GREATER_EQUAL,
    366     D3D11_COMPARISON_ALWAYS
    367 } D3D11_COMPARISON_FUNC;
    368 
    369 typedef enum D3D11_COUNTER
    370 {
    371     D3D11_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000,
    372 } D3D11_COUNTER;
    373 
    374 typedef struct D3D11_COUNTER_DESC
    375 {
    376     D3D11_COUNTER Counter;
    377     UINT MiscFlags;
    378 } D3D11_COUNTER_DESC;
    379 
    380 typedef struct D3D11_COUNTER_INFO
    381 {
    382     D3D11_COUNTER LastDeviceDependentCounter;
    383     UINT NumSimultaneousCounters;
    384     UINT8 NumDetectableParallelUnits;
    385 } D3D11_COUNTER_INFO;
    386 
    387 typedef enum D3D11_COUNTER_TYPE
    388 {
    389     D3D11_COUNTER_TYPE_FLOAT32,
    390     D3D11_COUNTER_TYPE_UINT16,
    391     D3D11_COUNTER_TYPE_UINT32,
    392     D3D11_COUNTER_TYPE_UINT64,
    393 } D3D11_COUNTER_TYPE;
    394 
    395 typedef enum D3D11_CULL_MODE
    396 {
    397     D3D11_CULL_NONE = 1,
    398     D3D11_CULL_FRONT,
    399     D3D11_CULL_BACK
    400 } D3D11_CULL_MODE;
    401 
    402 typedef enum D3D11_DEPTH_WRITE_MASK
    403 {
    404     D3D11_DEPTH_WRITE_MASK_ZERO,
    405     D3D11_DEPTH_WRITE_MASK_ALL,
    406 } D3D11_DEPTH_WRITE_MASK;
    407 
    408 typedef enum D3D11_DEVICE_CONTEXT_TYPE
    409 {
    410     D3D11_DEVICE_CONTEXT_IMMEDIATE,
    411     D3D11_DEVICE_CONTEXT_DEFERRED,
    412 } D3D11_DEVICE_CONTEXT_TYPE;
    413 
    414 typedef enum D3D11_DSV_DIMENSION
    415 {
    416     D3D11_DSV_DIMENSION_UNKNOWN,
    417     D3D11_DSV_DIMENSION_TEXTURE1D,
    418     D3D11_DSV_DIMENSION_TEXTURE1DARRAY,
    419     D3D11_DSV_DIMENSION_TEXTURE2D,
    420     D3D11_DSV_DIMENSION_TEXTURE2DARRAY,
    421     D3D11_DSV_DIMENSION_TEXTURE2DMS,
    422     D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY,
    423 } D3D11_DSV_DIMENSION;
    424 
    425 typedef enum D3D11_FEATURE
    426 {
    427     D3D11_FEATURE_THREADING,
    428     D3D11_FEATURE_DOUBLES,
    429     D3D11_FEATURE_FORMAT_SUPPORT,
    430     D3D11_FEATURE_FORMAT_SUPPORT2,
    431     D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS,
    432     D3D11_FEATURE_D3D11_OPTIONS,
    433     D3D11_FEATURE_ARCHITECTURE_INFO,
    434     D3D11_FEATURE_D3D9_OPTIONS,
    435     D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT,
    436     D3D11_FEATURE_D3D9_SHADOW_SUPPORT
    437 } D3D11_FEATURE;
    438 
    439 typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS
    440 {
    441     BOOL OutputMergerLogicOp;
    442     BOOL UAVOnlyRenderingForcedSampleCount;
    443     BOOL DiscardAPIsSeenByDriver;
    444     BOOL FlagsForUpdateAndCopySeenByDriver;
    445     BOOL ClearView;
    446     BOOL CopyWithOverlap;
    447     BOOL ConstantBufferPartialUpdate;
    448     BOOL ConstantBufferOffsetting;
    449     BOOL MapNoOverwriteOnDynamicConstantBuffer;
    450     BOOL MapNoOverwriteOnDynamicBufferSRV;
    451     BOOL MultisampleRTVWithForcedSampleCountOne;
    452     BOOL SAD4ShaderInstructions;
    453     BOOL ExtendedDoublesShaderInstructions;
    454     BOOL ExtendedResourceSharing;
    455 } D3D11_FEATURE_DATA_D3D11_OPTIONS;
    456 
    457 typedef enum D3D11_FILL_MODE
    458 {
    459     D3D11_FILL_WIREFRAME = 2,
    460     D3D11_FILL_SOLID
    461 } D3D11_FILL_MODE;
    462 
    463 typedef enum D3D11_FILTER_TYPE
    464 {
    465     D3D11_FILTER_TYPE_POINT  = 0,
    466     D3D11_FILTER_TYPE_LINEAR = 1
    467 } D3D11_FILTER_TYPE;
    468 
    469 const UINT D3D11_MIN_FILTER_SHIFT = 4;
    470 const UINT D3D11_MAG_FILTER_SHIFT = 2;
    471 const UINT D3D11_MIP_FILTER_SHIFT = 0;
    472 const UINT D3D11_FILTER_TYPE_MASK          = 0x00000003;
    473 const UINT D3D11_COMPARISON_FILTERING_BIT  = 0x00000080;
    474 const UINT D3D11_ANISOTROPIC_FILTERING_BIT = 0x00000040;
    475 
    476 cpp_quote("#define D3D11_ENCODE_BASIC_FILTER(min, mag, mip, bComparison) \\")
    477 cpp_quote("    ((D3D11_FILTER)(((bComparison) ? D3D11_COMPARISON_FILTERING_BIT : 0 ) | \\")
    478 cpp_quote("                    (((min)&D3D11_FILTER_TYPE_MASK) << D3D11_MIN_FILTER_SHIFT) | \\")
    479 cpp_quote("                    (((mag)&D3D11_FILTER_TYPE_MASK) << D3D11_MAG_FILTER_SHIFT) | \\")
    480 cpp_quote("                    (((mip)&D3D11_FILTER_TYPE_MASK) << D3D11_MIP_FILTER_SHIFT)))")
    481 
    482 cpp_quote("#define D3D11_ENCODE_ANISOTROPIC_FILTER(bComparison) \\")
    483 cpp_quote("    ((D3D11_FILTER)(D3D11_ANISOTROPIC_FILTERING_BIT | \\" )
    484 cpp_quote("                    D3D11_ENCODE_BASIC_FILTER(D3D11_FILTER_TYPE_LINEAR,D3D11_FILTER_TYPE_LINEAR, \\" )
    485 cpp_quote("                                              D3D11_FILTER_TYPE_LINEAR,bComparison)))" )
    486 
    487 cpp_quote("#define D3D11_DECODE_MIN_FILTER(d3d11Filter) \\")
    488 cpp_quote("    ((D3D11_FILTER_TYPE)(((d3d11Filter) >> D3D11_MIN_FILTER_SHIFT) & D3D11_FILTER_TYPE_MASK))")
    489 
    490 cpp_quote("#define D3D11_DECODE_MAG_FILTER(d3d11Filter) \\")
    491 cpp_quote("    ((D3D11_FILTER_TYPE)(((d3d11Filter) >> D3D11_MAG_FILTER_SHIFT) & D3D11_FILTER_TYPE_MASK))")
    492 
    493 cpp_quote("#define D3D11_DECODE_MIP_FILTER(d3d11Filter) \\")
    494 cpp_quote("    ((D3D11_FILTER_TYPE)(((d3d11Filter) >> D3D11_MIP_FILTER_SHIFT) & D3D11_FILTER_TYPE_MASK))")
    495 
    496 cpp_quote("#define D3D11_DECODE_IS_COMPARISON_FILTER(d3d11Filter) ((d3d11Filter) & D3D11_COMPARISON_FILTERING_BIT)")
    497 
    498 cpp_quote("#define D3D11_DECODE_IS_ANISOTROPIC_FILTER(d3d11Filter) \\")
    499 cpp_quote("    (((d3d11Filter) & D3D11_ANISOTROPIC_FILTERING_BIT ) \\" )
    500 cpp_quote("     && (D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MIN_FILTER(d3d11Filter)) \\" )
    501 cpp_quote("     && (D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MAG_FILTER(d3d11Filter)) \\" )
    502 cpp_quote("     && (D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MIP_FILTER(d3d11Filter)))")
    503 
    504 typedef enum D3D11_FILTER
    505 {
    506     D3D11_FILTER_MIN_MAG_MIP_POINT = 0x00,
    507     D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x01,
    508     D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x04,
    509     D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x05,
    510     D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
    511     D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
    512     D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
    513     D3D11_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
    514     D3D11_FILTER_ANISOTROPIC = 0x55,
    515     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
    516     D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
    517     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
    518     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
    519     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
    520     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
    521     D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
    522     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
    523     D3D11_FILTER_COMPARISON_ANISOTROPIC = 0xd5
    524 } D3D11_FILTER;
    525 
    526 typedef enum D3D11_DSV_FLAG
    527 {
    528     D3D11_DSV_READ_ONLY_DEPTH = 0x1,
    529     D3D11_DSV_READ_ONLY_STENCIL = 0x2,
    530 } D3D11_DSV_FLAG;
    531 
    532 typedef enum D3D11_INPUT_CLASSIFICATION
    533 {
    534     D3D11_INPUT_PER_VERTEX_DATA,
    535     D3D11_INPUT_PER_INSTANCE_DATA,
    536 } D3D11_INPUT_CLASSIFICATION;
    537 
    538 const UINT D3D11_APPEND_ALIGNED_ELEMENT = 0xffffffff;
    539 
    540 typedef struct D3D11_INPUT_ELEMENT_DESC
    541 {
    542     LPCSTR SemanticName;
    543     UINT SemanticIndex;
    544     DXGI_FORMAT Format;
    545     UINT InputSlot;
    546     UINT AlignedByteOffset;
    547     D3D11_INPUT_CLASSIFICATION InputSlotClass;
    548     UINT InstanceDataStepRate;
    549 } D3D11_INPUT_ELEMENT_DESC;
    550 
    551 typedef enum D3D11_MAP
    552 {
    553     D3D11_MAP_READ = 1,
    554     D3D11_MAP_WRITE,
    555     D3D11_MAP_READ_WRITE,
    556     D3D11_MAP_WRITE_DISCARD,
    557     D3D11_MAP_WRITE_NO_OVERWRITE
    558 } D3D11_MAP;
    559 
    560 typedef enum D3D11_MAP_FLAG
    561 {
    562     D3D11_MAP_FLAG_DO_NOT_WAIT = 0x00100000
    563 } D3D11_MAP_FLAG;
    564 
    565 typedef struct D3D11_QUERY_DATA_SO_STATISTICS
    566 {
    567     UINT64 NumPrimitivesWritten;
    568     UINT64 PrimitivesStorageNeeded;
    569 } D3D11_QUERY_DATA_SO_STATISTICS;
    570 
    571 typedef struct D3D11_MAPPED_SUBRESOURCE
    572 {
    573     void *pData;
    574     UINT RowPitch;
    575     UINT DepthPitch;
    576 } D3D11_MAPPED_SUBRESOURCE;
    577 
    578 typedef enum D3D11_QUERY
    579 {
    580     D3D11_QUERY_EVENT,
    581     D3D11_QUERY_OCCLUSION,
    582     D3D11_QUERY_TIMESTAMP,
    583     D3D11_QUERY_TIMESTAMP_DISJOINT,
    584     D3D11_QUERY_PIPELINE_STATISTICS,
    585     D3D11_QUERY_OCCLUSION_PREDICATE,
    586     D3D11_QUERY_SO_STATISTICS,
    587     D3D11_QUERY_SO_OVERFLOW_PREDICATE,
    588     D3D11_QUERY_SO_STATISTICS_STREAM0,
    589     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0,
    590     D3D11_QUERY_SO_STATISTICS_STREAM1,
    591     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1,
    592     D3D11_QUERY_SO_STATISTICS_STREAM2,
    593     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2,
    594     D3D11_QUERY_SO_STATISTICS_STREAM3,
    595     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3,
    596 } D3D11_QUERY;
    597 
    598 typedef enum D3D11_QUERY_MISC_FLAG
    599 {
    600     D3D11_QUERY_MISC_PREDICATEHINT = 0x1,
    601 } D3D11_QUERY_MISC_FLAG;
    602 
    603 typedef enum D3D11_ASYNC_GETDATA_FLAG
    604 {
    605     D3D11_ASYNC_GETDATA_DONOTFLUSH = 0x0001,
    606 } D3D11_ASYNC_GETDATA_FLAG;
    607 
    608 typedef enum D3D11_RESOURCE_MISC_FLAG
    609 {
    610     D3D11_RESOURCE_MISC_GENERATE_MIPS                    = 0x00000001L,
    611     D3D11_RESOURCE_MISC_SHARED                           = 0x00000002L,
    612     D3D11_RESOURCE_MISC_TEXTURECUBE                      = 0x00000004L,
    613     D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS                = 0x00000010L,
    614     D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS           = 0x00000020L,
    615     D3D11_RESOURCE_MISC_BUFFER_STRUCTURED                = 0x00000040L,
    616     D3D11_RESOURCE_MISC_RESOURCE_CLAMP                   = 0x00000080L,
    617     D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX                = 0x00000100L,
    618     D3D11_RESOURCE_MISC_GDI_COMPATIBLE                   = 0x00000200L,
    619     D3D11_RESOURCE_MISC_SHARED_NTHANDLE                  = 0x00000800L,
    620     D3D11_RESOURCE_MISC_RESTRICTED_CONTENT               = 0x00001000L,
    621     D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE         = 0x00002000L,
    622     D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER  = 0x00004000L,
    623     D3D11_RESOURCE_MISC_GUARDED                          = 0x00008000L
    624 } D3D11_RESOURCE_MISC_FLAG;
    625 
    626 typedef struct D3D11_QUERY_DESC
    627 {
    628     D3D11_QUERY Query;
    629     UINT MiscFlags;
    630 } D3D11_QUERY_DESC;
    631 
    632 typedef struct D3D11_RASTERIZER_DESC
    633 {
    634     D3D11_FILL_MODE FillMode;
    635     D3D11_CULL_MODE CullMode;
    636     BOOL FrontCounterClockwise;
    637     INT DepthBias;
    638     FLOAT DepthBiasClamp;
    639     FLOAT SlopeScaledDepthBias;
    640     BOOL DepthClipEnable;
    641     BOOL ScissorEnable;
    642     BOOL MultisampleEnable;
    643     BOOL AntialiasedLineEnable;
    644 } D3D11_RASTERIZER_DESC;
    645 
    646 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
    647 cpp_quote("struct CD3D11_RASTERIZER_DESC : public D3D11_RASTERIZER_DESC {")
    648 cpp_quote("    CD3D11_RASTERIZER_DESC() {}")
    649 cpp_quote("    explicit CD3D11_RASTERIZER_DESC(const D3D11_RASTERIZER_DESC &o) : D3D11_RASTERIZER_DESC(o) {}")
    650 cpp_quote("    explicit CD3D11_RASTERIZER_DESC(CD3D11_DEFAULT) {")
    651 cpp_quote("        FillMode = D3D11_FILL_SOLID;")
    652 cpp_quote("        CullMode = D3D11_CULL_BACK;")
    653 cpp_quote("        FrontCounterClockwise = FALSE;")
    654 cpp_quote("        DepthBias = D3D11_DEFAULT_DEPTH_BIAS;")
    655 cpp_quote("        DepthBiasClamp = D3D11_DEFAULT_DEPTH_BIAS_CLAMP;")
    656 cpp_quote("        SlopeScaledDepthBias = D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;")
    657 cpp_quote("        DepthClipEnable = TRUE;")
    658 cpp_quote("        ScissorEnable = FALSE;")
    659 cpp_quote("        MultisampleEnable = FALSE;")
    660 cpp_quote("        AntialiasedLineEnable = FALSE;")
    661 cpp_quote("    }")
    662 cpp_quote("    explicit CD3D11_RASTERIZER_DESC(D3D11_FILL_MODE fillMode, D3D11_CULL_MODE cullMode," )
    663 cpp_quote("            WINBOOL frontCounterClockwise, INT depthBias, FLOAT depthBiasClamp, FLOAT slopeScaledDepthBias,")
    664 cpp_quote("            BOOL depthClipEnable, WINBOOL scissorEnable, WINBOOL multisampleEnable, WINBOOL antialiasedLineEnable) {")
    665 cpp_quote("        FillMode = fillMode;")
    666 cpp_quote("        CullMode = cullMode;")
    667 cpp_quote("        FrontCounterClockwise = frontCounterClockwise;")
    668 cpp_quote("        DepthBias = depthBias;")
    669 cpp_quote("        DepthBiasClamp = depthBiasClamp;")
    670 cpp_quote("        SlopeScaledDepthBias = slopeScaledDepthBias;")
    671 cpp_quote("        DepthClipEnable = depthClipEnable;")
    672 cpp_quote("        ScissorEnable = scissorEnable;")
    673 cpp_quote("        MultisampleEnable = multisampleEnable;")
    674 cpp_quote("        AntialiasedLineEnable = antialiasedLineEnable;")
    675 cpp_quote("    }")
    676 cpp_quote("    ~CD3D11_RASTERIZER_DESC() {}")
    677 cpp_quote("    operator const D3D11_RASTERIZER_DESC&() const { return *this; }")
    678 cpp_quote("};")
    679 cpp_quote("#endif")
    680 
    681 typedef enum D3D11_RESOURCE_DIMENSION
    682 {
    683     D3D11_RESOURCE_DIMENSION_UNKNOWN,
    684     D3D11_RESOURCE_DIMENSION_BUFFER,
    685     D3D11_RESOURCE_DIMENSION_TEXTURE1D,
    686     D3D11_RESOURCE_DIMENSION_TEXTURE2D,
    687     D3D11_RESOURCE_DIMENSION_TEXTURE3D,
    688 } D3D11_RESOURCE_DIMENSION;
    689 
    690 typedef enum D3D11_RTV_DIMENSION
    691 {
    692     D3D11_RTV_DIMENSION_UNKNOWN,
    693     D3D11_RTV_DIMENSION_BUFFER,
    694     D3D11_RTV_DIMENSION_TEXTURE1D,
    695     D3D11_RTV_DIMENSION_TEXTURE1DARRAY,
    696     D3D11_RTV_DIMENSION_TEXTURE2D,
    697     D3D11_RTV_DIMENSION_TEXTURE2DARRAY,
    698     D3D11_RTV_DIMENSION_TEXTURE2DMS,
    699     D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY,
    700     D3D11_RTV_DIMENSION_TEXTURE3D,
    701 } D3D11_RTV_DIMENSION;
    702 
    703 typedef struct D3D11_SO_DECLARATION_ENTRY
    704 {
    705     UINT Stream;
    706     LPCSTR SemanticName;
    707     UINT SemanticIndex;
    708     BYTE StartComponent;
    709     BYTE ComponentCount;
    710     BYTE OutputSlot;
    711 } D3D11_SO_DECLARATION_ENTRY;
    712 
    713 typedef enum D3D11_STENCIL_OP
    714 {
    715     D3D11_STENCIL_OP_KEEP = 1,
    716     D3D11_STENCIL_OP_ZERO,
    717     D3D11_STENCIL_OP_REPLACE,
    718     D3D11_STENCIL_OP_INCR_SAT,
    719     D3D11_STENCIL_OP_DECR_SAT,
    720     D3D11_STENCIL_OP_INVERT,
    721     D3D11_STENCIL_OP_INCR,
    722     D3D11_STENCIL_OP_DECR
    723 } D3D11_STENCIL_OP;
    724 
    725 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
    726 cpp_quote("}")
    727 cpp_quote("inline UINT D3D11CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT MipLevels) {")
    728 cpp_quote("    return MipSlice + ArraySlice * MipLevels;")
    729 cpp_quote("}")
    730 cpp_quote("extern \"C\"{")
    731 cpp_quote("#endif")
    732 
    733 typedef struct D3D11_SUBRESOURCE_DATA
    734 {
    735     const void *pSysMem;
    736     UINT SysMemPitch;
    737     UINT SysMemSlicePitch;
    738 } D3D11_SUBRESOURCE_DATA;
    739 
    740 typedef struct D3D11_TEX1D_ARRAY_DSV
    741 {
    742     UINT MipSlice;
    743     UINT FirstArraySlice;
    744     UINT ArraySize;
    745 } D3D11_TEX1D_ARRAY_DSV;
    746 
    747 typedef struct D3D11_TEX1D_ARRAY_RTV
    748 {
    749     UINT MipSlice;
    750     UINT FirstArraySlice;
    751     UINT ArraySize;
    752 } D3D11_TEX1D_ARRAY_RTV;
    753 
    754 typedef struct D3D11_TEX1D_ARRAY_SRV
    755 {
    756     UINT MostDetailedMip;
    757     UINT MipLevels;
    758     UINT FirstArraySlice;
    759     UINT ArraySize;
    760 } D3D11_TEX1D_ARRAY_SRV;
    761 
    762 typedef struct D3D11_TEX1D_ARRAY_UAV
    763 {
    764     UINT MipSlice;
    765     UINT FirstArraySlice;
    766     UINT ArraySize;
    767 } D3D11_TEX1D_ARRAY_UAV;
    768 
    769 typedef struct D3D11_TEX1D_DSV
    770 {
    771     UINT MipSlice;
    772 } D3D11_TEX1D_DSV;
    773 
    774 typedef struct D3D11_TEX1D_RTV
    775 {
    776     UINT MipSlice;
    777 } D3D11_TEX1D_RTV;
    778 
    779 typedef struct D3D11_TEX1D_SRV
    780 {
    781     UINT MostDetailedMip;
    782     UINT MipLevels;
    783  } D3D11_TEX1D_SRV;
    784 
    785 typedef struct D3D11_TEX1D_UAV
    786 {
    787     UINT MipSlice;
    788 } D3D11_TEX1D_UAV;
    789 
    790 typedef struct D3D11_TEX2D_ARRAY_DSV
    791 {
    792     UINT MipSlice;
    793     UINT FirstArraySlice;
    794     UINT ArraySize;
    795 } D3D11_TEX2D_ARRAY_DSV;
    796 
    797 typedef struct D3D11_TEX2D_ARRAY_RTV
    798 {
    799     UINT MipSlice;
    800     UINT FirstArraySlice;
    801     UINT ArraySize;
    802 } D3D11_TEX2D_ARRAY_RTV;
    803 
    804 typedef struct D3D11_TEX2D_ARRAY_SRV
    805 {
    806     UINT MostDetailedMip;
    807     UINT MipLevels;
    808     UINT FirstArraySlice;
    809     UINT ArraySize;
    810 } D3D11_TEX2D_ARRAY_SRV;
    811 
    812 typedef struct D3D11_TEX2D_ARRAY_UAV
    813 {
    814     UINT MipSlice;
    815     UINT FirstArraySlice;
    816     UINT ArraySize;
    817 } D3D11_TEX2D_ARRAY_UAV;
    818 
    819 typedef struct D3D11_TEX2D_DSV
    820 {
    821     UINT MipSlice;
    822 } D3D11_TEX2D_DSV;
    823 
    824 typedef struct D3D11_TEX2D_RTV
    825 {
    826     UINT MipSlice;
    827 } D3D11_TEX2D_RTV;
    828 
    829 typedef struct D3D11_TEX2D_SRV
    830 {
    831     UINT MostDetailedMip;
    832     UINT MipLevels;
    833 } D3D11_TEX2D_SRV;
    834 
    835 typedef struct D3D11_TEX2D_UAV
    836 {
    837     UINT MipSlice;
    838 } D3D11_TEX2D_UAV;
    839 
    840 typedef struct D3D11_TEX2DMS_ARRAY_DSV
    841 {
    842     UINT FirstArraySlice;
    843     UINT ArraySize;
    844 } D3D11_TEX2DMS_ARRAY_DSV;
    845 
    846 typedef struct D3D11_TEX2DMS_ARRAY_RTV
    847 {
    848     UINT FirstArraySlice;
    849     UINT ArraySize;
    850 } D3D11_TEX2DMS_ARRAY_RTV;
    851 
    852 typedef struct D3D11_TEX2DMS_ARRAY_SRV
    853 {
    854     UINT FirstArraySlice;
    855     UINT ArraySize;
    856 } D3D11_TEX2DMS_ARRAY_SRV;
    857 
    858 typedef struct D3D11_TEX2DMS_DSV
    859 {
    860     UINT UnusedField_NothingToDefine;
    861 } D3D11_TEX2DMS_DSV;
    862 
    863 typedef struct D3D11_TEX2DMS_RTV
    864 {
    865     UINT UnusedField_NothingToDefine;
    866 } D3D11_TEX2DMS_RTV;
    867 
    868 typedef struct D3D11_TEX2DMS_SRV
    869 {
    870     UINT UnusedField_NothingToDefine;
    871 } D3D11_TEX2DMS_SRV;
    872 
    873 typedef struct D3D11_TEX3D_RTV
    874 {
    875     UINT MipSlice;
    876     UINT FirstWSlice;
    877     UINT WSize;
    878 } D3D11_TEX3D_RTV;
    879 
    880 typedef struct D3D11_TEX3D_SRV
    881 {
    882     UINT MostDetailedMip;
    883     UINT MipLevels;
    884 } D3D11_TEX3D_SRV;
    885 
    886 typedef struct D3D11_TEX3D_UAV
    887 {
    888     UINT MipSlice;
    889     UINT FirstWSlice;
    890     UINT WSize;
    891 } D3D11_TEX3D_UAV;
    892 
    893 typedef struct D3D11_TEXCUBE_ARRAY_SRV
    894 {
    895     UINT MostDetailedMip;
    896     UINT MipLevels;
    897     UINT First2DArrayFace;
    898     UINT NumCubes;
    899 } D3D11_TEXCUBE_ARRAY_SRV;
    900 
    901 typedef struct D3D11_TEXCUBE_SRV
    902 {
    903     UINT MostDetailedMip;
    904     UINT MipLevels;
    905 } D3D11_TEXCUBE_SRV;
    906 
    907 typedef enum D3D11_TEXTURE_ADDRESS_MODE
    908 {
    909     D3D11_TEXTURE_ADDRESS_WRAP = 1,
    910     D3D11_TEXTURE_ADDRESS_MIRROR,
    911     D3D11_TEXTURE_ADDRESS_CLAMP,
    912     D3D11_TEXTURE_ADDRESS_BORDER,
    913     D3D11_TEXTURE_ADDRESS_MIRROR_ONCE
    914 } D3D11_TEXTURE_ADDRESS_MODE;
    915 
    916 typedef enum D3D11_UAV_DIMENSION
    917 {
    918     D3D11_UAV_DIMENSION_UNKNOWN,
    919     D3D11_UAV_DIMENSION_BUFFER,
    920     D3D11_UAV_DIMENSION_TEXTURE1D,
    921     D3D11_UAV_DIMENSION_TEXTURE1DARRAY,
    922     D3D11_UAV_DIMENSION_TEXTURE2D,
    923     D3D11_UAV_DIMENSION_TEXTURE2DARRAY,
    924     D3D11_UAV_DIMENSION_TEXTURE3D = 8,
    925 } D3D11_UAV_DIMENSION;
    926 
    927 typedef struct D3D11_UNORDERED_ACCESS_VIEW_DESC
    928 {
    929     DXGI_FORMAT Format;
    930     D3D11_UAV_DIMENSION ViewDimension;
    931 
    932     union
    933     {
    934         D3D11_BUFFER_UAV Buffer;
    935         D3D11_TEX1D_UAV Texture1D;
    936         D3D11_TEX1D_ARRAY_UAV Texture1DArray;
    937         D3D11_TEX2D_UAV Texture2D;
    938         D3D11_TEX2D_ARRAY_UAV Texture2DArray;
    939         D3D11_TEX3D_UAV Texture3D;
    940     };
    941 } D3D11_UNORDERED_ACCESS_VIEW_DESC;
    942 
    943 typedef enum D3D11_USAGE
    944 {
    945     D3D11_USAGE_DEFAULT,
    946     D3D11_USAGE_IMMUTABLE,
    947     D3D11_USAGE_DYNAMIC,
    948     D3D11_USAGE_STAGING,
    949 } D3D11_USAGE;
    950 
    951 typedef enum D3D11_BIND_FLAG
    952 {
    953     D3D11_BIND_VERTEX_BUFFER    = 0x0001,
    954     D3D11_BIND_INDEX_BUFFER     = 0x0002,
    955     D3D11_BIND_CONSTANT_BUFFER  = 0x0004,
    956     D3D11_BIND_SHADER_RESOURCE  = 0x0008,
    957     D3D11_BIND_STREAM_OUTPUT    = 0x0010,
    958     D3D11_BIND_RENDER_TARGET    = 0x0020,
    959     D3D11_BIND_DEPTH_STENCIL    = 0x0040,
    960     D3D11_BIND_UNORDERED_ACCESS = 0x0080,
    961     D3D11_BIND_DECODER          = 0x0200,
    962     D3D11_BIND_VIDEO_ENCODER    = 0x0400
    963 } D3D11_BIND_FLAG;
    964 
    965 typedef enum D3D11_CPU_ACCESS_FLAG
    966 {
    967     D3D11_CPU_ACCESS_WRITE = 0x00010000,
    968     D3D11_CPU_ACCESS_READ  = 0x00020000
    969 } D3D11_CPU_ACCESS_FLAG;
    970 
    971 typedef struct D3D11_VIEWPORT
    972 {
    973     FLOAT TopLeftX;
    974     FLOAT TopLeftY;
    975     FLOAT Width;
    976     FLOAT Height;
    977     FLOAT MinDepth;
    978     FLOAT MaxDepth;
    979 } D3D11_VIEWPORT;
    980 
    981 typedef enum D3D11_COLOR_WRITE_ENABLE
    982 {
    983     D3D11_COLOR_WRITE_ENABLE_RED   = 1,
    984     D3D11_COLOR_WRITE_ENABLE_GREEN = 2,
    985     D3D11_COLOR_WRITE_ENABLE_BLUE  = 4,
    986     D3D11_COLOR_WRITE_ENABLE_ALPHA = 8,
    987     D3D11_COLOR_WRITE_ENABLE_ALL   =
    988         (D3D11_COLOR_WRITE_ENABLE_RED|D3D11_COLOR_WRITE_ENABLE_GREEN|D3D11_COLOR_WRITE_ENABLE_BLUE|D3D11_COLOR_WRITE_ENABLE_ALPHA)
    989 } D3D11_COLOR_WRITE_ENABLE;
    990 
    991 typedef enum D3D11_FORMAT_SUPPORT
    992 {
    993     D3D11_FORMAT_SUPPORT_BUFFER                       = 0x00000001,
    994     D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER             = 0x00000002,
    995     D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER              = 0x00000004,
    996     D3D11_FORMAT_SUPPORT_SO_BUFFER                    = 0x00000008,
    997     D3D11_FORMAT_SUPPORT_TEXTURE1D                    = 0x00000010,
    998     D3D11_FORMAT_SUPPORT_TEXTURE2D                    = 0x00000020,
    999     D3D11_FORMAT_SUPPORT_TEXTURE3D                    = 0x00000040,
   1000     D3D11_FORMAT_SUPPORT_TEXTURECUBE                  = 0x00000080,
   1001     D3D11_FORMAT_SUPPORT_SHADER_LOAD                  = 0x00000100,
   1002     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE                = 0x00000200,
   1003     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON     = 0x00000400,
   1004     D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT      = 0x00000800,
   1005     D3D11_FORMAT_SUPPORT_MIP                          = 0x00001000,
   1006     D3D11_FORMAT_SUPPORT_MIP_AUTOGEN                  = 0x00002000,
   1007     D3D11_FORMAT_SUPPORT_RENDER_TARGET                = 0x00004000,
   1008     D3D11_FORMAT_SUPPORT_BLENDABLE                    = 0x00008000,
   1009     D3D11_FORMAT_SUPPORT_DEPTH_STENCIL                = 0x00010000,
   1010     D3D11_FORMAT_SUPPORT_CPU_LOCKABLE                 = 0x00020000,
   1011     D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE          = 0x00040000,
   1012     D3D11_FORMAT_SUPPORT_DISPLAY                      = 0x00080000,
   1013     D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT       = 0x00100000,
   1014     D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET     = 0x00200000,
   1015     D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD             = 0x00400000,
   1016     D3D11_FORMAT_SUPPORT_SHADER_GATHER                = 0x00800000,
   1017     D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST             = 0x01000000,
   1018     D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW  = 0x02000000,
   1019     D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON     = 0x04000000,
   1020     D3D11_FORMAT_SUPPORT_DECODER_OUTPUT               = 0x08000000,
   1021     D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT       = 0x10000000,
   1022     D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT        = 0x20000000,
   1023     D3D11_FORMAT_SUPPORT_VIDEO_ENCODER                = 0x40000000,
   1024 } D3D11_FORMAT_SUPPORT;
   1025 
   1026 typedef enum D3D11_CLEAR_FLAG
   1027 {
   1028     D3D11_CLEAR_DEPTH    = 0x0001L,
   1029     D3D11_CLEAR_STENCIL  = 0x0002L
   1030 } D3D11_CLEAR_FLAG;
   1031 
   1032 typedef struct D3D11_RENDER_TARGET_BLEND_DESC
   1033 {
   1034     BOOL BlendEnable;
   1035     D3D11_BLEND SrcBlend;
   1036     D3D11_BLEND DestBlend;
   1037     D3D11_BLEND_OP BlendOp;
   1038     D3D11_BLEND SrcBlendAlpha;
   1039     D3D11_BLEND DestBlendAlpha;
   1040     D3D11_BLEND_OP BlendOpAlpha;
   1041     UINT8 RenderTargetWriteMask;
   1042 } D3D11_RENDER_TARGET_BLEND_DESC;
   1043 
   1044 typedef struct D3D11_BLEND_DESC
   1045 {
   1046     BOOL AlphaToCoverageEnable;
   1047     BOOL IndependentBlendEnable;
   1048     D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT];
   1049 } D3D11_BLEND_DESC;
   1050 
   1051 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
   1052 cpp_quote("struct CD3D11_BLEND_DESC : public D3D11_BLEND_DESC {")
   1053 cpp_quote("    CD3D11_BLEND_DESC() {}")
   1054 cpp_quote("    explicit CD3D11_BLEND_DESC(const D3D11_BLEND_DESC &o) : D3D11_BLEND_DESC(o) {}")
   1055 cpp_quote("    explicit CD3D11_BLEND_DESC(CD3D11_DEFAULT) {")
   1056 cpp_quote("        AlphaToCoverageEnable = FALSE;")
   1057 cpp_quote("        IndependentBlendEnable = FALSE;")
   1058 cpp_quote("        for(D3D11_RENDER_TARGET_BLEND_DESC *target; target < RenderTarget+D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; target++) {")
   1059 cpp_quote("            target->BlendEnable = FALSE;")
   1060 cpp_quote("            target->SrcBlend = target->SrcBlendAlpha = D3D11_BLEND_ONE;")
   1061 cpp_quote("            target->DestBlend = target->DestBlendAlpha = D3D11_BLEND_ZERO;")
   1062 cpp_quote("            target->BlendOp = target->BlendOpAlpha = D3D11_BLEND_OP_ADD;")
   1063 cpp_quote("            target->RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;")
   1064 cpp_quote("        }")
   1065 cpp_quote("    }")
   1066 cpp_quote("    ~CD3D11_BLEND_DESC() {}")
   1067 cpp_quote("    operator const D3D11_BLEND_DESC&() const { return *this; }")
   1068 cpp_quote("};" )
   1069 cpp_quote("#endif" )
   1070 
   1071 typedef struct D3D11_BUFFER_DESC
   1072 {
   1073     UINT ByteWidth;
   1074     D3D11_USAGE Usage;
   1075     UINT BindFlags;
   1076     UINT CPUAccessFlags;
   1077     UINT MiscFlags;
   1078     UINT StructureByteStride;
   1079 } D3D11_BUFFER_DESC;
   1080 
   1081 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
   1082 cpp_quote("struct CD3D11_BUFFER_DESC : public D3D11_BUFFER_DESC {")
   1083 cpp_quote("    CD3D11_BUFFER_DESC() {}" )
   1084 cpp_quote("    explicit CD3D11_BUFFER_DESC(const D3D11_BUFFER_DESC &o) : D3D11_BUFFER_DESC(o) {}")
   1085 cpp_quote("    explicit CD3D11_BUFFER_DESC(UINT byteWidth,UINT bindFlags,")
   1086 cpp_quote("            D3D11_USAGE usage = D3D11_USAGE_DEFAULT, UINT cpuaccessFlags = 0,")
   1087 cpp_quote("            UINT miscFlags = 0, UINT structureByteStride = 0 ) {")
   1088 cpp_quote("        ByteWidth = byteWidth;")
   1089 cpp_quote("        Usage = usage;")
   1090 cpp_quote("        BindFlags = bindFlags;")
   1091 cpp_quote("        CPUAccessFlags = cpuaccessFlags;")
   1092 cpp_quote("        MiscFlags = miscFlags;" )
   1093 cpp_quote("        StructureByteStride = structureByteStride;")
   1094 cpp_quote("    }")
   1095 cpp_quote("    ~CD3D11_BUFFER_DESC() {}")
   1096 cpp_quote("    operator const D3D11_BUFFER_DESC&() const { return *this; }")
   1097 cpp_quote("};" )
   1098 cpp_quote("#endif" )
   1099 
   1100 typedef struct D3D11_DEPTH_STENCIL_VIEW_DESC
   1101 {
   1102     DXGI_FORMAT Format;
   1103     D3D11_DSV_DIMENSION ViewDimension;
   1104     UINT Flags;
   1105 
   1106     union
   1107     {
   1108         D3D11_TEX1D_DSV Texture1D;
   1109         D3D11_TEX1D_ARRAY_DSV Texture1DArray;
   1110         D3D11_TEX2D_DSV Texture2D;
   1111         D3D11_TEX2D_ARRAY_DSV Texture2DArray;
   1112         D3D11_TEX2DMS_DSV Texture2DMS;
   1113         D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray;
   1114     };
   1115 } D3D11_DEPTH_STENCIL_VIEW_DESC;
   1116 
   1117 typedef struct D3D11_DEPTH_STENCILOP_DESC
   1118 {
   1119     D3D11_STENCIL_OP StencilFailOp;
   1120     D3D11_STENCIL_OP StencilDepthFailOp;
   1121     D3D11_STENCIL_OP StencilPassOp;
   1122     D3D11_COMPARISON_FUNC StencilFunc;
   1123 } D3D11_DEPTH_STENCILOP_DESC;
   1124 
   1125 typedef struct D3D11_DEPTH_STENCIL_DESC
   1126 {
   1127     BOOL DepthEnable;
   1128     D3D11_DEPTH_WRITE_MASK DepthWriteMask;
   1129     D3D11_COMPARISON_FUNC DepthFunc;
   1130     BOOL StencilEnable;
   1131     UINT8 StencilReadMask;
   1132     UINT8 StencilWriteMask;
   1133     D3D11_DEPTH_STENCILOP_DESC FrontFace;
   1134     D3D11_DEPTH_STENCILOP_DESC BackFace;
   1135 } D3D11_DEPTH_STENCIL_DESC;
   1136 
   1137 typedef struct D3D11_RENDER_TARGET_VIEW_DESC
   1138 {
   1139     DXGI_FORMAT Format;
   1140     D3D11_RTV_DIMENSION ViewDimension;
   1141 
   1142     union
   1143     {
   1144         D3D11_BUFFER_RTV Buffer;
   1145         D3D11_TEX1D_RTV Texture1D;
   1146         D3D11_TEX1D_ARRAY_RTV Texture1DArray;
   1147         D3D11_TEX2D_RTV Texture2D;
   1148         D3D11_TEX2D_ARRAY_RTV Texture2DArray;
   1149         D3D11_TEX2DMS_RTV Texture2DMS;
   1150         D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray;
   1151         D3D11_TEX3D_RTV Texture3D;
   1152     };
   1153 } D3D11_RENDER_TARGET_VIEW_DESC;
   1154 
   1155 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
   1156 cpp_quote("struct CD3D11_RENDER_TARGET_VIEW_DESC : public D3D11_RENDER_TARGET_VIEW_DESC {")
   1157 cpp_quote("    CD3D11_RENDER_TARGET_VIEW_DESC() {}")
   1158 cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(D3D11_RTV_DIMENSION dim, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,")
   1159 cpp_quote("            UINT mip_slice = 0, UINT first_slice = 0, UINT array_size = -1) {")
   1160 cpp_quote("        Format = format;")
   1161 cpp_quote("        ViewDimension = dim;")
   1162 cpp_quote("        switch(dim) {")
   1163 cpp_quote("        case D3D11_RTV_DIMENSION_BUFFER:")
   1164 cpp_quote("            Buffer.FirstElement = mip_slice;")
   1165 cpp_quote("            Buffer.NumElements = first_slice;")
   1166 cpp_quote("            break;")
   1167 cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE1D:")
   1168 cpp_quote("            Texture1D.MipSlice = mip_slice;")
   1169 cpp_quote("            break;")
   1170 cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE1DARRAY:")
   1171 cpp_quote("            Texture1DArray.MipSlice = mip_slice;")
   1172 cpp_quote("            Texture1DArray.FirstArraySlice = first_slice;")
   1173 cpp_quote("            Texture1DArray.ArraySize = array_size;")
   1174 cpp_quote("            break;")
   1175 cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE2D:")
   1176 cpp_quote("            Texture2D.MipSlice = mip_slice;")
   1177 cpp_quote("            break;")
   1178 cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE2DARRAY:")
   1179 cpp_quote("            Texture2DArray.MipSlice = mip_slice;")
   1180 cpp_quote("            Texture2DArray.FirstArraySlice = first_slice;")
   1181 cpp_quote("            Texture2DArray.ArraySize = array_size;")
   1182 cpp_quote("            break;")
   1183 cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY:")
   1184 cpp_quote("            Texture2DMSArray.FirstArraySlice = first_slice;")
   1185 cpp_quote("            Texture2DMSArray.ArraySize = array_size;")
   1186 cpp_quote("            break;")
   1187 cpp_quote("        case D3D11_RTV_DIMENSION_TEXTURE3D:")
   1188 cpp_quote("            Texture3D.MipSlice = mip_slice;")
   1189 cpp_quote("            Texture3D.FirstWSlice = first_slice;")
   1190 cpp_quote("            Texture3D.WSize = array_size;")
   1191 cpp_quote("            break;")
   1192 cpp_quote("        default:")
   1193 cpp_quote("            break;")
   1194 cpp_quote("        }")
   1195 cpp_quote("    }")
   1196 cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Buffer*, DXGI_FORMAT format, UINT first_elem,")
   1197 cpp_quote("            UINT elem_cnt) {")
   1198 cpp_quote("        Format = format;")
   1199 cpp_quote("        ViewDimension = D3D11_RTV_DIMENSION_BUFFER;")
   1200 cpp_quote("        Buffer.FirstElement = first_elem;")
   1201 cpp_quote("        Buffer.NumElements = elem_cnt;")
   1202 cpp_quote("    }")
   1203 cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture1D *texture, D3D11_RTV_DIMENSION dim,")
   1204 cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT mip_slice = 0, UINT first_slice = 0,")
   1205 cpp_quote("            UINT array_size = -1);") /* FIXME: implement */
   1206 cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture2D *texture, D3D11_RTV_DIMENSION dim,")
   1207 cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT mip_slice = 0, UINT first_slice = 0,")
   1208 cpp_quote("            UINT array_size = -1);") /* FIXME: implement */
   1209 cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(ID3D11Texture3D *texture, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,")
   1210 cpp_quote("            UINT mip_slice = 0, UINT first_w_slice = 0, UINT w_slice = -1 );") /* FIXME: implement */
   1211 cpp_quote("    ~CD3D11_RENDER_TARGET_VIEW_DESC() {}")
   1212 cpp_quote("    explicit CD3D11_RENDER_TARGET_VIEW_DESC(const D3D11_RENDER_TARGET_VIEW_DESC &other)")
   1213 cpp_quote("        : D3D11_RENDER_TARGET_VIEW_DESC(other) {}")
   1214 cpp_quote("    operator const D3D11_RENDER_TARGET_VIEW_DESC&() const {")
   1215 cpp_quote("        return *this;")
   1216 cpp_quote("    }")
   1217 cpp_quote("};")
   1218 cpp_quote("#endif")
   1219 
   1220 
   1221 typedef struct D3D11_SAMPLER_DESC
   1222 {
   1223     D3D11_FILTER Filter;
   1224     D3D11_TEXTURE_ADDRESS_MODE AddressU;
   1225     D3D11_TEXTURE_ADDRESS_MODE AddressV;
   1226     D3D11_TEXTURE_ADDRESS_MODE AddressW;
   1227     FLOAT MipLODBias;
   1228     UINT MaxAnisotropy;
   1229     D3D11_COMPARISON_FUNC ComparisonFunc;
   1230     FLOAT BorderColor[4];
   1231     FLOAT MinLOD;
   1232     FLOAT MaxLOD;
   1233 } D3D11_SAMPLER_DESC;
   1234 
   1235 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
   1236 cpp_quote("struct CD3D11_SAMPLER_DESC : public D3D11_SAMPLER_DESC {")
   1237 cpp_quote("    CD3D11_SAMPLER_DESC() {}")
   1238 cpp_quote("    explicit CD3D11_SAMPLER_DESC(const D3D11_SAMPLER_DESC &o) : D3D11_SAMPLER_DESC(o) {}")
   1239 cpp_quote("    explicit CD3D11_SAMPLER_DESC(CD3D11_DEFAULT) {" )
   1240 cpp_quote("        Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;")
   1241 cpp_quote("        AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;")
   1242 cpp_quote("        AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;")
   1243 cpp_quote("        AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;")
   1244 cpp_quote("        MipLODBias = 0;")
   1245 cpp_quote("        MaxAnisotropy = 1;")
   1246 cpp_quote("        ComparisonFunc = D3D11_COMPARISON_NEVER;")
   1247 cpp_quote("        BorderColor[0] = BorderColor[1] = BorderColor[2] = BorderColor[3] = 1.0f;")
   1248 cpp_quote("        MinLOD = -3.402823466e+38f;")
   1249 cpp_quote("        MaxLOD = 3.402823466e+38f;")
   1250 cpp_quote("    }")
   1251 cpp_quote("    explicit CD3D11_SAMPLER_DESC(D3D11_FILTER filter, D3D11_TEXTURE_ADDRESS_MODE addressU,")
   1252 cpp_quote("            D3D11_TEXTURE_ADDRESS_MODE addressV, D3D11_TEXTURE_ADDRESS_MODE addressW,")
   1253 cpp_quote("            FLOAT mipLODBias, UINT maxAnisotropy, D3D11_COMPARISON_FUNC comparisonFunc,")
   1254 cpp_quote("            const FLOAT *borderColor, FLOAT minLOD, FLOAT maxLOD) {" )
   1255 cpp_quote("        Filter = filter;")
   1256 cpp_quote("        AddressU = addressU;")
   1257 cpp_quote("        AddressV = addressV;")
   1258 cpp_quote("        AddressW = addressW;")
   1259 cpp_quote("        MipLODBias = mipLODBias;")
   1260 cpp_quote("        MaxAnisotropy = maxAnisotropy;")
   1261 cpp_quote("        ComparisonFunc = comparisonFunc;")
   1262 cpp_quote("        if(borderColor) {")
   1263 cpp_quote("            BorderColor[0] = borderColor[0];")
   1264 cpp_quote("            BorderColor[1] = borderColor[1];")
   1265 cpp_quote("            BorderColor[2] = borderColor[2];")
   1266 cpp_quote("            BorderColor[3] = borderColor[3];")
   1267 cpp_quote("        }else {")
   1268 cpp_quote("            BorderColor[0] = BorderColor[1] = BorderColor[2] = BorderColor[3] = 1.0f;")
   1269 cpp_quote("        }")
   1270 cpp_quote("        MinLOD = minLOD;")
   1271 cpp_quote("        MaxLOD = maxLOD;")
   1272 cpp_quote("    }")
   1273 cpp_quote("    ~CD3D11_SAMPLER_DESC() {}")
   1274 cpp_quote("    operator const D3D11_SAMPLER_DESC&() const { return *this; }")
   1275 cpp_quote("};")
   1276 cpp_quote("#endif")
   1277 
   1278 typedef struct D3D11_SHADER_RESOURCE_VIEW_DESC
   1279 {
   1280     DXGI_FORMAT Format;
   1281     D3D11_SRV_DIMENSION ViewDimension;
   1282 
   1283     union
   1284     {
   1285         D3D11_BUFFER_SRV Buffer;
   1286         D3D11_TEX1D_SRV Texture1D;
   1287         D3D11_TEX1D_ARRAY_SRV Texture1DArray;
   1288         D3D11_TEX2D_SRV Texture2D;
   1289         D3D11_TEX2D_ARRAY_SRV Texture2DArray;
   1290         D3D11_TEX2DMS_SRV Texture2DMS;
   1291         D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray;
   1292         D3D11_TEX3D_SRV Texture3D;
   1293         D3D11_TEXCUBE_SRV TextureCube;
   1294         D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray;
   1295         D3D11_BUFFEREX_SRV BufferEx;
   1296     };
   1297 } D3D11_SHADER_RESOURCE_VIEW_DESC;
   1298 
   1299 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined( __cplusplus )")
   1300 cpp_quote("struct CD3D11_SHADER_RESOURCE_VIEW_DESC : public D3D11_SHADER_RESOURCE_VIEW_DESC {")
   1301 cpp_quote("    CD3D11_SHADER_RESOURCE_VIEW_DESC() {}")
   1302 cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(D3D11_SRV_DIMENSION dim,")
   1303 cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0,")
   1304 cpp_quote("            UINT mip_levels = -1, UINT first_slice = 0, UINT array_size = -1, UINT flags = 0) {")
   1305 cpp_quote("        Format = format;")
   1306 cpp_quote("        ViewDimension = dim;")
   1307 cpp_quote("        switch(ViewDimension) {")
   1308 cpp_quote("        case D3D11_SRV_DIMENSION_BUFFER:")
   1309 cpp_quote("            Buffer.FirstElement = most_detailed_mip;")
   1310 cpp_quote("            Buffer.NumElements = mip_levels;")
   1311 cpp_quote("            break;")
   1312 cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE1D:")
   1313 cpp_quote("            Texture1D.MostDetailedMip = most_detailed_mip;")
   1314 cpp_quote("            Texture1D.MipLevels = mip_levels;")
   1315 cpp_quote("            break;")
   1316 cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE1DARRAY:")
   1317 cpp_quote("            Texture1DArray.MostDetailedMip = most_detailed_mip;")
   1318 cpp_quote("            Texture1DArray.MipLevels = mip_levels;")
   1319 cpp_quote("            Texture1DArray.FirstArraySlice = first_slice;")
   1320 cpp_quote("            Texture1DArray.ArraySize = array_size;")
   1321 cpp_quote("            break;")
   1322 cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE2D:")
   1323 cpp_quote("            Texture2D.MostDetailedMip = most_detailed_mip;")
   1324 cpp_quote("            Texture2D.MipLevels = mip_levels;")
   1325 cpp_quote("            break;")
   1326 cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE2DARRAY:")
   1327 cpp_quote("            Texture2DArray.MostDetailedMip = most_detailed_mip;")
   1328 cpp_quote("            Texture2DArray.MipLevels = mip_levels;")
   1329 cpp_quote("            Texture2DArray.FirstArraySlice = first_slice;")
   1330 cpp_quote("            Texture2DArray.ArraySize = array_size;")
   1331 cpp_quote("            break;")
   1332 cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY:")
   1333 cpp_quote("            Texture2DMSArray.FirstArraySlice = first_slice;")
   1334 cpp_quote("            Texture2DMSArray.ArraySize = array_size;")
   1335 cpp_quote("            break;")
   1336 cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURE3D:")
   1337 cpp_quote("            Texture3D.MostDetailedMip = most_detailed_mip;")
   1338 cpp_quote("            Texture3D.MipLevels = mip_levels;")
   1339 cpp_quote("            break;")
   1340 cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURECUBE:")
   1341 cpp_quote("            TextureCube.MostDetailedMip = most_detailed_mip;")
   1342 cpp_quote("            TextureCube.MipLevels = mip_levels;")
   1343 cpp_quote("            break;")
   1344 cpp_quote("        case D3D11_SRV_DIMENSION_TEXTURECUBEARRAY:")
   1345 cpp_quote("            TextureCubeArray.MostDetailedMip = most_detailed_mip;")
   1346 cpp_quote("            TextureCubeArray.MipLevels = mip_levels;")
   1347 cpp_quote("            TextureCubeArray.First2DArrayFace = first_slice;")
   1348 cpp_quote("            TextureCubeArray.NumCubes = array_size;")
   1349 cpp_quote("            break;")
   1350 cpp_quote("        case D3D11_SRV_DIMENSION_BUFFEREX:")
   1351 cpp_quote("            BufferEx.FirstElement = most_detailed_mip;")
   1352 cpp_quote("            BufferEx.NumElements = mip_levels;")
   1353 cpp_quote("            BufferEx.Flags = flags;")
   1354 cpp_quote("            break;")
   1355 cpp_quote("        default:")
   1356 cpp_quote("            break;")
   1357 cpp_quote("        }")
   1358 cpp_quote("    }")
   1359 cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Buffer*, DXGI_FORMAT format, UINT first_elem,")
   1360 cpp_quote("            UINT elem_cnt, UINT flags = 0);") /* FIXME: implement */
   1361 cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture1D *texture, D3D11_SRV_DIMENSION dim,")
   1362 cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0, UINT mip_levels = -1,")
   1363 cpp_quote("            UINT first_slice = 0, UINT array_size = -1 );") /* FIXME: implement */
   1364 cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture2D *texture, D3D11_SRV_DIMENSION dim,")
   1365 cpp_quote("            DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, UINT most_detailed_mip = 0, UINT mip_levels = -1,")
   1366 cpp_quote("            UINT first_slice = 0, UINT array_size = -1 );") /* FIXME: implement */
   1367 cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture3D *texture, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,")
   1368 cpp_quote("            UINT most_detailed_mip = 0, UINT mip_levels = -1 );")
   1369 cpp_quote("    ~CD3D11_SHADER_RESOURCE_VIEW_DESC() {}")
   1370 cpp_quote("    explicit CD3D11_SHADER_RESOURCE_VIEW_DESC(const D3D11_SHADER_RESOURCE_VIEW_DESC &other)")
   1371 cpp_quote("        : D3D11_SHADER_RESOURCE_VIEW_DESC(other) {}")
   1372 cpp_quote("    operator const D3D11_SHADER_RESOURCE_VIEW_DESC&() const {")
   1373 cpp_quote("        return *this;")
   1374 cpp_quote("    }")
   1375 cpp_quote("};")
   1376 cpp_quote("#endif")
   1377 
   1378 typedef struct D3D11_TEXTURE1D_DESC
   1379 {
   1380     UINT Width;
   1381     UINT MipLevels;
   1382     UINT ArraySize;
   1383     DXGI_FORMAT Format;
   1384     D3D11_USAGE Usage;
   1385     UINT BindFlags;
   1386     UINT CPUAccessFlags;
   1387     UINT MiscFlags;
   1388 } D3D11_TEXTURE1D_DESC;
   1389 
   1390 typedef struct D3D11_TEXTURE2D_DESC
   1391 {
   1392     UINT Width;
   1393     UINT Height;
   1394     UINT MipLevels;
   1395     UINT ArraySize;
   1396     DXGI_FORMAT Format;
   1397     DXGI_SAMPLE_DESC SampleDesc;
   1398     D3D11_USAGE Usage;
   1399     UINT BindFlags;
   1400     UINT CPUAccessFlags;
   1401     UINT MiscFlags;
   1402 } D3D11_TEXTURE2D_DESC;
   1403 
   1404 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
   1405 cpp_quote("struct CD3D11_TEXTURE2D_DESC : public D3D11_TEXTURE2D_DESC {")
   1406 cpp_quote("    CD3D11_TEXTURE2D_DESC() {}")
   1407 cpp_quote("    explicit CD3D11_TEXTURE2D_DESC(const D3D11_TEXTURE2D_DESC &o) : D3D11_TEXTURE2D_DESC(o) {}")
   1408 cpp_quote("    explicit CD3D11_TEXTURE2D_DESC(DXGI_FORMAT format, UINT width, UINT height, UINT arraySize = 1,")
   1409 cpp_quote("            UINT mipLevels = 0, UINT bindFlags = D3D11_BIND_SHADER_RESOURCE,")
   1410 cpp_quote("            D3D11_USAGE usage = D3D11_USAGE_DEFAULT, UINT cpuaccessFlags = 0, UINT sampleCount = 1," )
   1411 cpp_quote("            UINT sampleQuality = 0, UINT miscFlags = 0) {")
   1412 cpp_quote("        Width = width;")
   1413 cpp_quote("        Height = height;")
   1414 cpp_quote("        MipLevels = mipLevels;")
   1415 cpp_quote("        ArraySize = arraySize;")
   1416 cpp_quote("        Format = format;")
   1417 cpp_quote("        SampleDesc.Count = sampleCount;")
   1418 cpp_quote("        SampleDesc.Quality = sampleQuality;")
   1419 cpp_quote("        Usage = usage;")
   1420 cpp_quote("        BindFlags = bindFlags;")
   1421 cpp_quote("        CPUAccessFlags = cpuaccessFlags;")
   1422 cpp_quote("        MiscFlags = miscFlags;")
   1423 cpp_quote("    }" )
   1424 cpp_quote("    ~CD3D11_TEXTURE2D_DESC() {}")
   1425 cpp_quote("    operator const D3D11_TEXTURE2D_DESC&() const { return *this; }")
   1426 cpp_quote("};")
   1427 cpp_quote("#endif")
   1428 
   1429 typedef struct D3D11_TEXTURE3D_DESC
   1430 {
   1431     UINT Width;
   1432     UINT Height;
   1433     UINT Depth;
   1434     UINT MipLevels;
   1435     DXGI_FORMAT Format;
   1436     D3D11_USAGE Usage;
   1437     UINT BindFlags;
   1438     UINT CPUAccessFlags;
   1439     UINT MiscFlags;
   1440 } D3D11_TEXTURE3D_DESC;
   1441 
   1442 typedef struct D3D11_VIDEO_DECODER_DESC
   1443 {
   1444     GUID Guid;
   1445     UINT SampleWidth;
   1446     UINT SampleHeight;
   1447     DXGI_FORMAT OutputFormat;
   1448 } D3D11_VIDEO_DECODER_DESC;
   1449 
   1450 typedef struct D3D11_VIDEO_DECODER_CONFIG
   1451 {
   1452     GUID guidConfigBitstreamEncryption;
   1453     GUID guidConfigMBcontrolEncryption;
   1454     GUID guidConfigResidDiffEncryption;
   1455     UINT ConfigBitstreamRaw;
   1456     UINT ConfigMBcontrolRasterOrder;
   1457     UINT ConfigResidDiffHost;
   1458     UINT ConfigSpatialResid8;
   1459     UINT ConfigResid8Subtraction;
   1460     UINT ConfigSpatialHost8or9Clipping;
   1461     UINT ConfigSpatialResidInterleaved;
   1462     UINT ConfigIntraResidUnsigned;
   1463     UINT ConfigResidDiffAccelerator;
   1464     UINT ConfigHostInverseScan;
   1465     UINT ConfigSpecificIDCT;
   1466     UINT Config4GroupedCoefs;
   1467     USHORT ConfigMinRenderTargetBuffCount;
   1468     USHORT ConfigDecoderSpecific;
   1469 } D3D11_VIDEO_DECODER_CONFIG;
   1470 
   1471 typedef enum D3D11_VIDEO_FRAME_FORMAT
   1472 {
   1473     D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE                   = 0,
   1474     D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST    = 1,
   1475     D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
   1476 } D3D11_VIDEO_FRAME_FORMAT;
   1477 
   1478 typedef enum D3D11_VIDEO_USAGE
   1479 {
   1480     D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0,
   1481     D3D11_VIDEO_USAGE_OPTIMAL_SPEED   = 1,
   1482     D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2
   1483 } D3D11_VIDEO_USAGE;
   1484 
   1485 typedef struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC
   1486 {
   1487     D3D11_VIDEO_FRAME_FORMAT InputFrameFormat;
   1488     DXGI_RATIONAL InputFrameRate;
   1489     UINT InputWidth;
   1490     UINT InputHeight;
   1491     DXGI_RATIONAL OutputFrameRate;
   1492     UINT OutputWidth;
   1493     UINT OutputHeight;
   1494     D3D11_VIDEO_USAGE Usage;
   1495 } D3D11_VIDEO_PROCESSOR_CONTENT_DESC;
   1496 
   1497 typedef struct D3D11_VIDEO_PROCESSOR_CAPS
   1498 {
   1499     UINT DeviceCaps;
   1500     UINT FeatureCaps;
   1501     UINT FilterCaps;
   1502     UINT InputFormatCaps;
   1503     UINT AutoStreamCaps;
   1504     UINT StereoCaps;
   1505     UINT RateConversionCapsCount;
   1506     UINT MaxInputStreams;
   1507     UINT MaxStreamStates;
   1508 } D3D11_VIDEO_PROCESSOR_CAPS;
   1509 
   1510 typedef struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS
   1511 {
   1512     UINT PastFrames;
   1513     UINT FutureFrames;
   1514     UINT ProcessorCaps;
   1515     UINT ITelecineCaps;
   1516     UINT CustomRateCount;
   1517 } D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS;
   1518 
   1519 typedef struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE
   1520 {
   1521     DXGI_RATIONAL CustomRate;
   1522     UINT OutputFrames;
   1523     BOOL InputInterlaced;
   1524     UINT InputFramesOrFields;
   1525 } D3D11_VIDEO_PROCESSOR_CUSTOM_RATE;
   1526 
   1527 typedef enum D3D11_VIDEO_PROCESSOR_FILTER
   1528 {
   1529     D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS         = 0,
   1530     D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST           = 1,
   1531     D3D11_VIDEO_PROCESSOR_FILTER_HUE                = 2,
   1532     D3D11_VIDEO_PROCESSOR_FILTER_SATURATION         = 3,
   1533     D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION    = 4,
   1534     D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT   = 5,
   1535     D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6,
   1536     D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT  = 7
   1537 } D3D11_VIDEO_PROCESSOR_FILTER;
   1538 
   1539 typedef struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE
   1540 {
   1541     int Minimum;
   1542     int Maximum;
   1543     int Default;
   1544     float Multiplier;
   1545 } D3D11_VIDEO_PROCESSOR_FILTER_RANGE;
   1546 
   1547 typedef enum D3D11_AUTHENTICATED_CHANNEL_TYPE
   1548 {
   1549     D3D11_AUTHENTICATED_CHANNEL_D3D11           = 1,
   1550     D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2,
   1551     D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3
   1552 } D3D11_AUTHENTICATED_CHANNEL_TYPE;
   1553 
   1554 typedef enum D3D11_VDOV_DIMENSION
   1555 {
   1556     D3D11_VDOV_DIMENSION_UNKNOWN   = 0,
   1557     D3D11_VDOV_DIMENSION_TEXTURE2D = 1
   1558 } D3D11_VDOV_DIMENSION;
   1559 
   1560 typedef struct D3D11_TEX2D_VDOV
   1561 {
   1562     UINT ArraySlice;
   1563 } D3D11_TEX2D_VDOV;
   1564 
   1565 typedef struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC
   1566 {
   1567     GUID DecodeProfile;
   1568     D3D11_VDOV_DIMENSION ViewDimension;
   1569     union {
   1570         D3D11_TEX2D_VDOV Texture2D;
   1571     };
   1572 } D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC;
   1573 
   1574 typedef enum D3D11_VPIV_DIMENSION
   1575 {
   1576     D3D11_VPIV_DIMENSION_UNKNOWN   = 0,
   1577     D3D11_VPIV_DIMENSION_TEXTURE2D = 1
   1578 } D3D11_VPIV_DIMENSION;
   1579 
   1580 typedef struct D3D11_TEX2D_VPIV
   1581 {
   1582     UINT MipSlice;
   1583     UINT ArraySlice;
   1584 } D3D11_TEX2D_VPIV;
   1585 
   1586 typedef struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC
   1587 {
   1588     UINT FourCC;
   1589     D3D11_VPIV_DIMENSION ViewDimension;
   1590     union {
   1591         D3D11_TEX2D_VPIV Texture2D;
   1592     };
   1593 } D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC;
   1594 
   1595 typedef enum D3D11_VPOV_DIMENSION
   1596 {
   1597     D3D11_VPOV_DIMENSION_UNKNOWN        = 0,
   1598     D3D11_VPOV_DIMENSION_TEXTURE2D      = 1,
   1599     D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2
   1600 } D3D11_VPOV_DIMENSION;
   1601 
   1602 typedef struct D3D11_TEX2D_VPOV
   1603 {
   1604     UINT MipSlice;
   1605 } D3D11_TEX2D_VPOV;
   1606 
   1607 typedef struct D3D11_TEX2D_ARRAY_VPOV
   1608 {
   1609     UINT MipSlice;
   1610     UINT FirstArraySlice;
   1611     UINT ArraySize;
   1612 } D3D11_TEX2D_ARRAY_VPOV;
   1613 
   1614 typedef struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC
   1615 {
   1616     D3D11_VPOV_DIMENSION ViewDimension;
   1617     union {
   1618         D3D11_TEX2D_VPOV Texture2D;
   1619         D3D11_TEX2D_ARRAY_VPOV Texture2DArray;
   1620     };
   1621 } D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC;
   1622 
   1623 typedef struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS
   1624 {
   1625     UINT Caps;
   1626     UINT KeyExchangeTypeCount;
   1627     UINT BlockAlignmentSize;
   1628     ULONGLONG ProtectedMemorySize;
   1629 } D3D11_VIDEO_CONTENT_PROTECTION_CAPS;
   1630 
   1631 typedef struct D3D11_ENCRYPTED_BLOCK_INFO
   1632 {
   1633     UINT NumEncryptedBytesAtBeginning;
   1634     UINT NumBytesInSkipPattern;
   1635     UINT NumBytesInEncryptPattern;
   1636 } D3D11_ENCRYPTED_BLOCK_INFO;
   1637 
   1638 typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC
   1639 {
   1640     D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType;
   1641     UINT BufferIndex;
   1642     UINT DataOffset;
   1643     UINT DataSize;
   1644     UINT FirstMBaddress;
   1645     UINT NumMBsInBuffer;
   1646     UINT Width;
   1647     UINT Height;
   1648     UINT Stride;
   1649     UINT ReservedBits;
   1650     void *pIV;
   1651     UINT IVSize;
   1652     BOOL PartialEncryption;
   1653     D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo;
   1654 } D3D11_VIDEO_DECODER_BUFFER_DESC;
   1655 
   1656 typedef struct D3D11_VIDEO_DECODER_EXTENSION
   1657 {
   1658     UINT Function;
   1659     void *pPrivateInputData;
   1660     UINT PrivateInputDataSize;
   1661     void *pPrivateOutputData;
   1662     UINT PrivateOutputDataSize;
   1663     UINT ResourceCount;
   1664     ID3D11Resource **ppResourceList;
   1665 } D3D11_VIDEO_DECODER_EXTENSION;
   1666 
   1667 typedef struct D3D11_VIDEO_COLOR_YCbCrA
   1668 {
   1669     float Y;
   1670     float Cb;
   1671     float Cr;
   1672     float A;
   1673 } D3D11_VIDEO_COLOR_YCbCrA;
   1674 
   1675 typedef struct D3D11_VIDEO_COLOR_RGBA
   1676 {
   1677     float R;
   1678     float G;
   1679     float B;
   1680     float A;
   1681 } D3D11_VIDEO_COLOR_RGBA;
   1682 
   1683 typedef struct D3D11_VIDEO_COLOR
   1684 {
   1685     union
   1686     {
   1687         D3D11_VIDEO_COLOR_YCbCrA YCbCr;
   1688         D3D11_VIDEO_COLOR_RGBA RGBA;
   1689     };
   1690 } D3D11_VIDEO_COLOR;
   1691 
   1692 typedef struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE
   1693 {
   1694     UINT Usage : 1;
   1695     UINT RGB_Range : 1;
   1696     UINT YCbCr_Matrix : 1;
   1697     UINT YCbCr_xvYCC : 1;
   1698     UINT Nominal_Range : 2;
   1699     UINT Reserved : 26;
   1700 } D3D11_VIDEO_PROCESSOR_COLOR_SPACE;
   1701 
   1702 typedef struct D3D11_VIDEO_PROCESSOR_STREAM
   1703 {
   1704     BOOL Enable;
   1705     UINT OutputIndex;
   1706     UINT InputFrameOrField;
   1707     UINT PastFrames;
   1708     UINT FutureFrames;
   1709     ID3D11VideoProcessorInputView **ppPastSurfaces;
   1710     ID3D11VideoProcessorInputView *pInputSurface;
   1711     ID3D11VideoProcessorInputView **ppFutureSurfaces;
   1712     ID3D11VideoProcessorInputView **ppPastSurfacesRight;
   1713     ID3D11VideoProcessorInputView *pInputSurfaceRight;
   1714     ID3D11VideoProcessorInputView **ppFutureSurfacesRight;
   1715 } D3D11_VIDEO_PROCESSOR_STREAM;
   1716 
   1717 typedef struct D3D11_OMAC
   1718 {
   1719       BYTE Omac[D3D11_OMAC_SIZE];
   1720 } D3D11_OMAC;
   1721 
   1722 typedef struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT
   1723 {
   1724     D3D11_OMAC omac;
   1725     GUID ConfigureType;
   1726     HANDLE hChannel;
   1727     UINT SequenceNumber;
   1728     HRESULT ReturnCode;
   1729 } D3D11_AUTHENTICATED_CONFIGURE_OUTPUT;
   1730 
   1731 typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT
   1732 {
   1733     UINT64 Frequency;
   1734     BOOL Disjoint;
   1735 } D3D11_QUERY_DATA_TIMESTAMP_DISJOINT;
   1736 
   1737 [
   1738     object,
   1739     local,
   1740     uuid(1841e5c8-16b0-489b-bcc8-44cfb0d5deae)
   1741 ]
   1742 interface ID3D11DeviceChild : IUnknown
   1743 {
   1744     void GetDevice(
   1745         [out] ID3D11Device **ppDevice);
   1746     HRESULT GetPrivateData(
   1747         [in] REFGUID guid,
   1748         [in, out] UINT *pDataSize,
   1749         [out] void *pData);
   1750     HRESULT SetPrivateData(
   1751         [in] REFGUID guid,
   1752         [in] UINT DataSize,
   1753         [in] const void *pData);
   1754     HRESULT SetPrivateDataInterface(
   1755         [in] REFGUID guid,
   1756         [in] const IUnknown *pData);
   1757 }
   1758 
   1759 [
   1760     object,
   1761     local,
   1762     uuid(4b35d0cd-1e15-4258-9c98-1b1333f6dd3b)
   1763 ]
   1764 interface ID3D11Asynchronous : ID3D11DeviceChild
   1765 {
   1766     UINT GetDataSize();
   1767 }
   1768 
   1769 [
   1770     object,
   1771     local,
   1772     uuid(d6c00747-87b7-425e-b84d-44d108560afd)
   1773 ]
   1774 interface ID3D11Query : ID3D11Asynchronous
   1775 {
   1776     void GetDesc(
   1777         [out] D3D11_QUERY_DESC *pDesc);
   1778 }
   1779 
   1780 [
   1781     object,
   1782     local,
   1783     uuid(dc8e63f3-d12b-4952-b47b-5e45026a862d)
   1784 ]
   1785 interface ID3D11Resource : ID3D11DeviceChild
   1786 {
   1787     void GetType(
   1788         [out] D3D11_RESOURCE_DIMENSION *pResourceDimension);
   1789     void SetEvictionPriority(
   1790         [in] UINT EvictionPriority);
   1791     UINT GetEvictionPriority();
   1792 }
   1793 
   1794 [
   1795     object,
   1796     local,
   1797     uuid(839d1216-bb2e-412b-b7f4-a9dbebe08ed1)
   1798 ]
   1799 interface ID3D11View : ID3D11DeviceChild
   1800 {
   1801     void GetResource(
   1802         [out] ID3D11Resource **ppResource);
   1803 }
   1804 
   1805 [
   1806     object,
   1807     local,
   1808     uuid(75b68faa-347d-4159-8f45-a0640f01cd9a)
   1809 ]
   1810 interface ID3D11BlendState : ID3D11DeviceChild
   1811 {
   1812     void GetDesc(
   1813         [out] D3D11_BLEND_DESC *pDesc);
   1814 }
   1815 
   1816 [
   1817     object,
   1818     local,
   1819     uuid(48570b85-d1ee-4fcd-a250-eb350722b037)
   1820 ]
   1821 interface ID3D11Buffer : ID3D11Resource
   1822 {
   1823     void GetDesc(
   1824         [out] D3D11_BUFFER_DESC *pDesc);
   1825 }
   1826 
   1827 [
   1828     object,
   1829     local,
   1830     uuid(a6cd7faa-b0b7-4a2f-9436-8662a65797cb)
   1831 ]
   1832 interface ID3D11ClassInstance : ID3D11DeviceChild
   1833 {
   1834     void GetClassLinkage(
   1835         [out] ID3D11ClassLinkage **ppLinkage);
   1836     void GetDesc(
   1837         [out] D3D11_CLASS_INSTANCE_DESC *pDesc);
   1838     void GetInstanceName(
   1839         [out] LPSTR pInstanceName,
   1840         [in, out] SIZE_T *pBufferLength);
   1841     void GetTypeName(
   1842         [out] LPSTR pTypeName,
   1843         [in, out] SIZE_T *pBufferLength);
   1844 }
   1845 
   1846 [
   1847     object,
   1848     local,
   1849     uuid(ddf57cba-9543-46e4-a12b-f207a0fe7fed)
   1850 ]
   1851 interface ID3D11ClassLinkage : ID3D11DeviceChild
   1852 {
   1853     HRESULT GetClassInstance(
   1854         [in] LPCSTR pClassInstanceName,
   1855         [in] UINT InstanceIndex,
   1856         [out] ID3D11ClassInstance **ppInstance);
   1857     HRESULT CreateClassInstance(
   1858         [in] LPCSTR pClassTypeName,
   1859         [in] UINT ConstantBufferOffset,
   1860         [in] UINT ConstantVectorOffset,
   1861         [in] UINT TextureOffset,
   1862         [in] UINT SamplerOffset,
   1863         [out] ID3D11ClassInstance **ppInstance);
   1864 }
   1865 
   1866 [
   1867     object,
   1868     local,
   1869     uuid(a24bc4d1-769e-43f7-8013-98ff566c18e2)
   1870 ]
   1871 interface ID3D11CommandList : ID3D11DeviceChild
   1872 {
   1873     UINT GetContextFlags();
   1874 }
   1875 
   1876 [
   1877     object,
   1878     local,
   1879     uuid(4f5b196e-c2bd-495e-bd01-1fded38e4969)
   1880 ]
   1881 interface ID3D11ComputeShader : ID3D11DeviceChild
   1882 {
   1883 }
   1884 
   1885 [
   1886     object,
   1887     local,
   1888     uuid(6e8c49fb-a371-4770-b440-29086022b741)
   1889 ]
   1890 interface ID3D11Counter : ID3D11Asynchronous
   1891 {
   1892     void GetDesc(
   1893         [out] D3D11_COUNTER_DESC *pDesc);
   1894 }
   1895 
   1896 [
   1897     object,
   1898     local,
   1899     uuid(03823efb-8d8f-4e1c-9aa2-f64bb2cbfdf1)
   1900 ]
   1901 interface ID3D11DepthStencilState : ID3D11DeviceChild
   1902 {
   1903     void GetDesc(
   1904         [out] D3D11_DEPTH_STENCIL_DESC *pDesc);
   1905 }
   1906 
   1907 [
   1908     object,
   1909     local,
   1910     uuid(9fdac92a-1876-48c3-afad-25b94f84a9b6)
   1911 ]
   1912 interface ID3D11DepthStencilView : ID3D11View
   1913 {
   1914     void GetDesc(
   1915         [out] D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc);
   1916 }
   1917 
   1918 [
   1919     object,
   1920     local,
   1921     uuid(f582c508-0f36-490c-9977-31eece268cfa)
   1922 ]
   1923 interface ID3D11DomainShader : ID3D11DeviceChild
   1924 {
   1925 }
   1926 
   1927 [
   1928     object,
   1929     local,
   1930     uuid(38325b96-effb-4022-ba02-2e795b70275c)
   1931 ]
   1932 interface ID3D11GeometryShader : ID3D11DeviceChild
   1933 {
   1934 }
   1935 
   1936 [
   1937     object,
   1938     local,
   1939     uuid(8e5c6061-628a-4c8e-8264-bbe45cb3d5dd)
   1940 ]
   1941 interface ID3D11HullShader : ID3D11DeviceChild
   1942 {
   1943 }
   1944 
   1945 [
   1946     object,
   1947     local,
   1948     uuid(e4819ddc-4cf0-4025-bd26-5de82a3e07b7)
   1949 ]
   1950 interface ID3D11InputLayout : ID3D11DeviceChild
   1951 {
   1952 }
   1953 
   1954 [
   1955     object,
   1956     local,
   1957     uuid(ea82e40d-51dc-4f33-93d4-db7c9125ae8c)
   1958 ]
   1959 interface ID3D11PixelShader : ID3D11DeviceChild
   1960 {
   1961 }
   1962 
   1963 [
   1964     object,
   1965     local,
   1966     uuid(9eb576dd-9f77-4d86-81aa-8bab5fe490e2)
   1967 ]
   1968 interface ID3D11Predicate : ID3D11Query
   1969 {
   1970 }
   1971 
   1972 [
   1973     object,
   1974     local,
   1975     uuid(9bb4ab81-ab1a-4d8f-b506-fc04200b6ee7)
   1976 ]
   1977 interface ID3D11RasterizerState : ID3D11DeviceChild
   1978 {
   1979     void GetDesc(
   1980         [out] D3D11_RASTERIZER_DESC *pDesc);
   1981 }
   1982 
   1983 [
   1984     object,
   1985     local,
   1986     uuid(dfdba067-0b8d-4865-875b-d7b4516cc164)
   1987 ]
   1988 interface ID3D11RenderTargetView : ID3D11View
   1989 {
   1990     void GetDesc(
   1991         [out] D3D11_RENDER_TARGET_VIEW_DESC *pDesc);
   1992 }
   1993 
   1994 [
   1995     object,
   1996     local,
   1997     uuid(da6fea51-564c-4487-9810-f0d0f9b4e3a5)
   1998 ]
   1999 interface ID3D11SamplerState : ID3D11DeviceChild
   2000 {
   2001     void GetDesc(
   2002         [out] D3D11_SAMPLER_DESC *pDesc);
   2003 }
   2004 
   2005 [
   2006     object,
   2007     local,
   2008     uuid(b0e06fe0-8192-4e1a-b1ca-36d7414710b2)
   2009 ]
   2010 interface ID3D11ShaderResourceView : ID3D11View
   2011 {
   2012     void GetDesc(
   2013         [out] D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc);
   2014 }
   2015 
   2016 [
   2017     object,
   2018     local,
   2019     uuid(f8fb5c27-c6b3-4f75-a4c8-439af2ef564c),
   2020 ]
   2021 interface ID3D11Texture1D : ID3D11Resource
   2022 {
   2023     void GetDesc(
   2024         [out] D3D11_TEXTURE1D_DESC *pDesc);
   2025 }
   2026 
   2027 [
   2028     object,
   2029     local,
   2030     uuid(6f15aaf2-d208-4e89-9ab4-489535d34f9c)
   2031 ]
   2032 interface ID3D11Texture2D : ID3D11Resource
   2033 {
   2034     void GetDesc(
   2035         [out] D3D11_TEXTURE2D_DESC *pDesc);
   2036 }
   2037 
   2038 [
   2039     object,
   2040     local,
   2041     uuid(037e866e-f56d-4357-a8af-9dabbe6e250e)
   2042 ]
   2043 interface ID3D11Texture3D : ID3D11Resource
   2044 {
   2045     void GetDesc(
   2046         [out] D3D11_TEXTURE3D_DESC *pDesc);
   2047 }
   2048 
   2049 [
   2050     object,
   2051     local,
   2052     uuid(28acf509-7f5c-48f6-8611-f316010a6380)
   2053 ]
   2054 interface ID3D11UnorderedAccessView : ID3D11View
   2055 {
   2056     void GetDesc(
   2057         [out] D3D11_UNORDERED_ACCESS_VIEW_DESC *pDesc);
   2058 }
   2059 
   2060 [
   2061     object,
   2062     local,
   2063     uuid(3b301d64-d678-4289-8897-22f8928b72f3)
   2064 ]
   2065 interface ID3D11VertexShader : ID3D11DeviceChild
   2066 {
   2067 }
   2068 
   2069 [
   2070     object,
   2071     local,
   2072     uuid(c0bfa96c-e089-44fb-8eaf-26f8796190da)
   2073 ]
   2074 interface ID3D11DeviceContext : ID3D11DeviceChild
   2075 {
   2076     void VSSetConstantBuffers(
   2077         [in] UINT StartSlot,
   2078         [in] UINT NumBuffers,
   2079         [in] ID3D11Buffer *const *ppConstantBuffers);
   2080     void PSSetShaderResources(
   2081         [in] UINT StartSlot,
   2082         [in] UINT NumViews,
   2083         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   2084     void PSSetShader(
   2085         [in] ID3D11PixelShader *pPixelShader,
   2086         [in] ID3D11ClassInstance *const *ppClassInstances,
   2087         UINT NumClassInstances);
   2088     void PSSetSamplers(
   2089         [in] UINT StartSlot,
   2090         [in] UINT NumSamplers,
   2091         [in] ID3D11SamplerState *const *ppSamplers);
   2092     void VSSetShader(
   2093         [in] ID3D11VertexShader *pVertexShader,
   2094         [in] ID3D11ClassInstance *const *ppClassInstances,
   2095         UINT NumClassInstances);
   2096     void DrawIndexed(
   2097         [in] UINT IndexCount,
   2098         [in] UINT StartIndexLocation,
   2099         [in] INT BaseVertexLocation);
   2100     void Draw(
   2101         [in] UINT VertexCount,
   2102         [in] UINT StartVertexLocation);
   2103     HRESULT Map(
   2104         [in] ID3D11Resource *pResource,
   2105         [in] UINT Subresource,
   2106         [in] D3D11_MAP MapType,
   2107         [in] UINT MapFlags,
   2108         [out] D3D11_MAPPED_SUBRESOURCE *pMappedResource);
   2109     void Unmap(
   2110         [in] ID3D11Resource *pResource,
   2111         [in] UINT Subresource);
   2112     void PSSetConstantBuffers(
   2113         [in] UINT StartSlot,
   2114         [in] UINT NumBuffers,
   2115         [in] ID3D11Buffer *const *ppConstantBuffers);
   2116     void IASetInputLayout(
   2117         [in] ID3D11InputLayout *pInputLayout);
   2118     void IASetVertexBuffers(
   2119         [in] UINT StartSlot,
   2120         [in] UINT NumBuffers,
   2121         [in] ID3D11Buffer *const *ppVertexBuffers,
   2122         [in] const UINT *pStrides,
   2123         [in] const UINT *pOffsets);
   2124     void IASetIndexBuffer(
   2125         [in] ID3D11Buffer *pIndexBuffer,
   2126         [in] DXGI_FORMAT  Format,
   2127         [in] UINT Offset);
   2128     void DrawIndexedInstanced(
   2129         [in] UINT IndexCountPerInstance,
   2130         [in] UINT InstanceCount,
   2131         [in] UINT StartIndexLocation,
   2132         [in] INT BaseVertexLocation,
   2133         [in] UINT StartInstanceLocation);
   2134     void DrawInstanced(
   2135         [in] UINT VertexCountPerInstance,
   2136         [in] UINT InstanceCount,
   2137         [in] UINT StartVertexLocation,
   2138         [in] UINT StartInstanceLocation);
   2139     void GSSetConstantBuffers(
   2140         [in] UINT StartSlot,
   2141         [in] UINT NumBuffers,
   2142         [in] ID3D11Buffer *const *ppConstantBuffers);
   2143     void GSSetShader(
   2144         [in] ID3D11GeometryShader *pShader,
   2145         [in] ID3D11ClassInstance *const *ppClassInstances,
   2146         UINT NumClassInstances);
   2147     void IASetPrimitiveTopology(
   2148         [in] D3D11_PRIMITIVE_TOPOLOGY Topology);
   2149     void VSSetShaderResources(
   2150         [in] UINT StartSlot,
   2151         [in] UINT NumViews,
   2152         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   2153     void VSSetSamplers(
   2154         [in] UINT StartSlot,
   2155         [in] UINT NumSamplers,
   2156         [in] ID3D11SamplerState *const *ppSamplers);
   2157     void Begin(
   2158         [in] ID3D11Asynchronous *pAsync);
   2159     void End(
   2160         [in] ID3D11Asynchronous *pAsync);
   2161     HRESULT GetData(
   2162         [in] ID3D11Asynchronous *pAsync,
   2163         [in] void *pData,
   2164         [in] UINT DataSize,
   2165         [in] UINT GetDataFlags);
   2166     void SetPredication(
   2167         [in] ID3D11Predicate *pPredicate,
   2168         [in] BOOL PredicateValue);
   2169     void GSSetShaderResources(
   2170         [in] UINT StartSlot,
   2171         [in] UINT NumViews,
   2172         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   2173     void GSSetSamplers(
   2174         [in] UINT StartSlot,
   2175         [in] UINT NumSamplers,
   2176         [in] ID3D11SamplerState *const *ppSamplers);
   2177     void OMSetRenderTargets(
   2178         [in] UINT NumViews,
   2179         [in] ID3D11RenderTargetView *const *ppRenderTargetViews,
   2180         [in] ID3D11DepthStencilView *pDepthStencilView);
   2181     void OMSetRenderTargetsAndUnorderedAccessViews(
   2182         [in] UINT NumRTVs,
   2183         [in] ID3D11RenderTargetView *const *ppRenderTargetViews,
   2184         [in] ID3D11DepthStencilView *pDepthStencilView,
   2185         [in] UINT UAVStartSlot,
   2186         [in] UINT NumUAVs,
   2187         [in] ID3D11UnorderedAccessView *const *ppUnorderedAccessViews,
   2188         [in] const UINT *pUAVInitialCounts);
   2189     void OMSetBlendState(
   2190         [in] ID3D11BlendState *pBlendState,
   2191         [in] const FLOAT BlendFactor[4],
   2192         [in] UINT SampleMask);
   2193     void OMSetDepthStencilState(
   2194         [in] ID3D11DepthStencilState *pDepthStencilState,
   2195         [in] UINT StencilRef);
   2196     void SOSetTargets(
   2197         [in] UINT NumBuffers,
   2198         [in] ID3D11Buffer *const *ppSOTargets,
   2199         [in] const UINT *pOffsets);
   2200     void DrawAuto();
   2201     void DrawIndexedInstancedIndirect(
   2202         [in] ID3D11Buffer *pBufferForArgs,
   2203         [in] UINT AlignedByteOffsetForArgs);
   2204     void DrawInstancedIndirect(
   2205         [in] ID3D11Buffer *pBufferForArgs,
   2206         [in] UINT AlignedByteOffsetForArgs);
   2207     void Dispatch(
   2208         [in] UINT ThreadGroupCountX,
   2209         [in] UINT ThreadGroupCountY,
   2210         [in] UINT ThreadGroupCountZ);
   2211     void DispatchIndirect(
   2212         [in] ID3D11Buffer *pBufferForArgs,
   2213         [in] UINT AlignedByteOffsetForArgs);
   2214     void RSSetState(
   2215         [in] ID3D11RasterizerState *pRasterizerState);
   2216     void RSSetViewports(
   2217         [in] UINT NumViewports,
   2218         [in] const D3D11_VIEWPORT *pViewports);
   2219     void RSSetScissorRects(
   2220         [in] UINT NumRects,
   2221         [in] const D3D11_RECT *pRects);
   2222     void CopySubresourceRegion(
   2223         [in] ID3D11Resource *pDstResource,
   2224         [in] UINT DstSubresource,
   2225         [in] UINT DstX,
   2226         [in] UINT DstY,
   2227         [in] UINT DstZ,
   2228         [in] ID3D11Resource *pSrcResource,
   2229         [in] UINT SrcSubresource,
   2230         [in] const D3D11_BOX *pSrcBox);
   2231     void CopyResource(
   2232         [in] ID3D11Resource *pDstResource,
   2233         [in] ID3D11Resource *pSrcResource);
   2234     void UpdateSubresource(
   2235         [in] ID3D11Resource *pDstResource,
   2236         [in] UINT DstSubresource,
   2237         [in] const D3D11_BOX *pDstBox,
   2238         [in] const void *pSrcData,
   2239         [in] UINT SrcRowPitch,
   2240         [in] UINT SrcDepthPitch);
   2241     void CopyStructureCount(
   2242         [in] ID3D11Buffer *pDstBuffer,
   2243         [in] UINT DstAlignedByteOffset,
   2244         [in] ID3D11UnorderedAccessView *pSrcView);
   2245     void ClearRenderTargetView(
   2246         [in] ID3D11RenderTargetView *pRenderTargetView,
   2247         [in] const FLOAT ColorRGBA[4]);
   2248     void ClearUnorderedAccessViewUint(
   2249         [in] ID3D11UnorderedAccessView *pUnorderedAccessView,
   2250         [in] const UINT Values[4]);
   2251     void ClearUnorderedAccessViewFloat(
   2252         [in] ID3D11UnorderedAccessView *pUnorderedAccessView,
   2253         [in] const FLOAT Values[4]);
   2254     void ClearDepthStencilView(
   2255         [in] ID3D11DepthStencilView *pDepthStencilView,
   2256         [in] UINT ClearFlags,
   2257         [in] FLOAT Depth,
   2258         [in] UINT8 Stencil);
   2259     void GenerateMips(
   2260         [in] ID3D11ShaderResourceView *pShaderResourceView);
   2261     void SetResourceMinLOD(
   2262         [in] ID3D11Resource *pResource, FLOAT MinLOD);
   2263     FLOAT GetResourceMinLOD(
   2264         [in] ID3D11Resource *pResource);
   2265     void ResolveSubresource(
   2266         [in] ID3D11Resource *pDstResource,
   2267         [in] UINT DstSubresource,
   2268         [in] ID3D11Resource *pSrcResource,
   2269         [in] UINT SrcSubresource,
   2270         [in] DXGI_FORMAT Format);
   2271     void ExecuteCommandList(
   2272         [in] ID3D11CommandList *pCommandList,
   2273         BOOL RestoreContextState);
   2274     void HSSetShaderResources(
   2275         [in] UINT StartSlot,
   2276         [in] UINT NumViews,
   2277         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   2278     void HSSetShader(
   2279         [in] ID3D11HullShader *pHullShader,
   2280         [in] ID3D11ClassInstance *const *ppClassInstances,
   2281         UINT NumClassInstances);
   2282     void HSSetSamplers(
   2283         [in] UINT StartSlot,
   2284         [in] UINT NumSamplers,
   2285         [in] ID3D11SamplerState *const *ppSamplers);
   2286     void HSSetConstantBuffers(
   2287         [in] UINT StartSlot,
   2288         [in] UINT NumBuffers,
   2289         [in] ID3D11Buffer *const *ppConstantBuffers);
   2290     void DSSetShaderResources(
   2291         [in] UINT StartSlot,
   2292         [in] UINT NumViews,
   2293         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   2294     void DSSetShader(
   2295         [in] ID3D11DomainShader *pDomainShader,
   2296         [in] ID3D11ClassInstance *const *ppClassInstances,
   2297         UINT NumClassInstances);
   2298     void DSSetSamplers(
   2299         [in] UINT StartSlot,
   2300         [in] UINT NumSamplers,
   2301         [in] ID3D11SamplerState *const *ppSamplers);
   2302     void DSSetConstantBuffers(
   2303         [in] UINT StartSlot,
   2304         [in] UINT NumBuffers,
   2305         [in] ID3D11Buffer *const *ppConstantBuffers);
   2306     void CSSetShaderResources(
   2307         [in] UINT StartSlot,
   2308         [in] UINT NumViews,
   2309         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   2310     void CSSetUnorderedAccessViews(
   2311         [in] UINT StartSlot,
   2312         [in] UINT NumUAVs,
   2313         [in] ID3D11UnorderedAccessView *const *ppUnorderedAccessViews,
   2314         [in] const UINT *pUAVInitialCounts);
   2315     void CSSetShader(
   2316         [in] ID3D11ComputeShader *pComputeShader,
   2317         [in] ID3D11ClassInstance *const *ppClassInstances,
   2318         UINT NumClassInstances);
   2319     void CSSetSamplers(
   2320         [in] UINT StartSlot,
   2321         [in] UINT NumSamplers,
   2322         [in] ID3D11SamplerState *const *ppSamplers);
   2323     void CSSetConstantBuffers(
   2324         [in] UINT StartSlot,
   2325         [in] UINT NumBuffers,
   2326         [in] ID3D11Buffer *const *ppConstantBuffers);
   2327     void VSGetConstantBuffers(
   2328         [in] UINT StartSlot,
   2329         [in] UINT NumBuffers,
   2330         [out] ID3D11Buffer **ppConstantBuffers);
   2331     void PSGetShaderResources(
   2332         [in] UINT StartSlot,
   2333         [in] UINT NumViews,
   2334         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   2335     void PSGetShader(
   2336         [out] ID3D11PixelShader **ppPixelShader,
   2337         [out] ID3D11ClassInstance **ppClassInstances,
   2338         [in, out] UINT *pNumClassInstances);
   2339     void PSGetSamplers(
   2340         [in] UINT StartSlot,
   2341         [in] UINT NumSamplers,
   2342         [out] ID3D11SamplerState **ppSamplers);
   2343     void VSGetShader(
   2344         [out] ID3D11VertexShader **ppVertexShader,
   2345         [out] ID3D11ClassInstance **ppClassInstances,
   2346         [in, out] UINT *pNumClassInstances);
   2347     void PSGetConstantBuffers(
   2348         [in] UINT StartSlot,
   2349         [in] UINT NumBuffers,
   2350         [out] ID3D11Buffer **ppConstantBuffers);
   2351     void IAGetInputLayout(
   2352         [out] ID3D11InputLayout **ppInputLayout);
   2353     void IAGetVertexBuffers(
   2354         [in] UINT StartSlot,
   2355         [in] UINT NumBuffers,
   2356         [out] ID3D11Buffer **ppVertexBuffers,
   2357         [out] UINT *pStrides,
   2358         [out] UINT *pOffsets);
   2359     void IAGetIndexBuffer(
   2360         [out] ID3D11Buffer **pIndexBuffer,
   2361         [out] DXGI_FORMAT* Format,
   2362         [out] UINT* Offset);
   2363     void GSGetConstantBuffers(
   2364         [in] UINT StartSlot,
   2365         [in] UINT NumBuffers,
   2366         [out] ID3D11Buffer **ppConstantBuffers);
   2367     void GSGetShader(
   2368         [out] ID3D11GeometryShader **ppGeometryShader,
   2369         [out] ID3D11ClassInstance **ppClassInstances,
   2370         [in, out] UINT *pNumClassInstances);
   2371     void IAGetPrimitiveTopology(
   2372         [out] D3D11_PRIMITIVE_TOPOLOGY *pTopology);
   2373     void VSGetShaderResources(
   2374         [in] UINT StartSlot,
   2375         [in] UINT NumViews,
   2376         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   2377     void VSGetSamplers(
   2378         [in] UINT StartSlot,
   2379         [in] UINT NumSamplers,
   2380         [out] ID3D11SamplerState **ppSamplers);
   2381     void GetPredication(
   2382         [out] ID3D11Predicate **ppPredicate,
   2383         [out] BOOL *pPredicateValue);
   2384     void GSGetShaderResources(
   2385         [in] UINT StartSlot,
   2386         [in] UINT NumViews,
   2387         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   2388     void GSGetSamplers(
   2389         [in] UINT StartSlot,
   2390         [in] UINT NumSamplers,
   2391         [out] ID3D11SamplerState **ppSamplers);
   2392     void OMGetRenderTargets(
   2393         [in] UINT NumViews,
   2394         [out] ID3D11RenderTargetView **ppRenderTargetViews,
   2395         [out] ID3D11DepthStencilView **ppDepthStencilView);
   2396     void OMGetRenderTargetsAndUnorderedAccessViews(
   2397         [in] UINT NumRTVs,
   2398         [out] ID3D11RenderTargetView **ppRenderTargetViews,
   2399         [out] ID3D11DepthStencilView **ppDepthStencilView,
   2400         [in] UINT UAVStartSlot,
   2401         [in] UINT NumUAVs,
   2402         [out] ID3D11UnorderedAccessView **ppUnorderedAccessViews);
   2403     void OMGetBlendState(
   2404         [out] ID3D11BlendState **ppBlendState,
   2405         [out] FLOAT BlendFactor[4],
   2406         [out] UINT *pSampleMask);
   2407     void OMGetDepthStencilState(
   2408         [out] ID3D11DepthStencilState **ppDepthStencilState,
   2409         [out] UINT *pStencilRef);
   2410     void SOGetTargets(
   2411         [in] UINT NumBuffers,
   2412         [out] ID3D11Buffer **ppSOTargets);
   2413     void RSGetState(
   2414         [out] ID3D11RasterizerState **ppRasterizerState);
   2415     void RSGetViewports(
   2416         [in, out] UINT *pNumViewports,
   2417         [out] D3D11_VIEWPORT *pViewports);
   2418     void RSGetScissorRects(
   2419         [in, out] UINT *pNumRects,
   2420         [out] D3D11_RECT *pRects);
   2421     void HSGetShaderResources(
   2422         [in] UINT StartSlot,
   2423         [in] UINT NumViews,
   2424         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   2425     void HSGetShader(
   2426         [out] ID3D11HullShader **ppHullShader,
   2427         [out] ID3D11ClassInstance **ppClassInstances,
   2428         [in, out] UINT *pNumClassInstances);
   2429     void HSGetSamplers(
   2430         [in] UINT StartSlot,
   2431         [in] UINT NumSamplers,
   2432         [out] ID3D11SamplerState **ppSamplers);
   2433     void HSGetConstantBuffers(
   2434         [in] UINT StartSlot,
   2435         [in] UINT NumBuffers,
   2436         [out] ID3D11Buffer **ppConstantBuffers);
   2437     void DSGetShaderResources(
   2438         [in] UINT StartSlot,
   2439         [in] UINT NumViews,
   2440         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   2441     void DSGetShader(
   2442         [out] ID3D11DomainShader **ppDomainShader,
   2443         [out] ID3D11ClassInstance **ppClassInstances,
   2444         [in, out] UINT *pNumClassInstances);
   2445     void DSGetSamplers(
   2446         [in] UINT StartSlot,
   2447         [in] UINT NumSamplers,
   2448         [out] ID3D11SamplerState **ppSamplers);
   2449     void DSGetConstantBuffers(
   2450         [in] UINT StartSlot,
   2451         [in] UINT NumBuffers,
   2452         [out] ID3D11Buffer **ppConstantBuffers);
   2453     void CSGetShaderResources(
   2454         [in] UINT StartSlot,
   2455         [in] UINT NumViews,
   2456         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   2457     void CSGetUnorderedAccessViews(
   2458         [in] UINT StartSlot,
   2459         [in] UINT NumUAVs,
   2460         [out] ID3D11UnorderedAccessView **ppUnorderedAccessViews);
   2461     void CSGetShader(
   2462         [out] ID3D11ComputeShader **ppComputeShader,
   2463         [out] ID3D11ClassInstance **ppClassInstances,
   2464         [in, out] UINT *pNumClassInstances);
   2465     void CSGetSamplers(
   2466         [in] UINT StartSlot,
   2467         [in] UINT NumSamplers,
   2468         [out] ID3D11SamplerState **ppSamplers);
   2469     void CSGetConstantBuffers(
   2470         [in] UINT StartSlot,
   2471         [in] UINT NumBuffers,
   2472         [out] ID3D11Buffer **ppConstantBuffers);
   2473     void ClearState();
   2474     void Flush();
   2475     D3D11_DEVICE_CONTEXT_TYPE GetType();
   2476     UINT GetContextFlags();
   2477     HRESULT FinishCommandList(
   2478         BOOL RestoreDeferredContextState,
   2479         [out] ID3D11CommandList **ppCommandList);
   2480 }
   2481 
   2482 [
   2483     object,
   2484     uuid(3015a308-dcbd-47aa-a747-192486d14d4a),
   2485     local,
   2486     pointer_default(unique)
   2487 ]
   2488 interface ID3D11AuthenticatedChannel : ID3D11DeviceChild
   2489 {
   2490     HRESULT GetCertificateSize(
   2491         UINT *pCertificateSize);
   2492     HRESULT GetCertificate(
   2493         UINT CertificateSize,
   2494         BYTE *pCertificate);
   2495     void GetChannelHandle(
   2496         HANDLE *pChannelHandle);
   2497 }
   2498 
   2499 [
   2500     object,
   2501     uuid(9b32f9ad-bdcc-40a6-a39d-d5c865845720),
   2502     local,
   2503     pointer_default(unique)
   2504 ]
   2505 interface ID3D11CryptoSession : ID3D11DeviceChild
   2506 {
   2507     void GetCryptoType(
   2508         GUID *pCryptoType);
   2509     void GetDecoderProfile(
   2510         GUID *pDecoderProfile);
   2511     HRESULT GetCertificateSize(
   2512         UINT *pCertificateSize);
   2513     HRESULT GetCertificate(
   2514         UINT CertificateSize,
   2515         BYTE *pCertificate);
   2516     void GetCryptoSessionHandle(
   2517         HANDLE *pCryptoSessionHandle);
   2518 }
   2519 
   2520 [
   2521     object,
   2522     uuid(3c9c5b51-995d-48d1-9b8d-fa5caeded65c),
   2523     local,
   2524     pointer_default(unique)
   2525 ]
   2526 interface ID3D11VideoDecoder : ID3D11DeviceChild
   2527 {
   2528     HRESULT GetCreationParameters(
   2529         D3D11_VIDEO_DECODER_DESC *pVideoDesc,
   2530         D3D11_VIDEO_DECODER_CONFIG *pConfig);
   2531     HRESULT GetDriverHandle(
   2532         HANDLE *pDriverHandle);
   2533 }
   2534 
   2535 [
   2536     object,
   2537     uuid(31627037-53ab-4200-9061-05faa9ab45f9),
   2538     local,
   2539     pointer_default(unique)
   2540 ]
   2541 interface ID3D11VideoProcessorEnumerator : ID3D11DeviceChild
   2542 {
   2543     HRESULT GetVideoProcessorContentDesc(
   2544         D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc);
   2545     HRESULT CheckVideoProcessorFormat(
   2546         DXGI_FORMAT Format,
   2547         UINT *pFlags);
   2548     HRESULT GetVideoProcessorCaps(
   2549         D3D11_VIDEO_PROCESSOR_CAPS *pCaps);
   2550     HRESULT GetVideoProcessorRateConversionCaps(
   2551         UINT TypeIndex,
   2552         D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps);
   2553     HRESULT GetVideoProcessorCustomRate(
   2554         UINT TypeIndex,
   2555         UINT CustomRateIndex,
   2556         D3D11_VIDEO_PROCESSOR_CUSTOM_RATE *pRate);
   2557     HRESULT GetVideoProcessorFilterRange(
   2558         D3D11_VIDEO_PROCESSOR_FILTER Filter,
   2559         D3D11_VIDEO_PROCESSOR_FILTER_RANGE *pRange);
   2560 }
   2561 
   2562 [
   2563     object,
   2564     uuid(1d7b0652-185f-41c6-85ce-0c5be3d4ae6c),
   2565     local,
   2566     pointer_default(unique)
   2567 ]
   2568 interface ID3D11VideoProcessor : ID3D11DeviceChild
   2569 {
   2570     void GetContentDesc(
   2571         D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc);
   2572     void GetRateConversionCaps(
   2573         D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps);
   2574 }
   2575 
   2576 [
   2577     object,
   2578     uuid(c2931aea-2a85-4f20-860f-fba1fd256e18),
   2579     local,
   2580     pointer_default(unique)
   2581 ]
   2582 interface ID3D11VideoDecoderOutputView : ID3D11View
   2583 {
   2584     void GetDesc(
   2585         D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc);
   2586 }
   2587 
   2588 [
   2589     object,
   2590     uuid(11ec5a5f-51dc-4945-ab34-6e8c21300ea5),
   2591     local,
   2592     pointer_default(unique)
   2593 ]
   2594 interface ID3D11VideoProcessorInputView : ID3D11View
   2595 {
   2596     void GetDesc(
   2597         D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc);
   2598 }
   2599 
   2600 [
   2601     object,
   2602     uuid(a048285e-25a9-4527-bd93-d68b68c44254),
   2603     local,
   2604     pointer_default(unique)
   2605 ]
   2606 interface ID3D11VideoProcessorOutputView : ID3D11View
   2607 {
   2608     void GetDesc(
   2609         D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc);
   2610 }
   2611 
   2612 [
   2613     object,
   2614     uuid(10ec4d5b-975a-4689-b9e4-d0aac30fe333),
   2615     local,
   2616     pointer_default(unique)
   2617 ]
   2618 interface ID3D11VideoDevice : IUnknown
   2619 {
   2620     HRESULT CreateVideoDecoder(
   2621         const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
   2622         const D3D11_VIDEO_DECODER_CONFIG *pConfig,
   2623         ID3D11VideoDecoder **ppDecoder);
   2624     HRESULT CreateVideoProcessor(
   2625         ID3D11VideoProcessorEnumerator *pEnum,
   2626         UINT RateConversionIndex,
   2627         ID3D11VideoProcessor **ppVideoProcessor);
   2628     HRESULT CreateAuthenticatedChannel(
   2629         D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
   2630         ID3D11AuthenticatedChannel **ppAuthenticatedChannel);
   2631     HRESULT CreateCryptoSession(
   2632         const GUID *pCryptoType,
   2633         const GUID *pDecoderProfile,
   2634         const GUID *pKeyExchangeType,
   2635         ID3D11CryptoSession **ppCryptoSession);
   2636     HRESULT CreateVideoDecoderOutputView(
   2637         ID3D11Resource *pResource,
   2638         const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
   2639         ID3D11VideoDecoderOutputView **ppVDOVView);
   2640     HRESULT CreateVideoProcessorInputView(
   2641         ID3D11Resource *pResource,
   2642         ID3D11VideoProcessorEnumerator *pEnum,
   2643         const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc,
   2644         ID3D11VideoProcessorInputView **ppVPIView);
   2645     HRESULT CreateVideoProcessorOutputView(
   2646         ID3D11Resource *pResource,
   2647         ID3D11VideoProcessorEnumerator *pEnum,
   2648         const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc,
   2649         ID3D11VideoProcessorOutputView **ppVPOView);
   2650     HRESULT CreateVideoProcessorEnumerator(
   2651         const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc,
   2652         ID3D11VideoProcessorEnumerator **ppEnum);
   2653     UINT GetVideoDecoderProfileCount();
   2654     HRESULT GetVideoDecoderProfile(
   2655         UINT Index,
   2656         GUID *pDecoderProfile);
   2657     HRESULT CheckVideoDecoderFormat(
   2658         const GUID *pDecoderProfile,
   2659         DXGI_FORMAT Format,
   2660         BOOL *pSupported);
   2661     HRESULT GetVideoDecoderConfigCount(
   2662         const D3D11_VIDEO_DECODER_DESC *pDesc,
   2663         UINT *pCount);
   2664     HRESULT GetVideoDecoderConfig(
   2665         const D3D11_VIDEO_DECODER_DESC *pDesc,
   2666         UINT Index,
   2667         D3D11_VIDEO_DECODER_CONFIG *pConfig);
   2668     HRESULT GetContentProtectionCaps(
   2669         const GUID *pCryptoType,
   2670         const GUID *pDecoderProfile,
   2671         D3D11_VIDEO_CONTENT_PROTECTION_CAPS *pCaps);
   2672     HRESULT CheckCryptoKeyExchange(
   2673         const GUID *pCryptoType,
   2674         const GUID *pDecoderProfile,
   2675         UINT Index,
   2676         GUID *pKeyExchangeType);
   2677     HRESULT SetPrivateData(
   2678         REFGUID guid,
   2679         UINT DataSize,
   2680         const void *pData);
   2681     HRESULT SetPrivateDataInterface(
   2682         REFGUID guid,
   2683         const IUnknown *pData);
   2684 }
   2685 
   2686 [
   2687     object,
   2688     uuid(61f21c45-3c0e-4a74-9cea-67100d9ad5e4),
   2689     local,
   2690     pointer_default(unique)
   2691 ]
   2692 interface ID3D11VideoContext : ID3D11DeviceChild
   2693 {
   2694     HRESULT GetDecoderBuffer(
   2695         [in] ID3D11VideoDecoder *decoder,
   2696         [in] D3D11_VIDEO_DECODER_BUFFER_TYPE type,
   2697         [out] UINT *buffer_size,
   2698         [out] void **buffer
   2699     );
   2700     HRESULT ReleaseDecoderBuffer(
   2701         [in] ID3D11VideoDecoder *decoder,
   2702         [in] D3D11_VIDEO_DECODER_BUFFER_TYPE type
   2703     );
   2704     HRESULT DecoderBeginFrame(
   2705         [in] ID3D11VideoDecoder *decoder,
   2706         [in] ID3D11VideoDecoderOutputView *view,
   2707         [in] UINT key_size,
   2708         [in] const void *key
   2709     );
   2710     HRESULT DecoderEndFrame(
   2711         [in] ID3D11VideoDecoder *decoder
   2712     );
   2713     HRESULT SubmitDecoderBuffers(
   2714         [in] ID3D11VideoDecoder *decoder,
   2715         [in] UINT buffers_count,
   2716         [in] const D3D11_VIDEO_DECODER_BUFFER_DESC *buffer_desc
   2717     );
   2718     HRESULT DecoderExtension(
   2719         [in] ID3D11VideoDecoder *decoder,
   2720         [in] const D3D11_VIDEO_DECODER_EXTENSION *extension
   2721     );
   2722     void VideoProcessorSetOutputTargetRect(
   2723         [in] ID3D11VideoProcessor *processor,
   2724         [in] BOOL enable,
   2725         [in] const RECT *rect
   2726     );
   2727     void VideoProcessorSetOutputBackgroundColor(
   2728         [in] ID3D11VideoProcessor *processor,
   2729         [in] BOOL y_cb_cr,
   2730         [in] const D3D11_VIDEO_COLOR *color
   2731     );
   2732     void VideoProcessorSetOutputColorSpace(
   2733         [in] ID3D11VideoProcessor *processor,
   2734         [in] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space
   2735     );
   2736     void VideoProcessorSetOutputAlphaFillMode(
   2737         [in] ID3D11VideoProcessor *processor,
   2738         [in] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE alpha_fill_mode,
   2739         [in] UINT stream_idx
   2740     );
   2741     void VideoProcessorSetOutputConstriction(
   2742         [in] ID3D11VideoProcessor *processor,
   2743         [in] BOOL enable,
   2744         [in] SIZE size
   2745     );
   2746     void VideoProcessorSetOutputStereoMode(
   2747         [in] ID3D11VideoProcessor *processor,
   2748         [in] BOOL enable
   2749     );
   2750     HRESULT VideoProcessorSetOutputExtension(
   2751         [in] ID3D11VideoProcessor *processor,
   2752         [in] const GUID *guid,
   2753         [in] UINT data_size,
   2754         [in] void *data
   2755     );
   2756     void VideoProcessorGetOutputTargetRect(
   2757         [in] ID3D11VideoProcessor *processor,
   2758         [out] BOOL *enabled,
   2759         [out] RECT *rect
   2760     );
   2761     void VideoProcessorGetOutputBackgroundColor(
   2762         [in] ID3D11VideoProcessor *processor,
   2763         [out] BOOL *y_cb_cr,
   2764         [out] D3D11_VIDEO_COLOR *color
   2765     );
   2766     void VideoProcessorGetOutputColorSpace(
   2767         [in] ID3D11VideoProcessor *processor,
   2768         [out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space
   2769     );
   2770     void VideoProcessorGetOutputAlphaFillMode(
   2771         [in] ID3D11VideoProcessor *processor,
   2772         [out] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE *alpha_fill_mode,
   2773         [out] UINT *stream_idx
   2774     );
   2775     void VideoProcessorGetOutputConstriction(
   2776         [in] ID3D11VideoProcessor *processor,
   2777         [out] BOOL *enabled,
   2778         [out] SIZE *size
   2779     );
   2780     void VideoProcessorGetOutputStereoMode(
   2781         [in] ID3D11VideoProcessor *processor,
   2782         [out] BOOL *enabled
   2783     );
   2784     HRESULT VideoProcessorGetOutputExtension(
   2785         [in] ID3D11VideoProcessor *processor,
   2786         [in] const GUID *guid,
   2787         [in] UINT data_size,
   2788         [out] void *data
   2789     );
   2790     void VideoProcessorSetStreamFrameFormat(
   2791         [in] ID3D11VideoProcessor *processor,
   2792         [in] UINT stream_idx,
   2793         [in] D3D11_VIDEO_FRAME_FORMAT format
   2794     );
   2795     void VideoProcessorSetStreamColorSpace(
   2796         [in] ID3D11VideoProcessor *processor,
   2797         [in] UINT stream_idx,
   2798         [in] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space
   2799     );
   2800     void VideoProcessorSetStreamOutputRate(
   2801         [in] ID3D11VideoProcessor *processor,
   2802         [in] UINT stream_idx,
   2803         [in] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE rate,
   2804         [in] BOOL repeat,
   2805         [in] const DXGI_RATIONAL *custom_rate
   2806     );
   2807     void VideoProcessorSetStreamSourceRect(
   2808         [in] ID3D11VideoProcessor *processor,
   2809         [in] UINT stream_idx,
   2810         [in] BOOL enable,
   2811         [in] const RECT *rect
   2812     );
   2813     void VideoProcessorSetStreamDestRect(
   2814         [in] ID3D11VideoProcessor *processor,
   2815         [in] UINT stream_idx,
   2816         [in] BOOL enable,
   2817         [in] const RECT *rect
   2818     );
   2819     void VideoProcessorSetStreamAlpha(
   2820         [in] ID3D11VideoProcessor *processor,
   2821         [in] UINT stream_idx,
   2822         [in] BOOL enable,
   2823         [in] float alpha
   2824     );
   2825     void VideoProcessorSetStreamPalette(
   2826         [in] ID3D11VideoProcessor *processor,
   2827         [in] UINT stream_idx,
   2828         [in] UINT entry_count,
   2829         [in] const UINT *entries
   2830     );
   2831     void VideoProcessorSetStreamPixelAspectRatio(
   2832         [in] ID3D11VideoProcessor *processor,
   2833         [in] UINT stream_idx,
   2834         [in] BOOL enable,
   2835         [in] const DXGI_RATIONAL *src_aspect_ratio,
   2836         [in] const DXGI_RATIONAL *dst_aspect_ratio
   2837     );
   2838     void VideoProcessorSetStreamLumaKey(
   2839         [in] ID3D11VideoProcessor *processor,
   2840         [in] UINT stream_idx,
   2841         [in] BOOL enable,
   2842         [in] float lower,
   2843         [in] float upper
   2844     );
   2845     void VideoProcessorSetStreamStereoFormat(
   2846         [in] ID3D11VideoProcessor *processor,
   2847         [in] UINT stream_idx,
   2848         [in] BOOL enable,
   2849         [in] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT format,
   2850         [in] BOOL left_view_frame0,
   2851         [in] BOOL base_view_frame0,
   2852         [in] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE flip_mode,
   2853         [in] int mono_offset
   2854     );
   2855     void VideoProcessorSetStreamAutoProcessingMode(
   2856         [in] ID3D11VideoProcessor *processor,
   2857         [in] UINT stream_idx,
   2858         [in] BOOL enable
   2859     );
   2860     void VideoProcessorSetStreamFilter(
   2861         [in] ID3D11VideoProcessor *processor,
   2862         [in] UINT stream_idx,
   2863         [in] D3D11_VIDEO_PROCESSOR_FILTER filter,
   2864         [in] BOOL enable,
   2865         [in] int level
   2866     );
   2867     HRESULT VideoProcessorSetStreamExtension(
   2868         [in] ID3D11VideoProcessor *processor,
   2869         [in] UINT stream_idx,
   2870         [in] const GUID *guid,
   2871         [in] UINT data_size,
   2872         [in] void *data
   2873     );
   2874     void VideoProcessorGetStreamFrameFormat(
   2875         [in] ID3D11VideoProcessor *processor,
   2876         [in] UINT stream_idx,
   2877         [out] D3D11_VIDEO_FRAME_FORMAT *format
   2878     );
   2879     void VideoProcessorGetStreamColorSpace(
   2880         [in] ID3D11VideoProcessor *processor,
   2881         [in] UINT stream_idx,
   2882         [out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE *color_space
   2883     );
   2884     void VideoProcessorGetStreamOutputRate(
   2885         [in] ID3D11VideoProcessor *processor,
   2886         [in] UINT stream_idx,
   2887         [out] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE *rate,
   2888         [out] BOOL *repeat,
   2889         [out] DXGI_RATIONAL *custom_rate
   2890     );
   2891     void VideoProcessorGetStreamSourceRect(
   2892         [in] ID3D11VideoProcessor *processor,
   2893         [in] UINT stream_idx,
   2894         [out] BOOL *enabled,
   2895         [out] RECT *rect
   2896     );
   2897     void VideoProcessorGetStreamDestRect(
   2898         [in] ID3D11VideoProcessor *processor,
   2899         [in] UINT stream_idx,
   2900         [out] BOOL *enabled,
   2901         [out] RECT *rect
   2902     );
   2903     void VideoProcessorGetStreamAlpha(
   2904         [in] ID3D11VideoProcessor *processor,
   2905         [in] UINT stream_idx,
   2906         [out] BOOL *enabled,
   2907         [out] float *alpha
   2908     );
   2909     void VideoProcessorGetStreamPalette(
   2910         [in] ID3D11VideoProcessor *processor,
   2911         [in] UINT stream_idx,
   2912         [in] UINT entry_count,
   2913         [out] UINT *entries
   2914     );
   2915     void VideoProcessorGetStreamPixelAspectRatio(
   2916         [in] ID3D11VideoProcessor *processor,
   2917         [in] UINT stream_idx,
   2918         [out] BOOL *enabled,
   2919         [out] DXGI_RATIONAL *src_aspect_ratio,
   2920         [out] DXGI_RATIONAL *dst_aspect_ratio
   2921     );
   2922     void VideoProcessorGetStreamLumaKey(
   2923         [in] ID3D11VideoProcessor *processor,
   2924         [in] UINT stream_idx,
   2925         [out] BOOL *enabled,
   2926         [out] float *lower,
   2927         [out] float *upper
   2928     );
   2929     void VideoProcessorGetStreamStereoFormat(
   2930         [in] ID3D11VideoProcessor *processor,
   2931         [in] UINT stream_idx,
   2932         [out] BOOL *enabled,
   2933         [out] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT *format,
   2934         [out] BOOL *left_view_frame0,
   2935         [out] BOOL *base_view_frame0,
   2936         [out] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE *flip_mode,
   2937         [out] int *mono_offset
   2938     );
   2939     void VideoProcessorGetStreamAutoProcessingMode(
   2940         [in] ID3D11VideoProcessor *processor,
   2941         [in] UINT stream_idx,
   2942         [out] BOOL *enabled
   2943     );
   2944     void VideoProcessorGetStreamFilter(
   2945         [in] ID3D11VideoProcessor *processor,
   2946         [in] UINT stream_idx,
   2947         [in] D3D11_VIDEO_PROCESSOR_FILTER filter,
   2948         [out] BOOL *enabled,
   2949         [out] int *level
   2950     );
   2951     HRESULT VideoProcessorGetStreamExtension(
   2952         [in] ID3D11VideoProcessor *processor,
   2953         [in] UINT stream_idx,
   2954         [in] const GUID *guid,
   2955         [in] UINT data_size,
   2956         [out] void *data
   2957     );
   2958     HRESULT VideoProcessorBlt(
   2959         [in] ID3D11VideoProcessor *processor,
   2960         [in] ID3D11VideoProcessorOutputView *view,
   2961         [in] UINT frame_idx,
   2962         [in] UINT stream_count,
   2963         [in] const D3D11_VIDEO_PROCESSOR_STREAM *streams
   2964     );
   2965     HRESULT NegotiateCryptoSessionKeyExchange(
   2966         [in] ID3D11CryptoSession *session,
   2967         [in] UINT data_size,
   2968         [in, out] void *data
   2969     );
   2970     void EncryptionBlt(
   2971         [in] ID3D11CryptoSession *session,
   2972         [in] ID3D11Texture2D *src_surface,
   2973         [in] ID3D11Texture2D *dst_surface,
   2974         [in] UINT iv_size,
   2975         [in, out] void *iv
   2976     );
   2977     void DecryptionBlt(
   2978         [in] ID3D11CryptoSession *session,
   2979         [in] ID3D11Texture2D *src_surface,
   2980         [in] ID3D11Texture2D *dst_surface,
   2981         [in] D3D11_ENCRYPTED_BLOCK_INFO *block_info,
   2982         [in] UINT key_size,
   2983         [in] const void *key,
   2984         [in] UINT iv_size,
   2985         [in, out] void *iv
   2986     );
   2987     void StartSessionKeyRefresh(
   2988         [in] ID3D11CryptoSession *session,
   2989         [in] UINT random_number_size,
   2990         [out] void *random_number
   2991     );
   2992     void FinishSessionKeyRefresh(
   2993         [in] ID3D11CryptoSession *session
   2994     );
   2995     HRESULT GetEncryptionBltKey(
   2996         [in] ID3D11CryptoSession *session,
   2997         [in] UINT key_size,
   2998         [out] void *key
   2999     );
   3000     HRESULT NegotiateAuthenticatedChannelKeyExchange(
   3001         [in] ID3D11AuthenticatedChannel *channel,
   3002         [in] UINT data_size,
   3003         [in, out] void *data
   3004     );
   3005     HRESULT QueryAuthenticatedChannel(
   3006         [in] ID3D11AuthenticatedChannel *channel,
   3007         [in] UINT input_size,
   3008         [in] const void *input,
   3009         [in] UINT output_size,
   3010         [out] void *output
   3011     );
   3012     HRESULT ConfigureAuthenticatedChannel(
   3013         [in] ID3D11AuthenticatedChannel *channel,
   3014         [in] UINT input_size,
   3015         [in] const void *input,
   3016         [out] D3D11_AUTHENTICATED_CONFIGURE_OUTPUT *output
   3017     );
   3018     void VideoProcessorSetStreamRotation(
   3019         [in] ID3D11VideoProcessor *processor,
   3020         [in] UINT stream_idx,
   3021         [in] BOOL enable,
   3022         [in] D3D11_VIDEO_PROCESSOR_ROTATION rotation
   3023     );
   3024     void VideoProcessorGetStreamRotation(
   3025         [in] ID3D11VideoProcessor *processor,
   3026         [in] UINT stream_idx,
   3027         [out] BOOL *enable,
   3028         [out] D3D11_VIDEO_PROCESSOR_ROTATION *rotation
   3029     );
   3030 }
   3031 
   3032 [
   3033     object,
   3034     local,
   3035     uuid(db6f6ddb-ac77-4e88-8253-819df9bbf140)
   3036 ]
   3037 interface ID3D11Device : IUnknown
   3038 {
   3039     HRESULT CreateBuffer(
   3040         [in] const D3D11_BUFFER_DESC *pDesc,
   3041         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
   3042         [out] ID3D11Buffer **ppBuffer);
   3043     HRESULT CreateTexture1D(
   3044         [in] const D3D11_TEXTURE1D_DESC *pDesc,
   3045         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
   3046         [out] ID3D11Texture1D **ppTexture1D);
   3047     HRESULT CreateTexture2D(
   3048         [in] const D3D11_TEXTURE2D_DESC *pDesc,
   3049         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
   3050         [out] ID3D11Texture2D **ppTexture2D);
   3051     HRESULT CreateTexture3D(
   3052         [in] const D3D11_TEXTURE3D_DESC *pDesc,
   3053         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
   3054         [out] ID3D11Texture3D **ppTexture3D);
   3055     HRESULT CreateShaderResourceView(
   3056         [in] ID3D11Resource *pResource,
   3057         [in] const D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc,
   3058         [out] ID3D11ShaderResourceView **ppSRView);
   3059     HRESULT CreateUnorderedAccessView(
   3060         [in] ID3D11Resource *pResource,
   3061         [in] const D3D11_UNORDERED_ACCESS_VIEW_DESC *pDesc,
   3062         [out] ID3D11UnorderedAccessView **ppUAView);
   3063     HRESULT CreateRenderTargetView(
   3064         [in] ID3D11Resource *pResource,
   3065         [in] const D3D11_RENDER_TARGET_VIEW_DESC *pDesc,
   3066         [out] ID3D11RenderTargetView **ppRTView);
   3067     HRESULT CreateDepthStencilView(
   3068         [in] ID3D11Resource *pResource,
   3069         [in] const D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc,
   3070         [out] ID3D11DepthStencilView **ppDepthStencilView);
   3071     HRESULT CreateInputLayout(
   3072         [in] const D3D11_INPUT_ELEMENT_DESC *pInputElementDescs,
   3073         [in] UINT NumElements,
   3074         [in] const void *pShaderBytecodeWithInputSignature,
   3075         [in] SIZE_T BytecodeLength,
   3076         [out] ID3D11InputLayout **ppInputLayout);
   3077     HRESULT CreateVertexShader(
   3078         [in] const void *pShaderBytecode,
   3079         [in] SIZE_T BytecodeLength,
   3080         [in] ID3D11ClassLinkage *pClassLinkage,
   3081         [out] ID3D11VertexShader **ppVertexShader);
   3082     HRESULT CreateGeometryShader(
   3083         [in] const void *pShaderBytecode,
   3084         [in] SIZE_T BytecodeLength,
   3085         [in] ID3D11ClassLinkage *pClassLinkage,
   3086         [out] ID3D11GeometryShader **ppGeometryShader);
   3087     HRESULT CreateGeometryShaderWithStreamOutput(
   3088         [in] const void *pShaderBytecode,
   3089         [in] SIZE_T BytecodeLength,
   3090         [in] const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
   3091         [in] UINT NumEntries,
   3092         [in] const UINT *pBufferStrides,
   3093         [in] UINT NumStrides,
   3094         [in] UINT RasterizedStream,
   3095         [in] ID3D11ClassLinkage *pClassLinkage,
   3096         [out] ID3D11GeometryShader **ppGeometryShader);
   3097     HRESULT CreatePixelShader(
   3098         [in] const void *pShaderBytecode,
   3099         [in] SIZE_T BytecodeLength,
   3100         [in] ID3D11ClassLinkage *pClassLinkage,
   3101         [out] ID3D11PixelShader **ppPixelShader);
   3102     HRESULT CreateHullShader(
   3103         [in] const void *pShaderBytecode,
   3104         [in] SIZE_T BytecodeLength,
   3105         [in] ID3D11ClassLinkage *pClassLinkage,
   3106         [out] ID3D11HullShader **ppHullShader);
   3107     HRESULT CreateDomainShader(
   3108         [in] const void *pShaderBytecode,
   3109         [in] SIZE_T BytecodeLength,
   3110         [in] ID3D11ClassLinkage *pClassLinkage,
   3111         [out] ID3D11DomainShader **ppDomainShader);
   3112     HRESULT CreateComputeShader(
   3113         [in] const void *pShaderBytecode,
   3114         [in] SIZE_T BytecodeLength,
   3115         [in] ID3D11ClassLinkage *pClassLinkage,
   3116         [out] ID3D11ComputeShader **ppComputeShader);
   3117     HRESULT CreateClassLinkage(
   3118         [out] ID3D11ClassLinkage **ppLinkage);
   3119     HRESULT CreateBlendState(
   3120         [in] const D3D11_BLEND_DESC *pBlendStateDesc,
   3121         [out] ID3D11BlendState **ppBlendState);
   3122     HRESULT CreateDepthStencilState(
   3123         [in] const D3D11_DEPTH_STENCIL_DESC *pDepthStencilDesc,
   3124         [out] ID3D11DepthStencilState **ppDepthStencilState);
   3125     HRESULT CreateRasterizerState(
   3126         [in] const D3D11_RASTERIZER_DESC *pRasterizerDesc,
   3127         [out] ID3D11RasterizerState **ppRasterizerState);
   3128     HRESULT CreateSamplerState(
   3129         [in] const D3D11_SAMPLER_DESC *pSamplerDesc,
   3130         [out] ID3D11SamplerState **ppSamplerState);
   3131     HRESULT CreateQuery(
   3132         [in] const D3D11_QUERY_DESC *pQueryDesc,
   3133         [out] ID3D11Query **ppQuery);
   3134     HRESULT CreatePredicate(
   3135         [in] const D3D11_QUERY_DESC *pPredicateDesc,
   3136         [out] ID3D11Predicate **ppPredicate);
   3137     HRESULT CreateCounter(
   3138         [in] const D3D11_COUNTER_DESC *pCounterDesc,
   3139         [out] ID3D11Counter **ppCounter);
   3140     HRESULT CreateDeferredContext(
   3141         UINT ContextFlags,
   3142         [out] ID3D11DeviceContext **ppDeferredContext);
   3143     HRESULT OpenSharedResource(
   3144         [in] HANDLE hResource,
   3145         [in] REFIID ReturnedInterface,
   3146         [out] void  **ppResource);
   3147     HRESULT CheckFormatSupport(
   3148         [in] DXGI_FORMAT Format,
   3149         [out] UINT *pFormatSupport);
   3150     HRESULT CheckMultisampleQualityLevels(
   3151         [in] DXGI_FORMAT Format,
   3152         [in] UINT        SampleCount,
   3153         [out] UINT *pNumQualityLevels);
   3154     void CheckCounterInfo(
   3155         [out] D3D11_COUNTER_INFO *pCounterInfo);
   3156     HRESULT CheckCounter(
   3157         [in] const D3D11_COUNTER_DESC *pDesc,
   3158         [out] D3D11_COUNTER_TYPE *pType,
   3159         [out] UINT *pActiveCounters,
   3160         [out] LPSTR szName,
   3161         [in, out] UINT *pNameLength,
   3162         [out] LPSTR szUnits,
   3163         [in, out] UINT *pUnitsLength,
   3164         [out] LPSTR szDescription,
   3165         [in, out] UINT *pDescriptionLength);
   3166     HRESULT CheckFeatureSupport(
   3167         D3D11_FEATURE Feature,
   3168         [out] void *pFeatureSupportData,
   3169         UINT FeatureSupportDataSize);
   3170     HRESULT GetPrivateData(
   3171         [in] REFGUID guid,
   3172         [in, out] UINT *pDataSize,
   3173         [out] void *pData);
   3174     HRESULT SetPrivateData(
   3175         [in] REFGUID guid,
   3176         [in] UINT DataSize,
   3177         [in] const void *pData);
   3178     HRESULT SetPrivateDataInterface(
   3179         [in] REFGUID guid,
   3180         [in] const IUnknown *pData);
   3181     D3D_FEATURE_LEVEL GetFeatureLevel();
   3182     UINT GetCreationFlags();
   3183     HRESULT GetDeviceRemovedReason();
   3184     void GetImmediateContext(
   3185         [out] ID3D11DeviceContext **ppImmediateContext);
   3186     HRESULT SetExceptionMode(UINT RaiseFlags);
   3187     UINT GetExceptionMode();
   3188 }
   3189 
   3190 typedef enum D3D11_CREATE_DEVICE_FLAG {
   3191     D3D11_CREATE_DEVICE_SINGLETHREADED  = 0x0001,
   3192     D3D11_CREATE_DEVICE_DEBUG           = 0x0002,
   3193     D3D11_CREATE_DEVICE_SWITCH_TO_REF   = 0x0004,
   3194     D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x0008,
   3195     D3D11_CREATE_DEVICE_BGRA_SUPPORT    = 0x0020,
   3196     D3D11_CREATE_DEVICE_DEBUGGABLE      = 0x0040,
   3197     D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x0080,
   3198     D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x0100,
   3199     D3D11_CREATE_DEVICE_VIDEO_SUPPORT   = 0x0800
   3200 } D3D11_CREATE_DEVICE_FLAG;
   3201 
   3202 const UINT D3D11_SDK_VERSION = 7;
   3203 
   3204 cpp_quote("#include <d3d10_1.h>")
   3205 cpp_quote("#ifndef D3D11_IGNORE_SDK_LAYERS")
   3206 cpp_quote("# include <d3d11sdklayers.h>")
   3207 cpp_quote("#endif")
   3208 cpp_quote("#include <d3d10misc.h>")
   3209 cpp_quote("#include <d3d10shader.h>")
   3210 cpp_quote("#include <d3d10effect.h>")
   3211 cpp_quote("#include <d3d10_1shader.h>")
   3212 
   3213 cpp_quote("typedef HRESULT (WINAPI* PFN_D3D11_CREATE_DEVICE)(IDXGIAdapter*,D3D_DRIVER_TYPE,HMODULE,UINT,")
   3214 cpp_quote("    const D3D_FEATURE_LEVEL*,UINT,UINT,ID3D11Device**,D3D_FEATURE_LEVEL*,ID3D11DeviceContext**);")
   3215 
   3216 cpp_quote("HRESULT WINAPI D3D11CreateDevice(IDXGIAdapter*,D3D_DRIVER_TYPE,HMODULE,UINT,const D3D_FEATURE_LEVEL*," )
   3217 cpp_quote("    UINT,UINT,ID3D11Device**,D3D_FEATURE_LEVEL*,ID3D11DeviceContext**);")
   3218 
   3219 cpp_quote("typedef HRESULT (WINAPI *PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN)(IDXGIAdapter*,D3D_DRIVER_TYPE,HMODULE,UINT,")
   3220 cpp_quote("    const D3D_FEATURE_LEVEL*,UINT,UINT,const DXGI_SWAP_CHAIN_DESC*,IDXGISwapChain**,ID3D11Device**,")
   3221 cpp_quote("    D3D_FEATURE_LEVEL*,ID3D11DeviceContext**);")
   3222 
   3223 [local] HRESULT __stdcall D3D11CreateDeviceAndSwapChain(IDXGIAdapter *adapter, D3D_DRIVER_TYPE driver_type,
   3224         HMODULE swrast, UINT flags, const D3D_FEATURE_LEVEL *feature_levels, UINT levels, UINT sdk_version,
   3225         const DXGI_SWAP_CHAIN_DESC *swapchain_desc, IDXGISwapChain **swapchain, ID3D11Device **device,
   3226         D3D_FEATURE_LEVEL *obtained_feature_level, ID3D11DeviceContext **immediate_context);
   3227