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 const UINT D3D11_DEFAULT_DEPTH_BIAS          = 0;
     31 cpp_quote("#define D3D11_DEFAULT_DEPTH_BIAS_CLAMP 0.0f")
     32 const UINT D3D11_DEFAULT_MAX_ANISOTROPY      = 16;
     33 cpp_quote("#define D3D11_DEFAULT_MIP_LOD_BIAS 0.0f")
     34 const UINT D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
     35 const UINT D3D11_DEFAULT_SAMPLE_MASK         = 0xffffffff;
     36 const UINT D3D11_DEFAULT_SCISSOR_ENDX        = 0;
     37 const UINT D3D11_DEFAULT_SCISSOR_ENDY        = 0;
     38 const UINT D3D11_DEFAULT_SCISSOR_STARTX      = 0;
     39 const UINT D3D11_DEFAULT_SCISSOR_STARTY      = 0;
     40 cpp_quote("#define D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS 0.0f")
     41 const UINT D3D11_DEFAULT_STENCIL_READ_MASK   = 0xff;
     42 const UINT D3D11_DEFAULT_STENCIL_REFERENCE   = 0;
     43 const UINT D3D11_DEFAULT_STENCIL_WRITE_MASK  = 0xff;
     44 const UINT D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
     45 const UINT D3D11_DEFAULT_VIEWPORT_HEIGHT     = 0;
     46 cpp_quote("#define D3D11_DEFAULT_VIEWPORT_MAX_DEPTH 0.0f")
     47 cpp_quote("#define D3D11_DEFAULT_VIEWPORT_MIN_DEPTH 0.0f")
     48 const UINT D3D11_DEFAULT_VIEWPORT_TOPLEFTX   = 0;
     49 const UINT D3D11_DEFAULT_VIEWPORT_TOPLEFTY   = 0;
     50 const UINT D3D11_DEFAULT_VIEWPORT_WIDTH      = 0;
     51 
     52 const unsigned int D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
     53 
     54 const UINT D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
     55 
     56 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
     57 cpp_quote("struct CD3D11_DEFAULT {};")
     58 cpp_quote("extern const DECLSPEC_SELECTANY CD3D11_DEFAULT D3D11_DEFAULT;")
     59 cpp_quote("#endif")
     60 
     61 typedef enum D3D11_BLEND
     62 {
     63     D3D11_BLEND_ZERO = 1,
     64     D3D11_BLEND_ONE = 2,
     65     D3D11_BLEND_SRC_COLOR = 3,
     66     D3D11_BLEND_INV_SRC_COLOR = 4,
     67     D3D11_BLEND_SRC_ALPHA = 5,
     68     D3D11_BLEND_INV_SRC_ALPHA = 6,
     69     D3D11_BLEND_DEST_ALPHA = 7,
     70     D3D11_BLEND_INV_DEST_ALPHA = 8,
     71     D3D11_BLEND_DEST_COLOR = 9,
     72     D3D11_BLEND_INV_DEST_COLOR = 10,
     73     D3D11_BLEND_SRC_ALPHA_SAT = 11,
     74     D3D11_BLEND_BLEND_FACTOR = 14,
     75     D3D11_BLEND_INV_BLEND_FACTOR = 15,
     76     D3D11_BLEND_SRC1_COLOR = 16,
     77     D3D11_BLEND_INV_SRC1_COLOR = 17,
     78     D3D11_BLEND_SRC1_ALPHA = 18,
     79     D3D11_BLEND_INV_SRC1_ALPHA = 19,
     80 } D3D11_BLEND;
     81 
     82 typedef enum D3D11_BLEND_OP
     83 {
     84     D3D11_BLEND_OP_ADD = 1,
     85     D3D11_BLEND_OP_SUBTRACT,
     86     D3D11_BLEND_OP_REV_SUBTRACT,
     87     D3D11_BLEND_OP_MIN,
     88     D3D11_BLEND_OP_MAX
     89 } D3D11_BLEND_OP;
     90 
     91 typedef struct D3D11_BOX
     92 {
     93     UINT left;
     94     UINT top;
     95     UINT front;
     96     UINT right;
     97     UINT bottom;
     98     UINT back;
     99 } D3D11_BOX;
    100 
    101 typedef struct D3D11_BUFFER_RTV
    102 {
    103     union
    104     {
    105         UINT FirstElement;
    106         UINT ElementOffset;
    107     };
    108     union
    109     {
    110         UINT NumElements;
    111         UINT ElementWidth;
    112     };
    113 } D3D11_BUFFER_RTV;
    114 
    115 typedef struct D3D11_BUFFER_SRV
    116 {
    117     union
    118     {
    119         UINT FirstElement;
    120         UINT ElementOffset;
    121     };
    122     union
    123     {
    124         UINT NumElements;
    125         UINT ElementWidth;
    126     };
    127 } D3D11_BUFFER_SRV;
    128 
    129 typedef struct D3D11_BUFFER_UAV
    130 {
    131     UINT FirstElement;
    132     UINT NumElements;
    133     UINT Flags;
    134 } D3D11_BUFFER_UAV;
    135 
    136 typedef struct D3D11_BUFFEREX_SRV
    137 {
    138     UINT FirstElement;
    139     UINT NumElements;
    140     UINT Flags;
    141 } D3D11_BUFFEREX_SRV;
    142 
    143 typedef struct D3D11_CLASS_INSTANCE_DESC
    144 {
    145     UINT InstanceId;
    146     UINT InstanceIndex;
    147     UINT TypeId;
    148     UINT ConstantBuffer;
    149     UINT BaseConstantBufferOffset;
    150     UINT BaseTexture;
    151     UINT BaseSampler;
    152     BOOL Created;
    153 } D3D11_CLASS_INSTANCE_DESC;
    154 
    155 typedef enum D3D11_COMPARISON_FUNC
    156 {
    157     D3D11_COMPARISON_NEVER = 1,
    158     D3D11_COMPARISON_LESS,
    159     D3D11_COMPARISON_EQUAL,
    160     D3D11_COMPARISON_LESS_EQUAL,
    161     D3D11_COMPARISON_GREATER,
    162     D3D11_COMPARISON_NOT_EQUAL,
    163     D3D11_COMPARISON_GREATER_EQUAL,
    164     D3D11_COMPARISON_ALWAYS
    165 } D3D11_COMPARISON_FUNC;
    166 
    167 typedef enum D3D11_COUNTER
    168 {
    169     D3D11_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000,
    170 } D3D11_COUNTER;
    171 
    172 typedef struct D3D11_COUNTER_DESC
    173 {
    174     D3D11_COUNTER Counter;
    175     UINT MiscFlags;
    176 } D3D11_COUNTER_DESC;
    177 
    178 typedef struct D3D11_COUNTER_INFO
    179 {
    180     D3D11_COUNTER LastDeviceDependentCounter;
    181     UINT NumSimultaneousCounters;
    182     UINT8 NumDetectableParallelUnits;
    183 } D3D11_COUNTER_INFO;
    184 
    185 typedef enum D3D11_COUNTER_TYPE
    186 {
    187     D3D11_COUNTER_TYPE_FLOAT32,
    188     D3D11_COUNTER_TYPE_UINT16,
    189     D3D11_COUNTER_TYPE_UINT32,
    190     D3D11_COUNTER_TYPE_UINT64,
    191 } D3D11_COUNTER_TYPE;
    192 
    193 typedef enum D3D11_CULL_MODE
    194 {
    195     D3D11_CULL_NONE = 1,
    196     D3D11_CULL_FRONT,
    197     D3D11_CULL_BACK
    198 } D3D11_CULL_MODE;
    199 
    200 typedef enum D3D11_DEPTH_WRITE_MASK
    201 {
    202     D3D11_DEPTH_WRITE_MASK_ZERO,
    203     D3D11_DEPTH_WRITE_MASK_ALL,
    204 } D3D11_DEPTH_WRITE_MASK;
    205 
    206 typedef enum D3D11_DEVICE_CONTEXT_TYPE
    207 {
    208     D3D11_DEVICE_CONTEXT_IMMEDIATE,
    209     D3D11_DEVICE_CONTEXT_DEFERRED,
    210 } D3D11_DEVICE_CONTEXT_TYPE;
    211 
    212 typedef enum D3D11_DSV_DIMENSION
    213 {
    214     D3D11_DSV_DIMENSION_UNKNOWN,
    215     D3D11_DSV_DIMENSION_TEXTURE1D,
    216     D3D11_DSV_DIMENSION_TEXTURE1DARRAY,
    217     D3D11_DSV_DIMENSION_TEXTURE2D,
    218     D3D11_DSV_DIMENSION_TEXTURE2DARRAY,
    219     D3D11_DSV_DIMENSION_TEXTURE2DMS,
    220     D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY,
    221 } D3D11_DSV_DIMENSION;
    222 
    223 typedef enum D3D11_FEATURE
    224 {
    225     D3D11_FEATURE_THREADING,
    226     D3D11_FEATURE_DOUBLES,
    227     D3D11_FEATURE_FORMAT_SUPPORT,
    228     D3D11_FEATURE_FORMAT_SUPPORT2,
    229     D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS,
    230 } D3D11_FEATURE;
    231 
    232 typedef enum D3D11_FILL_MODE
    233 {
    234     D3D11_FILL_WIREFRAME = 2,
    235     D3D11_FILL_SOLID
    236 } D3D11_FILL_MODE;
    237 
    238 typedef enum D3D11_FILTER
    239 {
    240     D3D11_FILTER_MIN_MAG_MIP_POINT = 0x00,
    241     D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x01,
    242     D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x04,
    243     D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x05,
    244     D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
    245     D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
    246     D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
    247     D3D11_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
    248     D3D11_FILTER_ANISOTROPIC = 0x55,
    249     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
    250     D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
    251     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
    252     D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
    253     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
    254     D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
    255     D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
    256     D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
    257     D3D11_FILTER_COMPARISON_ANISOTROPIC = 0xd5
    258 } D3D11_FILTER;
    259 
    260 typedef enum D3D11_DSV_FLAG
    261 {
    262     D3D11_DSV_READ_ONLY_DEPTH = 0x1,
    263     D3D11_DSV_READ_ONLY_STENCIL = 0x2,
    264 } D3D11_DSV_FLAG;
    265 
    266 typedef enum D3D11_INPUT_CLASSIFICATION
    267 {
    268     D3D11_INPUT_PER_VERTEX_DATA,
    269     D3D11_INPUT_PER_INSTANCE_DATA,
    270 } D3D11_INPUT_CLASSIFICATION;
    271 
    272 typedef struct D3D11_INPUT_ELEMENT_DESC
    273 {
    274     LPCSTR SemanticName;
    275     UINT SemanticIndex;
    276     DXGI_FORMAT Format;
    277     UINT InputSlot;
    278     UINT AlignedByteOffset;
    279     D3D11_INPUT_CLASSIFICATION InputSlotClass;
    280     UINT InstanceDataStepRate;
    281 } D3D11_INPUT_ELEMENT_DESC;
    282 
    283 typedef enum D3D11_MAP
    284 {
    285     D3D11_MAP_READ = 1,
    286     D3D11_MAP_WRITE,
    287     D3D11_MAP_READ_WRITE,
    288     D3D11_MAP_WRITE_DISCARD,
    289     D3D11_MAP_WRITE_NO_OVERWRITE
    290 } D3D11_MAP;
    291 
    292 typedef struct D3D11_MAPPED_SUBRESOURCE
    293 {
    294     void *pData;
    295     UINT RowPitch;
    296     UINT DepthPitch;
    297 } D3D11_MAPPED_SUBRESOURCE;
    298 
    299 typedef enum D3D11_QUERY
    300 {
    301     D3D11_QUERY_EVENT,
    302     D3D11_QUERY_OCCLUSION,
    303     D3D11_QUERY_TIMESTAMP,
    304     D3D11_QUERY_TIMESTAMP_DISJOINT,
    305     D3D11_QUERY_PIPELINE_STATISTICS,
    306     D3D11_QUERY_OCCLUSION_PREDICATE,
    307     D3D11_QUERY_SO_STATISTICS,
    308     D3D11_QUERY_SO_OVERFLOW_PREDICATE,
    309     D3D11_QUERY_SO_STATISTICS_STREAM0,
    310     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0,
    311     D3D11_QUERY_SO_STATISTICS_STREAM1,
    312     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1,
    313     D3D11_QUERY_SO_STATISTICS_STREAM2,
    314     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2,
    315     D3D11_QUERY_SO_STATISTICS_STREAM3,
    316     D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3,
    317 } D3D11_QUERY;
    318 
    319 typedef struct D3D11_QUERY_DESC
    320 {
    321     D3D11_QUERY Query;
    322     UINT MiscFlags;
    323 } D3D11_QUERY_DESC;
    324 
    325 typedef struct D3D11_RASTERIZER_DESC
    326 {
    327     D3D11_FILL_MODE FillMode;
    328     D3D11_CULL_MODE CullMode;
    329     BOOL FrontCounterClockwise;
    330     INT DepthBias;
    331     FLOAT DepthBiasClamp;
    332     FLOAT SlopeScaledDepthBias;
    333     BOOL DepthClipEnable;
    334     BOOL ScissorEnable;
    335     BOOL MultisampleEnable;
    336     BOOL AntialiasedLineEnable;
    337 } D3D11_RASTERIZER_DESC;
    338 
    339 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
    340 cpp_quote("struct CD3D11_RASTERIZER_DESC : public D3D11_RASTERIZER_DESC {")
    341 cpp_quote("    CD3D11_RASTERIZER_DESC() {}")
    342 cpp_quote("    explicit CD3D11_RASTERIZER_DESC(const D3D11_RASTERIZER_DESC &o) : D3D11_RASTERIZER_DESC(o) {}")
    343 cpp_quote("    explicit CD3D11_RASTERIZER_DESC(CD3D11_DEFAULT) {")
    344 cpp_quote("        FillMode = D3D11_FILL_SOLID;")
    345 cpp_quote("        CullMode = D3D11_CULL_BACK;")
    346 cpp_quote("        FrontCounterClockwise = FALSE;")
    347 cpp_quote("        DepthBias = D3D11_DEFAULT_DEPTH_BIAS;")
    348 cpp_quote("        DepthBiasClamp = D3D11_DEFAULT_DEPTH_BIAS_CLAMP;")
    349 cpp_quote("        SlopeScaledDepthBias = D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;")
    350 cpp_quote("        DepthClipEnable = TRUE;")
    351 cpp_quote("        ScissorEnable = FALSE;")
    352 cpp_quote("        MultisampleEnable = FALSE;")
    353 cpp_quote("        AntialiasedLineEnable = FALSE;")
    354 cpp_quote("    }")
    355 cpp_quote("    explicit CD3D11_RASTERIZER_DESC(D3D11_FILL_MODE fillMode, D3D11_CULL_MODE cullMode," )
    356 cpp_quote("            WINBOOL frontCounterClockwise, INT depthBias, FLOAT depthBiasClamp, FLOAT slopeScaledDepthBias,")
    357 cpp_quote("            BOOL depthClipEnable, WINBOOL scissorEnable, WINBOOL multisampleEnable, WINBOOL antialiasedLineEnable) {")
    358 cpp_quote("        FillMode = fillMode;")
    359 cpp_quote("        CullMode = cullMode;")
    360 cpp_quote("        FrontCounterClockwise = frontCounterClockwise;")
    361 cpp_quote("        DepthBias = depthBias;")
    362 cpp_quote("        DepthBiasClamp = depthBiasClamp;")
    363 cpp_quote("        SlopeScaledDepthBias = slopeScaledDepthBias;")
    364 cpp_quote("        DepthClipEnable = depthClipEnable;")
    365 cpp_quote("        ScissorEnable = scissorEnable;")
    366 cpp_quote("        MultisampleEnable = multisampleEnable;")
    367 cpp_quote("        AntialiasedLineEnable = antialiasedLineEnable;")
    368 cpp_quote("    }")
    369 cpp_quote("    ~CD3D11_RASTERIZER_DESC() {}")
    370 cpp_quote("    operator const D3D11_RASTERIZER_DESC&() const { return *this; }")
    371 cpp_quote("};")
    372 cpp_quote("#endif")
    373 
    374 typedef enum D3D11_RESOURCE_DIMENSION
    375 {
    376     D3D11_RESOURCE_DIMENSION_UNKNOWN,
    377     D3D11_RESOURCE_DIMENSION_BUFFER,
    378     D3D11_RESOURCE_DIMENSION_TEXTURE1D,
    379     D3D11_RESOURCE_DIMENSION_TEXTURE2D,
    380     D3D11_RESOURCE_DIMENSION_TEXTURE3D,
    381 } D3D11_RESOURCE_DIMENSION;
    382 
    383 typedef enum D3D11_RTV_DIMENSION
    384 {
    385     D3D11_RTV_DIMENSION_UNKNOWN,
    386     D3D11_RTV_DIMENSION_BUFFER,
    387     D3D11_RTV_DIMENSION_TEXTURE1D,
    388     D3D11_RTV_DIMENSION_TEXTURE1DARRAY,
    389     D3D11_RTV_DIMENSION_TEXTURE2D,
    390     D3D11_RTV_DIMENSION_TEXTURE2DARRAY,
    391     D3D11_RTV_DIMENSION_TEXTURE2DMS,
    392     D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY,
    393     D3D11_RTV_DIMENSION_TEXTURE3D,
    394 } D3D11_RTV_DIMENSION;
    395 
    396 typedef struct D3D11_SO_DECLARATION_ENTRY
    397 {
    398     UINT Stream;
    399     LPCSTR SemanticName;
    400     UINT SemanticIndex;
    401     BYTE StartComponent;
    402     BYTE ComponentCount;
    403     BYTE OutputSlot;
    404 } D3D11_SO_DECLARATION_ENTRY;
    405 
    406 typedef enum D3D11_STENCIL_OP
    407 {
    408     D3D11_STENCIL_OP_KEEP = 1,
    409     D3D11_STENCIL_OP_ZERO,
    410     D3D11_STENCIL_OP_REPLACE,
    411     D3D11_STENCIL_OP_INCR_SAT,
    412     D3D11_STENCIL_OP_DECR_SAT,
    413     D3D11_STENCIL_OP_INVERT,
    414     D3D11_STENCIL_OP_INCR,
    415     D3D11_STENCIL_OP_DECR
    416 } D3D11_STENCIL_OP;
    417 
    418 typedef struct D3D11_SUBRESOURCE_DATA
    419 {
    420     const void *pSysMem;
    421     UINT SysMemPitch;
    422     UINT SysMemSlicePitch;
    423 } D3D11_SUBRESOURCE_DATA;
    424 
    425 typedef struct D3D11_TEX1D_ARRAY_DSV
    426 {
    427     UINT MipSlice;
    428     UINT FirstArraySlice;
    429     UINT ArraySize;
    430 } D3D11_TEX1D_ARRAY_DSV;
    431 
    432 typedef struct D3D11_TEX1D_ARRAY_RTV
    433 {
    434     UINT MipSlice;
    435     UINT FirstArraySlice;
    436     UINT ArraySize;
    437 } D3D11_TEX1D_ARRAY_RTV;
    438 
    439 typedef struct D3D11_TEX1D_ARRAY_SRV
    440 {
    441     UINT MostDetailedMip;
    442     UINT MipLevels;
    443     UINT FirstArraySlice;
    444     UINT ArraySize;
    445 } D3D11_TEX1D_ARRAY_SRV;
    446 
    447 typedef struct D3D11_TEX1D_ARRAY_UAV
    448 {
    449     UINT MipSlice;
    450     UINT FirstArraySlice;
    451     UINT ArraySize;
    452 } D3D11_TEX1D_ARRAY_UAV;
    453 
    454 typedef struct D3D11_TEX1D_DSV
    455 {
    456     UINT MipSlice;
    457 } D3D11_TEX1D_DSV;
    458 
    459 typedef struct D3D11_TEX1D_RTV
    460 {
    461     UINT MipSlice;
    462 } D3D11_TEX1D_RTV;
    463 
    464 typedef struct D3D11_TEX1D_SRV
    465 {
    466     UINT MostDetailedMip;
    467     UINT MipLevels;
    468  } D3D11_TEX1D_SRV;
    469 
    470 typedef struct D3D11_TEX1D_UAV
    471 {
    472     UINT MipSlice;
    473 } D3D11_TEX1D_UAV;
    474 
    475 typedef struct D3D11_TEX2D_ARRAY_DSV
    476 {
    477     UINT MipSlice;
    478     UINT FirstArraySlice;
    479     UINT ArraySize;
    480 } D3D11_TEX2D_ARRAY_DSV;
    481 
    482 typedef struct D3D11_TEX2D_ARRAY_RTV
    483 {
    484     UINT MipSlice;
    485     UINT FirstArraySlice;
    486     UINT ArraySize;
    487 } D3D11_TEX2D_ARRAY_RTV;
    488 
    489 typedef struct D3D11_TEX2D_ARRAY_SRV
    490 {
    491     UINT MostDetailedMip;
    492     UINT MipLevels;
    493     UINT FirstArraySlice;
    494     UINT ArraySize;
    495 } D3D11_TEX2D_ARRAY_SRV;
    496 
    497 typedef struct D3D11_TEX2D_ARRAY_UAV
    498 {
    499     UINT MipSlice;
    500     UINT FirstArraySlice;
    501     UINT ArraySize;
    502 } D3D11_TEX2D_ARRAY_UAV;
    503 
    504 typedef struct D3D11_TEX2D_DSV
    505 {
    506     UINT MipSlice;
    507 } D3D11_TEX2D_DSV;
    508 
    509 typedef struct D3D11_TEX2D_RTV
    510 {
    511     UINT MipSlice;
    512 } D3D11_TEX2D_RTV;
    513 
    514 typedef struct D3D11_TEX2D_SRV
    515 {
    516     UINT MostDetailedMip;
    517     UINT MipLevels;
    518 } D3D11_TEX2D_SRV;
    519 
    520 typedef struct D3D11_TEX2D_UAV
    521 {
    522     UINT MipSlice;
    523 } D3D11_TEX2D_UAV;
    524 
    525 typedef struct D3D11_TEX2DMS_ARRAY_DSV
    526 {
    527     UINT FirstArraySlice;
    528     UINT ArraySize;
    529 } D3D11_TEX2DMS_ARRAY_DSV;
    530 
    531 typedef struct D3D11_TEX2DMS_ARRAY_RTV
    532 {
    533     UINT FirstArraySlice;
    534     UINT ArraySize;
    535 } D3D11_TEX2DMS_ARRAY_RTV;
    536 
    537 typedef struct D3D11_TEX2DMS_ARRAY_SRV
    538 {
    539     UINT FirstArraySlice;
    540     UINT ArraySize;
    541 } D3D11_TEX2DMS_ARRAY_SRV;
    542 
    543 typedef struct D3D11_TEX2DMS_DSV
    544 {
    545     UINT UnusedField_NothingToDefine;
    546 } D3D11_TEX2DMS_DSV;
    547 
    548 typedef struct D3D11_TEX2DMS_RTV
    549 {
    550     UINT UnusedField_NothingToDefine;
    551 } D3D11_TEX2DMS_RTV;
    552 
    553 typedef struct D3D11_TEX2DMS_SRV
    554 {
    555     UINT UnusedField_NothingToDefine;
    556 } D3D11_TEX2DMS_SRV;
    557 
    558 typedef struct D3D11_TEX3D_RTV
    559 {
    560     UINT MipSlice;
    561     UINT FirstWSlice;
    562     UINT WSize;
    563 } D3D11_TEX3D_RTV;
    564 
    565 typedef struct D3D11_TEX3D_SRV
    566 {
    567     UINT MostDetailedMip;
    568     UINT MipLevels;
    569 } D3D11_TEX3D_SRV;
    570 
    571 typedef struct D3D11_TEX3D_UAV
    572 {
    573     UINT MipSlice;
    574     UINT FirstWSlice;
    575     UINT WSize;
    576 } D3D11_TEX3D_UAV;
    577 
    578 typedef struct D3D11_TEXCUBE_ARRAY_SRV
    579 {
    580     UINT MostDetailedMip;
    581     UINT MipLevels;
    582     UINT First2DArrayFace;
    583     UINT NumCubes;
    584 } D3D11_TEXCUBE_ARRAY_SRV;
    585 
    586 typedef struct D3D11_TEXCUBE_SRV
    587 {
    588     UINT MostDetailedMip;
    589     UINT MipLevels;
    590 } D3D11_TEXCUBE_SRV;
    591 
    592 typedef enum D3D11_TEXTURE_ADDRESS_MODE
    593 {
    594     D3D11_TEXTURE_ADDRESS_WRAP = 1,
    595     D3D11_TEXTURE_ADDRESS_MIRROR,
    596     D3D11_TEXTURE_ADDRESS_CLAMP,
    597     D3D11_TEXTURE_ADDRESS_BORDER,
    598     D3D11_TEXTURE_ADDRESS_MIRROR_ONCE
    599 } D3D11_TEXTURE_ADDRESS_MODE;
    600 
    601 typedef enum D3D11_UAV_DIMENSION
    602 {
    603     D3D11_UAV_DIMENSION_UNKNOWN,
    604     D3D11_UAV_DIMENSION_BUFFER,
    605     D3D11_UAV_DIMENSION_TEXTURE1D,
    606     D3D11_UAV_DIMENSION_TEXTURE1DARRAY,
    607     D3D11_UAV_DIMENSION_TEXTURE2D,
    608     D3D11_UAV_DIMENSION_TEXTURE2DARRAY,
    609     D3D11_UAV_DIMENSION_TEXTURE3D = 8,
    610 } D3D11_UAV_DIMENSION;
    611 
    612 typedef struct D3D11_UNORDERED_ACCESS_VIEW_DESC
    613 {
    614     DXGI_FORMAT Format;
    615     D3D11_UAV_DIMENSION ViewDimension;
    616 
    617     union
    618     {
    619         D3D11_BUFFER_UAV Buffer;
    620         D3D11_TEX1D_UAV Texture1D;
    621         D3D11_TEX1D_ARRAY_UAV Texture1DArray;
    622         D3D11_TEX2D_UAV Texture2D;
    623         D3D11_TEX2D_ARRAY_UAV Texture2DArray;
    624         D3D11_TEX3D_UAV Texture3D;
    625     };
    626 } D3D11_UNORDERED_ACCESS_VIEW_DESC;
    627 
    628 typedef enum D3D11_USAGE
    629 {
    630     D3D11_USAGE_DEFAULT,
    631     D3D11_USAGE_IMMUTABLE,
    632     D3D11_USAGE_DYNAMIC,
    633     D3D11_USAGE_STAGING,
    634 } D3D11_USAGE;
    635 
    636 typedef enum D3D11_BIND_FLAG
    637 {
    638     D3D11_BIND_VERTEX_BUFFER    = 0x0001,
    639     D3D11_BIND_INDEX_BUFFER     = 0x0002,
    640     D3D11_BIND_CONSTANT_BUFFER  = 0x0004,
    641     D3D11_BIND_SHADER_RESOURCE  = 0x0008,
    642     D3D11_BIND_STREAM_OUTPUT    = 0x0010,
    643     D3D11_BIND_RENDER_TARGET    = 0x0020,
    644     D3D11_BIND_DEPTH_STENCIL    = 0x0040,
    645     D3D11_BIND_UNORDERED_ACCESS = 0x0080,
    646     D3D11_BIND_DECODER          = 0x0200,
    647     D3D11_BIND_VIDEO_ENCODER    = 0x0400
    648 } D3D11_BIND_FLAG;
    649 
    650 typedef enum D3D11_CPU_ACCESS_FLAG
    651 {
    652     D3D11_CPU_ACCESS_WRITE = 0x00010000,
    653     D3D11_CPU_ACCESS_READ  = 0x00020000
    654 } D3D11_CPU_ACCESS_FLAG;
    655 
    656 typedef struct D3D11_VIEWPORT
    657 {
    658     FLOAT TopLeftX;
    659     FLOAT TopLeftY;
    660     FLOAT Width;
    661     FLOAT Height;
    662     FLOAT MinDepth;
    663     FLOAT MaxDepth;
    664 } D3D11_VIEWPORT;
    665 
    666 typedef enum D3D11_COLOR_WRITE_ENABLE
    667 {
    668     D3D11_COLOR_WRITE_ENABLE_RED   = 1,
    669     D3D11_COLOR_WRITE_ENABLE_GREEN = 2,
    670     D3D11_COLOR_WRITE_ENABLE_BLUE  = 4,
    671     D3D11_COLOR_WRITE_ENABLE_ALPHA = 8,
    672     D3D11_COLOR_WRITE_ENABLE_ALL   =
    673         (D3D11_COLOR_WRITE_ENABLE_RED|D3D11_COLOR_WRITE_ENABLE_GREEN|D3D11_COLOR_WRITE_ENABLE_BLUE|D3D11_COLOR_WRITE_ENABLE_ALPHA)
    674 } D3D11_COLOR_WRITE_ENABLE;
    675 
    676 typedef struct D3D11_RENDER_TARGET_BLEND_DESC
    677 {
    678     BOOL BlendEnable;
    679     D3D11_BLEND SrcBlend;
    680     D3D11_BLEND DestBlend;
    681     D3D11_BLEND_OP BlendOp;
    682     D3D11_BLEND SrcBlendAlpha;
    683     D3D11_BLEND DestBlendAlpha;
    684     D3D11_BLEND_OP BlendOpAlpha;
    685     UINT8 RenderTargetWriteMask;
    686 } D3D11_RENDER_TARGET_BLEND_DESC;
    687 
    688 typedef struct D3D11_BLEND_DESC
    689 {
    690     BOOL AlphaToCoverageEnable;
    691     BOOL IndependentBlendEnable;
    692     D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT];
    693 } D3D11_BLEND_DESC;
    694 
    695 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
    696 cpp_quote("struct CD3D11_BLEND_DESC : public D3D11_BLEND_DESC {")
    697 cpp_quote("    CD3D11_BLEND_DESC() {}")
    698 cpp_quote("    explicit CD3D11_BLEND_DESC(const D3D11_BLEND_DESC &o) : D3D11_BLEND_DESC(o) {}")
    699 cpp_quote("    explicit CD3D11_BLEND_DESC(CD3D11_DEFAULT) {")
    700 cpp_quote("        AlphaToCoverageEnable = FALSE;")
    701 cpp_quote("        IndependentBlendEnable = FALSE;")
    702 cpp_quote("        for(D3D11_RENDER_TARGET_BLEND_DESC *target; target < RenderTarget+D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; target++) {")
    703 cpp_quote("            target->BlendEnable = FALSE;")
    704 cpp_quote("            target->SrcBlend = target->SrcBlendAlpha = D3D11_BLEND_ONE;")
    705 cpp_quote("            target->DestBlend = target->DestBlendAlpha = D3D11_BLEND_ZERO;")
    706 cpp_quote("            target->BlendOp = target->BlendOpAlpha = D3D11_BLEND_OP_ADD;")
    707 cpp_quote("            target->RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;")
    708 cpp_quote("        }")
    709 cpp_quote("    }")
    710 cpp_quote("    ~CD3D11_BLEND_DESC() {}")
    711 cpp_quote("    operator const D3D11_BLEND_DESC&() const { return *this; }")
    712 cpp_quote("};" )
    713 cpp_quote("#endif" )
    714 
    715 typedef struct D3D11_BUFFER_DESC
    716 {
    717     UINT ByteWidth;
    718     D3D11_USAGE Usage;
    719     UINT BindFlags;
    720     UINT CPUAccessFlags;
    721     UINT MiscFlags;
    722     UINT StructureByteStride;
    723 } D3D11_BUFFER_DESC;
    724 
    725 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
    726 cpp_quote("struct CD3D11_BUFFER_DESC : public D3D11_BUFFER_DESC {")
    727 cpp_quote("    CD3D11_BUFFER_DESC() {}" )
    728 cpp_quote("    explicit CD3D11_BUFFER_DESC(const D3D11_BUFFER_DESC &o) : D3D11_BUFFER_DESC(o) {}")
    729 cpp_quote("    explicit CD3D11_BUFFER_DESC(UINT byteWidth,UINT bindFlags,")
    730 cpp_quote("            D3D11_USAGE usage = D3D11_USAGE_DEFAULT, UINT cpuaccessFlags = 0,")
    731 cpp_quote("            UINT miscFlags = 0, UINT structureByteStride = 0 ) {")
    732 cpp_quote("        ByteWidth = byteWidth;")
    733 cpp_quote("        Usage = usage;")
    734 cpp_quote("        BindFlags = bindFlags;")
    735 cpp_quote("        CPUAccessFlags = cpuaccessFlags;")
    736 cpp_quote("        MiscFlags = miscFlags;" )
    737 cpp_quote("        StructureByteStride = structureByteStride;")
    738 cpp_quote("    }")
    739 cpp_quote("    ~CD3D11_BUFFER_DESC() {}")
    740 cpp_quote("    operator const D3D11_BUFFER_DESC&() const { return *this; }")
    741 cpp_quote("};" )
    742 cpp_quote("#endif" )
    743 
    744 typedef struct D3D11_DEPTH_STENCIL_VIEW_DESC
    745 {
    746     DXGI_FORMAT Format;
    747     D3D11_DSV_DIMENSION ViewDimension;
    748     UINT Flags;
    749 
    750     union
    751     {
    752         D3D11_TEX1D_DSV Texture1D;
    753         D3D11_TEX1D_ARRAY_DSV Texture1DArray;
    754         D3D11_TEX2D_DSV Texture2D;
    755         D3D11_TEX2D_ARRAY_DSV Texture2DArray;
    756         D3D11_TEX2DMS_DSV Texture2DMS;
    757         D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray;
    758     };
    759 } D3D11_DEPTH_STENCIL_VIEW_DESC;
    760 
    761 typedef struct D3D11_DEPTH_STENCILOP_DESC
    762 {
    763     D3D11_STENCIL_OP StencilFailOp;
    764     D3D11_STENCIL_OP StencilDepthFailOp;
    765     D3D11_STENCIL_OP StencilPassOp;
    766     D3D11_COMPARISON_FUNC StencilFunc;
    767 } D3D11_DEPTH_STENCILOP_DESC;
    768 
    769 typedef struct D3D11_DEPTH_STENCIL_DESC
    770 {
    771     BOOL DepthEnable;
    772     D3D11_DEPTH_WRITE_MASK DepthWriteMask;
    773     D3D11_COMPARISON_FUNC DepthFunc;
    774     BOOL StencilEnable;
    775     UINT8 StencilReadMask;
    776     UINT8 StencilWriteMask;
    777     D3D11_DEPTH_STENCILOP_DESC FrontFace;
    778     D3D11_DEPTH_STENCILOP_DESC BackFace;
    779 } D3D11_DEPTH_STENCIL_DESC;
    780 
    781 typedef struct D3D11_RENDER_TARGET_VIEW_DESC
    782 {
    783     DXGI_FORMAT Format;
    784     D3D11_RTV_DIMENSION ViewDimension;
    785 
    786     union
    787     {
    788         D3D11_BUFFER_RTV Buffer;
    789         D3D11_TEX1D_RTV Texture1D;
    790         D3D11_TEX1D_ARRAY_RTV Texture1DArray;
    791         D3D11_TEX2D_RTV Texture2D;
    792         D3D11_TEX2D_ARRAY_RTV Texture2DArray;
    793         D3D11_TEX2DMS_RTV Texture2DMS;
    794         D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray;
    795         D3D11_TEX3D_RTV Texture3D;
    796     };
    797 } D3D11_RENDER_TARGET_VIEW_DESC;
    798 
    799 typedef struct D3D11_SAMPLER_DESC
    800 {
    801     D3D11_FILTER Filter;
    802     D3D11_TEXTURE_ADDRESS_MODE AddressU;
    803     D3D11_TEXTURE_ADDRESS_MODE AddressV;
    804     D3D11_TEXTURE_ADDRESS_MODE AddressW;
    805     FLOAT MipLODBias;
    806     UINT MaxAnisotropy;
    807     D3D11_COMPARISON_FUNC ComparisonFunc;
    808     FLOAT BorderColor[4];
    809     FLOAT MinLOD;
    810     FLOAT MaxLOD;
    811 } D3D11_SAMPLER_DESC;
    812 
    813 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
    814 cpp_quote("struct CD3D11_SAMPLER_DESC : public D3D11_SAMPLER_DESC {")
    815 cpp_quote("    CD3D11_SAMPLER_DESC() {}")
    816 cpp_quote("    explicit CD3D11_SAMPLER_DESC(const D3D11_SAMPLER_DESC &o) : D3D11_SAMPLER_DESC(o) {}")
    817 cpp_quote("    explicit CD3D11_SAMPLER_DESC(CD3D11_DEFAULT) {" )
    818 cpp_quote("        Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;")
    819 cpp_quote("        AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;")
    820 cpp_quote("        AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;")
    821 cpp_quote("        AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;")
    822 cpp_quote("        MipLODBias = 0;")
    823 cpp_quote("        MaxAnisotropy = 1;")
    824 cpp_quote("        ComparisonFunc = D3D11_COMPARISON_NEVER;")
    825 cpp_quote("        BorderColor[0] = BorderColor[1] = BorderColor[2] = BorderColor[3] = 1.0f;")
    826 cpp_quote("        MinLOD = -3.402823466e+38f;")
    827 cpp_quote("        MaxLOD = 3.402823466e+38f;")
    828 cpp_quote("    }")
    829 cpp_quote("    explicit CD3D11_SAMPLER_DESC(D3D11_FILTER filter, D3D11_TEXTURE_ADDRESS_MODE addressU,")
    830 cpp_quote("            D3D11_TEXTURE_ADDRESS_MODE addressV, D3D11_TEXTURE_ADDRESS_MODE addressW,")
    831 cpp_quote("            FLOAT mipLODBias, UINT maxAnisotropy, D3D11_COMPARISON_FUNC comparisonFunc,")
    832 cpp_quote("            const FLOAT *borderColor, FLOAT minLOD, FLOAT maxLOD) {" )
    833 cpp_quote("        Filter = filter;")
    834 cpp_quote("        AddressU = addressU;")
    835 cpp_quote("        AddressV = addressV;")
    836 cpp_quote("        AddressW = addressW;")
    837 cpp_quote("        MipLODBias = mipLODBias;")
    838 cpp_quote("        MaxAnisotropy = maxAnisotropy;")
    839 cpp_quote("        ComparisonFunc = comparisonFunc;")
    840 cpp_quote("        if(borderColor) {")
    841 cpp_quote("            BorderColor[0] = borderColor[0];")
    842 cpp_quote("            BorderColor[1] = borderColor[1];")
    843 cpp_quote("            BorderColor[2] = borderColor[2];")
    844 cpp_quote("            BorderColor[3] = borderColor[3];")
    845 cpp_quote("        }else {")
    846 cpp_quote("            BorderColor[0] = BorderColor[1] = BorderColor[2] = BorderColor[3] = 1.0f;")
    847 cpp_quote("        }")
    848 cpp_quote("        MinLOD = minLOD;")
    849 cpp_quote("        MaxLOD = maxLOD;")
    850 cpp_quote("    }")
    851 cpp_quote("    ~CD3D11_SAMPLER_DESC() {}")
    852 cpp_quote("    operator const D3D11_SAMPLER_DESC&() const { return *this; }")
    853 cpp_quote("};")
    854 cpp_quote("#endif")
    855 
    856 typedef struct D3D11_SHADER_RESOURCE_VIEW_DESC
    857 {
    858     DXGI_FORMAT Format;
    859     D3D11_SRV_DIMENSION ViewDimension;
    860 
    861     union
    862     {
    863         D3D11_BUFFER_SRV Buffer;
    864         D3D11_TEX1D_SRV Texture1D;
    865         D3D11_TEX1D_ARRAY_SRV Texture1DArray;
    866         D3D11_TEX2D_SRV Texture2D;
    867         D3D11_TEX2D_ARRAY_SRV Texture2DArray;
    868         D3D11_TEX2DMS_SRV Texture2DMS;
    869         D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray;
    870         D3D11_TEX3D_SRV Texture3D;
    871         D3D11_TEXCUBE_SRV TextureCube;
    872         D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray;
    873         D3D11_BUFFEREX_SRV BufferEx;
    874     };
    875 } D3D11_SHADER_RESOURCE_VIEW_DESC;
    876 
    877 typedef struct D3D11_TEXTURE1D_DESC
    878 {
    879     UINT Width;
    880     UINT MipLevels;
    881     UINT ArraySize;
    882     DXGI_FORMAT Format;
    883     D3D11_USAGE Usage;
    884     UINT BindFlags;
    885     UINT CPUAccessFlags;
    886     UINT MiscFlags;
    887 } D3D11_TEXTURE1D_DESC;
    888 
    889 typedef struct D3D11_TEXTURE2D_DESC
    890 {
    891     UINT Width;
    892     UINT Height;
    893     UINT MipLevels;
    894     UINT ArraySize;
    895     DXGI_FORMAT Format;
    896     DXGI_SAMPLE_DESC SampleDesc;
    897     D3D11_USAGE Usage;
    898     UINT BindFlags;
    899     UINT CPUAccessFlags;
    900     UINT MiscFlags;
    901 } D3D11_TEXTURE2D_DESC;
    902 
    903 cpp_quote("#if !defined(D3D11_NO_HELPERS) && defined(__cplusplus)")
    904 cpp_quote("struct CD3D11_TEXTURE2D_DESC : public D3D11_TEXTURE2D_DESC {")
    905 cpp_quote("    CD3D11_TEXTURE2D_DESC() {}")
    906 cpp_quote("    explicit CD3D11_TEXTURE2D_DESC(const D3D11_TEXTURE2D_DESC &o) : D3D11_TEXTURE2D_DESC(o) {}")
    907 cpp_quote("    explicit CD3D11_TEXTURE2D_DESC(DXGI_FORMAT format, UINT width, UINT height, UINT arraySize = 1,")
    908 cpp_quote("            UINT mipLevels = 0, UINT bindFlags = D3D11_BIND_SHADER_RESOURCE,")
    909 cpp_quote("            D3D11_USAGE usage = D3D11_USAGE_DEFAULT, UINT cpuaccessFlags = 0, UINT sampleCount = 1," )
    910 cpp_quote("            UINT sampleQuality = 0, UINT miscFlags = 0) {")
    911 cpp_quote("        Width = width;")
    912 cpp_quote("        Height = height;")
    913 cpp_quote("        MipLevels = mipLevels;")
    914 cpp_quote("        ArraySize = arraySize;")
    915 cpp_quote("        Format = format;")
    916 cpp_quote("        SampleDesc.Count = sampleCount;")
    917 cpp_quote("        SampleDesc.Quality = sampleQuality;")
    918 cpp_quote("        Usage = usage;")
    919 cpp_quote("        BindFlags = bindFlags;")
    920 cpp_quote("        CPUAccessFlags = cpuaccessFlags;")
    921 cpp_quote("        MiscFlags = miscFlags;")
    922 cpp_quote("    }" )
    923 cpp_quote("    ~CD3D11_TEXTURE2D_DESC() {}")
    924 cpp_quote("    operator const D3D11_TEXTURE2D_DESC&() const { return *this; }")
    925 cpp_quote("};")
    926 cpp_quote("#endif")
    927 
    928 typedef struct D3D11_TEXTURE3D_DESC
    929 {
    930     UINT Width;
    931     UINT Height;
    932     UINT Depth;
    933     UINT MipLevels;
    934     DXGI_FORMAT Format;
    935     D3D11_USAGE Usage;
    936     UINT BindFlags;
    937     UINT CPUAccessFlags;
    938     UINT MiscFlags;
    939 } D3D11_TEXTURE3D_DESC;
    940 
    941 /* A couple forward declarations are needed */
    942 interface ID3D11Device;
    943 interface ID3D11ClassLinkage;
    944 
    945 [
    946     object,
    947     local,
    948     uuid(1841e5c8-16b0-489b-bcc8-44cfb0d5deae)
    949 ]
    950 interface ID3D11DeviceChild : IUnknown
    951 {
    952     void GetDevice(
    953         [out] ID3D11Device **ppDevice);
    954     HRESULT GetPrivateData(
    955         [in] REFGUID guid,
    956         [in, out] UINT *pDataSize,
    957         [out] void *pData);
    958     HRESULT SetPrivateData(
    959         [in] REFGUID guid,
    960         [in] UINT DataSize,
    961         [in] const void *pData);
    962     HRESULT SetPrivateDataInterface(
    963         [in] REFGUID guid,
    964         [in] const IUnknown *pData);
    965 }
    966 
    967 [
    968     object,
    969     local,
    970     uuid(4b35d0cd-1e15-4258-9c98-1b1333f6dd3b)
    971 ]
    972 interface ID3D11Asynchronous : ID3D11DeviceChild
    973 {
    974     UINT GetDataSize();
    975 }
    976 
    977 [
    978     object,
    979     local,
    980     uuid(d6c00747-87b7-425e-b84d-44d108560afd)
    981 ]
    982 interface ID3D11Query : ID3D11Asynchronous
    983 {
    984     void GetDesc(
    985         [out] D3D11_QUERY_DESC *pDesc);
    986 }
    987 
    988 [
    989     object,
    990     local,
    991     uuid(dc8e63f3-d12b-4952-b47b-5e45026a862d)
    992 ]
    993 interface ID3D11Resource : ID3D11DeviceChild
    994 {
    995     void GetType(
    996         [out] D3D11_RESOURCE_DIMENSION *pResourceDimension);
    997     void SetEvictionPriority(
    998         [in] UINT EvictionPriority);
    999     UINT GetEvictionPriority();
   1000 }
   1001 
   1002 [
   1003     object,
   1004     local,
   1005     uuid(839d1216-bb2e-412b-b7f4-a9dbebe08ed1)
   1006 ]
   1007 interface ID3D11View : ID3D11DeviceChild
   1008 {
   1009     void GetResource(
   1010         [out] ID3D11Resource **ppResource);
   1011 }
   1012 
   1013 [
   1014     object,
   1015     local,
   1016     uuid(75b68faa-347d-4159-8f45-a0640f01cd9a)
   1017 ]
   1018 interface ID3D11BlendState : ID3D11DeviceChild
   1019 {
   1020     void GetDesc(
   1021         [out] D3D11_BLEND_DESC *pDesc);
   1022 }
   1023 
   1024 [
   1025     object,
   1026     local,
   1027     uuid(48570b85-d1ee-4fcd-a250-eb350722b037)
   1028 ]
   1029 interface ID3D11Buffer : ID3D11Resource
   1030 {
   1031     void GetDesc(
   1032         [out] D3D11_BUFFER_DESC *pDesc);
   1033 }
   1034 
   1035 [
   1036     object,
   1037     local,
   1038     uuid(a6cd7faa-b0b7-4a2f-9436-8662a65797cb)
   1039 ]
   1040 interface ID3D11ClassInstance : ID3D11DeviceChild
   1041 {
   1042     void GetClassLinkage(
   1043         [out] ID3D11ClassLinkage **ppLinkage);
   1044     void GetDesc(
   1045         [out] D3D11_CLASS_INSTANCE_DESC *pDesc);
   1046     void GetInstanceName(
   1047         [out] LPSTR pInstanceName,
   1048         [in, out] SIZE_T *pBufferLength);
   1049     void GetTypeName(
   1050         [out] LPSTR pTypeName,
   1051         [in, out] SIZE_T *pBufferLength);
   1052 }
   1053 
   1054 [
   1055     object,
   1056     local,
   1057     uuid(ddf57cba-9543-46e4-a12b-f207a0fe7fed)
   1058 ]
   1059 interface ID3D11ClassLinkage : ID3D11DeviceChild
   1060 {
   1061     HRESULT GetClassInstance(
   1062         [in] LPCSTR pClassInstanceName,
   1063         [in] UINT InstanceIndex,
   1064         [out] ID3D11ClassInstance **ppInstance);
   1065     HRESULT CreateClassInstance(
   1066         [in] LPCSTR pClassTypeName,
   1067         [in] UINT ConstantBufferOffset,
   1068         [in] UINT ConstantVectorOffset,
   1069         [in] UINT TextureOffset,
   1070         [in] UINT SamplerOffset,
   1071         [out] ID3D11ClassInstance **ppInstance);
   1072 }
   1073 
   1074 [
   1075     object,
   1076     local,
   1077     uuid(a24bc4d1-769e-43f7-8013-98ff566c18e2)
   1078 ]
   1079 interface ID3D11CommandList : ID3D11DeviceChild
   1080 {
   1081     UINT GetContextFlags();
   1082 }
   1083 
   1084 [
   1085     object,
   1086     local,
   1087     uuid(4f5b196e-c2bd-495e-bd01-1fded38e4969)
   1088 ]
   1089 interface ID3D11ComputeShader : ID3D11DeviceChild
   1090 {
   1091 }
   1092 
   1093 [
   1094     object,
   1095     local,
   1096     uuid(6e8c49fb-a371-4770-b440-29086022b741)
   1097 ]
   1098 interface ID3D11Counter : ID3D11Asynchronous
   1099 {
   1100     void GetDesc(
   1101         [out] D3D11_COUNTER_DESC *pDesc);
   1102 }
   1103 
   1104 [
   1105     object,
   1106     local,
   1107     uuid(03823efb-8d8f-4e1c-9aa2-f64bb2cbfdf1)
   1108 ]
   1109 interface ID3D11DepthStencilState : ID3D11DeviceChild
   1110 {
   1111     void GetDesc(
   1112         [out] D3D11_DEPTH_STENCIL_DESC *pDesc);
   1113 }
   1114 
   1115 [
   1116     object,
   1117     local,
   1118     uuid(9fdac92a-1876-48c3-afad-25b94f84a9b6)
   1119 ]
   1120 interface ID3D11DepthStencilView : ID3D11View
   1121 {
   1122     void GetDesc(
   1123         [out] D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc);
   1124 }
   1125 
   1126 [
   1127     object,
   1128     local,
   1129     uuid(f582c508-0f36-490c-9977-31eece268cfa)
   1130 ]
   1131 interface ID3D11DomainShader : ID3D11DeviceChild
   1132 {
   1133 }
   1134 
   1135 [
   1136     object,
   1137     local,
   1138     uuid(38325b96-effb-4022-ba02-2e795b70275c)
   1139 ]
   1140 interface ID3D11GeometryShader : ID3D11DeviceChild
   1141 {
   1142 }
   1143 
   1144 [
   1145     object,
   1146     local,
   1147     uuid(8e5c6061-628a-4c8e-8264-bbe45cb3d5dd)
   1148 ]
   1149 interface ID3D11HullShader : ID3D11DeviceChild
   1150 {
   1151 }
   1152 
   1153 [
   1154     object,
   1155     local,
   1156     uuid(e4819ddc-4cf0-4025-bd26-5de82a3e07b7)
   1157 ]
   1158 interface ID3D11InputLayout : ID3D11DeviceChild
   1159 {
   1160 }
   1161 
   1162 [
   1163     object,
   1164     local,
   1165     uuid(ea82e40d-51dc-4f33-93d4-db7c9125ae8c)
   1166 ]
   1167 interface ID3D11PixelShader : ID3D11DeviceChild
   1168 {
   1169 }
   1170 
   1171 [
   1172     object,
   1173     local,
   1174     uuid(9eb576dd-9f77-4d86-81aa-8bab5fe490e2)
   1175 ]
   1176 interface ID3D11Predicate : ID3D11Query
   1177 {
   1178 }
   1179 
   1180 [
   1181     object,
   1182     local,
   1183     uuid(9bb4ab81-ab1a-4d8f-b506-fc04200b6ee7)
   1184 ]
   1185 interface ID3D11RasterizerState : ID3D11DeviceChild
   1186 {
   1187     void GetDesc(
   1188         [out] D3D11_RASTERIZER_DESC *pDesc);
   1189 }
   1190 
   1191 [
   1192     object,
   1193     local,
   1194     uuid(dfdba067-0b8d-4865-875b-d7b4516cc164)
   1195 ]
   1196 interface ID3D11RenderTargetView : ID3D11View
   1197 {
   1198     void GetDesc(
   1199         [out] D3D11_RENDER_TARGET_VIEW_DESC *pDesc);
   1200 }
   1201 
   1202 [
   1203     object,
   1204     local,
   1205     uuid(da6fea51-564c-4487-9810-f0d0f9b4e3a5)
   1206 ]
   1207 interface ID3D11SamplerState : ID3D11DeviceChild
   1208 {
   1209     void GetDesc(
   1210         [out] D3D11_SAMPLER_DESC *pDesc);
   1211 }
   1212 
   1213 [
   1214     object,
   1215     local,
   1216     uuid(b0e06fe0-8192-4e1a-b1ca-36d7414710b2)
   1217 ]
   1218 interface ID3D11ShaderResourceView : ID3D11View
   1219 {
   1220     void GetDesc(
   1221         [out] D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc);
   1222 }
   1223 
   1224 [
   1225     object,
   1226     local,
   1227     uuid(f8fb5c27-c6b3-4f75-a4c8-439af2ef564c),
   1228 ]
   1229 interface ID3D11Texture1D : ID3D11Resource
   1230 {
   1231     void GetDesc(
   1232         [out] D3D11_TEXTURE1D_DESC *pDesc);
   1233 }
   1234 
   1235 [
   1236     object,
   1237     local,
   1238     uuid(6f15aaf2-d208-4e89-9ab4-489535d34f9c)
   1239 ]
   1240 interface ID3D11Texture2D : ID3D11Resource
   1241 {
   1242     void GetDesc(
   1243         [out] D3D11_TEXTURE2D_DESC *pDesc);
   1244 }
   1245 
   1246 [
   1247     object,
   1248     local,
   1249     uuid(037e866e-f56d-4357-a8af-9dabbe6e250e)
   1250 ]
   1251 interface ID3D11Texture3D : ID3D11Resource
   1252 {
   1253     void GetDesc(
   1254         [out] D3D11_TEXTURE3D_DESC *pDesc);
   1255 }
   1256 
   1257 [
   1258     object,
   1259     local,
   1260     uuid(28acf509-7f5c-48f6-8611-f316010a6380)
   1261 ]
   1262 interface ID3D11UnorderedAccessView : ID3D11View
   1263 {
   1264     void GetDesc(
   1265         [out] D3D11_UNORDERED_ACCESS_VIEW_DESC *pDesc);
   1266 }
   1267 
   1268 [
   1269     object,
   1270     local,
   1271     uuid(3b301d64-d678-4289-8897-22f8928b72f3)
   1272 ]
   1273 interface ID3D11VertexShader : ID3D11DeviceChild
   1274 {
   1275 }
   1276 
   1277 [
   1278     object,
   1279     local,
   1280     uuid(c0bfa96c-e089-44fb-8eaf-26f8796190da)
   1281 ]
   1282 interface ID3D11DeviceContext : ID3D11DeviceChild
   1283 {
   1284     void VSSetConstantBuffers(
   1285         [in] UINT StartSlot,
   1286         [in] UINT NumBuffers,
   1287         [in] ID3D11Buffer *const *ppConstantBuffers);
   1288     void PSSetShaderResources(
   1289         [in] UINT StartSlot,
   1290         [in] UINT NumViews,
   1291         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   1292     void PSSetShader(
   1293         [in] ID3D11PixelShader *pPixelShader,
   1294         [in] ID3D11ClassInstance *const *ppClassInstances,
   1295         UINT NumClassInstances);
   1296     void PSSetSamplers(
   1297         [in] UINT StartSlot,
   1298         [in] UINT NumSamplers,
   1299         [in] ID3D11SamplerState *const *ppSamplers);
   1300     void VSSetShader(
   1301         [in] ID3D11VertexShader *pVertexShader,
   1302         [in] ID3D11ClassInstance *const *ppClassInstances,
   1303         UINT NumClassInstances);
   1304     void DrawIndexed(
   1305         [in] UINT IndexCount,
   1306         [in] UINT StartIndexLocation,
   1307         [in] INT BaseVertexLocation);
   1308     void Draw(
   1309         [in] UINT VertexCount,
   1310         [in] UINT StartVertexLocation);
   1311     HRESULT Map(
   1312         [in] ID3D11Resource *pResource,
   1313         [in] UINT Subresource,
   1314         [in] D3D11_MAP MapType,
   1315         [in] UINT MapFlags,
   1316         [out] D3D11_MAPPED_SUBRESOURCE *pMappedResource);
   1317     void Unmap(
   1318         [in] ID3D11Resource *pResource,
   1319         [in] UINT Subresource);
   1320     void PSSetConstantBuffers(
   1321         [in] UINT StartSlot,
   1322         [in] UINT NumBuffers,
   1323         [in] ID3D11Buffer *const *ppConstantBuffers);
   1324     void IASetInputLayout(
   1325         [in] ID3D11InputLayout *pInputLayout);
   1326     void IASetVertexBuffers(
   1327         [in] UINT StartSlot,
   1328         [in] UINT NumBuffers,
   1329         [in] ID3D11Buffer *const *ppVertexBuffers,
   1330         [in] const UINT *pStrides,
   1331         [in] const UINT *pOffsets);
   1332     void IASetIndexBuffer(
   1333         [in] ID3D11Buffer *pIndexBuffer,
   1334         [in] DXGI_FORMAT  Format,
   1335         [in] UINT Offset);
   1336     void DrawIndexedInstanced(
   1337         [in] UINT IndexCountPerInstance,
   1338         [in] UINT InstanceCount,
   1339         [in] UINT StartIndexLocation,
   1340         [in] INT BaseVertexLocation,
   1341         [in] UINT StartInstanceLocation);
   1342     void DrawInstanced(
   1343         [in] UINT VertexCountPerInstance,
   1344         [in] UINT InstanceCount,
   1345         [in] UINT StartVertexLocation,
   1346         [in] UINT StartInstanceLocation);
   1347     void GSSetConstantBuffers(
   1348         [in] UINT StartSlot,
   1349         [in] UINT NumBuffers,
   1350         [in] ID3D11Buffer *const *ppConstantBuffers);
   1351     void GSSetShader(
   1352         [in] ID3D11GeometryShader *pShader,
   1353         [in] ID3D11ClassInstance *const *ppClassInstances,
   1354         UINT NumClassInstances);
   1355     void IASetPrimitiveTopology(
   1356         [in] D3D11_PRIMITIVE_TOPOLOGY Topology);
   1357     void VSSetShaderResources(
   1358         [in] UINT StartSlot,
   1359         [in] UINT NumViews,
   1360         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   1361     void VSSetSamplers(
   1362         [in] UINT StartSlot,
   1363         [in] UINT NumSamplers,
   1364         [in] ID3D11SamplerState *const *ppSamplers);
   1365     void Begin(
   1366         [in] ID3D11Asynchronous *pAsync);
   1367     void End(
   1368         [in] ID3D11Asynchronous *pAsync);
   1369     HRESULT GetData(
   1370         [in] ID3D11Asynchronous *pAsync,
   1371         [in] void *pData,
   1372         [in] UINT DataSize,
   1373         [in] UINT GetDataFlags);
   1374     void SetPredication(
   1375         [in] ID3D11Predicate *pPredicate,
   1376         [in] BOOL PredicateValue);
   1377     void GSSetShaderResources(
   1378         [in] UINT StartSlot,
   1379         [in] UINT NumViews,
   1380         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   1381     void GSSetSamplers(
   1382         [in] UINT StartSlot,
   1383         [in] UINT NumSamplers,
   1384         [in] ID3D11SamplerState *const *ppSamplers);
   1385     void OMSetRenderTargets(
   1386         [in] UINT NumViews,
   1387         [in] ID3D11RenderTargetView *const *ppRenderTargetViews,
   1388         [in] ID3D11DepthStencilView *pDepthStencilView);
   1389     void OMSetRenderTargetsAndUnorderedAccessViews(
   1390         [in] UINT NumRTVs,
   1391         [in] ID3D11RenderTargetView *const *ppRenderTargetViews,
   1392         [in] ID3D11DepthStencilView *pDepthStencilView,
   1393         [in] UINT UAVStartSlot,
   1394         [in] UINT NumUAVs,
   1395         [in] ID3D11UnorderedAccessView *const *ppUnorderedAccessViews,
   1396         [in] const UINT *pUAVInitialCounts);
   1397     void OMSetBlendState(
   1398         [in] ID3D11BlendState *pBlendState,
   1399         [in] const FLOAT BlendFactor[4],
   1400         [in] UINT SampleMask);
   1401     void OMSetDepthStencilState(
   1402         [in] ID3D11DepthStencilState *pDepthStencilState,
   1403         [in] UINT StencilRef);
   1404     void SOSetTargets(
   1405         [in] UINT NumBuffers,
   1406         [in] ID3D11Buffer *const *ppSOTargets,
   1407         [in] const UINT *pOffsets);
   1408     void DrawAuto();
   1409     void DrawIndexedInstancedIndirect(
   1410         [in] ID3D11Buffer *pBufferForArgs,
   1411         [in] UINT AlignedByteOffsetForArgs);
   1412     void DrawInstancedIndirect(
   1413         [in] ID3D11Buffer *pBufferForArgs,
   1414         [in] UINT AlignedByteOffsetForArgs);
   1415     void Dispatch(
   1416         [in] UINT ThreadGroupCountX,
   1417         [in] UINT ThreadGroupCountY,
   1418         [in] UINT ThreadGroupCountZ);
   1419     void DispatchIndirect(
   1420         [in] ID3D11Buffer *pBufferForArgs,
   1421         [in] UINT AlignedByteOffsetForArgs);
   1422     void RSSetState(
   1423         [in] ID3D11RasterizerState *pRasterizerState);
   1424     void RSSetViewports(
   1425         [in] UINT NumViewports,
   1426         [in] const D3D11_VIEWPORT *pViewports);
   1427     void RSSetScissorRects(
   1428         [in] UINT NumRects,
   1429         [in] const D3D11_RECT *pRects);
   1430     void CopySubresourceRegion(
   1431         [in] ID3D11Resource *pDstResource,
   1432         [in] UINT DstSubresource,
   1433         [in] UINT DstX,
   1434         [in] UINT DstY,
   1435         [in] UINT DstZ,
   1436         [in] ID3D11Resource *pSrcResource,
   1437         [in] UINT SrcSubresource,
   1438         [in] const D3D11_BOX *pSrcBox);
   1439     void CopyResource(
   1440         [in] ID3D11Resource *pDstResource,
   1441         [in] ID3D11Resource *pSrcResource);
   1442     void UpdateSubresource(
   1443         [in] ID3D11Resource *pDstResource,
   1444         [in] UINT DstSubresource,
   1445         [in] const D3D11_BOX *pDstBox,
   1446         [in] const void *pSrcData,
   1447         [in] UINT SrcRowPitch,
   1448         [in] UINT SrcDepthPitch);
   1449     void CopyStructureCount(
   1450         [in] ID3D11Buffer *pDstBuffer,
   1451         [in] UINT DstAlignedByteOffset,
   1452         [in] ID3D11UnorderedAccessView *pSrcView);
   1453     void ClearRenderTargetView(
   1454         [in] ID3D11RenderTargetView *pRenderTargetView,
   1455         [in] const FLOAT ColorRGBA[4]);
   1456     void ClearUnorderedAccessViewUint(
   1457         [in] ID3D11UnorderedAccessView *pUnorderedAccessView,
   1458         [in] const UINT Values[4]);
   1459     void ClearUnorderedAccessViewFloat(
   1460         [in] ID3D11UnorderedAccessView *pUnorderedAccessView,
   1461         [in] const FLOAT Values[4]);
   1462     void ClearDepthStencilView(
   1463         [in] ID3D11DepthStencilView *pDepthStencilView,
   1464         [in] UINT ClearFlags,
   1465         [in] FLOAT Depth,
   1466         [in] UINT8 Stencil);
   1467     void GenerateMips(
   1468         [in] ID3D11ShaderResourceView *pShaderResourceView);
   1469     void SetResourceMinLOD(
   1470         [in] ID3D11Resource *pResource, FLOAT MinLOD);
   1471     FLOAT GetResourceMinLOD(
   1472         [in] ID3D11Resource *pResource);
   1473     void ResolveSubresource(
   1474         [in] ID3D11Resource *pDstResource,
   1475         [in] UINT DstSubresource,
   1476         [in] ID3D11Resource *pSrcResource,
   1477         [in] UINT SrcSubresource,
   1478         [in] DXGI_FORMAT Format);
   1479     void ExecuteCommandList(
   1480         [in] ID3D11CommandList *pCommandList,
   1481         BOOL RestoreContextState);
   1482     void HSSetShaderResources(
   1483         [in] UINT StartSlot,
   1484         [in] UINT NumViews,
   1485         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   1486     void HSSetShader(
   1487         [in] ID3D11HullShader *pHullShader,
   1488         [in] ID3D11ClassInstance *const *ppClassInstances,
   1489         UINT NumClassInstances);
   1490     void HSSetSamplers(
   1491         [in] UINT StartSlot,
   1492         [in] UINT NumSamplers,
   1493         [in] ID3D11SamplerState *const *ppSamplers);
   1494     void HSSetConstantBuffers(
   1495         [in] UINT StartSlot,
   1496         [in] UINT NumBuffers,
   1497         [in] ID3D11Buffer *const *ppConstantBuffers);
   1498     void DSSetShaderResources(
   1499         [in] UINT StartSlot,
   1500         [in] UINT NumViews,
   1501         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   1502     void DSSetShader(
   1503         [in] ID3D11DomainShader *pDomainShader,
   1504         [in] ID3D11ClassInstance *const *ppClassInstances,
   1505         UINT NumClassInstances);
   1506     void DSSetSamplers(
   1507         [in] UINT StartSlot,
   1508         [in] UINT NumSamplers,
   1509         [in] ID3D11SamplerState *const *ppSamplers);
   1510     void DSSetConstantBuffers(
   1511         [in] UINT StartSlot,
   1512         [in] UINT NumBuffers,
   1513         [in] ID3D11Buffer *const *ppConstantBuffers);
   1514     void CSSetShaderResources(
   1515         [in] UINT StartSlot,
   1516         [in] UINT NumViews,
   1517         [in] ID3D11ShaderResourceView *const *ppShaderResourceViews);
   1518     void CSSetUnorderedAccessViews(
   1519         [in] UINT StartSlot,
   1520         [in] UINT NumUAVs,
   1521         [in] ID3D11UnorderedAccessView *const *ppUnorderedAccessViews,
   1522         [in] const UINT *pUAVInitialCounts);
   1523     void CSSetShader(
   1524         [in] ID3D11ComputeShader *pComputeShader,
   1525         [in] ID3D11ClassInstance *const *ppClassInstances,
   1526         UINT NumClassInstances);
   1527     void CSSetSamplers(
   1528         [in] UINT StartSlot,
   1529         [in] UINT NumSamplers,
   1530         [in] ID3D11SamplerState *const *ppSamplers);
   1531     void CSSetConstantBuffers(
   1532         [in] UINT StartSlot,
   1533         [in] UINT NumBuffers,
   1534         [in] ID3D11Buffer *const *ppConstantBuffers);
   1535     void VSGetConstantBuffers(
   1536         [in] UINT StartSlot,
   1537         [in] UINT NumBuffers,
   1538         [out] ID3D11Buffer **ppConstantBuffers);
   1539     void PSGetShaderResources(
   1540         [in] UINT StartSlot,
   1541         [in] UINT NumViews,
   1542         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   1543     void PSGetShader(
   1544         [out] ID3D11PixelShader **ppPixelShader,
   1545         [out] ID3D11ClassInstance **ppClassInstances,
   1546         [in, out] UINT *pNumClassInstances);
   1547     void PSGetSamplers(
   1548         [in] UINT StartSlot,
   1549         [in] UINT NumSamplers,
   1550         [out] ID3D11SamplerState **ppSamplers);
   1551     void VSGetShader(
   1552         [out] ID3D11VertexShader **ppVertexShader,
   1553         [out] ID3D11ClassInstance **ppClassInstances,
   1554         [in, out] UINT *pNumClassInstances);
   1555     void PSGetConstantBuffers(
   1556         [in] UINT StartSlot,
   1557         [in] UINT NumBuffers,
   1558         [out] ID3D11Buffer **ppConstantBuffers);
   1559     void IAGetInputLayout(
   1560         [out] ID3D11InputLayout **ppInputLayout);
   1561     void IAGetVertexBuffers(
   1562         [in] UINT StartSlot,
   1563         [in] UINT NumBuffers,
   1564         [out] ID3D11Buffer **ppVertexBuffers,
   1565         [out] UINT *pStrides,
   1566         [out] UINT *pOffsets);
   1567     void IAGetIndexBuffer(
   1568         [out] ID3D11Buffer **pIndexBuffer,
   1569         [out] DXGI_FORMAT* Format,
   1570         [out] UINT* Offset);
   1571     void GSGetConstantBuffers(
   1572         [in] UINT StartSlot,
   1573         [in] UINT NumBuffers,
   1574         [out] ID3D11Buffer **ppConstantBuffers);
   1575     void GSGetShader(
   1576         [out] ID3D11GeometryShader **ppGeometryShader,
   1577         [out] ID3D11ClassInstance **ppClassInstances,
   1578         [in, out] UINT *pNumClassInstances);
   1579     void IAGetPrimitiveTopology(
   1580         [out] D3D11_PRIMITIVE_TOPOLOGY *pTopology);
   1581     void VSGetShaderResources(
   1582         [in] UINT StartSlot,
   1583         [in] UINT NumViews,
   1584         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   1585     void VSGetSamplers(
   1586         [in] UINT StartSlot,
   1587         [in] UINT NumSamplers,
   1588         [out] ID3D11SamplerState **ppSamplers);
   1589     void GetPredication(
   1590         [out] ID3D11Predicate **ppPredicate,
   1591         [out] BOOL *pPredicateValue);
   1592     void GSGetShaderResources(
   1593         [in] UINT StartSlot,
   1594         [in] UINT NumViews,
   1595         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   1596     void GSGetSamplers(
   1597         [in] UINT StartSlot,
   1598         [in] UINT NumSamplers,
   1599         [out] ID3D11SamplerState **ppSamplers);
   1600     void OMGetRenderTargets(
   1601         [in] UINT NumViews,
   1602         [out] ID3D11RenderTargetView **ppRenderTargetViews,
   1603         [out] ID3D11DepthStencilView **ppDepthStencilView);
   1604     void OMGetRenderTargetsAndUnorderedAccessViews(
   1605         [in] UINT NumRTVs,
   1606         [out] ID3D11RenderTargetView **ppRenderTargetViews,
   1607         [out] ID3D11DepthStencilView **ppDepthStencilView,
   1608         [in] UINT UAVStartSlot,
   1609         [out] UINT NumUAVs,
   1610         [out] ID3D11UnorderedAccessView **ppUnorderedAccessViews);
   1611     void OMGetBlendState(
   1612         [out] ID3D11BlendState **ppBlendState,
   1613         [out] FLOAT BlendFactor[4],
   1614         [out] UINT *pSampleMask);
   1615     void OMGetDepthStencilState(
   1616         [out] ID3D11DepthStencilState **ppDepthStencilState,
   1617         [out] UINT *pStencilRef);
   1618     void SOGetTargets(
   1619         [in] UINT NumBuffers,
   1620         [out] ID3D11Buffer **ppSOTargets);
   1621     void RSGetState(
   1622         [out] ID3D11RasterizerState **ppRasterizerState);
   1623     void RSGetViewports(
   1624         [in, out] UINT *pNumViewports,
   1625         [out] D3D11_VIEWPORT *pViewports);
   1626     void RSGetScissorRects(
   1627         [in, out] UINT *pNumRects,
   1628         [out] D3D11_RECT *pRects);
   1629     void HSGetShaderResources(
   1630         [in] UINT StartSlot,
   1631         [in] UINT NumViews,
   1632         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   1633     void HSGetShader(
   1634         [out] ID3D11HullShader **ppHullShader,
   1635         [out] ID3D11ClassInstance **ppClassInstances,
   1636         [in, out] UINT *pNumClassInstances);
   1637     void HSGetSamplers(
   1638         [in] UINT StartSlot,
   1639         [in] UINT NumSamplers,
   1640         [out] ID3D11SamplerState **ppSamplers);
   1641     void HSGetConstantBuffers(
   1642         [in] UINT StartSlot,
   1643         [in] UINT NumBuffers,
   1644         [out] ID3D11Buffer **ppConstantBuffers);
   1645     void DSGetShaderResources(
   1646         [in] UINT StartSlot,
   1647         [in] UINT NumViews,
   1648         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   1649     void DSGetShader(
   1650         [out] ID3D11DomainShader **ppDomainShader,
   1651         [out] ID3D11ClassInstance **ppClassInstances,
   1652         [in, out] UINT *pNumClassInstances);
   1653     void DSGetSamplers(
   1654         [in] UINT StartSlot,
   1655         [in] UINT NumSamplers,
   1656         [out] ID3D11SamplerState **ppSamplers);
   1657     void DSGetConstantBuffers(
   1658         [in] UINT StartSlot,
   1659         [in] UINT NumBuffers,
   1660         [out] ID3D11Buffer **ppConstantBuffers);
   1661     void CSGetShaderResources(
   1662         [in] UINT StartSlot,
   1663         [in] UINT NumViews,
   1664         [out] ID3D11ShaderResourceView **ppShaderResourceViews);
   1665     void CSGetUnorderedAccessViews(
   1666         [in] UINT StartSlot,
   1667         [in] UINT NumUAVs,
   1668         [out] ID3D11UnorderedAccessView **ppUnorderedAccessViews);
   1669     void CSGetShader(
   1670         [out] ID3D11ComputeShader **ppComputeShader,
   1671         [out] ID3D11ClassInstance **ppClassInstances,
   1672         [in, out] UINT *pNumClassInstances);
   1673     void CSGetSamplers(
   1674         [in] UINT StartSlot,
   1675         [in] UINT NumSamplers,
   1676         [out] ID3D11SamplerState **ppSamplers);
   1677     void CSGetConstantBuffers(
   1678         [in] UINT StartSlot,
   1679         [in] UINT NumBuffers,
   1680         [out] ID3D11Buffer **ppConstantBuffers);
   1681     void ClearState();
   1682     void Flush();
   1683     D3D11_DEVICE_CONTEXT_TYPE GetType();
   1684     UINT GetContextFlags();
   1685     HRESULT FinishCommandList(
   1686         BOOL RestoreDeferredContextState,
   1687         [out] ID3D11CommandList **ppCommandList);
   1688 }
   1689 
   1690 [
   1691     object,
   1692     local,
   1693     uuid(db6f6ddb-ac77-4e88-8253-819df9bbf140)
   1694 ]
   1695 interface ID3D11Device : IUnknown
   1696 {
   1697     HRESULT CreateBuffer(
   1698         [in] const D3D11_BUFFER_DESC *pDesc,
   1699         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
   1700         [out] ID3D11Buffer **ppBuffer);
   1701     HRESULT CreateTexture1D(
   1702         [in] const D3D11_TEXTURE1D_DESC *pDesc,
   1703         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
   1704         [out] ID3D11Texture1D **ppTexture1D);
   1705     HRESULT CreateTexture2D(
   1706         [in] const D3D11_TEXTURE2D_DESC *pDesc,
   1707         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
   1708         [out] ID3D11Texture2D **ppTexture2D);
   1709     HRESULT CreateTexture3D(
   1710         [in] const D3D11_TEXTURE3D_DESC *pDesc,
   1711         [in] const D3D11_SUBRESOURCE_DATA *pInitialData,
   1712         [out] ID3D11Texture3D **ppTexture3D);
   1713     HRESULT CreateShaderResourceView(
   1714         [in] ID3D11Resource *pResource,
   1715         [in] const D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc,
   1716         [out] ID3D11ShaderResourceView **ppSRView);
   1717     HRESULT CreateUnorderedAccessView(
   1718         [in] ID3D11Resource *pResource,
   1719         [in] const D3D11_UNORDERED_ACCESS_VIEW_DESC *pDesc,
   1720         [out] ID3D11UnorderedAccessView **ppUAView);
   1721     HRESULT CreateRenderTargetView(
   1722         [in] ID3D11Resource *pResource,
   1723         [in] const D3D11_RENDER_TARGET_VIEW_DESC *pDesc,
   1724         [out] ID3D11RenderTargetView **ppRTView);
   1725     HRESULT CreateDepthStencilView(
   1726         [in] ID3D11Resource *pResource,
   1727         [in] const D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc,
   1728         [out] ID3D11DepthStencilView **ppDepthStencilView);
   1729     HRESULT CreateInputLayout(
   1730         [in] const D3D11_INPUT_ELEMENT_DESC *pInputElementDescs,
   1731         [in] UINT NumElements,
   1732         [in] const void *pShaderBytecodeWithInputSignature,
   1733         [in] SIZE_T BytecodeLength,
   1734         [out] ID3D11InputLayout **ppInputLayout);
   1735     HRESULT CreateVertexShader(
   1736         [in] const void *pShaderBytecode,
   1737         [in] SIZE_T BytecodeLength,
   1738         [in] ID3D11ClassLinkage *pClassLinkage,
   1739         [out] ID3D11VertexShader **ppVertexShader);
   1740     HRESULT CreateGeometryShader(
   1741         [in] const void *pShaderBytecode,
   1742         [in] SIZE_T BytecodeLength,
   1743         [in] ID3D11ClassLinkage *pClassLinkage,
   1744         [out] ID3D11GeometryShader **ppGeometryShader);
   1745     HRESULT CreateGeometryShaderWithStreamOutput(
   1746         [in] const void *pShaderBytecode,
   1747         [in] SIZE_T BytecodeLength,
   1748         [in] const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
   1749         [in] UINT NumEntries,
   1750         [in] const UINT *pBufferStrides,
   1751         [in] UINT NumStrides,
   1752         [in] UINT RasterizedStream,
   1753         [in] ID3D11ClassLinkage *pClassLinkage,
   1754         [out] ID3D11GeometryShader **ppGeometryShader);
   1755     HRESULT CreatePixelShader(
   1756         [in] const void *pShaderBytecode,
   1757         [in] SIZE_T BytecodeLength,
   1758         [in] ID3D11ClassLinkage *pClassLinkage,
   1759         [out] ID3D11PixelShader **ppPixelShader);
   1760     HRESULT CreateHullShader(
   1761         [in] const void *pShaderBytecode,
   1762         [in] SIZE_T BytecodeLength,
   1763         [in] ID3D11ClassLinkage *pClassLinkage,
   1764         [out] ID3D11HullShader **ppHullShader);
   1765     HRESULT CreateDomainShader(
   1766         [in] const void *pShaderBytecode,
   1767         [in] SIZE_T BytecodeLength,
   1768         [in] ID3D11ClassLinkage *pClassLinkage,
   1769         [out] ID3D11DomainShader **ppDomainShader);
   1770     HRESULT CreateComputeShader(
   1771         [in] const void *pShaderBytecode,
   1772         [in] SIZE_T BytecodeLength,
   1773         [in] ID3D11ClassLinkage *pClassLinkage,
   1774         [out] ID3D11ComputeShader **ppComputeShader);
   1775     HRESULT CreateClassLinkage(
   1776         [out] ID3D11ClassLinkage **ppLinkage);
   1777     HRESULT CreateBlendState(
   1778         [in] const D3D11_BLEND_DESC *pBlendStateDesc,
   1779         [out] ID3D11BlendState **ppBlendState);
   1780     HRESULT CreateDepthStencilState(
   1781         [in] const D3D11_DEPTH_STENCIL_DESC *pDepthStencilDesc,
   1782         [out] ID3D11DepthStencilState **ppDepthStencilState);
   1783     HRESULT CreateRasterizerState(
   1784         [in] const D3D11_RASTERIZER_DESC *pRasterizerDesc,
   1785         [out] ID3D11RasterizerState **ppRasterizerState);
   1786     HRESULT CreateSamplerState(
   1787         [in] const D3D11_SAMPLER_DESC *pSamplerDesc,
   1788         [out] ID3D11SamplerState **ppSamplerState);
   1789     HRESULT CreateQuery(
   1790         [in] const D3D11_QUERY_DESC *pQueryDesc,
   1791         [out] ID3D11Query **ppQuery);
   1792     HRESULT CreatePredicate(
   1793         [in] const D3D11_QUERY_DESC *pPredicateDesc,
   1794         [out] ID3D11Predicate **ppPredicate);
   1795     HRESULT CreateCounter(
   1796         [in] const D3D11_COUNTER_DESC *pCounterDesc,
   1797         [out] ID3D11Counter **ppCounter);
   1798     HRESULT CreateDeferredContext(
   1799         UINT ContextFlags,
   1800         [out] ID3D11DeviceContext **ppDeferredContext);
   1801     HRESULT OpenSharedResource(
   1802         [in] HANDLE hResource,
   1803         [in] REFIID ReturnedInterface,
   1804         [out] void  **ppResource);
   1805     HRESULT CheckFormatSupport(
   1806         [in] DXGI_FORMAT Format,
   1807         [out] UINT *pFormatSupport);
   1808     HRESULT CheckMultisampleQualityLevels(
   1809         [in] DXGI_FORMAT Format,
   1810         [in] UINT        SampleCount,
   1811         [out] UINT *pNumQualityLevels);
   1812     void CheckCounterInfo(
   1813         [out] D3D11_COUNTER_INFO *pCounterInfo);
   1814     HRESULT CheckCounter(
   1815         [in] const D3D11_COUNTER_DESC *pDesc,
   1816         [out] D3D11_COUNTER_TYPE *pType,
   1817         [out] UINT *pActiveCounters,
   1818         [out] LPSTR szName,
   1819         [in, out] UINT *pNameLength,
   1820         [out] LPSTR szUnits,
   1821         [in, out] UINT *pUnitsLength,
   1822         [out] LPSTR szDescription,
   1823         [in, out] UINT *pDescriptionLength);
   1824     HRESULT CheckFeatureSupport(
   1825         D3D11_FEATURE Feature,
   1826         [out] void *pFeatureSupportData,
   1827         UINT FeatureSupportDataSize);
   1828     HRESULT GetPrivateData(
   1829         [in] REFGUID guid,
   1830         [in, out] UINT *pDataSize,
   1831         [out] void *pData);
   1832     HRESULT SetPrivateData(
   1833         [in] REFGUID guid,
   1834         [in] UINT DataSize,
   1835         [in] const void *pData);
   1836     HRESULT SetPrivateDataInterface(
   1837         [in] REFGUID guid,
   1838         [in] const IUnknown *pData);
   1839     D3D_FEATURE_LEVEL GetFeatureLevel();
   1840     UINT GetCreationFlags();
   1841     HRESULT GetDeviceRemovedReason();
   1842     void GetImmediateContext(
   1843         [out] ID3D11DeviceContext **ppImmediateContext);
   1844     HRESULT SetExceptionMode(UINT RaiseFlags);
   1845     UINT GetExceptionMode();
   1846 }
   1847 
   1848 typedef enum D3D11_CREATE_DEVICE_FLAG {
   1849     D3D11_CREATE_DEVICE_SINGLETHREADED  = 0x0001,
   1850     D3D11_CREATE_DEVICE_DEBUG           = 0x0002,
   1851     D3D11_CREATE_DEVICE_SWITCH_TO_REF   = 0x0004,
   1852     D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x0008,
   1853     D3D11_CREATE_DEVICE_BGRA_SUPPORT    = 0x0020,
   1854     D3D11_CREATE_DEVICE_DEBUGGABLE      = 0x0040,
   1855     D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x0080,
   1856     D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x0100,
   1857     D3D11_CREATE_DEVICE_VIDEO_SUPPORT   = 0x0800
   1858 } D3D11_CREATE_DEVICE_FLAG;
   1859 
   1860 const UINT D3D11_SDK_VERSION = 7;
   1861 
   1862 cpp_quote("#include <d3d10_1.h>")
   1863 cpp_quote("#ifndef D3D11_IGNORE_SDK_LAYERS")
   1864 cpp_quote("/* FIXME: # include <d3d11sdklayers.h> */")
   1865 cpp_quote("#endif")
   1866 cpp_quote("#include <d3d10misc.h>")
   1867 cpp_quote("#include <d3d10shader.h>")
   1868 cpp_quote("#include <d3d10effect.h>")
   1869 cpp_quote("#include <d3d10_1shader.h>")
   1870