/**************************************************************************
 *
 * Copyright 2010 Luca Barbieri
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice (including the
 * next paragraph) shall be included in all copies or substantial
 * portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 **************************************************************************/

import "oaidl.idl";
import "ocidl.idl";
import "dxgi.idl";
import "d3dcommon.idl";

const unsigned int D3D11_SDK_VERSION = 7;

cpp_quote("#ifndef _D3D11_CONSTANTS")
cpp_quote("#define _D3D11_CONSTANTS")
const unsigned int D3D11_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
const unsigned int D3D11_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
const unsigned int D3D11_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
const unsigned int D3D11_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
const unsigned int D3D11_CLIP_OR_CULL_DISTANCE_COUNT = 8;
const unsigned int D3D11_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
const unsigned int D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
const unsigned int D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
const unsigned int D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
const unsigned int D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
const unsigned int D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
const unsigned int D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
const unsigned int D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
const unsigned int D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
const unsigned int D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
const unsigned int D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
const unsigned int D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
const unsigned int D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
const unsigned int D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
const unsigned int D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
const unsigned int D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
const unsigned int D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
const unsigned int D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
const unsigned int D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
const unsigned int D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
const int D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
const int D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
const unsigned int D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
const unsigned int D3D11_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
const unsigned int D3D11_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
const unsigned int D3D11_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
const unsigned int D3D11_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
const unsigned int D3D11_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
const unsigned int D3D11_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
const unsigned int D3D11_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
const unsigned int D3D11_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
const unsigned int D3D11_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
const unsigned int D3D11_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
const unsigned int D3D11_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
const unsigned int D3D11_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
const unsigned int D3D11_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
const unsigned int D3D11_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
const unsigned int D3D11_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
const unsigned int D3D11_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
const unsigned int D3D11_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
const unsigned int D3D11_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
const unsigned int D3D11_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
const unsigned int D3D11_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
const unsigned int D3D11_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
const unsigned int D3D11_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
const unsigned int D3D11_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
const unsigned int D3D11_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
const unsigned int D3D11_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
const unsigned int D3D11_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
const unsigned int D3D11_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
const unsigned int D3D11_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
const unsigned int D3D11_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
const unsigned int D3D11_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
const unsigned int D3D11_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
const unsigned int D3D11_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
const unsigned int D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
const unsigned int D3D11_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
const unsigned int D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
const unsigned int D3D11_CS_4_X_THREAD_GROUP_MAX_X = 768;
const unsigned int D3D11_CS_4_X_THREAD_GROUP_MAX_Y = 768;
const unsigned int D3D11_CS_4_X_UAV_REGISTER_COUNT = 1;
const unsigned int D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
const unsigned int D3D11_CS_TGSM_REGISTER_COUNT = 8192;
const unsigned int D3D11_CS_TGSM_REGISTER_READS_PER_INST = 1;
const unsigned int D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
const unsigned int D3D11_CS_THREAD_GROUP_MAX_X = 1024;
const unsigned int D3D11_CS_THREAD_GROUP_MAX_Y = 1024;
const unsigned int D3D11_CS_THREAD_GROUP_MAX_Z = 64;
const unsigned int D3D11_CS_THREAD_GROUP_MIN_X = 1;
const unsigned int D3D11_CS_THREAD_GROUP_MIN_Y = 1;
const unsigned int D3D11_CS_THREAD_GROUP_MIN_Z = 1;
const unsigned int D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
const float D3D11_DEFAULT_BLEND_FACTOR_ALPHA = 1.0;
const float D3D11_DEFAULT_BLEND_FACTOR_BLUE = 1.0;
const float D3D11_DEFAULT_BLEND_FACTOR_GREEN = 1.0;
const float D3D11_DEFAULT_BLEND_FACTOR_RED = 1.0;
const float D3D11_DEFAULT_BORDER_COLOR_COMPONENT = 0.0;
const unsigned int D3D11_DEFAULT_DEPTH_BIAS = 0;
const float D3D11_DEFAULT_DEPTH_BIAS_CLAMP = 0.0;
const unsigned int D3D11_DEFAULT_MAX_ANISOTROPY = 16;
const float D3D11_DEFAULT_MIP_LOD_BIAS = 0.0;
const unsigned int D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
const unsigned int D3D11_DEFAULT_SAMPLE_MASK = 0xffffffff;
const unsigned int D3D11_DEFAULT_SCISSOR_ENDX = 0;
const unsigned int D3D11_DEFAULT_SCISSOR_ENDY = 0;
const unsigned int D3D11_DEFAULT_SCISSOR_STARTX = 0;
const unsigned int D3D11_DEFAULT_SCISSOR_STARTY = 0;
const float D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = 0.0;
const unsigned int D3D11_DEFAULT_STENCIL_READ_MASK = 0xff;
const unsigned int D3D11_DEFAULT_STENCIL_REFERENCE = 0;
const unsigned int D3D11_DEFAULT_STENCIL_WRITE_MASK = 0xff;
const unsigned int D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
const unsigned int D3D11_DEFAULT_VIEWPORT_HEIGHT = 0;
const float D3D11_DEFAULT_VIEWPORT_MAX_DEPTH = 0.0;
const float D3D11_DEFAULT_VIEWPORT_MIN_DEPTH = 0.0;
const unsigned int D3D11_DEFAULT_VIEWPORT_TOPLEFTX = 0;
const unsigned int D3D11_DEFAULT_VIEWPORT_TOPLEFTY = 0;
const unsigned int D3D11_DEFAULT_VIEWPORT_WIDTH = 0;
const unsigned int D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
const unsigned int D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
const unsigned int D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
const unsigned int D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
const unsigned int D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
const unsigned int D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_DS_OUTPUT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_DS_OUTPUT_REGISTER_COUNT = 32;
const unsigned int D3D11_FLOAT16_FUSED_TOLERANCE_IN_ULP = 0.6;
const float D3D11_FLOAT32_MAX = 3.402823466e+38;
const float D3D11_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP = 0.6;
const float D3D11_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR = 2.4;
const float D3D11_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = 1.0;
const float D3D11_FLOAT_TO_SRGB_OFFSET = 0.055;
const float D3D11_FLOAT_TO_SRGB_SCALE_1 = 12.92;
const float D3D11_FLOAT_TO_SRGB_SCALE_2 = 1.055;
const float D3D11_FLOAT_TO_SRGB_THRESHOLD = 0.0031308;
const float D3D11_FTOI_INSTRUCTION_MAX_INPUT = 2147483647.999;
const float D3D11_FTOI_INSTRUCTION_MIN_INPUT = -2147483648.999;
const float D3D11_FTOU_INSTRUCTION_MAX_INPUT = 4294967295.999;
const float D3D11_FTOU_INSTRUCTION_MIN_INPUT = 0.0;
const unsigned int D3D11_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
const unsigned int D3D11_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
const unsigned int D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
const unsigned int D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
const unsigned int D3D11_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_GS_INPUT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_GS_INPUT_REGISTER_COUNT = 32;
const unsigned int D3D11_GS_INPUT_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_GS_INPUT_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_GS_INPUT_REGISTER_VERTICES = 32;
const unsigned int D3D11_GS_MAX_INSTANCE_COUNT = 32;
const unsigned int D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
const unsigned int D3D11_GS_OUTPUT_ELEMENTS = 32;
const unsigned int D3D11_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_GS_OUTPUT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_GS_OUTPUT_REGISTER_COUNT = 32;
const unsigned int D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
const unsigned int D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
const unsigned int D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff;
const unsigned int D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
const unsigned int D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
const unsigned int D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
const unsigned int D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff;
const float D3D11_HS_MAXTESSFACTOR_LOWER_BOUND = 1.0;
const float D3D11_HS_MAXTESSFACTOR_UPPER_BOUND = 64.0;
const unsigned int D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
const unsigned int D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
const unsigned int D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
const unsigned int D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
const unsigned int D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
const unsigned int D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
const unsigned int D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
const unsigned int D3D11_IA_INSTANCE_ID_BIT_COUNT = 32;
const unsigned int D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
const unsigned int D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
const unsigned int D3D11_IA_PRIMITIVE_ID_BIT_COUNT = 32;
const unsigned int D3D11_IA_VERTEX_ID_BIT_COUNT = 32;
const unsigned int D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
const unsigned int D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
const unsigned int D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
const unsigned int D3D11_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
const unsigned int D3D11_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
const unsigned int D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
const unsigned int D3D11_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
const float D3D11_LINEAR_GAMMA = 1.0;
const unsigned int D3D11_MAJOR_VERSION = 11;
const float D3D11_MAX_BORDER_COLOR_COMPONENT = 1.0;
const float D3D11_MAX_DEPTH = 1.0;
const unsigned int D3D11_MAX_MAXANISOTROPY = 16;
const unsigned int D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
const float D3D11_MAX_POSITION_VALUE = 3.402823466e+34;
const unsigned int D3D11_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
const float D3D11_MIN_BORDER_COLOR_COMPONENT = 0.0;
const float D3D11_MIN_DEPTH = 0.0;
const unsigned int D3D11_MIN_MAXANISOTROPY = 0;
const unsigned int D3D11_MINOR_VERSION = 0;
const float D3D11_MIP_LOD_BIAS_MAX = 15.99;
const float D3D11_MIP_LOD_BIAS_MIN = -16.0;
const unsigned int D3D11_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
const unsigned int D3D11_MIP_LOD_RANGE_BIT_COUNT = 8;
const float D3D11_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = 1.4;
const unsigned int D3D11_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
const unsigned int D3D11_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
const unsigned int D3D11_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
const unsigned int D3D11_PS_CS_UAV_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_PS_CS_UAV_REGISTER_COUNT = 8;
const unsigned int D3D11_PS_CS_UAV_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
const unsigned int D3D11_PS_FRONTFACING_DEFAULT_VALUE = 0xffffffff;
const unsigned int D3D11_PS_FRONTFACING_FALSE_VALUE = 0;
const unsigned int D3D11_PS_FRONTFACING_TRUE_VALUE = 0xffffffff;
const unsigned int D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_PS_INPUT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_PS_INPUT_REGISTER_COUNT = 32;
const unsigned int D3D11_PS_INPUT_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_PS_INPUT_REGISTER_READS_PER_INST = 2;
const float D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.0;
const unsigned int D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
const unsigned int D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
const unsigned int D3D11_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
const unsigned int D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_PS_OUTPUT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_PS_OUTPUT_REGISTER_COUNT = 8;
const float D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.5;
const unsigned int D3D11_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
const unsigned int D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
const unsigned int D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
const unsigned int D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
const unsigned int D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
const unsigned int D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
const unsigned int D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
const unsigned int D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
const unsigned int D3D11_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
const unsigned int D3D11_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
const unsigned int D3D11_REQ_MAXANISOTROPY = 16;
const unsigned int D3D11_REQ_MIP_LEVELS = 15;
const unsigned int D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
const unsigned int D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
const unsigned int D3D11_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
const unsigned int D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
const float D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM = 0.25;
const unsigned int D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
const unsigned int D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
const unsigned int D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
const unsigned int D3D11_REQ_TEXTURE1D_U_DIMENSION = 16384;
const unsigned int D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
const unsigned int D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
const unsigned int D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
const unsigned int D3D11_REQ_TEXTURECUBE_DIMENSION = 16384;
const unsigned int D3D11_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
const unsigned int D3D11_SHADER_MAJOR_VERSION = 5;
const unsigned int D3D11_SHADER_MAX_INSTANCES = 65535;
const unsigned int D3D11_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
const unsigned int D3D11_SHADER_MAX_INTERFACES = 253;
const unsigned int D3D11_SHADER_MAX_TYPES = 65535;
const unsigned int D3D11_SHADER_MINOR_VERSION = 0;
const unsigned int D3D11_SHIFT_INSTRUCTION_PAD_VALUE = 0;
const unsigned int D3D11_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
const unsigned int D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
const unsigned int D3D11_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
const unsigned int D3D11_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
const unsigned int D3D11_SO_BUFFER_SLOT_COUNT = 4;
const unsigned int D3D11_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
const unsigned int D3D11_SO_NO_RASTERIZED_STREAM = 0xffffffff;
const unsigned int D3D11_SO_OUTPUT_COMPONENT_COUNT = 128;
const unsigned int D3D11_SO_STREAM_COUNT = 4;
const unsigned int D3D11_SPEC_DATE_DAY = 04;
const unsigned int D3D11_SPEC_DATE_MONTH = 06;
const unsigned int D3D11_SPEC_DATE_YEAR = 2009;
const unsigned int D3D11_SPEC_VERSION = 1.0;
const float D3D11_SRGB_GAMMA = 2.2;
const float D3D11_SRGB_TO_FLOAT_DENOMINATOR_1 = 12.92;
const float D3D11_SRGB_TO_FLOAT_DENOMINATOR_2 = 1.055;
const float D3D11_SRGB_TO_FLOAT_EXPONENT = 2.4;
const float D3D11_SRGB_TO_FLOAT_OFFSET = 0.055;
const float D3D11_SRGB_TO_FLOAT_THRESHOLD = 0.04045;
const float D3D11_SRGB_TO_FLOAT_TOLERANCE_IN_ULP = 0.5;
const unsigned int D3D11_STANDARD_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
const unsigned int D3D11_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
const unsigned int D3D11_STANDARD_PIXEL_COMPONENT_COUNT = 128;
const unsigned int D3D11_STANDARD_PIXEL_ELEMENT_COUNT = 32;
const unsigned int D3D11_STANDARD_VECTOR_SIZE = 4;
const unsigned int D3D11_STANDARD_VERTEX_ELEMENT_COUNT = 32;
const unsigned int D3D11_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
const unsigned int D3D11_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
const unsigned int D3D11_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
const unsigned int D3D11_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
const unsigned int D3D11_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
const unsigned int D3D11_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
const unsigned int D3D11_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
const unsigned int D3D11_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
const unsigned int D3D11_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
const unsigned int D3D11_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
const unsigned int D3D11_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
const unsigned int D3D11_UNBOUND_MEMORY_ACCESS_RESULT = 0;
const unsigned int D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
const unsigned int D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
const unsigned int D3D11_VIEWPORT_BOUNDS_MAX = 32767;
const int D3D11_VIEWPORT_BOUNDS_MIN = -32768;
const unsigned int D3D11_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_VS_INPUT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_VS_INPUT_REGISTER_COUNT = 32;
const unsigned int D3D11_VS_INPUT_REGISTER_READ_PORTS = 1;
const unsigned int D3D11_VS_INPUT_REGISTER_READS_PER_INST = 2;
const unsigned int D3D11_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
const unsigned int D3D11_VS_OUTPUT_REGISTER_COMPONENTS = 4;
const unsigned int D3D11_VS_OUTPUT_REGISTER_COUNT = 32;
const unsigned int D3D11_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
const unsigned int D3D11_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
const unsigned int D3D11_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
cpp_quote("#endif")

const unsigned int _FACD3D11 = 0x87C;
const unsigned int _FACD3D11DEBUG = _FACD3D11 + 1;

cpp_quote("#define MAKE_D3D11_HRESULT(c) MAKE_HRESULT(1, _FACD3D11, (c))")
cpp_quote("#define MAKE_D3D11_STATUS(c) MAKE_HRESULT(0, _FACD3D11, (c))")
cpp_quote("#define D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS MAKE_D3D11_HRESULT(1)")
cpp_quote("#define D3D11_ERROR_FILE_NOT_FOUND MAKE_D3D11_HRESULT(2)")
cpp_quote("#define D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS MAKE_D3D11_HRESULT(3)")
cpp_quote("#define D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD MAKE_D3D11_HRESULT(4)")

typedef enum D3D11_INPUT_CLASSIFICATION
{
	D3D11_INPUT_PER_VERTEX_DATA,
	D3D11_INPUT_PER_INSTANCE_DATA
} D3D11_INPUT_CLASSIFICATION;

const unsigned int D3D11_APPEND_ALIGNED_ELEMENT = 0xffffffff;

typedef struct D3D11_INPUT_ELEMENT_DESC
{
	LPCSTR SemanticName;
	UINT SemanticIndex;
	DXGI_FORMAT Format;
	UINT InputSlot;
	UINT AlignedByteOffset;
	D3D11_INPUT_CLASSIFICATION InputSlotClass;
	UINT InstanceDataStepRate;
} D3D11_INPUT_ELEMENT_DESC;

typedef enum D3D11_FILL_MODE
{
	D3D11_FILL_WIREFRAME = 2,
	D3D11_FILL_SOLID = 3
} D3D11_FILL_MODE;

typedef D3D_PRIMITIVE_TOPOLOGY D3D11_PRIMITIVE_TOPOLOGY;

typedef D3D_PRIMITIVE D3D11_PRIMITIVE;

typedef enum D3D11_CULL_MODE
{
	D3D11_CULL_NONE = 1,
	D3D11_CULL_FRONT = 2,
	D3D11_CULL_BACK = 3
} D3D11_CULL_MODE;

typedef struct D3D11_SO_DECLARATION_ENTRY
{
	UINT Stream;
	LPCSTR SemanticName;
	UINT SemanticIndex;
	BYTE StartComponent;
	BYTE ComponentCount;
	BYTE OutputSlot;
} D3D11_SO_DECLARATION_ENTRY;

typedef struct D3D11_VIEWPORT
{
	FLOAT TopLeftX;
	FLOAT TopLeftY;
	FLOAT Width;
	FLOAT Height;
	FLOAT MinDepth;
	FLOAT MaxDepth;
} D3D11_VIEWPORT;

typedef enum D3D11_RESOURCE_DIMENSION
{
	D3D11_RESOURCE_DIMENSION_UNKNOWN,
	D3D11_RESOURCE_DIMENSION_BUFFER,
	D3D11_RESOURCE_DIMENSION_TEXTURE1D,
	D3D11_RESOURCE_DIMENSION_TEXTURE2D,
	D3D11_RESOURCE_DIMENSION_TEXTURE3D,
} D3D11_RESOURCE_DIMENSION;

typedef D3D_SRV_DIMENSION D3D11_SRV_DIMENSION;

typedef enum D3D11_DSV_DIMENSION
{
	D3D11_DSV_DIMENSION_UNKNOWN,
	D3D11_DSV_DIMENSION_TEXTURE1D,
	D3D11_DSV_DIMENSION_TEXTURE1DARRAY,
	D3D11_DSV_DIMENSION_TEXTURE2D,
	D3D11_DSV_DIMENSION_TEXTURE2DARRAY,
	D3D11_DSV_DIMENSION_TEXTURE2DMS,
	D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY,
} D3D11_DSV_DIMENSION;


typedef enum D3D11_RTV_DIMENSION
{
	D3D11_RTV_DIMENSION_UNKNOWN,
	D3D11_RTV_DIMENSION_BUFFER,
	D3D11_RTV_DIMENSION_TEXTURE1D,
	D3D11_RTV_DIMENSION_TEXTURE1DARRAY,
	D3D11_RTV_DIMENSION_TEXTURE2D,
	D3D11_RTV_DIMENSION_TEXTURE2DARRAY,
	D3D11_RTV_DIMENSION_TEXTURE2DMS,
	D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY,
	D3D11_RTV_DIMENSION_TEXTURE3D
} D3D11_RTV_DIMENSION;

typedef enum D3D11_UAV_DIMENSION
{
	D3D11_UAV_DIMENSION_UNKNOWN,
	D3D11_UAV_DIMENSION_BUFFER,
	D3D11_UAV_DIMENSION_TEXTURE1D,
	D3D11_UAV_DIMENSION_TEXTURE1DARRAY,
	D3D11_UAV_DIMENSION_TEXTURE2D,
	D3D11_UAV_DIMENSION_TEXTURE2DARRAY,
	D3D11_UAV_DIMENSION_TEXTURE3D = 8
} D3D11_UAV_DIMENSION;

typedef enum D3D11_USAGE
{
	D3D11_USAGE_DEFAULT,
	D3D11_USAGE_IMMUTABLE,
	D3D11_USAGE_DYNAMIC,
	D3D11_USAGE_STAGING
} D3D11_USAGE;

typedef enum D3D11_BIND_FLAG
{
	D3D11_BIND_VERTEX_BUFFER = 1,
	D3D11_BIND_INDEX_BUFFER = 2,
	D3D11_BIND_CONSTANT_BUFFER = 4,
	D3D11_BIND_SHADER_RESOURCE = 8,
	D3D11_BIND_STREAM_OUTPUT = 0x10,
	D3D11_BIND_RENDER_TARGET = 0x20,
	D3D11_BIND_DEPTH_STENCIL = 0x40,
	D3D11_BIND_UNORDERED_ACCESS = 0x80
} D3D11_BIND_FLAG;

typedef enum D3D11_CPU_ACCESS_FLAG
{
	D3D11_CPU_ACCESS_WRITE = 0x10000,
	D3D11_CPU_ACCESS_READ = 0x20000
} D3D11_CPU_ACCESS_FLAG;

typedef enum D3D11_RESOURCE_MISC_FLAG
{
	D3D11_RESOURCE_MISC_GENERATE_MIPS = 1,
	D3D11_RESOURCE_MISC_SHARED = 2,
	D3D11_RESOURCE_MISC_TEXTURECUBE = 4,
	D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10,
	D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20,
	D3D11_RESOURCE_MISC_BUFFER_STRUCTURED	= 0x40,
	D3D11_RESOURCE_MISC_RESOURCE_CLAMP = 0x80,
	D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100,
	D3D11_RESOURCE_MISC_GDI_COMPATIBLE = 0x200
} D3D11_RESOURCE_MISC_FLAG;

typedef enum D3D11_MAP
{
	D3D11_MAP_READ = 1,
	D3D11_MAP_WRITE,
	D3D11_MAP_READ_WRITE,
	D3D11_MAP_WRITE_DISCARD,
	D3D11_MAP_WRITE_NO_OVERWRITE
} D3D11_MAP;

typedef enum D3D11_MAP_FLAG
{
	D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000
} D3D11_MAP_FLAG;

typedef enum D3D11_RAISE_FLAG
{
	D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR = 1
} D3D11_RAISE_FLAG;

typedef 
enum D3D11_CLEAR_FLAG
{
	D3D11_CLEAR_DEPTH = 1,
	D3D11_CLEAR_STENCIL = 2
} D3D11_CLEAR_FLAG;

typedef RECT D3D11_RECT;

typedef struct D3D11_BOX
{
	UINT left;
	UINT top;
	UINT front;
	UINT right;
	UINT bottom;
	UINT back;
} D3D11_BOX;

typedef enum D3D11_COMPARISON_FUNC
{
	D3D11_COMPARISON_NEVER = 1,
	D3D11_COMPARISON_LESS,
	D3D11_COMPARISON_EQUAL,
	D3D11_COMPARISON_LESS_EQUAL,
	D3D11_COMPARISON_GREATER,
	D3D11_COMPARISON_NOT_EQUAL,
	D3D11_COMPARISON_GREATER_EQUAL,
	D3D11_COMPARISON_ALWAYS
} D3D11_COMPARISON_FUNC;

typedef enum D3D11_DEPTH_WRITE_MASK
{
	D3D11_DEPTH_WRITE_MASK_ZERO,
	D3D11_DEPTH_WRITE_MASK_ALL
} D3D11_DEPTH_WRITE_MASK;

typedef enum D3D11_STENCIL_OP
{
	D3D11_STENCIL_OP_KEEP = 1,
	D3D11_STENCIL_OP_ZERO,
	D3D11_STENCIL_OP_REPLACE,
	D3D11_STENCIL_OP_INCR_SAT,
	D3D11_STENCIL_OP_DECR_SAT,
	D3D11_STENCIL_OP_INVERT,
	D3D11_STENCIL_OP_INCR,
	D3D11_STENCIL_OP_DECR
} D3D11_STENCIL_OP;

typedef struct D3D11_DEPTH_STENCILOP_DESC
{
	D3D11_STENCIL_OP StencilFailOp;
	D3D11_STENCIL_OP StencilDepthFailOp;
	D3D11_STENCIL_OP StencilPassOp;
	D3D11_COMPARISON_FUNC StencilFunc;
} D3D11_DEPTH_STENCILOP_DESC;

typedef struct D3D11_DEPTH_STENCIL_DESC
{
	BOOL DepthEnable;
	D3D11_DEPTH_WRITE_MASK DepthWriteMask;
	D3D11_COMPARISON_FUNC DepthFunc;
	BOOL StencilEnable;
	UINT8 StencilReadMask;
	UINT8 StencilWriteMask;
	D3D11_DEPTH_STENCILOP_DESC FrontFace;
	D3D11_DEPTH_STENCILOP_DESC BackFace;
} D3D11_DEPTH_STENCIL_DESC;

	
typedef enum D3D11_BLEND
{
	D3D11_BLEND_ZERO = 1,
	D3D11_BLEND_ONE,
	D3D11_BLEND_SRC_COLOR,
	D3D11_BLEND_INV_SRC_COLOR,
	D3D11_BLEND_SRC_ALPHA,
	D3D11_BLEND_INV_SRC_ALPHA,
	D3D11_BLEND_DEST_ALPHA,
	D3D11_BLEND_INV_DEST_ALPHA,
	D3D11_BLEND_DEST_COLOR,
	D3D11_BLEND_INV_DEST_COLOR ,
	D3D11_BLEND_SRC_ALPHA_SAT,

	D3D11_BLEND_BLEND_FACTOR = 14,
	D3D11_BLEND_INV_BLEND_FACTOR,
	D3D11_BLEND_SRC1_COLOR,
	D3D11_BLEND_INV_SRC1_COLOR ,
	D3D11_BLEND_SRC1_ALPHA,
	D3D11_BLEND_INV_SRC1_ALPHA 
} D3D11_BLEND;

typedef enum D3D11_BLEND_OP
{
	D3D11_BLEND_OP_ADD = 1,
	D3D11_BLEND_OP_SUBTRACT,
	D3D11_BLEND_OP_REV_SUBTRACT,
	D3D11_BLEND_OP_MIN,
	D3D11_BLEND_OP_MAX
} D3D11_BLEND_OP;

typedef enum D3D11_COLOR_WRITE_ENABLE
{
	D3D11_COLOR_WRITE_ENABLE_RED = 1,
	D3D11_COLOR_WRITE_ENABLE_GREEN = 2,
	D3D11_COLOR_WRITE_ENABLE_BLUE = 4,
	D3D11_COLOR_WRITE_ENABLE_ALPHA = 8,
	D3D11_COLOR_WRITE_ENABLE_ALL = 0xf
} D3D11_COLOR_WRITE_ENABLE;

typedef struct D3D11_RENDER_TARGET_BLEND_DESC
{
	BOOL BlendEnable;
	D3D11_BLEND SrcBlend;
	D3D11_BLEND DestBlend;
	D3D11_BLEND_OP BlendOp;
	D3D11_BLEND SrcBlendAlpha;
	D3D11_BLEND DestBlendAlpha;
	D3D11_BLEND_OP BlendOpAlpha;
	UINT8 RenderTargetWriteMask;
} D3D11_RENDER_TARGET_BLEND_DESC;

typedef struct D3D11_BLEND_DESC
{
	BOOL AlphaToCoverageEnable;
	BOOL IndependentBlendEnable;
	D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[8];
} D3D11_BLEND_DESC;

typedef struct D3D11_RASTERIZER_DESC
{
	D3D11_FILL_MODE FillMode;
	D3D11_CULL_MODE CullMode;
	BOOL FrontCounterClockwise;
	INT DepthBias;
	FLOAT DepthBiasClamp;
	FLOAT SlopeScaledDepthBias;
	BOOL DepthClipEnable;
	BOOL ScissorEnable;
	BOOL MultisampleEnable;
	BOOL AntialiasedLineEnable;
} D3D11_RASTERIZER_DESC;

typedef struct D3D11_SUBRESOURCE_DATA
{
	const void *pSysMem;
	UINT SysMemPitch;
	UINT SysMemSlicePitch;
} D3D11_SUBRESOURCE_DATA;

typedef struct D3D11_MAPPED_SUBRESOURCE
{
	void *pData;
	UINT RowPitch;
	UINT DepthPitch;
} D3D11_MAPPED_SUBRESOURCE;

typedef struct D3D11_BUFFER_DESC
{
	UINT ByteWidth;
	D3D11_USAGE Usage;
	UINT BindFlags;
	UINT CPUAccessFlags;
	UINT MiscFlags;
	UINT StructureByteStride;
} D3D11_BUFFER_DESC;

typedef struct D3D11_TEXTURE1D_DESC
{
	UINT Width;
	UINT MipLevels;
	UINT ArraySize;
	DXGI_FORMAT Format;
	D3D11_USAGE Usage;
	UINT BindFlags;
	UINT CPUAccessFlags;
	UINT MiscFlags;
} D3D11_TEXTURE1D_DESC;

typedef struct D3D11_TEXTURE2D_DESC
{
	UINT Width;
	UINT Height;
	UINT MipLevels;
	UINT ArraySize;
	DXGI_FORMAT Format;
	DXGI_SAMPLE_DESC SampleDesc;
	D3D11_USAGE Usage;
	UINT BindFlags;
	UINT CPUAccessFlags;
	UINT MiscFlags;
} D3D11_TEXTURE2D_DESC;

typedef struct D3D11_TEXTURE3D_DESC
{
	UINT Width;
	UINT Height;
	UINT Depth;
	UINT MipLevels;
	DXGI_FORMAT Format;
	D3D11_USAGE Usage;
	UINT BindFlags;
	UINT CPUAccessFlags;
	UINT MiscFlags;
} D3D11_TEXTURE3D_DESC;

typedef enum D3D11_TEXTURECUBE_FACE
{
	D3D11_TEXTURECUBE_FACE_POSITIVE_X,
	D3D11_TEXTURECUBE_FACE_NEGATIVE_X,
	D3D11_TEXTURECUBE_FACE_POSITIVE_Y,
	D3D11_TEXTURECUBE_FACE_NEGATIVE_Y,
	D3D11_TEXTURECUBE_FACE_POSITIVE_Z,
	D3D11_TEXTURECUBE_FACE_NEGATIVE_Z
} D3D11_TEXTURECUBE_FACE;

typedef struct D3D11_BUFFER_SRV
{
	union 
	{
		UINT FirstElement;
		UINT ElementOffset;
	};
	union 
	{
		UINT NumElements;
		UINT ElementWidth;
	};
} D3D11_BUFFER_SRV;

typedef enum D3D11_BUFFEREX_SRV_FLAG
{
	D3D11_BUFFEREX_SRV_FLAG_RAW = 1
} D3D11_BUFFEREX_SRV_FLAG;

typedef struct D3D11_BUFFEREX_SRV
{
	UINT FirstElement;
	UINT NumElements;
	UINT Flags;
} D3D11_BUFFEREX_SRV;

typedef struct D3D11_TEX1D_SRV
{
	UINT MostDetailedMip;
	UINT MipLevels;
} D3D11_TEX1D_SRV;

typedef struct D3D11_TEX1D_ARRAY_SRV
{
	UINT MostDetailedMip;
	UINT MipLevels;
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX1D_ARRAY_SRV;

typedef struct D3D11_TEX2D_SRV
{
	UINT MostDetailedMip;
	UINT MipLevels;
} D3D11_TEX2D_SRV;

typedef struct D3D11_TEX2D_ARRAY_SRV
{
	UINT MostDetailedMip;
	UINT MipLevels;
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX2D_ARRAY_SRV;

typedef struct D3D11_TEX3D_SRV
{
	UINT MostDetailedMip;
	UINT MipLevels;
} D3D11_TEX3D_SRV;

typedef struct D3D11_TEXCUBE_SRV
{
	UINT MostDetailedMip;
	UINT MipLevels;
} D3D11_TEXCUBE_SRV;

typedef struct D3D11_TEXCUBE_ARRAY_SRV
{
	UINT MostDetailedMip;
	UINT MipLevels;
	UINT First2DArrayFace;
	UINT NumCubes;
} D3D11_TEXCUBE_ARRAY_SRV;

typedef struct D3D11_TEX2DMS_SRV
{
	UINT UnusedField_NothingToDefine;
} D3D11_TEX2DMS_SRV;

typedef struct D3D11_TEX2DMS_ARRAY_SRV
{
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX2DMS_ARRAY_SRV;

typedef struct D3D11_SHADER_RESOURCE_VIEW_DESC
{
	DXGI_FORMAT Format;
	D3D11_SRV_DIMENSION ViewDimension;
	union 
	{
		D3D11_BUFFER_SRV Buffer;
		D3D11_TEX1D_SRV Texture1D;
		D3D11_TEX1D_ARRAY_SRV Texture1DArray;
		D3D11_TEX2D_SRV Texture2D;
		D3D11_TEX2D_ARRAY_SRV Texture2DArray;
		D3D11_TEX2DMS_SRV Texture2DMS;
		D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray;
		D3D11_TEX3D_SRV Texture3D;
		D3D11_TEXCUBE_SRV TextureCube;
		D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray;
		D3D11_BUFFEREX_SRV BufferEx;
	};
} D3D11_SHADER_RESOURCE_VIEW_DESC;


typedef struct D3D11_BUFFER_RTV
{
	union 
	{
		UINT FirstElement;
		UINT ElementOffset;
	};
	union 
	{
		UINT NumElements;
		UINT ElementWidth;
	};
} D3D11_BUFFER_RTV;

typedef struct D3D11_TEX1D_RTV
{
	UINT MipSlice;
} D3D11_TEX1D_RTV;

typedef struct D3D11_TEX1D_ARRAY_RTV
{
	UINT MipSlice;
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX1D_ARRAY_RTV;

typedef struct D3D11_TEX2D_RTV
{
	UINT MipSlice;
} D3D11_TEX2D_RTV;

typedef struct D3D11_TEX2DMS_RTV
{
	UINT UnusedField_NothingToDefine;
} D3D11_TEX2DMS_RTV;

typedef struct D3D11_TEX2D_ARRAY_RTV
{
	UINT MipSlice;
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX2D_ARRAY_RTV;

typedef struct D3D11_TEX2DMS_ARRAY_RTV
{
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX2DMS_ARRAY_RTV;

typedef struct D3D11_TEX3D_RTV
{
	UINT MipSlice;
	UINT FirstWSlice;
	UINT WSize;
} D3D11_TEX3D_RTV;

typedef struct D3D11_RENDER_TARGET_VIEW_DESC
{
	DXGI_FORMAT Format;
	D3D11_RTV_DIMENSION ViewDimension;
	union 
	{
		D3D11_BUFFER_RTV Buffer;
		D3D11_TEX1D_RTV Texture1D;
		D3D11_TEX1D_ARRAY_RTV Texture1DArray;
		D3D11_TEX2D_RTV Texture2D;
		D3D11_TEX2D_ARRAY_RTV Texture2DArray;
		D3D11_TEX2DMS_RTV Texture2DMS;
		D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray;
		D3D11_TEX3D_RTV Texture3D;
	};
} D3D11_RENDER_TARGET_VIEW_DESC;

typedef struct D3D11_TEX1D_DSV
{
	UINT MipSlice;
} D3D11_TEX1D_DSV;

typedef struct D3D11_TEX1D_ARRAY_DSV
{
	UINT MipSlice;
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX1D_ARRAY_DSV;

typedef struct D3D11_TEX2D_DSV
{
	UINT MipSlice;
} D3D11_TEX2D_DSV;

typedef struct D3D11_TEX2D_ARRAY_DSV
{
	UINT MipSlice;
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX2D_ARRAY_DSV;

typedef struct D3D11_TEX2DMS_DSV
{
	UINT UnusedField_NothingToDefine;
} D3D11_TEX2DMS_DSV;

typedef struct D3D11_TEX2DMS_ARRAY_DSV
{
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX2DMS_ARRAY_DSV;

typedef enum D3D11_DSV_FLAG
{
	D3D11_DSV_READ_ONLY_DEPTH = 1L,
	D3D11_DSV_READ_ONLY_STENCIL = 2L
} D3D11_DSV_FLAG;

typedef struct D3D11_DEPTH_STENCIL_VIEW_DESC
{
	DXGI_FORMAT Format;
	D3D11_DSV_DIMENSION ViewDimension;
	UINT Flags;
	union 
	{
		D3D11_TEX1D_DSV Texture1D;
		D3D11_TEX1D_ARRAY_DSV Texture1DArray;
		D3D11_TEX2D_DSV Texture2D;
		D3D11_TEX2D_ARRAY_DSV Texture2DArray;
		D3D11_TEX2DMS_DSV Texture2DMS;
		D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray;
	};
} D3D11_DEPTH_STENCIL_VIEW_DESC;

typedef enum D3D11_BUFFER_UAV_FLAG
{
	D3D11_BUFFER_UAV_FLAG_RAW = 1,
	D3D11_BUFFER_UAV_FLAG_APPEND = 2,
	D3D11_BUFFER_UAV_FLAG_COUNTER = 4
} D3D11_BUFFER_UAV_FLAG;

typedef struct D3D11_BUFFER_UAV
{
	UINT FirstElement;
	UINT NumElements;
	UINT Flags;
} D3D11_BUFFER_UAV;

typedef struct D3D11_TEX1D_UAV
{
	UINT MipSlice;
} D3D11_TEX1D_UAV;

typedef struct D3D11_TEX1D_ARRAY_UAV
{
	UINT MipSlice;
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX1D_ARRAY_UAV;

typedef struct D3D11_TEX2D_UAV
{
	UINT MipSlice;
} D3D11_TEX2D_UAV;

typedef struct D3D11_TEX2D_ARRAY_UAV
{
	UINT MipSlice;
	UINT FirstArraySlice;
	UINT ArraySize;
} D3D11_TEX2D_ARRAY_UAV;

typedef struct D3D11_TEX3D_UAV
{
	UINT MipSlice;
	UINT FirstWSlice;
	UINT WSize;
} D3D11_TEX3D_UAV;

typedef struct D3D11_UNORDERED_ACCESS_VIEW_DESC
{
	DXGI_FORMAT Format;
	D3D11_UAV_DIMENSION ViewDimension;
	union 
	{
		D3D11_BUFFER_UAV Buffer;
		D3D11_TEX1D_UAV Texture1D;
		D3D11_TEX1D_ARRAY_UAV Texture1DArray;
		D3D11_TEX2D_UAV Texture2D;
		D3D11_TEX2D_ARRAY_UAV Texture2DArray;
		D3D11_TEX3D_UAV Texture3D;
	};
} D3D11_UNORDERED_ACCESS_VIEW_DESC;

typedef enum D3D11_FILTER
{
	D3D11_FILTER_MIN_MAG_MIP_POINT = 0,
	D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR = 1,
	D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 4,
	D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR = 5,
	D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
	D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
	D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
	D3D11_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
	D3D11_FILTER_ANISOTROPIC = 0x55,
	D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
	D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
	D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
	D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
	D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
	D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
	D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
	D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
	D3D11_FILTER_COMPARISON_ANISOTROPIC = 0xd5
} D3D11_FILTER;

typedef enum D3D11_FILTER_TYPE
{
	D3D11_FILTER_TYPE_POINT,
	D3D11_FILTER_TYPE_LINEAR
} D3D11_FILTER_TYPE;

const unsigned int D3D11_FILTER_TYPE_MASK = 3;
const unsigned int D3D11_MIN_FILTER_SHIFT = 4;
const unsigned int D3D11_MAG_FILTER_SHIFT = 2;
const unsigned int D3D11_MIP_FILTER_SHIFT = 0;
const unsigned int D3D11_COMPARISON_FILTERING_BIT = 0x80;
const unsigned int D3D11_ANISOTROPIC_FILTERING_BIT = 0x40;

cpp_quote("#define D3D11_ENCODE_BASIC_FILTER(min, mag, mip, comp) ((D3D11_FILTER) (((comp) ? D3D11_COMPARISON_FILTERING_BIT : 0 ) | (((min) & D3D11_FILTER_TYPE_MASK ) << D3D11_MIN_FILTER_SHIFT ) | (((mag) & D3D11_FILTER_TYPE_MASK ) << D3D11_MAG_FILTER_SHIFT ) | (((mip) & D3D11_FILTER_TYPE_MASK) << D3D11_MIP_FILTER_SHIFT)))")
cpp_quote("#define D3D11_ENCODE_ANISOTROPIC_FILTER(comp) ((D3D11_FILTER)(D3D11_ANISOTROPIC_FILTERING_BIT | D3D11_ENCODE_BASIC_FILTER(D3D11_FILTER_TYPE_LINEAR, D3D11_FILTER_TYPE_LINEAR, D3D11_FILTER_TYPE_LINEAR, comp)))")
cpp_quote("#define D3D11_DECODE_MIN_FILTER(f) ((D3D11_FILTER_TYPE)(((f) >> D3D11_MIN_FILTER_SHIFT) & D3D11_FILTER_TYPE_MASK))")
cpp_quote("#define D3D11_DECODE_MAG_FILTER(f) ((D3D11_FILTER_TYPE)(((f) >> D3D11_MAG_FILTER_SHIFT) & D3D11_FILTER_TYPE_MASK))")
cpp_quote("#define D3D11_DECODE_MIP_FILTER(f) ((D3D11_FILTER_TYPE)(((f) >> D3D11_MIP_FILTER_SHIFT) & D3D11_FILTER_TYPE_MASK))")
cpp_quote("#define D3D11_DECODE_IS_COMPARISON_FILTER(f) ((f) & D3D11_COMPARISON_FILTERING_BIT)")
cpp_quote("#define D3D11_DECODE_IS_ANISOTROPIC_FILTER(f) (((f) & D3D11_ANISOTROPIC_FILTERING_BIT) && (D3D11_DECODE_MIN_FILTER(f) == D3D11_FILTER_TYPE_LINEAR) && (D3D11_DECODE_MAG_FILTER(f) == D3D11_FILTER_TYPE_LINEAR) && (D3D11_DECODE_MIP_FILTER( f ) == D3D11_FILTER_TYPE_LINEAR))")

typedef enum D3D11_TEXTURE_ADDRESS_MODE
{
	D3D11_TEXTURE_ADDRESS_WRAP = 1,
	D3D11_TEXTURE_ADDRESS_MIRROR = 2,
	D3D11_TEXTURE_ADDRESS_CLAMP = 3,
	D3D11_TEXTURE_ADDRESS_BORDER = 4,
	D3D11_TEXTURE_ADDRESS_MIRROR_ONCE = 5
} D3D11_TEXTURE_ADDRESS_MODE;

typedef struct D3D11_SAMPLER_DESC
{
	D3D11_FILTER Filter;
	D3D11_TEXTURE_ADDRESS_MODE AddressU;
	D3D11_TEXTURE_ADDRESS_MODE AddressV;
	D3D11_TEXTURE_ADDRESS_MODE AddressW;
	FLOAT MipLODBias;
	UINT MaxAnisotropy;
	D3D11_COMPARISON_FUNC ComparisonFunc;
	FLOAT BorderColor[ 4 ];
	FLOAT MinLOD;
	FLOAT MaxLOD;
} D3D11_SAMPLER_DESC;

typedef enum D3D11_FORMAT_SUPPORT
{
	D3D11_FORMAT_SUPPORT_BUFFER = 0x1,
	D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER = 0x2,
	D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER = 0x4,
	D3D11_FORMAT_SUPPORT_SO_BUFFER = 0x8,
	D3D11_FORMAT_SUPPORT_TEXTURE1D = 0x10,
	D3D11_FORMAT_SUPPORT_TEXTURE2D = 0x20,
	D3D11_FORMAT_SUPPORT_TEXTURE3D = 0x40,
	D3D11_FORMAT_SUPPORT_TEXTURECUBE = 0x80,
	D3D11_FORMAT_SUPPORT_SHADER_LOAD = 0x100,
	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE = 0x200,
	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON = 0x400,
	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT = 0x800,
	D3D11_FORMAT_SUPPORT_MIP = 0x1000,
	D3D11_FORMAT_SUPPORT_MIP_AUTOGEN = 0x2000,
	D3D11_FORMAT_SUPPORT_RENDER_TARGET = 0x4000,
	D3D11_FORMAT_SUPPORT_BLENDABLE = 0x8000,
	D3D11_FORMAT_SUPPORT_DEPTH_STENCIL = 0x10000,
	D3D11_FORMAT_SUPPORT_CPU_LOCKABLE = 0x20000,
	D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE = 0x40000,
	D3D11_FORMAT_SUPPORT_DISPLAY = 0x80000,
	D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT = 0x100000,
	D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET = 0x200000,
	D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD = 0x400000,
	D3D11_FORMAT_SUPPORT_SHADER_GATHER = 0x800000,
	D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST = 0x1000000,
	D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
	D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON = 0x4000000
} D3D11_FORMAT_SUPPORT;

typedef enum D3D11_FORMAT_SUPPORT2
{
	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 1,
	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 2,
	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 4,
	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 8,
	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
	D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
	D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80
} D3D11_FORMAT_SUPPORT2;

typedef enum D3D11_ASYNC_GETDATA_FLAG
{
	D3D11_ASYNC_GETDATA_DONOTFLUSH = 1
} D3D11_ASYNC_GETDATA_FLAG;

typedef enum D3D11_QUERY
{
	D3D11_QUERY_EVENT,
	D3D11_QUERY_OCCLUSION,
	D3D11_QUERY_TIMESTAMP,
	D3D11_QUERY_TIMESTAMP_DISJOINT,
	D3D11_QUERY_PIPELINE_STATISTICS,
	D3D11_QUERY_OCCLUSION_PREDICATE,
	D3D11_QUERY_SO_STATISTICS,
	D3D11_QUERY_SO_OVERFLOW_PREDICATE,
	D3D11_QUERY_SO_STATISTICS_STREAM0,
	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0,
	D3D11_QUERY_SO_STATISTICS_STREAM1,
	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1,
	D3D11_QUERY_SO_STATISTICS_STREAM2,
	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2,
	D3D11_QUERY_SO_STATISTICS_STREAM3,
	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3,
} D3D11_QUERY;

typedef enum D3D11_QUERY_MISC_FLAG
{
	D3D11_QUERY_MISC_PREDICATEHINT = 1
} D3D11_QUERY_MISC_FLAG;

typedef struct D3D11_QUERY_DESC
{
	D3D11_QUERY Query;
	UINT MiscFlags;
} D3D11_QUERY_DESC;

typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT
{
	UINT64 Frequency;
	BOOL Disjoint;
} D3D11_QUERY_DATA_TIMESTAMP_DISJOINT;

typedef struct D3D11_QUERY_DATA_PIPELINE_STATISTICS
{
	UINT64 IAVertices;
	UINT64 IAPrimitives;
	UINT64 VSInvocations;
	UINT64 GSInvocations;
	UINT64 GSPrimitives;
	UINT64 CInvocations;
	UINT64 CPrimitives;
	UINT64 PSInvocations;
	UINT64 HSInvocations;
	UINT64 DSInvocations;
	UINT64 CSInvocations;
} D3D11_QUERY_DATA_PIPELINE_STATISTICS;

typedef struct D3D11_QUERY_DATA_SO_STATISTICS
{
	UINT64 NumPrimitivesWritten;
	UINT64 PrimitivesStorageNeeded;
} D3D11_QUERY_DATA_SO_STATISTICS;

typedef enum D3D11_COUNTER
{
	D3D11_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000
} D3D11_COUNTER;

typedef enum D3D11_COUNTER_TYPE
{
	D3D11_COUNTER_TYPE_FLOAT32,
	D3D11_COUNTER_TYPE_UINT16,
	D3D11_COUNTER_TYPE_UINT32,
	D3D11_COUNTER_TYPE_UINT64,
} D3D11_COUNTER_TYPE;

typedef struct D3D11_COUNTER_DESC
{
	D3D11_COUNTER Counter;
	UINT MiscFlags;
} D3D11_COUNTER_DESC;

typedef struct D3D11_COUNTER_INFO
{
	D3D11_COUNTER LastDeviceDependentCounter;
	UINT NumSimultaneousCounters;
	UINT8 NumDetectableParallelUnits;
} D3D11_COUNTER_INFO;

typedef enum D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS
{
	D3D11_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
	D3D11_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
} D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS;

typedef enum D3D11_DEVICE_CONTEXT_TYPE
{
	D3D11_DEVICE_CONTEXT_IMMEDIATE,
	D3D11_DEVICE_CONTEXT_DEFERRED,
} D3D11_DEVICE_CONTEXT_TYPE;

typedef struct D3D11_CLASS_INSTANCE_DESC
{
	UINT InstanceId;
	UINT InstanceIndex;
	UINT TypeId;
	UINT ConstantBuffer;
	UINT BaseConstantBufferOffset;
	UINT BaseTexture;
	UINT BaseSampler;
	BOOL Created;
} D3D11_CLASS_INSTANCE_DESC;

typedef enum D3D11_FEATURE
{
	D3D11_FEATURE_THREADING,
	D3D11_FEATURE_DOUBLES,
	D3D11_FEATURE_FORMAT_SUPPORT,
	D3D11_FEATURE_FORMAT_SUPPORT2,
	D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS,
} D3D11_FEATURE;

typedef struct D3D11_FEATURE_DATA_THREADING
{
	BOOL DriverConcurrentCreates;
	BOOL DriverCommandLists;
} D3D11_FEATURE_DATA_THREADING;

typedef struct D3D11_FEATURE_DATA_DOUBLES
{
	BOOL DoublePrecisionFloatShaderOps;
} D3D11_FEATURE_DATA_DOUBLES;

typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT
{
	DXGI_FORMAT InFormat;
	UINT OutFormatSupport;
} D3D11_FEATURE_DATA_FORMAT_SUPPORT;

typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2
{
	DXGI_FORMAT InFormat;
	UINT OutFormatSupport2;
} D3D11_FEATURE_DATA_FORMAT_SUPPORT2;

typedef struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS
{
	BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x;
} D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS;

interface ID3D11Device;

[object, local, uuid("1841e5c8-16b0-489b-bcc8-44cfb0d5deae")]
interface ID3D11DeviceChild : IUnknown {
	void GetDevice(
		[out] ID3D11Device **a
	);

	HRESULT GetPrivateData(
		[in] REFGUID a,
		[in, out] UINT *b,
		[out] void *c
	);

	HRESULT SetPrivateData(
		[in] REFGUID a,
		[in] UINT b,
		[in] const void *c
	);

	HRESULT SetPrivateDataInterface(
		[in] REFGUID a,
		[in] const IUnknown *b
	);
};

[object, local, uuid("e4819ddc-4cf0-4025-bd26-5de82a3e07b7")]
interface ID3D11InputLayout : ID3D11DeviceChild
{
};

[object, local, uuid("03823efb-8d8f-4e1c-9aa2-f64bb2cbfdf1")]
interface ID3D11DepthStencilState : ID3D11DeviceChild {
	void GetDesc(
		[out] D3D11_DEPTH_STENCIL_DESC *a
	);
};

[object, local, uuid("75b68faa-347d-4159-8f45-a0640f01cd9a")]
interface ID3D11BlendState : ID3D11DeviceChild {
	void GetDesc(
		[out] D3D11_BLEND_DESC *a
	);
};

[object, local, uuid("9bb4ab81-ab1a-4d8f-b506-fc04200b6ee7")]
interface ID3D11RasterizerState : ID3D11DeviceChild {
	void GetDesc(
		[out] D3D11_RASTERIZER_DESC *a
	);
};

[object, local, uuid("da6fea51-564c-4487-9810-f0d0f9b4e3a5")]
interface ID3D11SamplerState : ID3D11DeviceChild
{
	void GetDesc(
		[out] D3D11_SAMPLER_DESC *a
	);

};

[object, local, uuid("dc8e63f3-d12b-4952-b47b-5e45026a862d")]
interface ID3D11Resource : ID3D11DeviceChild {
	void GetType(
		[out] D3D11_RESOURCE_DIMENSION *a
	);

	void SetEvictionPriority(
		[in] UINT a
	);

	UINT GetEvictionPriority(
	);
};

[object, local, uuid("48570b85-d1ee-4fcd-a250-eb350722b037")]
interface ID3D11Buffer : ID3D11Resource {
	void GetDesc(
		[out] D3D11_BUFFER_DESC *a
	);

};

[object, local, uuid("f8fb5c27-c6b3-4f75-a4c8-439af2ef564c")]
interface ID3D11Texture1D : ID3D11Resource {
	void GetDesc(
		[out] D3D11_TEXTURE1D_DESC *a
	);
};

[object, local, uuid("6f15aaf2-d208-4e89-9ab4-489535d34f9c")]
interface ID3D11Texture2D : ID3D11Resource {
	void GetDesc(
		[out] D3D11_TEXTURE2D_DESC *a
	);
};

[object, local, uuid("037e866e-f56d-4357-a8af-9dabbe6e250e")]
interface ID3D11Texture3D : ID3D11Resource {
	void GetDesc(
		[out] D3D11_TEXTURE3D_DESC *a
	);
};

[object, local, uuid("839d1216-bb2e-412b-b7f4-a9dbebe08ed1")]
interface ID3D11View : ID3D11DeviceChild {
	void GetResource(
		[out] ID3D11Resource **a
	);

};

[object, local, uuid("b0e06fe0-8192-4e1a-b1ca-36d7414710b2")]
interface ID3D11ShaderResourceView : ID3D11View {
	void GetDesc(
		[out] D3D11_SHADER_RESOURCE_VIEW_DESC *a
	);
};

[object, local, uuid("dfdba067-0b8d-4865-875b-d7b4516cc164")]
interface ID3D11RenderTargetView : ID3D11View
{
	void GetDesc(
		[out] D3D11_RENDER_TARGET_VIEW_DESC *a
	);
};

[object, local, uuid("9fdac92a-1876-48c3-afad-25b94f84a9b6")]
interface ID3D11DepthStencilView : ID3D11View
{
	void GetDesc(
		[out] D3D11_DEPTH_STENCIL_VIEW_DESC *a
	);
};

[object, local, uuid("28acf509-7f5c-48f6-8611-f316010a6380")]
interface ID3D11UnorderedAccessView : ID3D11View
{
	void GetDesc(
		[out] D3D11_UNORDERED_ACCESS_VIEW_DESC *a
	);
};

[object, local, uuid("3b301d64-d678-4289-8897-22f8928b72f3")]
interface ID3D11VertexShader : ID3D11DeviceChild
{
};

[object, local, uuid("8e5c6061-628a-4c8e-8264-bbe45cb3d5dd")]
interface ID3D11HullShader : ID3D11DeviceChild
{
};

[object, local, uuid("f582c508-0f36-490c-9977-31eece268cfa")]
interface ID3D11DomainShader : ID3D11DeviceChild
{
};


[object, local, uuid("38325b96-effb-4022-ba02-2e795b70275c")]
interface ID3D11GeometryShader : ID3D11DeviceChild
{
};

[object, local, uuid("ea82e40d-51dc-4f33-93d4-db7c9125ae8c")]
interface ID3D11PixelShader : ID3D11DeviceChild
{
};

[object, local, uuid("4f5b196e-c2bd-495e-bd01-1fded38e4969")]
interface ID3D11ComputeShader : ID3D11DeviceChild
{
};

[object, local, uuid("4b35d0cd-1e15-4258-9c98-1b1333f6dd3b")]
interface ID3D11Asynchronous : ID3D11DeviceChild
{
	UINT GetDataSize();
};

[object, local, uuid("d6c00747-87b7-425e-b84d-44d108560afd")]
interface ID3D11Query : ID3D11Asynchronous
{
	void GetDesc(
		[out] D3D11_QUERY_DESC *a
	);
};

[object, local, uuid("9eb576dd-9f77-4d86-81aa-8bab5fe490e2")]
interface ID3D11Predicate : ID3D11Query
{
};

[object, local, uuid("6e8c49fb-a371-4770-b440-29086022b741")]
interface ID3D11Counter : ID3D11Asynchronous
{
	void GetDesc(
		[out] D3D11_COUNTER_DESC *a
	);
};

interface ID3D11ClassLinkage;

[object, local, uuid("a6cd7faa-b0b7-4a2f-9436-8662a65797cb")]
interface ID3D11ClassInstance : ID3D11DeviceChild
{
	void GetClassLinkage(
		[out] ID3D11ClassLinkage **a
	);

	void GetDesc(
		[out] D3D11_CLASS_INSTANCE_DESC *a
	);

	void GetInstanceName(
		[out] LPSTR a,
		[in, out] SIZE_T *b
	);

	void GetTypeName(
		[out] LPSTR a,
		[in, out] SIZE_T *b
	);
};

[object, local, uuid("ddf57cba-9543-46e4-a12b-f207a0fe7fed")]
interface ID3D11ClassLinkage : ID3D11DeviceChild
{
	HRESULT GetClassInstance(
		[in] LPCSTR a,
		[in] UINT b,
		[out] ID3D11ClassInstance **c
	);

	HRESULT CreateClassInstance(
		[in] LPCSTR a,
		[in] UINT b,
		[in] UINT c,
		[in] UINT d,
		[in] UINT e,
		[out] ID3D11ClassInstance **f
	);
};

[object, local, uuid("a24bc4d1-769e-43f7-8013-98ff566c18e2")]
interface ID3D11CommandList : ID3D11DeviceChild
{
	UINT GetContextFlags();
};

interface ID3D11DeviceContext;

[object, local, uuid("db6f6ddb-ac77-4e88-8253-819df9bbf140")]
interface ID3D11Device : IUnknown
{
	HRESULT CreateBuffer(
		[in] const D3D11_BUFFER_DESC *a,
		[in] const D3D11_SUBRESOURCE_DATA *b,
		[out] ID3D11Buffer **c
	);

	HRESULT CreateTexture1D(
		[in] const D3D11_TEXTURE1D_DESC *a,
		[in] const D3D11_SUBRESOURCE_DATA *b,
		[out] ID3D11Texture1D **c
	);

	HRESULT CreateTexture2D(
		[in] const D3D11_TEXTURE2D_DESC *a,
		[in] const D3D11_SUBRESOURCE_DATA *b,
		[out] ID3D11Texture2D **c
	);

	HRESULT CreateTexture3D(
		[in] const D3D11_TEXTURE3D_DESC *a,
		[in] const D3D11_SUBRESOURCE_DATA *b,
		[out] ID3D11Texture3D **c
	);

	HRESULT CreateShaderResourceView(
		[in] ID3D11Resource *a,
		[in] const D3D11_SHADER_RESOURCE_VIEW_DESC *b,
		[out] ID3D11ShaderResourceView **c
	);

	HRESULT CreateUnorderedAccessView(
		[in] ID3D11Resource *a,
		[in] const D3D11_UNORDERED_ACCESS_VIEW_DESC *b,
		[out] ID3D11UnorderedAccessView **c
	);

	HRESULT CreateRenderTargetView(
		[in] ID3D11Resource *a,
		[in] const D3D11_RENDER_TARGET_VIEW_DESC *b,
		[out] ID3D11RenderTargetView **c
	);

	HRESULT CreateDepthStencilView(
		[in] ID3D11Resource *a,
		[in] const D3D11_DEPTH_STENCIL_VIEW_DESC *b,
		[out] ID3D11DepthStencilView **c
	);

	HRESULT CreateInputLayout(
		[in] const D3D11_INPUT_ELEMENT_DESC *a,
		[in] UINT b,
		[in] const void *c,
		[in] SIZE_T d,
		[out] ID3D11InputLayout **e
	);

	HRESULT CreateVertexShader(
		[in] const void *a,
		[in] SIZE_T b,
		[in] ID3D11ClassLinkage *c,
		[out] ID3D11VertexShader **d
	);

	HRESULT CreateGeometryShader(
		[in] const void *a,
		[in] SIZE_T b,
		[in] ID3D11ClassLinkage *c,
		[out] ID3D11GeometryShader **d
	);

	HRESULT CreateGeometryShaderWithStreamOutput(
		[in] const void *a,
		[in] SIZE_T b,
		[in] const D3D11_SO_DECLARATION_ENTRY *c,
		[in] UINT d,
		[in] const UINT *e,
		[in] UINT f,
		[in] UINT g,
		[in] ID3D11ClassLinkage *h,
		[out] ID3D11GeometryShader **i
	);

	HRESULT CreatePixelShader(
		[in] const void *a,
		[in] SIZE_T b,
		[in] ID3D11ClassLinkage *c,
		[out] ID3D11PixelShader **d
	);

	HRESULT CreateHullShader(
		[in] const void *a,
		[in] SIZE_T b,
		[in] ID3D11ClassLinkage *c,
		[out] ID3D11HullShader **d
	);

	HRESULT CreateDomainShader(
		[in] const void *a,
		[in] SIZE_T b,
		[in] ID3D11ClassLinkage *c,
		[out] ID3D11DomainShader **d
	);

	HRESULT CreateComputeShader(
		[in] const void *a,
		[in] SIZE_T b,
		[in] ID3D11ClassLinkage *c,
		[out] ID3D11ComputeShader **d
	);

	HRESULT CreateClassLinkage(
		[out] ID3D11ClassLinkage **a
	);

	HRESULT CreateBlendState(
		[in] const D3D11_BLEND_DESC *a,
		[out] ID3D11BlendState **b
	);

	HRESULT CreateDepthStencilState(
		[in] const D3D11_DEPTH_STENCIL_DESC *a,
		[out] ID3D11DepthStencilState **b
	);

	HRESULT CreateRasterizerState(
		[in] const D3D11_RASTERIZER_DESC *a,
		[out] ID3D11RasterizerState **b
	);

	HRESULT CreateSamplerState(
		[in] const D3D11_SAMPLER_DESC *a,
		[out] ID3D11SamplerState **b
	);

	HRESULT CreateQuery(
		[in] const D3D11_QUERY_DESC *a,
		[out] ID3D11Query **b
	);

	HRESULT CreatePredicate(
		[in] const D3D11_QUERY_DESC *a,
		[out] ID3D11Predicate **b
	);

	HRESULT CreateCounter(
		[in] const D3D11_COUNTER_DESC *a,
		[out] ID3D11Counter **b
	);

	HRESULT CreateDeferredContext(
		[in] UINT a,
		[out] ID3D11DeviceContext **b
	);

	HRESULT OpenSharedResource(
		[in] HANDLE a,
		[in] REFIID b,
		[out] void **c
	);

	HRESULT CheckFormatSupport(
		[in] DXGI_FORMAT a,
		[out] UINT *b
	);

	HRESULT CheckMultisampleQualityLevels(
		[in] DXGI_FORMAT a,
		[in] UINT b,
		[out] UINT *c
	);

	void CheckCounterInfo(
		[out] D3D11_COUNTER_INFO *a
	);

	HRESULT CheckCounter(
		[in] const D3D11_COUNTER_DESC *a,
		[out] D3D11_COUNTER_TYPE *b,
		[out] UINT *c,
		[out] LPSTR d,
		[in, out, optional] UINT *e,
		[out] LPSTR f,
		[in, out, optional] UINT *g,
		[out] LPSTR h,
		[in, out, optional] UINT *i
	);

	HRESULT CheckFeatureSupport(
		[in] D3D11_FEATURE a,
		[out] void *b,
		[in] UINT c
	);

	HRESULT GetPrivateData(
		[in] REFGUID a,
		[in, out] UINT *b,
		[out] void *c
	);

	HRESULT SetPrivateData(
		[in] REFGUID a,
		[in] UINT b,
		[in] const void *c
	);

	HRESULT SetPrivateDataInterface(
		[in] REFGUID a,
		[in] const IUnknown *b
	);

	D3D_FEATURE_LEVEL GetFeatureLevel();

	UINT GetCreationFlags();

	HRESULT GetDeviceRemovedReason();

	void GetImmediateContext(
		[out] ID3D11DeviceContext **a
	);

	HRESULT SetExceptionMode(
		[in] UINT a
	);

	UINT GetExceptionMode();
};

[object, local, uuid("c0bfa96c-e089-44fb-8eaf-26f8796190da")]
interface ID3D11DeviceContext : ID3D11DeviceChild
{
	void VSSetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11Buffer *const *c
	);

	void PSSetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11ShaderResourceView *const *c
	);

	void PSSetShader(
		[in] ID3D11PixelShader *a,
		[in] ID3D11ClassInstance *const *b,
		[in] UINT c
	);

	void PSSetSamplers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11SamplerState *const *c
	);

	void VSSetShader(
		[in] ID3D11VertexShader *a,
		[in] ID3D11ClassInstance *const *b,
		[in] UINT c
	);

	void DrawIndexed(
		[in] UINT a,
		[in] UINT b,
		[in] INT c
	);

	void Draw(
		[in] UINT a,
		[in] UINT b
	);

	HRESULT Map(
		[in] ID3D11Resource *a,
		[in] UINT b,
		[in] D3D11_MAP c,
		[in] UINT d,
		[out] D3D11_MAPPED_SUBRESOURCE *e
	);

	void Unmap(
		[in] ID3D11Resource *a,
		[in] UINT b
	);

	void PSSetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11Buffer *const *c
	);

	void IASetInputLayout(
		[in] ID3D11InputLayout *a
	);

	void IASetVertexBuffers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11Buffer *const *c,
		[in] const UINT *d,
		[in] const UINT *e
	);

	void IASetIndexBuffer(
		[in] ID3D11Buffer *a,
		[in] DXGI_FORMAT b,
		[in] UINT c
	);

	void DrawIndexedInstanced(
		[in] UINT a,
		[in] UINT b,
		[in] UINT c,
		[in] INT d,
		[in] UINT e
	);

	void DrawInstanced(
		[in] UINT a,
		[in] UINT b,
		[in] UINT c,
		[in] UINT d
	);

	void GSSetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11Buffer *const *c
	);

	void GSSetShader(
		[in] ID3D11GeometryShader *a,
		[in] ID3D11ClassInstance *const *b,
		[in] UINT c
	);

	void IASetPrimitiveTopology(
		[in] D3D11_PRIMITIVE_TOPOLOGY a
	);

	void VSSetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11ShaderResourceView *const *c
	);

	void VSSetSamplers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11SamplerState *const *c
	);

	void Begin(
		[in] ID3D11Asynchronous *a
	);

	void End(
		[in] ID3D11Asynchronous *a
	);

	HRESULT GetData(
		[in] ID3D11Asynchronous *a,
		[out] void *b,
		[in] UINT c,
		[in] UINT d
	);

	void SetPredication(
		[in] ID3D11Predicate *a,
		[in] BOOL b
	);

	void GSSetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11ShaderResourceView *const *c
	);

	void GSSetSamplers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11SamplerState *const *c
	);

	void OMSetRenderTargets(
		[in] UINT a,
		[in] ID3D11RenderTargetView *const *b,
		[in] ID3D11DepthStencilView *c
	);

	void OMSetRenderTargetsAndUnorderedAccessViews(
		[in] UINT a,
		[in] ID3D11RenderTargetView *const *b,
		[in] ID3D11DepthStencilView *c,
		[in] UINT d,
		[in] UINT e,
		[in] ID3D11UnorderedAccessView *const *f,
		[in] const UINT *g
	);

	void OMSetBlendState(
		[in] ID3D11BlendState *a,
		[in] const FLOAT b[4],
		[in] UINT c
	);

	void OMSetDepthStencilState(
		[in] ID3D11DepthStencilState *a,
		[in] UINT b
	);

	void SOSetTargets(
		[in] UINT a,
		[in] ID3D11Buffer *const *b,
		[in] const UINT *c
	);

	void DrawAuto(
	);

	void DrawIndexedInstancedIndirect(
		[in] ID3D11Buffer *a,
		[in] UINT b
	);

	void DrawInstancedIndirect(
		[in] ID3D11Buffer *a,
		[in] UINT b
	);

	void Dispatch(
		[in] UINT a,
		[in] UINT b,
		[in] UINT c
	);

	void DispatchIndirect(
		[in] ID3D11Buffer *a,
		[in] UINT b
	);

	void RSSetState(
		[in] ID3D11RasterizerState *a
	);

	void RSSetViewports(
		[in] UINT a,
		[in] const D3D11_VIEWPORT *b
	);

	void RSSetScissorRects(
		[in] UINT a,
		[in] const D3D11_RECT *b
	);

	void CopySubresourceRegion(
		[in] ID3D11Resource *a,
		[in] UINT b,
		[in] UINT c,
		[in] UINT d,
		[in] UINT e,
		[in] ID3D11Resource *f,
		[in] UINT g,
		[in] const D3D11_BOX *h
	);

	void CopyResource(
		[in] ID3D11Resource *a,
		[in] ID3D11Resource *b
	);

	void UpdateSubresource(
		[in] ID3D11Resource *a,
		[in] UINT b,
		[in] const D3D11_BOX *c,
		[in] const void *d,
		[in] UINT e,
		[in] UINT f
	);

	void CopyStructureCount(
		[in] ID3D11Buffer *a,
		[in] UINT b,
		[in] ID3D11UnorderedAccessView *c
	);

	void ClearRenderTargetView(
		[in] ID3D11RenderTargetView *a,
		[in] const FLOAT b[4]
	);

	void ClearUnorderedAccessViewUint(
		[in] ID3D11UnorderedAccessView *a,
		[in] const UINT b[4]
	);

	void ClearUnorderedAccessViewFloat(
		[in] ID3D11UnorderedAccessView *a,
		[in] const FLOAT b[4]
	);

	void ClearDepthStencilView(
		[in] ID3D11DepthStencilView *a,
		[in] UINT b,
		[in] FLOAT c,
		[in] UINT8 d
	);

	void GenerateMips(
		[in] ID3D11ShaderResourceView *a
	);

	void SetResourceMinLOD(
		[in] ID3D11Resource *a,
		[in] FLOAT b
	);

	FLOAT GetResourceMinLOD(
		[in] ID3D11Resource *a
	);

	void ResolveSubresource(
		[in] ID3D11Resource *a,
		[in] UINT b,
		[in] ID3D11Resource *c,
		[in] UINT d,
		[in] DXGI_FORMAT e
	);

	void ExecuteCommandList(
		[in] ID3D11CommandList *a,
		[in] BOOL b
	);

	void HSSetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11ShaderResourceView *const *c
	);

	void HSSetShader(
		[in] ID3D11HullShader *a,
		[in] ID3D11ClassInstance *const *b,
		[in] UINT c
	);

	void HSSetSamplers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11SamplerState *const *c
	);

	void HSSetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11Buffer *const *c
	);

	void DSSetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11ShaderResourceView *const *c
	);

	void DSSetShader(
		[in] ID3D11DomainShader *a,
		[in] ID3D11ClassInstance *const *b,
		[in] UINT c
	);

	void DSSetSamplers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11SamplerState *const *c
	);

	void DSSetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11Buffer *const *c
	);

	void CSSetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11ShaderResourceView *const *c
	);

	void CSSetUnorderedAccessViews(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11UnorderedAccessView *const *c,
		[in] const UINT *d
	);

	void CSSetShader(
		[in] ID3D11ComputeShader *a,
		[in] ID3D11ClassInstance *const *b,
		[in] UINT c
	);

	void CSSetSamplers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11SamplerState *const *c
	);

	void CSSetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[in] ID3D11Buffer *const *c
	);

	void VSGetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11Buffer **c
	);

	void PSGetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11ShaderResourceView **c
	);

	void PSGetShader(
		[out] ID3D11PixelShader **a,
		[out] ID3D11ClassInstance **b,
		[in, out, optional] UINT *c
	);

	void PSGetSamplers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11SamplerState **c
	);

	void VSGetShader(
		[out] ID3D11VertexShader **a,
		[out] ID3D11ClassInstance **b,
		[in, out, optional] UINT *c
	);

	void PSGetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11Buffer **c
	);

	void IAGetInputLayout(
		[out] ID3D11InputLayout **a
	);

	void IAGetVertexBuffers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11Buffer **c,
		[out] UINT *d,
		[out] UINT *e
	);

	void IAGetIndexBuffer(
		[out] ID3D11Buffer **a,
		[out] DXGI_FORMAT *b,
		[out] UINT *c
	);

	void GSGetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11Buffer **c
	);

	void GSGetShader(
		[out] ID3D11GeometryShader **a,
		[out] ID3D11ClassInstance **b,
		[in, out, optional] UINT *c
	);

	void IAGetPrimitiveTopology(
		[out] D3D11_PRIMITIVE_TOPOLOGY *a
	);

	void VSGetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11ShaderResourceView **c
	);

	void VSGetSamplers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11SamplerState **c
	);

	void GetPredication(
		[out] ID3D11Predicate **a,
		[out] BOOL *b
	);

	void GSGetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11ShaderResourceView **c
	);

	void GSGetSamplers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11SamplerState **c
	);

	void OMGetRenderTargets(
		[in] UINT a,
		[out] ID3D11RenderTargetView **b,
		[out] ID3D11DepthStencilView **c
	);

	void OMGetRenderTargetsAndUnorderedAccessViews(
		[in] UINT a,
		[out] ID3D11RenderTargetView **b,
		[out] ID3D11DepthStencilView **c,
		[in] UINT d,
		[in] UINT e,
		[out] ID3D11UnorderedAccessView **f
	);

	void OMGetBlendState(
		[out] ID3D11BlendState **a,
		[out] FLOAT b[4],
		[out] UINT *c
	);

	void OMGetDepthStencilState(
		[out] ID3D11DepthStencilState **a,
		[out] UINT *b
	);

	void SOGetTargets(
		[in] UINT a,
		[out] ID3D11Buffer **b
	);

	void RSGetState(
		[out] ID3D11RasterizerState **a
	);

	void RSGetViewports(
		[in, out] UINT *a,
		[out] D3D11_VIEWPORT *b
	);

	void RSGetScissorRects(
		[in, out] UINT *a,
		[out] D3D11_RECT *b
	);

	void HSGetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11ShaderResourceView **c
	);

	void HSGetShader(
		[out] ID3D11HullShader **a,
		[out] ID3D11ClassInstance **b,
		[in, out, optional] UINT *c
	);

	void HSGetSamplers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11SamplerState **c
	);

	void HSGetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11Buffer **c
	);

	void DSGetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11ShaderResourceView **c
	);

	void DSGetShader(
		[out] ID3D11DomainShader **a,
		[out] ID3D11ClassInstance **b,
		[in, out, optional] UINT *c
	);

	void DSGetSamplers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11SamplerState **c
	);

	void DSGetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11Buffer **c
	);

	void CSGetShaderResources(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11ShaderResourceView **c
	);

	void CSGetUnorderedAccessViews(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11UnorderedAccessView **c
	);

	void CSGetShader(
		[out] ID3D11ComputeShader **a,
		[out] ID3D11ClassInstance **b,
		[in, out, optional] UINT *c
	);

	void CSGetSamplers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11SamplerState **c
	);

	void CSGetConstantBuffers(
		[in] UINT a,
		[in] UINT b,
		[out] ID3D11Buffer **c
	);

	void ClearState();

	void Flush();

	D3D11_DEVICE_CONTEXT_TYPE GetType();

	UINT GetContextFlags();

	HRESULT FinishCommandList(
		[in] BOOL a,
		[out] ID3D11CommandList **b
	);
};

cpp_quote("#include \"d3d10_1.h\"")
cpp_quote("#include \"d3d10shader.h\"")
cpp_quote("#include \"d3d10effect.h\"")
/*cpp_quote("#include \"d3d10_1shader.h\"") */

typedef enum D3D11_CREATE_DEVICE_FLAG
{
	D3D11_CREATE_DEVICE_SINGLETHREADED = 1,
	D3D11_CREATE_DEVICE_DEBUG = 2,
	D3D11_CREATE_DEVICE_SWITCH_TO_REF = 4,
	D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 8,
	D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x20
} D3D11_CREATE_DEVICE_FLAG;


HRESULT D3D11CreateDevice(
	[in,optional] IDXGIAdapter* a,
	[in] D3D_DRIVER_TYPE b,
	[in] HMODULE c,
	[in] UINT d,
	[in,optional] const D3D_FEATURE_LEVEL* e,
	[in] UINT f,
	[in] UINT g,
	[out,optional] ID3D11Device** h,
	[out,optional] D3D_FEATURE_LEVEL* i,
	[out,optional] ID3D11DeviceContext** j
);

typedef HRESULT (* PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN)(
	[in,optional] IDXGIAdapter*,
	D3D_DRIVER_TYPE,
	HMODULE,
	UINT, 
	[in,optional] const D3D_FEATURE_LEVEL*,
	UINT,
	UINT,
	[in, optional] const DXGI_SWAP_CHAIN_DESC*,
	[out,optional] IDXGISwapChain**,
	[out,optional] ID3D11Device**,
	[out,optional] D3D_FEATURE_LEVEL*,
	[out,optional] ID3D11DeviceContext**
);

HRESULT D3D11CreateDeviceAndSwapChain(
	[in,optional] IDXGIAdapter* a,
	[in] D3D_DRIVER_TYPE b,
	[in] HMODULE c,
	[in] UINT d,
	[in,optional] const D3D_FEATURE_LEVEL* e,
	[in] UINT f,
	[in] UINT g,
	[in,optional] const DXGI_SWAP_CHAIN_DESC* h,
	[out,optional] IDXGISwapChain** i,
	[out,optional] ID3D11Device** j,
	[out,optional] D3D_FEATURE_LEVEL* k,
	[out,optional] ID3D11DeviceContext** l
);
