]> git.cworth.org Git - apitrace/commitdiff
Minimal D3D11 support.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Sat, 14 Apr 2012 13:56:45 +0000 (14:56 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Sat, 14 Apr 2012 13:56:45 +0000 (14:56 +0100)
12 files changed:
CMakeLists.txt
cmake/FindDirectX.cmake
d3d11trace.py [new file with mode: 0644]
specs/d3d10.py
specs/d3d10_1.py
specs/d3d11.py [new file with mode: 0644]
specs/d3d11sdklayers.py [new file with mode: 0644]
specs/d3d11shader.py [new file with mode: 0644]
specs/d3dcommon.py [new file with mode: 0644]
specs/scripts/cdecl.py
specs/stdapi.py
specs/tags.vim [deleted file]

index 265b2141159e0e4ed66c35f98242f29adc5c0561..7c42200ed5a3601fbfe8468d718747a7cee7620c 100755 (executable)
@@ -75,8 +75,8 @@ else (WIN32)
     CHECK_CXX_COMPILER_FLAG("-fvisibility=hidden" CXX_COMPILER_FLAG_VISIBILITY)
     if (CXX_COMPILER_FLAG_VISIBILITY)
         add_definitions ("-fvisibility=hidden")
-    endif (CXX_COMPILER_FLAG_VISIBILITY)
-endif (WIN32)
+    endif ()
+endif ()
 
 if (MSVC)
     # C99 includes for msvc
@@ -108,7 +108,7 @@ if (MSVC)
     )
         if (${flag_var} MATCHES "/MD")
             string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
-        endif (${flag_var} MATCHES "/MD")
+        endif ()
     endforeach (flag_var)
 else ()
     # Adjust warnings
@@ -302,7 +302,7 @@ if (WIN32)
     if (MINGW)
         # Silence warnings about @nn suffix mismatch
         set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--enable-stdcall-fixup")
-    endif (MINGW)
+    endif ()
 
     # ddraw.dll
     if (DirectX_D3D_INCLUDE_DIR)
@@ -324,7 +324,7 @@ if (WIN32)
             LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
         )
         install (TARGETS ddraw LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif (DirectX_D3D_INCLUDE_DIR)
+    endif ()
 
     # d3d8.dll
     if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
@@ -346,7 +346,7 @@ if (WIN32)
             LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
         )
         install (TARGETS d3d8 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
+    endif ()
 
     # d3d9.dll
     if (DirectX_D3DX9_INCLUDE_DIR)
@@ -368,15 +368,15 @@ if (WIN32)
             LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
         )
         install (TARGETS d3d9 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif (DirectX_D3DX9_INCLUDE_DIR)
+    endif ()
 
     # d3d10.dll
-    if (DirectX_D3D10_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
+    if (DirectX_D3DX10_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3DX10_INCLUDE_DIR})
         add_custom_command (
             OUTPUT d3d10trace.cpp
             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10trace.cpp
-            DEPENDS d3d10trace.py trace.py specs/d3d10misc.py specs/d3d10.py specs/d3d10sdklayers.py specs/dxgi.py specs/dxgitype.py specs/dxgiformat.py specs/winapi.py specs/stdapi.py
+            DEPENDS d3d10trace.py trace.py specs/d3d10misc.py specs/d3d10.py specs/d3d10sdklayers.py specs/d3dcommon.py specs/dxgi.py specs/dxgitype.py specs/dxgiformat.py specs/winapi.py specs/stdapi.py
         )
         add_library (d3d10 MODULE specs/d3d10.def d3d10trace.cpp)
         target_link_libraries (d3d10
@@ -390,15 +390,15 @@ if (WIN32)
             LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
         )
         install (TARGETS d3d10 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif (DirectX_D3D10_INCLUDE_DIR)
+    endif ()
 
     # d3d10_1.dll
-    if (DirectX_D3D10_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
+    if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3D10_1_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
         add_custom_command (
             OUTPUT d3d10_1trace.cpp
             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10_1trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10_1trace.cpp
-            DEPENDS d3d10_1trace.py trace.py specs/d3d10_1.py specs/d3d10.py specs/d3d10sdklayers.py specs/dxgi.py specs/dxgitype.py specs/dxgiformat.py specs/winapi.py specs/stdapi.py
+            DEPENDS d3d10_1trace.py trace.py specs/d3d10_1.py specs/d3d10.py specs/d3d10sdklayers.py specs/d3dcommon.py specs/dxgi.py specs/dxgitype.py specs/dxgiformat.py specs/winapi.py specs/stdapi.py
         )
         add_library (d3d10_1 MODULE specs/d3d10_1.def d3d10_1trace.cpp)
         target_link_libraries (d3d10_1
@@ -412,7 +412,29 @@ if (WIN32)
             LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
         )
         install (TARGETS d3d10_1 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif (DirectX_D3D10_INCLUDE_DIR)
+    endif ()
+
+    # d3d11.dll
+    if (DirectX_D3DX11_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3DX11_INCLUDE_DIR})
+        add_custom_command (
+            OUTPUT d3d11trace.cpp
+            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d11trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d11trace.cpp
+            DEPENDS d3d11trace.py trace.py specs/d3d11.py specs/d3d11sdklayers.py specs/d3dcommon.py specs/dxgi.py specs/dxgitype.py specs/dxgiformat.py specs/winapi.py specs/stdapi.py
+        )
+        add_library (d3d11 MODULE specs/d3d11.def d3d11trace.cpp)
+        target_link_libraries (d3d11
+            common
+            ${ZLIB_LIBRARIES}
+            ${SNAPPY_LIBRARIES}
+        )
+        set_target_properties (d3d11
+            PROPERTIES PREFIX ""
+            RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
+            LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
+        )
+        install (TARGETS d3d11 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+    endif ()
 
     # opengl32.dll
     add_custom_command (
index a17487097b806c75d2161ff58fd13865b436b8fa..d841af4a328430963e05e8dc1b824f04f2e80d40 100644 (file)
@@ -57,8 +57,8 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
                set (DirectX_D3D_FOUND 1)
                if (DirectX_D3DX_INCLUDE_DIR AND DirectX_D3DX_LIBRARY)
                        set (DirectX_D3DX_FOUND 1)
-               endif (DirectX_D3DX_INCLUDE_DIR AND DirectX_D3DX_LIBRARY)
-       endif (DirectX_D3D_INCLUDE_DIR AND DirectX_DDRAW_LIBRARY)
+               endif ()
+       endif ()
 
 
        find_path (DirectX_D3D8_INCLUDE_DIR d3d8.h
@@ -85,8 +85,8 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
                set (DirectX_D3D8_FOUND 1)
                if (DirectX_D3DX8_INCLUDE_DIR AND DirectX_D3DX8_LIBRARY)
                        set (DirectX_D3DX8_FOUND 1)
-               endif (DirectX_D3DX8_INCLUDE_DIR AND DirectX_D3DX8_LIBRARY)
-       endif (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3D8_LIBRARY)
+               endif ()
+       endif ()
 
 
        find_path (DirectX_D3D9_INCLUDE_DIR d3d9.h
@@ -113,8 +113,8 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
                set (DirectX_D3D9_FOUND 1)
                if (DirectX_D3DX9_INCLUDE_DIR AND DirectX_D3DX9_LIBRARY)
                        set (DirectX_D3DX9_FOUND 1)
-               endif (DirectX_D3DX9_INCLUDE_DIR AND DirectX_D3DX9_LIBRARY)
-       endif (DirectX_D3D9_INCLUDE_DIR AND DirectX_D3D9_LIBRARY)
+               endif ()
+       endif ()
 
 
        find_path (DirectX_D3D10_INCLUDE_DIR d3d10.h
@@ -141,8 +141,52 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
                set (DirectX_D3D10_FOUND 1)
                if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3DX10_LIBRARY)
                        set (DirectX_D3DX10_FOUND 1)
-               endif (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3DX10_LIBRARY)
-       endif (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY)
+               endif ()
+       endif ()
+
+
+       find_path (DirectX_D3D10_1_INCLUDE_DIR d3d10_1.h
+               PATHS
+                       "${DirectX_ROOT_DIR}/Include"
+               DOC "The directory where d3d10_1.h resides")
+
+       find_library (DirectX_D3D10_1_LIBRARY d3d10_1
+               PATHS
+                       "${DirectX_ROOT_DIR}/Lib/${DirectX_ARCHITECTURE}"
+               DOC "The directory where d3d10_1 resides")
+
+       if (DirectX_D3D10_1_INCLUDE_DIR AND DirectX_D3D10_1_LIBRARY)
+               set (DirectX_D3D10_1_FOUND 1)
+       endif ()
+
+
+       find_path (DirectX_D3D11_INCLUDE_DIR d3d11.h
+               PATHS
+                       "${DirectX_ROOT_DIR}/Include"
+               DOC "The directory where d3d11.h resides")
+
+       find_path (DirectX_D3DX11_INCLUDE_DIR d3dx11.h
+               PATHS
+                       "${DirectX_ROOT_DIR}/Include"
+               DOC "The directory where d3dx11.h resides")
+
+       find_library (DirectX_D3D11_LIBRARY d3d11
+               PATHS
+                       "${DirectX_ROOT_DIR}/Lib/${DirectX_ARCHITECTURE}"
+               DOC "The directory where d3d11 resides")
+
+       find_library (DirectX_D3DX11_LIBRARY d3dx11
+               PATHS
+                       "${DirectX_ROOT_DIR}/Lib/${DirectX_ARCHITECTURE}"
+               DOC "The directory where d3dx11 resides")
+
+       if (DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY)
+               set (DirectX_D3D11_FOUND 1)
+               if (DirectX_D3DX11_INCLUDE_DIR AND DirectX_D3DX11_LIBRARY)
+                       set (DirectX_D3DX11_FOUND 1)
+               endif ()
+       endif ()
+
 
        mark_as_advanced(
                DirectX_D3D_INCLUDE_DIR
@@ -169,9 +213,15 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
                DirectX_D3D10_LIBRARY
                DirectX_D3DX10_INCLUDE_DIR
                DirectX_D3DX10_LIBRARY
+               DirectX_D3D10_1_INCLUDE_DIR
+               DirectX_D3D10_1_LIBRARY
+               DirectX_D3D11_INCLUDE_DIR
+               DirectX_D3D11_LIBRARY
+               DirectX_D3DX11_INCLUDE_DIR
+               DirectX_D3DX11_LIBRARY
        )
 
-endif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+endif ()
 
 mark_as_advanced (
        DirectX_D3D_FOUND
@@ -182,4 +232,7 @@ mark_as_advanced (
        DirectX_D3DX9_FOUND
        DirectX_D3D10_FOUND
        DirectX_D3DX10_FOUND
+       DirectX_D3D10_1_FOUND
+       DirectX_D3D11_FOUND
+       DirectX_D3DX11_FOUND
 )
diff --git a/d3d11trace.py b/d3d11trace.py
new file mode 100644 (file)
index 0000000..e40828b
--- /dev/null
@@ -0,0 +1,46 @@
+##########################################################################
+#
+# Copyright 2008-2012 VMware, Inc.
+# All Rights Reserved.
+#
+# 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 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
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+from specs.d3d11 import d3d11
+from dlltrace import DllTracer
+
+
+if __name__ == '__main__':
+    print '#define INITGUID'
+    print
+    print '#include "trace_writer_local.hpp"'
+    print '#include "os.hpp"'
+    print
+    print '#include <windows.h>'
+    print '#include <tchar.h>'
+    print
+    print '#include "compat.h"'
+    print
+    print '#include <d3d11.h>'
+    print '#include <d3dx11.h>'
+    print
+    tracer = DllTracer('d3d11.dll')
+    tracer.trace_api(d3d11)
index 00321d7194bee1205d45bbcbeb94a41a6708a4f0..5119904184fbdf93694738c27d5b498b0dd71c24 100644 (file)
 #
 ##########################################################################/
 
+
 from dxgi import *
+from d3dcommon import *
+
 
 HRESULT = FakeEnum(HRESULT, [
     "D3D10_ERROR_FILE_NOT_FOUND",
@@ -567,28 +570,6 @@ D3D10_QUERY_DESC = Struct("D3D10_QUERY_DESC", [
     (D3D10_QUERY_MISC_FLAG, "MiscFlags"),
 ])
 
-D3D10_PRIMITIVE_TOPOLOGY = Enum("D3D10_PRIMITIVE_TOPOLOGY", [
-       "D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED",
-       "D3D10_PRIMITIVE_TOPOLOGY_POINTLIST",
-       "D3D10_PRIMITIVE_TOPOLOGY_LINELIST",
-       "D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP",
-       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST",
-       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP",
-       "D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ",
-       "D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ",
-       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ",
-       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ",
-])
-
-D3D10_PRIMITIVE = Enum("D3D10_PRIMITIVE", [
-       "D3D10_PRIMITIVE_UNDEFINED",
-       "D3D10_PRIMITIVE_POINT",
-       "D3D10_PRIMITIVE_LINE",
-       "D3D10_PRIMITIVE_TRIANGLE",
-       "D3D10_PRIMITIVE_LINE_ADJ",
-       "D3D10_PRIMITIVE_TRIANGLE_ADJ",
-])
-
 D3D10_RECT = Alias("D3D10_RECT", RECT)
 D3D10_VIEWPORT = Struct("D3D10_VIEWPORT", [
     (INT, "TopLeftX"),
@@ -766,15 +747,6 @@ ID3D10DepthStencilState.methods += [
     Method(Void, "GetDesc", [Out(Pointer(D3D10_DEPTH_STENCIL_DESC), "pDesc")]),
 ]
 
-ID3D10GeometryShader.methods += [
-]
-
-ID3D10InputLayout.methods += [
-]
-
-ID3D10PixelShader.methods += [
-]
-
 ID3D10RasterizerState.methods += [
     Method(Void, "GetDesc", [Out(Pointer(D3D10_RASTERIZER_DESC), "pDesc")]),
 ]
@@ -783,9 +755,6 @@ ID3D10SamplerState.methods += [
     Method(Void, "GetDesc", [Out(Pointer(D3D10_SAMPLER_DESC), "pDesc")]),
 ]
 
-ID3D10VertexShader.methods += [
-]
-
 ID3D10Asynchronous.methods += [
     Method(Void, "Begin", []),
     Method(Void, "End", []),
@@ -801,9 +770,6 @@ ID3D10Query.methods += [
     Method(Void, "GetDesc", [Out(Pointer(D3D10_QUERY_DESC), "pDesc")]),
 ]
 
-ID3D10Predicate.methods += [
-]
-
 ID3D10Device.methods += [
     Method(Void, "VSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(OpaquePointer(ID3D10Buffer)), "NumBuffers"), "ppConstantBuffers")]),
     Method(Void, "PSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (Array(Const(OpaquePointer(ID3D10ShaderResourceView)), "NumViews"), "ppShaderResourceViews")]),
index 5bc364f83d5a2c40a6442b56de18f32b96227fc0..c9bda7efd301c2791630654c75fdaac557d721f9 100644 (file)
@@ -82,7 +82,6 @@ D3D10_TEXCUBE_ARRAY_SRV1 = Struct("D3D10_TEXCUBE_ARRAY_SRV1", [
     (UINT, "NumCubes"),
 ])
 
-D3D10_SRV_DIMENSION1 = Alias("D3D10_SRV_DIMENSION1", D3D10_SRV_DIMENSION)
 D3D10_SHADER_RESOURCE_VIEW_DESC1 = Struct("D3D10_SHADER_RESOURCE_VIEW_DESC1", [
     (DXGI_FORMAT, "Format"),
     (D3D10_SRV_DIMENSION1, "ViewDimension"),
diff --git a/specs/d3d11.py b/specs/d3d11.py
new file mode 100644 (file)
index 0000000..6371529
--- /dev/null
@@ -0,0 +1,1231 @@
+##########################################################################
+#
+# Copyright 2012 Jose Fonseca
+# All Rights Reserved.
+#
+# 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 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
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+from dxgi import *
+from d3dcommon import *
+from d3d11sdklayers import *
+
+
+HRESULT = FakeEnum(HRESULT, [
+    "D3D11_ERROR_FILE_NOT_FOUND",
+    "D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS",
+    "D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS",
+    "D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD",
+    "D3DERR_INVALIDCALL",
+    "D3DERR_WASSTILLDRAWING",
+    "E_FAIL",
+    "E_INVALIDARG",
+    "E_OUTOFMEMORY",
+    "S_FALSE",
+    "S_OK",
+])
+
+
+ID3D11DepthStencilState = Interface('ID3D11DepthStencilState', ID3D11DeviceChild)
+ID3D11BlendState = Interface('ID3D11BlendState', ID3D11DeviceChild)
+ID3D11RasterizerState = Interface('ID3D11RasterizerState', ID3D11DeviceChild)
+ID3D11Resource = Interface('ID3D11Resource', ID3D11DeviceChild)
+ID3D11Buffer = Interface('ID3D11Buffer', ID3D11Resource)
+ID3D11Texture1D = Interface('ID3D11Texture1D', ID3D11Resource)
+ID3D11Texture2D = Interface('ID3D11Texture2D', ID3D11Resource)
+ID3D11Texture3D = Interface('ID3D11Texture3D', ID3D11Resource)
+ID3D11View = Interface('ID3D11View', ID3D11DeviceChild)
+ID3D11ShaderResourceView = Interface('ID3D11ShaderResourceView', ID3D11View)
+ID3D11RenderTargetView = Interface('ID3D11RenderTargetView', ID3D11View)
+ID3D11DepthStencilView = Interface('ID3D11DepthStencilView', ID3D11View)
+ID3D11UnorderedAccessView = Interface('ID3D11UnorderedAccessView', ID3D11View)
+ID3D11VertexShader = Interface('ID3D11VertexShader', ID3D11DeviceChild)
+ID3D11HullShader = Interface('ID3D11HullShader', ID3D11DeviceChild)
+ID3D11DomainShader = Interface('ID3D11DomainShader', ID3D11DeviceChild)
+ID3D11GeometryShader = Interface('ID3D11GeometryShader', ID3D11DeviceChild)
+ID3D11PixelShader = Interface('ID3D11PixelShader', ID3D11DeviceChild)
+ID3D11ComputeShader = Interface('ID3D11ComputeShader', ID3D11DeviceChild)
+ID3D11InputLayout = Interface('ID3D11InputLayout', ID3D11DeviceChild)
+ID3D11SamplerState = Interface('ID3D11SamplerState', ID3D11DeviceChild)
+ID3D11Asynchronous = Interface('ID3D11Asynchronous', ID3D11DeviceChild)
+ID3D11Query = Interface('ID3D11Query', ID3D11Asynchronous)
+ID3D11Predicate = Interface('ID3D11Predicate', ID3D11Query)
+ID3D11Counter = Interface('ID3D11Counter', ID3D11Asynchronous)
+ID3D11ClassInstance = Interface('ID3D11ClassInstance', ID3D11DeviceChild)
+ID3D11ClassLinkage = Interface('ID3D11ClassLinkage', ID3D11DeviceChild)
+ID3D11CommandList = Interface('ID3D11CommandList', ID3D11DeviceChild)
+ID3D11Device = Interface('ID3D11Device', IUnknown)
+
+
+D3D11_INPUT_CLASSIFICATION = Enum('D3D11_INPUT_CLASSIFICATION', [
+    'D3D11_INPUT_PER_VERTEX_DATA',
+    'D3D11_INPUT_PER_INSTANCE_DATA',
+])
+
+D3D11_INPUT_ELEMENT_ALIGNED_BYTE_OFFSET = FakeEnum(UINT, [
+    'D3D11_APPEND_ALIGNED_ELEMENT',
+])
+
+D3D11_INPUT_ELEMENT_DESC = Struct('D3D11_INPUT_ELEMENT_DESC', [
+    (LPCSTR, 'SemanticName'),
+    (UINT, 'SemanticIndex'),
+    (DXGI_FORMAT, 'Format'),
+    (UINT, 'InputSlot'),
+    (D3D11_INPUT_ELEMENT_ALIGNED_BYTE_OFFSET, 'AlignedByteOffset'),
+    (D3D11_INPUT_CLASSIFICATION, 'InputSlotClass'),
+    (UINT, 'InstanceDataStepRate'),
+])
+
+D3D11_FILL_MODE = Enum('D3D11_FILL_MODE', [
+    'D3D11_FILL_WIREFRAME',
+    'D3D11_FILL_SOLID',
+])
+
+D3D11_PRIMITIVE_TOPOLOGY = Enum('D3D11_PRIMITIVE_TOPOLOGY', [
+    'D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED',
+    'D3D11_PRIMITIVE_TOPOLOGY_POINTLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_LINELIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP',
+    'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP',
+    'D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ',
+    'D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ',
+    'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ',
+    'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ',
+    'D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST',
+])
+
+D3D11_PRIMITIVE = Enum('D3D11_PRIMITIVE', [
+    'D3D11_PRIMITIVE_UNDEFINED',
+    'D3D11_PRIMITIVE_POINT',
+    'D3D11_PRIMITIVE_LINE',
+    'D3D11_PRIMITIVE_TRIANGLE',
+    'D3D11_PRIMITIVE_LINE_ADJ',
+    'D3D11_PRIMITIVE_TRIANGLE_ADJ',
+    'D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH',
+])
+
+D3D11_CULL_MODE = Enum('D3D11_CULL_MODE', [
+    'D3D11_CULL_NONE',
+    'D3D11_CULL_FRONT',
+    'D3D11_CULL_BACK',
+])
+
+D3D11_SO_DECLARATION_ENTRY = Struct('D3D11_SO_DECLARATION_ENTRY', [
+    (UINT, 'Stream'),
+    (LPCSTR, 'SemanticName'),
+    (UINT, 'SemanticIndex'),
+    (BYTE, 'StartComponent'),
+    (BYTE, 'ComponentCount'),
+    (BYTE, 'OutputSlot'),
+])
+
+D3D11_VIEWPORT = Struct('D3D11_VIEWPORT', [
+    (FLOAT, 'TopLeftX'),
+    (FLOAT, 'TopLeftY'),
+    (FLOAT, 'Width'),
+    (FLOAT, 'Height'),
+    (FLOAT, 'MinDepth'),
+    (FLOAT, 'MaxDepth'),
+])
+
+D3D11_RESOURCE_DIMENSION = 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_SRV_DIMENSION = Enum('D3D11_SRV_DIMENSION', [
+    'D3D11_SRV_DIMENSION_UNKNOWN',
+    'D3D11_SRV_DIMENSION_BUFFER',
+    'D3D11_SRV_DIMENSION_TEXTURE1D',
+    'D3D11_SRV_DIMENSION_TEXTURE1DARRAY',
+    'D3D11_SRV_DIMENSION_TEXTURE2D',
+    'D3D11_SRV_DIMENSION_TEXTURE2DARRAY',
+    'D3D11_SRV_DIMENSION_TEXTURE2DMS',
+    'D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY',
+    'D3D11_SRV_DIMENSION_TEXTURE3D',
+    'D3D11_SRV_DIMENSION_TEXTURECUBE',
+    'D3D11_SRV_DIMENSION_TEXTURECUBEARRAY',
+    'D3D11_SRV_DIMENSION_BUFFEREX',
+])
+
+D3D11_DSV_DIMENSION = 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_RTV_DIMENSION = 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_UAV_DIMENSION = 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',
+])
+
+D3D11_USAGE = Enum('D3D11_USAGE', [
+    'D3D11_USAGE_DEFAULT',
+    'D3D11_USAGE_IMMUTABLE',
+    'D3D11_USAGE_DYNAMIC',
+    'D3D11_USAGE_STAGING',
+])
+
+D3D11_BIND_FLAG = Flags(UINT, [
+    'D3D11_BIND_VERTEX_BUFFER',
+    'D3D11_BIND_INDEX_BUFFER',
+    'D3D11_BIND_CONSTANT_BUFFER',
+    'D3D11_BIND_SHADER_RESOURCE',
+    'D3D11_BIND_STREAM_OUTPUT',
+    'D3D11_BIND_RENDER_TARGET',
+    'D3D11_BIND_DEPTH_STENCIL',
+    'D3D11_BIND_UNORDERED_ACCESS',
+])
+
+D3D11_CPU_ACCESS_FLAG = Flags(UINT, [
+    'D3D11_CPU_ACCESS_WRITE',
+    'D3D11_CPU_ACCESS_READ',
+])
+
+D3D11_RESOURCE_MISC_FLAG = Flags(UINT, [
+    'D3D11_RESOURCE_MISC_GENERATE_MIPS',
+    'D3D11_RESOURCE_MISC_SHARED',
+    'D3D11_RESOURCE_MISC_TEXTURECUBE',
+    'D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS',
+    'D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS',
+    'D3D11_RESOURCE_MISC_BUFFER_STRUCTURED',
+    'D3D11_RESOURCE_MISC_RESOURCE_CLAMP',
+    'D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX',
+    'D3D11_RESOURCE_MISC_GDI_COMPATIBLE',
+])
+
+D3D11_MAP = Enum('D3D11_MAP', [
+    'D3D11_MAP_READ',
+    'D3D11_MAP_WRITE',
+    'D3D11_MAP_READ_WRITE',
+    'D3D11_MAP_WRITE_DISCARD',
+    'D3D11_MAP_WRITE_NO_OVERWRITE',
+])
+
+D3D11_MAP_FLAG = Flags(UINT, [
+    'D3D11_MAP_FLAG_DO_NOT_WAIT',
+])
+
+D3D11_RAISE_FLAG = Flags(UINT, [
+    'D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR',
+])
+
+D3D11_CLEAR_FLAG = Flags(UINT, [
+    'D3D11_CLEAR_DEPTH',
+    'D3D11_CLEAR_STENCIL',
+])
+
+D3D11_RECT = Alias('D3D11_RECT', RECT)
+D3D11_BOX = Struct('D3D11_BOX', [
+    (UINT, 'left'),
+    (UINT, 'top'),
+    (UINT, 'front'),
+    (UINT, 'right'),
+    (UINT, 'bottom'),
+    (UINT, 'back'),
+])
+
+ID3D11DeviceChild.methods += [
+    StdMethod(Void, 'GetDevice', [Out(Pointer(Pointer(ID3D11Device)), 'ppDevice')]),
+    StdMethod(HRESULT, 'GetPrivateData', [(REFGUID, 'guid'), Out(Pointer(UINT), 'pDataSize'), Out(OpaquePointer(Void), 'pData')]),
+    StdMethod(HRESULT, 'SetPrivateData', [(REFGUID, 'guid'), (UINT, 'DataSize'), (OpaqueBlob(Const(Void), 'DataSize'), 'pData')]),
+    StdMethod(HRESULT, 'SetPrivateDataInterface', [(REFGUID, 'guid'), (Pointer(Const(IUnknown)), 'pData')]),
+]
+
+D3D11_COMPARISON_FUNC = Enum('D3D11_COMPARISON_FUNC', [
+    'D3D11_COMPARISON_NEVER',
+    '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_DEPTH_WRITE_MASK = Enum('D3D11_DEPTH_WRITE_MASK', [
+    'D3D11_DEPTH_WRITE_MASK_ZERO',
+    'D3D11_DEPTH_WRITE_MASK_ALL',
+])
+
+D3D11_STENCIL_OP = Enum('D3D11_STENCIL_OP', [
+    'D3D11_STENCIL_OP_KEEP',
+    '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_DEPTH_STENCILOP_DESC = Struct('D3D11_DEPTH_STENCILOP_DESC', [
+    (D3D11_STENCIL_OP, 'StencilFailOp'),
+    (D3D11_STENCIL_OP, 'StencilDepthFailOp'),
+    (D3D11_STENCIL_OP, 'StencilPassOp'),
+    (D3D11_COMPARISON_FUNC, 'StencilFunc'),
+])
+
+D3D11_DEPTH_STENCIL_DESC = 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'),
+])
+
+ID3D11DepthStencilState.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_DEPTH_STENCIL_DESC), 'pDesc')]),
+]
+
+D3D11_BLEND = Enum('D3D11_BLEND', [
+    'D3D11_BLEND_ZERO',
+    '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',
+    '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_OP = Enum('D3D11_BLEND_OP', [
+    'D3D11_BLEND_OP_ADD',
+    'D3D11_BLEND_OP_SUBTRACT',
+    'D3D11_BLEND_OP_REV_SUBTRACT',
+    'D3D11_BLEND_OP_MIN',
+    'D3D11_BLEND_OP_MAX',
+])
+
+D3D11_COLOR_WRITE_ENABLE = Enum('D3D11_COLOR_WRITE_ENABLE', [
+    'D3D11_COLOR_WRITE_ENABLE_ALL',
+    'D3D11_COLOR_WRITE_ENABLE_RED',
+    'D3D11_COLOR_WRITE_ENABLE_GREEN',
+    'D3D11_COLOR_WRITE_ENABLE_BLUE',
+    'D3D11_COLOR_WRITE_ENABLE_ALPHA',
+])
+
+D3D11_RENDER_TARGET_BLEND_DESC = 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_BLEND_DESC = Struct('D3D11_BLEND_DESC', [
+    (BOOL, 'AlphaToCoverageEnable'),
+    (BOOL, 'IndependentBlendEnable'),
+    (Array(D3D11_RENDER_TARGET_BLEND_DESC, 8), 'RenderTarget'),
+])
+
+ID3D11BlendState.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_BLEND_DESC), 'pDesc')]),
+]
+
+D3D11_RASTERIZER_DESC = 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'),
+])
+
+ID3D11RasterizerState.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_RASTERIZER_DESC), 'pDesc')]),
+]
+
+D3D11_SUBRESOURCE_DATA = Struct('D3D11_SUBRESOURCE_DATA', [
+    (OpaquePointer(Const(Void)), 'pSysMem'),
+    (UINT, 'SysMemPitch'),
+    (UINT, 'SysMemSlicePitch'),
+])
+
+D3D11_MAPPED_SUBRESOURCE = Struct('D3D11_MAPPED_SUBRESOURCE', [
+    (OpaquePointer(Void), 'pData'),
+    (UINT, 'RowPitch'),
+    (UINT, 'DepthPitch'),
+])
+
+ID3D11Resource.methods += [
+    StdMethod(Void, 'GetType', [Out(Pointer(D3D11_RESOURCE_DIMENSION), 'pResourceDimension')]),
+    StdMethod(Void, 'SetEvictionPriority', [(UINT, 'EvictionPriority')]),
+    StdMethod(UINT, 'GetEvictionPriority', []),
+]
+
+D3D11_BUFFER_DESC = Struct('D3D11_BUFFER_DESC', [
+    (UINT, 'ByteWidth'),
+    (D3D11_USAGE, 'Usage'),
+    (D3D11_BIND_FLAG, 'BindFlags'),
+    (D3D11_CPU_ACCESS_FLAG, 'CPUAccessFlags'),
+    (D3D11_RESOURCE_MISC_FLAG, 'MiscFlags'),
+    (UINT, 'StructureByteStride'),
+])
+
+ID3D11Buffer.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_BUFFER_DESC), 'pDesc')]),
+]
+
+D3D11_TEXTURE1D_DESC = Struct('D3D11_TEXTURE1D_DESC', [
+    (UINT, 'Width'),
+    (UINT, 'MipLevels'),
+    (UINT, 'ArraySize'),
+    (DXGI_FORMAT, 'Format'),
+    (D3D11_USAGE, 'Usage'),
+    (D3D11_BIND_FLAG, 'BindFlags'),
+    (D3D11_CPU_ACCESS_FLAG, 'CPUAccessFlags'),
+    (D3D11_RESOURCE_MISC_FLAG, 'MiscFlags'),
+])
+
+ID3D11Texture1D.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_TEXTURE1D_DESC), 'pDesc')]),
+]
+
+D3D11_TEXTURE2D_DESC = Struct('D3D11_TEXTURE2D_DESC', [
+    (UINT, 'Width'),
+    (UINT, 'Height'),
+    (UINT, 'MipLevels'),
+    (UINT, 'ArraySize'),
+    (DXGI_FORMAT, 'Format'),
+    (DXGI_SAMPLE_DESC, 'SampleDesc'),
+    (D3D11_USAGE, 'Usage'),
+    (D3D11_BIND_FLAG, 'BindFlags'),
+    (D3D11_CPU_ACCESS_FLAG, 'CPUAccessFlags'),
+    (D3D11_RESOURCE_MISC_FLAG, 'MiscFlags'),
+])
+
+ID3D11Texture2D.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_TEXTURE2D_DESC), 'pDesc')]),
+]
+
+D3D11_TEXTURE3D_DESC = Struct('D3D11_TEXTURE3D_DESC', [
+    (UINT, 'Width'),
+    (UINT, 'Height'),
+    (UINT, 'Depth'),
+    (UINT, 'MipLevels'),
+    (DXGI_FORMAT, 'Format'),
+    (D3D11_USAGE, 'Usage'),
+    (D3D11_BIND_FLAG, 'BindFlags'),
+    (D3D11_CPU_ACCESS_FLAG, 'CPUAccessFlags'),
+    (D3D11_RESOURCE_MISC_FLAG, 'MiscFlags'),
+])
+
+ID3D11Texture3D.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_TEXTURE3D_DESC), 'pDesc')]),
+]
+
+D3D11_TEXTURECUBE_FACE = 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',
+])
+
+ID3D11View.methods += [
+    StdMethod(Void, 'GetResource', [Out(Pointer(Pointer(ID3D11Resource)), 'ppResource')]),
+]
+
+D3D11_BUFFER_SRV = Struct('D3D11_BUFFER_SRV', [
+    (Union(None, [(UINT, 'FirstElement'), (UINT, 'ElementOffset')]), None),
+    (Union(None, [(UINT, 'NumElements'), (UINT, 'ElementWidth')]), None),
+])
+
+D3D11_BUFFEREX_SRV_FLAG = Flags(UINT, [
+    'D3D11_BUFFEREX_SRV_FLAG_RAW',
+])
+
+D3D11_BUFFEREX_SRV = Struct('D3D11_BUFFEREX_SRV', [
+    (UINT, 'FirstElement'),
+    (UINT, 'NumElements'),
+    (D3D11_BUFFEREX_SRV_FLAG, 'Flags'),
+])
+
+D3D11_TEX1D_SRV = Struct('D3D11_TEX1D_SRV', [
+    (UINT, 'MostDetailedMip'),
+    (UINT, 'MipLevels'),
+])
+
+D3D11_TEX1D_ARRAY_SRV = Struct('D3D11_TEX1D_ARRAY_SRV', [
+    (UINT, 'MostDetailedMip'),
+    (UINT, 'MipLevels'),
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX2D_SRV = Struct('D3D11_TEX2D_SRV', [
+    (UINT, 'MostDetailedMip'),
+    (UINT, 'MipLevels'),
+])
+
+D3D11_TEX2D_ARRAY_SRV = Struct('D3D11_TEX2D_ARRAY_SRV', [
+    (UINT, 'MostDetailedMip'),
+    (UINT, 'MipLevels'),
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX3D_SRV = Struct('D3D11_TEX3D_SRV', [
+    (UINT, 'MostDetailedMip'),
+    (UINT, 'MipLevels'),
+])
+
+D3D11_TEXCUBE_SRV = Struct('D3D11_TEXCUBE_SRV', [
+    (UINT, 'MostDetailedMip'),
+    (UINT, 'MipLevels'),
+])
+
+D3D11_TEXCUBE_ARRAY_SRV = Struct('D3D11_TEXCUBE_ARRAY_SRV', [
+    (UINT, 'MostDetailedMip'),
+    (UINT, 'MipLevels'),
+    (UINT, 'First2DArrayFace'),
+    (UINT, 'NumCubes'),
+])
+
+D3D11_TEX2DMS_SRV = Struct('D3D11_TEX2DMS_SRV', [
+    (UINT, 'UnusedField_NothingToDefine'),
+])
+
+D3D11_TEX2DMS_ARRAY_SRV = Struct('D3D11_TEX2DMS_ARRAY_SRV', [
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_SHADER_RESOURCE_VIEW_DESC = Struct('D3D11_SHADER_RESOURCE_VIEW_DESC', [
+    (DXGI_FORMAT, 'Format'),
+    (D3D11_SRV_DIMENSION, 'ViewDimension'),
+    (Union(None, [
+        (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'),
+    ]), None),
+])
+
+ID3D11ShaderResourceView.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_SHADER_RESOURCE_VIEW_DESC), 'pDesc')]),
+]
+
+D3D11_BUFFER_RTV = Struct('D3D11_BUFFER_RTV', [
+    (Union(None, [(UINT, 'FirstElement'), (UINT, 'ElementOffset')]), None),
+    (Union(None, [(UINT, 'NumElements'), (UINT, 'ElementWidth')]), None),
+])
+
+D3D11_TEX1D_RTV = Struct('D3D11_TEX1D_RTV', [
+    (UINT, 'MipSlice'),
+])
+
+D3D11_TEX1D_ARRAY_RTV = Struct('D3D11_TEX1D_ARRAY_RTV', [
+    (UINT, 'MipSlice'),
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX2D_RTV = Struct('D3D11_TEX2D_RTV', [
+    (UINT, 'MipSlice'),
+])
+
+D3D11_TEX2DMS_RTV = Struct('D3D11_TEX2DMS_RTV', [
+    (UINT, 'UnusedField_NothingToDefine'),
+])
+
+D3D11_TEX2D_ARRAY_RTV = Struct('D3D11_TEX2D_ARRAY_RTV', [
+    (UINT, 'MipSlice'),
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX2DMS_ARRAY_RTV = Struct('D3D11_TEX2DMS_ARRAY_RTV', [
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX3D_RTV = Struct('D3D11_TEX3D_RTV', [
+    (UINT, 'MipSlice'),
+    (UINT, 'FirstWSlice'),
+    (UINT, 'WSize'),
+])
+
+D3D11_RENDER_TARGET_VIEW_DESC = Struct('D3D11_RENDER_TARGET_VIEW_DESC', [
+    (DXGI_FORMAT, 'Format'),
+    (D3D11_RTV_DIMENSION, 'ViewDimension'),
+    (Union(None, [
+        (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'),
+    ]), None),
+])
+
+ID3D11RenderTargetView.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_RENDER_TARGET_VIEW_DESC), 'pDesc')]),
+]
+
+D3D11_TEX1D_DSV = Struct('D3D11_TEX1D_DSV', [
+    (UINT, 'MipSlice'),
+])
+
+D3D11_TEX1D_ARRAY_DSV = Struct('D3D11_TEX1D_ARRAY_DSV', [
+    (UINT, 'MipSlice'),
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX2D_DSV = Struct('D3D11_TEX2D_DSV', [
+    (UINT, 'MipSlice'),
+])
+
+D3D11_TEX2D_ARRAY_DSV = Struct('D3D11_TEX2D_ARRAY_DSV', [
+    (UINT, 'MipSlice'),
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX2DMS_DSV = Struct('D3D11_TEX2DMS_DSV', [
+    (UINT, 'UnusedField_NothingToDefine'),
+])
+
+D3D11_TEX2DMS_ARRAY_DSV = Struct('D3D11_TEX2DMS_ARRAY_DSV', [
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_DSV_FLAG = Flags(UINT, [
+    'D3D11_DSV_READ_ONLY_DEPTH',
+    'D3D11_DSV_READ_ONLY_STENCIL',
+])
+
+D3D11_DEPTH_STENCIL_VIEW_DESC = Struct('D3D11_DEPTH_STENCIL_VIEW_DESC', [
+    (DXGI_FORMAT, 'Format'),
+    (D3D11_DSV_DIMENSION, 'ViewDimension'),
+    (D3D11_DSV_FLAG, 'Flags'),
+    (Union(None, [
+        (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'),
+    ]), None),
+])
+
+ID3D11DepthStencilView.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_DEPTH_STENCIL_VIEW_DESC), 'pDesc')]),
+]
+
+D3D11_BUFFER_UAV_FLAG = Flags(UINT, [
+    'D3D11_BUFFER_UAV_FLAG_RAW',
+    'D3D11_BUFFER_UAV_FLAG_APPEND',
+    'D3D11_BUFFER_UAV_FLAG_COUNTER',
+])
+
+D3D11_BUFFER_UAV = Struct('D3D11_BUFFER_UAV', [
+    (UINT, 'FirstElement'),
+    (UINT, 'NumElements'),
+    (D3D11_BUFFER_UAV_FLAG, 'Flags'),
+])
+
+D3D11_TEX1D_UAV = Struct('D3D11_TEX1D_UAV', [
+    (UINT, 'MipSlice'),
+])
+
+D3D11_TEX1D_ARRAY_UAV = Struct('D3D11_TEX1D_ARRAY_UAV', [
+    (UINT, 'MipSlice'),
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX2D_UAV = Struct('D3D11_TEX2D_UAV', [
+    (UINT, 'MipSlice'),
+])
+
+D3D11_TEX2D_ARRAY_UAV = Struct('D3D11_TEX2D_ARRAY_UAV', [
+    (UINT, 'MipSlice'),
+    (UINT, 'FirstArraySlice'),
+    (UINT, 'ArraySize'),
+])
+
+D3D11_TEX3D_UAV = Struct('D3D11_TEX3D_UAV', [
+    (UINT, 'MipSlice'),
+    (UINT, 'FirstWSlice'),
+    (UINT, 'WSize'),
+])
+
+D3D11_UNORDERED_ACCESS_VIEW_DESC = Struct('D3D11_UNORDERED_ACCESS_VIEW_DESC', [
+    (DXGI_FORMAT, 'Format'),
+    (D3D11_UAV_DIMENSION, 'ViewDimension'),
+    (Union(None, [
+        (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'),
+    ]), None),
+])
+
+ID3D11UnorderedAccessView.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_UNORDERED_ACCESS_VIEW_DESC), 'pDesc')]),
+]
+
+D3D11_FILTER = Enum('D3D11_FILTER', [
+    'D3D11_FILTER_MIN_MAG_MIP_POINT',
+    'D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR',
+    'D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT',
+    'D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR',
+    'D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT',
+    'D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR',
+    'D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT',
+    'D3D11_FILTER_MIN_MAG_MIP_LINEAR',
+    'D3D11_FILTER_ANISOTROPIC',
+    'D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT',
+    'D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR',
+    'D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT',
+    'D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR',
+    'D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT',
+    'D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR',
+    'D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT',
+    'D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR',
+    'D3D11_FILTER_COMPARISON_ANISOTROPIC',
+])
+
+D3D11_FILTER_TYPE = Enum('D3D11_FILTER_TYPE', [
+    'D3D11_FILTER_TYPE_POINT',
+    'D3D11_FILTER_TYPE_LINEAR',
+])
+
+D3D11_TEXTURE_ADDRESS_MODE = Enum('D3D11_TEXTURE_ADDRESS_MODE', [
+    'D3D11_TEXTURE_ADDRESS_WRAP',
+    'D3D11_TEXTURE_ADDRESS_MIRROR',
+    'D3D11_TEXTURE_ADDRESS_CLAMP',
+    'D3D11_TEXTURE_ADDRESS_BORDER',
+    'D3D11_TEXTURE_ADDRESS_MIRROR_ONCE',
+])
+
+D3D11_SAMPLER_DESC = 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'),
+    (Array(FLOAT, 4), 'BorderColor'),
+    (FLOAT, 'MinLOD'),
+    (FLOAT, 'MaxLOD'),
+])
+
+ID3D11SamplerState.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_SAMPLER_DESC), 'pDesc')]),
+]
+
+D3D11_FORMAT_SUPPORT = Enum('D3D11_FORMAT_SUPPORT', [
+    'D3D11_FORMAT_SUPPORT_BUFFER',
+    'D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER',
+    'D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER',
+    'D3D11_FORMAT_SUPPORT_SO_BUFFER',
+    'D3D11_FORMAT_SUPPORT_TEXTURE1D',
+    'D3D11_FORMAT_SUPPORT_TEXTURE2D',
+    'D3D11_FORMAT_SUPPORT_TEXTURE3D',
+    'D3D11_FORMAT_SUPPORT_TEXTURECUBE',
+    'D3D11_FORMAT_SUPPORT_SHADER_LOAD',
+    'D3D11_FORMAT_SUPPORT_SHADER_SAMPLE',
+    'D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON',
+    'D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT',
+    'D3D11_FORMAT_SUPPORT_MIP',
+    'D3D11_FORMAT_SUPPORT_MIP_AUTOGEN',
+    'D3D11_FORMAT_SUPPORT_RENDER_TARGET',
+    'D3D11_FORMAT_SUPPORT_BLENDABLE',
+    'D3D11_FORMAT_SUPPORT_DEPTH_STENCIL',
+    'D3D11_FORMAT_SUPPORT_CPU_LOCKABLE',
+    'D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE',
+    'D3D11_FORMAT_SUPPORT_DISPLAY',
+    'D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT',
+    'D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET',
+    'D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD',
+    'D3D11_FORMAT_SUPPORT_SHADER_GATHER',
+    'D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST',
+    'D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW',
+    'D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON',
+])
+
+D3D11_FORMAT_SUPPORT2 = Enum('D3D11_FORMAT_SUPPORT2', [
+    'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD',
+    'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS',
+    'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE',
+    'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE',
+    'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX',
+    'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX',
+    'D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD',
+    'D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE',
+])
+
+ID3D11Asynchronous.methods += [
+    StdMethod(UINT, 'GetDataSize', []),
+]
+
+D3D11_ASYNC_GETDATA_FLAG = Flags(UINT, [
+    'D3D11_ASYNC_GETDATA_DONOTFLUSH',
+])
+
+D3D11_QUERY = 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_MISC_FLAG = Flags(UINT, [
+    'D3D11_QUERY_MISC_PREDICATEHINT',
+])
+
+D3D11_QUERY_DESC = Struct('D3D11_QUERY_DESC', [
+    (D3D11_QUERY, 'Query'),
+    (D3D11_QUERY_MISC_FLAG, 'MiscFlags'),
+])
+
+ID3D11Query.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_QUERY_DESC), 'pDesc')]),
+]
+
+D3D11_QUERY_DATA_TIMESTAMP_DISJOINT = Struct('D3D11_QUERY_DATA_TIMESTAMP_DISJOINT', [
+    (UINT64, 'Frequency'),
+    (BOOL, 'Disjoint'),
+])
+
+D3D11_QUERY_DATA_PIPELINE_STATISTICS = 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_SO_STATISTICS = Struct('D3D11_QUERY_DATA_SO_STATISTICS', [
+    (UINT64, 'NumPrimitivesWritten'),
+    (UINT64, 'PrimitivesStorageNeeded'),
+])
+
+D3D11_COUNTER = Enum('D3D11_COUNTER', [
+    'D3D11_COUNTER_DEVICE_DEPENDENT_0',
+])
+
+D3D11_COUNTER_TYPE = Enum('D3D11_COUNTER_TYPE', [
+    'D3D11_COUNTER_TYPE_FLOAT32',
+    'D3D11_COUNTER_TYPE_UINT16',
+    'D3D11_COUNTER_TYPE_UINT32',
+    'D3D11_COUNTER_TYPE_UINT64',
+])
+
+D3D11_COUNTER_DESC = Struct('D3D11_COUNTER_DESC', [
+    (D3D11_COUNTER, 'Counter'),
+    (UINT, 'MiscFlags'),
+])
+
+D3D11_COUNTER_INFO = Struct('D3D11_COUNTER_INFO', [
+    (D3D11_COUNTER, 'LastDeviceDependentCounter'),
+    (UINT, 'NumSimultaneousCounters'),
+    (UINT8, 'NumDetectableParallelUnits'),
+])
+
+ID3D11Counter.methods += [
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_COUNTER_DESC), 'pDesc')]),
+]
+
+D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS = Enum('D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS', [
+    'D3D11_STANDARD_MULTISAMPLE_PATTERN',
+    'D3D11_CENTER_MULTISAMPLE_PATTERN',
+])
+
+D3D11_DEVICE_CONTEXT_TYPE = Enum('D3D11_DEVICE_CONTEXT_TYPE', [
+    'D3D11_DEVICE_CONTEXT_IMMEDIATE',
+    'D3D11_DEVICE_CONTEXT_DEFERRED',
+])
+
+D3D11_CLASS_INSTANCE_DESC = Struct('D3D11_CLASS_INSTANCE_DESC', [
+    (UINT, 'InstanceId'),
+    (UINT, 'InstanceIndex'),
+    (UINT, 'TypeId'),
+    (UINT, 'ConstantBuffer'),
+    (UINT, 'BaseConstantBufferOffset'),
+    (UINT, 'BaseTexture'),
+    (UINT, 'BaseSampler'),
+    (BOOL, 'Created'),
+])
+
+
+ID3D11ClassInstance.methods += [
+    StdMethod(Void, 'GetClassLinkage', [Out(Pointer(Pointer(ID3D11ClassLinkage)), 'ppLinkage')]),
+    StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_CLASS_INSTANCE_DESC), 'pDesc')]),
+    StdMethod(Void, 'GetInstanceName', [Out(LPSTR, 'pInstanceName'), Out(Pointer(SIZE_T), 'pBufferLength')]),
+    StdMethod(Void, 'GetTypeName', [Out(LPSTR, 'pTypeName'), Out(Pointer(SIZE_T), 'pBufferLength')]),
+]
+
+ID3D11ClassLinkage.methods += [
+    StdMethod(HRESULT, 'GetClassInstance', [(LPCSTR, 'pClassInstanceName'), (UINT, 'InstanceIndex'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppInstance')]),
+    StdMethod(HRESULT, 'CreateClassInstance', [(LPCSTR, 'pClassTypeName'), (UINT, 'ConstantBufferOffset'), (UINT, 'ConstantVectorOffset'), (UINT, 'TextureOffset'), (UINT, 'SamplerOffset'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppInstance')]),
+]
+
+ID3D11CommandList.methods += [
+    StdMethod(UINT, 'GetContextFlags', []),
+]
+
+D3D11_FEATURE = 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_DATA_THREADING = Struct('D3D11_FEATURE_DATA_THREADING', [
+    (BOOL, 'DriverConcurrentCreates'),
+    (BOOL, 'DriverCommandLists'),
+])
+
+D3D11_FEATURE_DATA_DOUBLES = Struct('D3D11_FEATURE_DATA_DOUBLES', [
+    (BOOL, 'DoublePrecisionFloatShaderOps'),
+])
+
+D3D11_FEATURE_DATA_FORMAT_SUPPORT = Struct('D3D11_FEATURE_DATA_FORMAT_SUPPORT', [
+    (DXGI_FORMAT, 'InFormat'),
+    (UINT, 'OutFormatSupport'),
+])
+
+D3D11_FEATURE_DATA_FORMAT_SUPPORT2 = Struct('D3D11_FEATURE_DATA_FORMAT_SUPPORT2', [
+    (DXGI_FORMAT, 'InFormat'),
+    (UINT, 'OutFormatSupport2'),
+])
+
+D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS = Struct('D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS', [
+    (BOOL, 'ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x'),
+])
+
+ID3D11DeviceContext.methods += [
+    StdMethod(Void, 'VSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
+    StdMethod(Void, 'PSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'PSSetShader', [(Pointer(ID3D11PixelShader), 'pPixelShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
+    StdMethod(Void, 'PSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
+    StdMethod(Void, 'VSSetShader', [(Pointer(ID3D11VertexShader), 'pVertexShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
+    StdMethod(Void, 'DrawIndexed', [(UINT, 'IndexCount'), (UINT, 'StartIndexLocation'), (INT, 'BaseVertexLocation')]),
+    StdMethod(Void, 'Draw', [(UINT, 'VertexCount'), (UINT, 'StartVertexLocation')]),
+    StdMethod(HRESULT, 'Map', [(Pointer(ID3D11Resource), 'pResource'), (UINT, 'Subresource'), (D3D11_MAP, 'MapType'), (D3D11_MAP_FLAG, 'MapFlags'), Out(Pointer(D3D11_MAPPED_SUBRESOURCE), 'pMappedResource')]),
+    StdMethod(Void, 'Unmap', [(Pointer(ID3D11Resource), 'pResource'), (UINT, 'Subresource')]),
+    StdMethod(Void, 'PSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
+    StdMethod(Void, 'IASetInputLayout', [(Pointer(ID3D11InputLayout), 'pInputLayout')]),
+    StdMethod(Void, 'IASetVertexBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppVertexBuffers'), (Pointer(Const(UINT)), 'pStrides'), (Pointer(Const(UINT)), 'pOffsets')]),
+    StdMethod(Void, 'IASetIndexBuffer', [(Pointer(ID3D11Buffer), 'pIndexBuffer'), (DXGI_FORMAT, 'Format'), (UINT, 'Offset')]),
+    StdMethod(Void, 'DrawIndexedInstanced', [(UINT, 'IndexCountPerInstance'), (UINT, 'InstanceCount'), (UINT, 'StartIndexLocation'), (INT, 'BaseVertexLocation'), (UINT, 'StartInstanceLocation')]),
+    StdMethod(Void, 'DrawInstanced', [(UINT, 'VertexCountPerInstance'), (UINT, 'InstanceCount'), (UINT, 'StartVertexLocation'), (UINT, 'StartInstanceLocation')]),
+    StdMethod(Void, 'GSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
+    StdMethod(Void, 'GSSetShader', [(Pointer(ID3D11GeometryShader), 'pShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
+    StdMethod(Void, 'IASetPrimitiveTopology', [(D3D11_PRIMITIVE_TOPOLOGY, 'Topology')]),
+    StdMethod(Void, 'VSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'VSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
+    StdMethod(Void, 'Begin', [(Pointer(ID3D11Asynchronous), 'pAsync')]),
+    StdMethod(Void, 'End', [(Pointer(ID3D11Asynchronous), 'pAsync')]),
+    StdMethod(HRESULT, 'GetData', [(Pointer(ID3D11Asynchronous), 'pAsync'), Out(OpaqueBlob(Void, 'DataSize'), 'pData'), (UINT, 'DataSize'), (D3D11_ASYNC_GETDATA_FLAG, 'GetDataFlags')]),
+    StdMethod(Void, 'SetPredication', [(Pointer(ID3D11Predicate), 'pPredicate'), (BOOL, 'PredicateValue')]),
+    StdMethod(Void, 'GSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'GSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
+    StdMethod(Void, 'OMSetRenderTargets', [(UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11RenderTargetView))), 'ppRenderTargetViews'), (Pointer(ID3D11DepthStencilView), 'pDepthStencilView')]),
+    StdMethod(Void, 'OMSetRenderTargetsAndUnorderedAccessViews', [(UINT, 'NumRTVs'), (Pointer(Const(Pointer(ID3D11RenderTargetView))), 'ppRenderTargetViews'), (Pointer(ID3D11DepthStencilView), 'pDepthStencilView'), (UINT, 'UAVStartSlot'), (UINT, 'NumUAVs'), (Pointer(Const(Pointer(ID3D11UnorderedAccessView))), 'ppUnorderedAccessViews'), (Pointer(Const(UINT)), 'pUAVInitialCounts')]),
+    StdMethod(Void, 'OMSetBlendState', [(Pointer(ID3D11BlendState), 'pBlendState'), (Array(Const(FLOAT), 4), 'BlendFactor'), (UINT, 'SampleMask')]),
+    StdMethod(Void, 'OMSetDepthStencilState', [(Pointer(ID3D11DepthStencilState), 'pDepthStencilState'), (UINT, 'StencilRef')]),
+    StdMethod(Void, 'SOSetTargets', [(UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppSOTargets'), (Pointer(Const(UINT)), 'pOffsets')]),
+    StdMethod(Void, 'DrawAuto', []),
+    StdMethod(Void, 'DrawIndexedInstancedIndirect', [(Pointer(ID3D11Buffer), 'pBufferForArgs'), (UINT, 'AlignedByteOffsetForArgs')]),
+    StdMethod(Void, 'DrawInstancedIndirect', [(Pointer(ID3D11Buffer), 'pBufferForArgs'), (UINT, 'AlignedByteOffsetForArgs')]),
+    StdMethod(Void, 'Dispatch', [(UINT, 'ThreadGroupCountX'), (UINT, 'ThreadGroupCountY'), (UINT, 'ThreadGroupCountZ')]),
+    StdMethod(Void, 'DispatchIndirect', [(Pointer(ID3D11Buffer), 'pBufferForArgs'), (UINT, 'AlignedByteOffsetForArgs')]),
+    StdMethod(Void, 'RSSetState', [(Pointer(ID3D11RasterizerState), 'pRasterizerState')]),
+    StdMethod(Void, 'RSSetViewports', [(UINT, 'NumViewports'), (Pointer(Const(D3D11_VIEWPORT)), 'pViewports')]),
+    StdMethod(Void, 'RSSetScissorRects', [(UINT, 'NumRects'), (Pointer(Const(D3D11_RECT)), 'pRects')]),
+    StdMethod(Void, 'CopySubresourceRegion', [(Pointer(ID3D11Resource), 'pDstResource'), (UINT, 'DstSubresource'), (UINT, 'DstX'), (UINT, 'DstY'), (UINT, 'DstZ'), (Pointer(ID3D11Resource), 'pSrcResource'), (UINT, 'SrcSubresource'), (Pointer(Const(D3D11_BOX)), 'pSrcBox')]),
+    StdMethod(Void, 'CopyResource', [(Pointer(ID3D11Resource), 'pDstResource'), (Pointer(ID3D11Resource), 'pSrcResource')]),
+    StdMethod(Void, 'UpdateSubresource', [(Pointer(ID3D11Resource), 'pDstResource'), (UINT, 'DstSubresource'), (Pointer(Const(D3D11_BOX)), 'pDstBox'), (OpaquePointer(Const(Void)), 'pSrcData'), (UINT, 'SrcRowPitch'), (UINT, 'SrcDepthPitch')]),
+    StdMethod(Void, 'CopyStructureCount', [(Pointer(ID3D11Buffer), 'pDstBuffer'), (UINT, 'DstAlignedByteOffset'), (Pointer(ID3D11UnorderedAccessView), 'pSrcView')]),
+    StdMethod(Void, 'ClearRenderTargetView', [(Pointer(ID3D11RenderTargetView), 'pRenderTargetView'), (Array(Const(FLOAT), 4), 'ColorRGBA')]),
+    StdMethod(Void, 'ClearUnorderedAccessViewUint', [(Pointer(ID3D11UnorderedAccessView), 'pUnorderedAccessView'), (Array(Const(UINT), 4), 'Values')]),
+    StdMethod(Void, 'ClearUnorderedAccessViewFloat', [(Pointer(ID3D11UnorderedAccessView), 'pUnorderedAccessView'), (Array(Const(FLOAT), 4), 'Values')]),
+    StdMethod(Void, 'ClearDepthStencilView', [(Pointer(ID3D11DepthStencilView), 'pDepthStencilView'), (D3D11_CLEAR_FLAG, 'ClearFlags'), (FLOAT, 'Depth'), (UINT8, 'Stencil')]),
+    StdMethod(Void, 'GenerateMips', [(Pointer(ID3D11ShaderResourceView), 'pShaderResourceView')]),
+    StdMethod(Void, 'SetResourceMinLOD', [(Pointer(ID3D11Resource), 'pResource'), (FLOAT, 'MinLOD')]),
+    StdMethod(FLOAT, 'GetResourceMinLOD', [(Pointer(ID3D11Resource), 'pResource')]),
+    StdMethod(Void, 'ResolveSubresource', [(Pointer(ID3D11Resource), 'pDstResource'), (UINT, 'DstSubresource'), (Pointer(ID3D11Resource), 'pSrcResource'), (UINT, 'SrcSubresource'), (DXGI_FORMAT, 'Format')]),
+    StdMethod(Void, 'ExecuteCommandList', [(Pointer(ID3D11CommandList), 'pCommandList'), (BOOL, 'RestoreContextState')]),
+    StdMethod(Void, 'HSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'HSSetShader', [(Pointer(ID3D11HullShader), 'pHullShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
+    StdMethod(Void, 'HSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
+    StdMethod(Void, 'HSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
+    StdMethod(Void, 'DSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'DSSetShader', [(Pointer(ID3D11DomainShader), 'pDomainShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
+    StdMethod(Void, 'DSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
+    StdMethod(Void, 'DSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
+    StdMethod(Void, 'CSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'CSSetUnorderedAccessViews', [(UINT, 'StartSlot'), (UINT, 'NumUAVs'), (Pointer(Const(Pointer(ID3D11UnorderedAccessView))), 'ppUnorderedAccessViews'), (Pointer(Const(UINT)), 'pUAVInitialCounts')]),
+    StdMethod(Void, 'CSSetShader', [(Pointer(ID3D11ComputeShader), 'pComputeShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
+    StdMethod(Void, 'CSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
+    StdMethod(Void, 'CSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
+    StdMethod(Void, 'VSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
+    StdMethod(Void, 'PSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'PSGetShader', [Out(Pointer(Pointer(ID3D11PixelShader)), 'ppPixelShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
+    StdMethod(Void, 'PSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
+    StdMethod(Void, 'VSGetShader', [Out(Pointer(Pointer(ID3D11VertexShader)), 'ppVertexShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
+    StdMethod(Void, 'PSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
+    StdMethod(Void, 'IAGetInputLayout', [Out(Pointer(Pointer(ID3D11InputLayout)), 'ppInputLayout')]),
+    StdMethod(Void, 'IAGetVertexBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppVertexBuffers'), Out(Pointer(UINT), 'pStrides'), Out(Pointer(UINT), 'pOffsets')]),
+    StdMethod(Void, 'IAGetIndexBuffer', [Out(Pointer(Pointer(ID3D11Buffer)), 'pIndexBuffer'), Out(Pointer(DXGI_FORMAT), 'Format'), Out(Pointer(UINT), 'Offset')]),
+    StdMethod(Void, 'GSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
+    StdMethod(Void, 'GSGetShader', [Out(Pointer(Pointer(ID3D11GeometryShader)), 'ppGeometryShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
+    StdMethod(Void, 'IAGetPrimitiveTopology', [Out(Pointer(D3D11_PRIMITIVE_TOPOLOGY), 'pTopology')]),
+    StdMethod(Void, 'VSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'VSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
+    StdMethod(Void, 'GetPredication', [Out(Pointer(Pointer(ID3D11Predicate)), 'ppPredicate'), Out(Pointer(BOOL), 'pPredicateValue')]),
+    StdMethod(Void, 'GSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'GSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
+    StdMethod(Void, 'OMGetRenderTargets', [(UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11RenderTargetView)), 'ppRenderTargetViews'), Out(Pointer(Pointer(ID3D11DepthStencilView)), 'ppDepthStencilView')]),
+    StdMethod(Void, 'OMGetRenderTargetsAndUnorderedAccessViews', [(UINT, 'NumRTVs'), Out(Pointer(Pointer(ID3D11RenderTargetView)), 'ppRenderTargetViews'), Out(Pointer(Pointer(ID3D11DepthStencilView)), 'ppDepthStencilView'), (UINT, 'UAVStartSlot'), (UINT, 'NumUAVs'), Out(Pointer(Pointer(ID3D11UnorderedAccessView)), 'ppUnorderedAccessViews')]),
+    StdMethod(Void, 'OMGetBlendState', [Out(Pointer(Pointer(ID3D11BlendState)), 'ppBlendState'), Out(Array(FLOAT, 4), 'BlendFactor'), Out(Pointer(UINT), 'pSampleMask')]),
+    StdMethod(Void, 'OMGetDepthStencilState', [Out(Pointer(Pointer(ID3D11DepthStencilState)), 'ppDepthStencilState'), Out(Pointer(UINT), 'pStencilRef')]),
+    StdMethod(Void, 'SOGetTargets', [(UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppSOTargets')]),
+    StdMethod(Void, 'RSGetState', [Out(Pointer(Pointer(ID3D11RasterizerState)), 'ppRasterizerState')]),
+    StdMethod(Void, 'RSGetViewports', [Out(Pointer(UINT), 'pNumViewports'), Out(Pointer(D3D11_VIEWPORT), 'pViewports')]),
+    StdMethod(Void, 'RSGetScissorRects', [Out(Pointer(UINT), 'pNumRects'), Out(Pointer(D3D11_RECT), 'pRects')]),
+    StdMethod(Void, 'HSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'HSGetShader', [Out(Pointer(Pointer(ID3D11HullShader)), 'ppHullShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
+    StdMethod(Void, 'HSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
+    StdMethod(Void, 'HSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
+    StdMethod(Void, 'DSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'DSGetShader', [Out(Pointer(Pointer(ID3D11DomainShader)), 'ppDomainShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
+    StdMethod(Void, 'DSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
+    StdMethod(Void, 'DSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
+    StdMethod(Void, 'CSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
+    StdMethod(Void, 'CSGetUnorderedAccessViews', [(UINT, 'StartSlot'), (UINT, 'NumUAVs'), Out(Pointer(Pointer(ID3D11UnorderedAccessView)), 'ppUnorderedAccessViews')]),
+    StdMethod(Void, 'CSGetShader', [Out(Pointer(Pointer(ID3D11ComputeShader)), 'ppComputeShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
+    StdMethod(Void, 'CSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
+    StdMethod(Void, 'CSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
+    StdMethod(Void, 'ClearState', []),
+    StdMethod(Void, 'Flush', []),
+    StdMethod(D3D11_DEVICE_CONTEXT_TYPE, 'GetType', []),
+    StdMethod(UINT, 'GetContextFlags', []),
+    StdMethod(HRESULT, 'FinishCommandList', [(BOOL, 'RestoreDeferredContextState'), Out(Pointer(Pointer(ID3D11CommandList)), 'ppCommandList')]),
+]
+
+D3D11_CREATE_DEVICE_FLAG = Flags(UINT, [
+    'D3D11_CREATE_DEVICE_SINGLETHREADED',
+    'D3D11_CREATE_DEVICE_DEBUG',
+    'D3D11_CREATE_DEVICE_SWITCH_TO_REF',
+    'D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS',
+    'D3D11_CREATE_DEVICE_BGRA_SUPPORT',
+])
+
+ID3D11Device.methods += [
+    StdMethod(HRESULT, 'CreateBuffer', [(Pointer(Const(D3D11_BUFFER_DESC)), 'pDesc'), (Pointer(Const(D3D11_SUBRESOURCE_DATA)), 'pInitialData'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppBuffer')]),
+    StdMethod(HRESULT, 'CreateTexture1D', [(Pointer(Const(D3D11_TEXTURE1D_DESC)), 'pDesc'), (Pointer(Const(D3D11_SUBRESOURCE_DATA)), 'pInitialData'), Out(Pointer(Pointer(ID3D11Texture1D)), 'ppTexture1D')]),
+    StdMethod(HRESULT, 'CreateTexture2D', [(Pointer(Const(D3D11_TEXTURE2D_DESC)), 'pDesc'), (Pointer(Const(D3D11_SUBRESOURCE_DATA)), 'pInitialData'), Out(Pointer(Pointer(ID3D11Texture2D)), 'ppTexture2D')]),
+    StdMethod(HRESULT, 'CreateTexture3D', [(Pointer(Const(D3D11_TEXTURE3D_DESC)), 'pDesc'), (Pointer(Const(D3D11_SUBRESOURCE_DATA)), 'pInitialData'), Out(Pointer(Pointer(ID3D11Texture3D)), 'ppTexture3D')]),
+    StdMethod(HRESULT, 'CreateShaderResourceView', [(Pointer(ID3D11Resource), 'pResource'), (Pointer(Const(D3D11_SHADER_RESOURCE_VIEW_DESC)), 'pDesc'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppSRView')]),
+    StdMethod(HRESULT, 'CreateUnorderedAccessView', [(Pointer(ID3D11Resource), 'pResource'), (Pointer(Const(D3D11_UNORDERED_ACCESS_VIEW_DESC)), 'pDesc'), Out(Pointer(Pointer(ID3D11UnorderedAccessView)), 'ppUAView')]),
+    StdMethod(HRESULT, 'CreateRenderTargetView', [(Pointer(ID3D11Resource), 'pResource'), (Pointer(Const(D3D11_RENDER_TARGET_VIEW_DESC)), 'pDesc'), Out(Pointer(Pointer(ID3D11RenderTargetView)), 'ppRTView')]),
+    StdMethod(HRESULT, 'CreateDepthStencilView', [(Pointer(ID3D11Resource), 'pResource'), (Pointer(Const(D3D11_DEPTH_STENCIL_VIEW_DESC)), 'pDesc'), Out(Pointer(Pointer(ID3D11DepthStencilView)), 'ppDepthStencilView')]),
+    StdMethod(HRESULT, 'CreateInputLayout', [(Pointer(Const(D3D11_INPUT_ELEMENT_DESC)), 'pInputElementDescs'), (UINT, 'NumElements'), (Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecodeWithInputSignature'), (SIZE_T, 'BytecodeLength'), Out(Pointer(Pointer(ID3D11InputLayout)), 'ppInputLayout')]),
+    StdMethod(HRESULT, 'CreateVertexShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11VertexShader)), 'ppVertexShader')]),
+    StdMethod(HRESULT, 'CreateGeometryShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11GeometryShader)), 'ppGeometryShader')]),
+    StdMethod(HRESULT, 'CreateGeometryShaderWithStreamOutput', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(Const(D3D11_SO_DECLARATION_ENTRY)), 'pSODeclaration'), (UINT, 'NumEntries'), (Pointer(Const(UINT)), 'pBufferStrides'), (UINT, 'NumStrides'), (UINT, 'RasterizedStream'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11GeometryShader)), 'ppGeometryShader')]),
+    StdMethod(HRESULT, 'CreatePixelShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11PixelShader)), 'ppPixelShader')]),
+    StdMethod(HRESULT, 'CreateHullShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11HullShader)), 'ppHullShader')]),
+    StdMethod(HRESULT, 'CreateDomainShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11DomainShader)), 'ppDomainShader')]),
+    StdMethod(HRESULT, 'CreateComputeShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11ComputeShader)), 'ppComputeShader')]),
+    StdMethod(HRESULT, 'CreateClassLinkage', [Out(Pointer(Pointer(ID3D11ClassLinkage)), 'ppLinkage')]),
+    StdMethod(HRESULT, 'CreateBlendState', [(Pointer(Const(D3D11_BLEND_DESC)), 'pBlendStateDesc'), Out(Pointer(Pointer(ID3D11BlendState)), 'ppBlendState')]),
+    StdMethod(HRESULT, 'CreateDepthStencilState', [(Pointer(Const(D3D11_DEPTH_STENCIL_DESC)), 'pDepthStencilDesc'), Out(Pointer(Pointer(ID3D11DepthStencilState)), 'ppDepthStencilState')]),
+    StdMethod(HRESULT, 'CreateRasterizerState', [(Pointer(Const(D3D11_RASTERIZER_DESC)), 'pRasterizerDesc'), Out(Pointer(Pointer(ID3D11RasterizerState)), 'ppRasterizerState')]),
+    StdMethod(HRESULT, 'CreateSamplerState', [(Pointer(Const(D3D11_SAMPLER_DESC)), 'pSamplerDesc'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplerState')]),
+    StdMethod(HRESULT, 'CreateQuery', [(Pointer(Const(D3D11_QUERY_DESC)), 'pQueryDesc'), Out(Pointer(Pointer(ID3D11Query)), 'ppQuery')]),
+    StdMethod(HRESULT, 'CreatePredicate', [(Pointer(Const(D3D11_QUERY_DESC)), 'pPredicateDesc'), Out(Pointer(Pointer(ID3D11Predicate)), 'ppPredicate')]),
+    StdMethod(HRESULT, 'CreateCounter', [(Pointer(Const(D3D11_COUNTER_DESC)), 'pCounterDesc'), Out(Pointer(Pointer(ID3D11Counter)), 'ppCounter')]),
+    StdMethod(HRESULT, 'CreateDeferredContext', [(UINT, 'ContextFlags'), Out(Pointer(Pointer(ID3D11DeviceContext)), 'ppDeferredContext')]),
+    StdMethod(HRESULT, 'OpenSharedResource', [(HANDLE, 'hResource'), (REFIID, 'ReturnedInterface'), Out(Pointer(OpaquePointer(Void)), 'ppResource')]),
+    StdMethod(HRESULT, 'CheckFormatSupport', [(DXGI_FORMAT, 'Format'), Out(Pointer(UINT), 'pFormatSupport')]),
+    StdMethod(HRESULT, 'CheckMultisampleQualityLevels', [(DXGI_FORMAT, 'Format'), (UINT, 'SampleCount'), Out(Pointer(UINT), 'pNumQualityLevels')]),
+    StdMethod(Void, 'CheckCounterInfo', [Out(Pointer(D3D11_COUNTER_INFO), 'pCounterInfo')]),
+    StdMethod(HRESULT, 'CheckCounter', [(Pointer(Const(D3D11_COUNTER_DESC)), 'pDesc'), Out(Pointer(D3D11_COUNTER_TYPE), 'pType'), Out(Pointer(UINT), 'pActiveCounters'), Out(LPSTR, 'szName'), Out(Pointer(UINT), 'pNameLength'), Out(LPSTR, 'szUnits'), Out(Pointer(UINT), 'pUnitsLength'), Out(LPSTR, 'szDescription'), Out(Pointer(UINT), 'pDescriptionLength')]),
+    StdMethod(HRESULT, 'CheckFeatureSupport', [(D3D11_FEATURE, 'Feature'), Out(OpaqueBlob(Void, 'FeatureSupportDataSize'), 'pFeatureSupportData'), (UINT, 'FeatureSupportDataSize')]),
+    StdMethod(HRESULT, 'GetPrivateData', [(REFGUID, 'guid'), Out(Pointer(UINT), 'pDataSize'), Out(OpaquePointer(Void), 'pData')]),
+    StdMethod(HRESULT, 'SetPrivateData', [(REFGUID, 'guid'), (UINT, 'DataSize'), (OpaqueBlob(Const(Void), 'DataSize'), 'pData')]),
+    StdMethod(HRESULT, 'SetPrivateDataInterface', [(REFGUID, 'guid'), (Pointer(Const(IUnknown)), 'pData')]),
+    StdMethod(D3D_FEATURE_LEVEL, 'GetFeatureLevel', []),
+    StdMethod(D3D11_CREATE_DEVICE_FLAG, 'GetCreationFlags', []),
+    StdMethod(HRESULT, 'GetDeviceRemovedReason', []),
+    StdMethod(Void, 'GetImmediateContext', [Out(Pointer(Pointer(ID3D11DeviceContext)), 'ppImmediateContext')]),
+    StdMethod(HRESULT, 'SetExceptionMode', [(D3D11_RAISE_FLAG, 'RaiseFlags')]),
+    StdMethod(UINT, 'GetExceptionMode', []),
+]
+
+d3d11 = API("d3d11")
+
+d3d11.addFunctions([
+    StdFunction(HRESULT, 'D3D11CreateDevice', [(Pointer(IDXGIAdapter), 'pAdapter'), (D3D_DRIVER_TYPE, 'DriverType'), (HMODULE, 'Software'), (D3D11_CREATE_DEVICE_FLAG, 'Flags'), (Pointer(Const(D3D_FEATURE_LEVEL)), 'pFeatureLevels'), (UINT, 'FeatureLevels'), (UINT, 'SDKVersion'), Out(Pointer(Pointer(ID3D11Device)), 'ppDevice'), Out(Pointer(D3D_FEATURE_LEVEL), 'pFeatureLevel'), Out(Pointer(Pointer(ID3D11DeviceContext)), 'ppImmediateContext')]),
+    StdFunction(HRESULT, 'D3D11CreateDeviceAndSwapChain', [(Pointer(IDXGIAdapter), 'pAdapter'), (D3D_DRIVER_TYPE, 'DriverType'), (HMODULE, 'Software'), (D3D11_CREATE_DEVICE_FLAG, 'Flags'), (Pointer(Const(D3D_FEATURE_LEVEL)), 'pFeatureLevels'), (UINT, 'FeatureLevels'), (UINT, 'SDKVersion'), (Pointer(Const(DXGI_SWAP_CHAIN_DESC)), 'pSwapChainDesc'), Out(Pointer(Pointer(IDXGISwapChain)), 'ppSwapChain'), Out(Pointer(Pointer(ID3D11Device)), 'ppDevice'), Out(Pointer(D3D_FEATURE_LEVEL), 'pFeatureLevel'), Out(Pointer(Pointer(ID3D11DeviceContext)), 'ppImmediateContext')]),
+])
+
+d3d11.addInterfaces([
+    IDXGIDevice,
+    ID3D11Debug,
+])
diff --git a/specs/d3d11sdklayers.py b/specs/d3d11sdklayers.py
new file mode 100644 (file)
index 0000000..c42e6e0
--- /dev/null
@@ -0,0 +1,890 @@
+##########################################################################
+#
+# Copyright 2012 Jose Fonseca
+# All Rights Reserved.
+#
+# 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 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
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+from dxgi import *
+
+
+ID3D11DeviceChild = Interface('ID3D11DeviceChild', IUnknown)
+ID3D11DeviceContext = Interface('ID3D11DeviceContext', ID3D11DeviceChild)
+
+
+D3D11_DEBUG_FEATURE = Flags(UINT, [
+    'D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP',
+    'D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP',
+    'D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP',
+])
+
+D3D11_RLDO_FLAGS = Enum('D3D11_RLDO_FLAGS', [
+    'D3D11_RLDO_SUMMARY',
+    'D3D11_RLDO_DETAIL',
+])
+
+ID3D11Debug = Interface('ID3D11Debug', IUnknown)
+ID3D11Debug.methods += [
+    StdMethod(HRESULT, 'SetFeatureMask', [(D3D11_DEBUG_FEATURE, 'Mask')]),
+    StdMethod(D3D11_DEBUG_FEATURE, 'GetFeatureMask', []),
+    StdMethod(HRESULT, 'SetPresentPerRenderOpDelay', [(UINT, 'Milliseconds')]),
+    StdMethod(UINT, 'GetPresentPerRenderOpDelay', []),
+    StdMethod(HRESULT, 'SetSwapChain', [(Pointer(IDXGISwapChain), 'pSwapChain')]),
+    StdMethod(HRESULT, 'GetSwapChain', [Out(Pointer(Pointer(IDXGISwapChain)), 'ppSwapChain')]),
+    StdMethod(HRESULT, 'ValidateContext', [(Pointer(ID3D11DeviceContext), 'pContext')]),
+    StdMethod(HRESULT, 'ReportLiveDeviceObjects', [(D3D11_RLDO_FLAGS, 'Flags')]),
+    StdMethod(HRESULT, 'ValidateContextForDispatch', [(Pointer(ID3D11DeviceContext), 'pContext')]),
+]
+
+ID3D11SwitchToRef = Interface('ID3D11SwitchToRef', IUnknown)
+ID3D11SwitchToRef.methods += [
+    StdMethod(BOOL, 'SetUseRef', [(BOOL, 'UseRef')]),
+    StdMethod(BOOL, 'GetUseRef', []),
+]
+
+D3D11_MESSAGE_CATEGORY = Enum('D3D11_MESSAGE_CATEGORY', [
+    'D3D11_MESSAGE_CATEGORY_APPLICATION_DEFINED',
+    'D3D11_MESSAGE_CATEGORY_MISCELLANEOUS',
+    'D3D11_MESSAGE_CATEGORY_INITIALIZATION',
+    'D3D11_MESSAGE_CATEGORY_CLEANUP',
+    'D3D11_MESSAGE_CATEGORY_COMPILATION',
+    'D3D11_MESSAGE_CATEGORY_STATE_CREATION',
+    'D3D11_MESSAGE_CATEGORY_STATE_SETTING',
+    'D3D11_MESSAGE_CATEGORY_STATE_GETTING',
+    'D3D11_MESSAGE_CATEGORY_RESOURCE_MANIPULATION',
+    'D3D11_MESSAGE_CATEGORY_EXECUTION',
+])
+
+D3D11_MESSAGE_SEVERITY = Enum('D3D11_MESSAGE_SEVERITY', [
+    'D3D11_MESSAGE_SEVERITY_CORRUPTION',
+    'D3D11_MESSAGE_SEVERITY_ERROR',
+    'D3D11_MESSAGE_SEVERITY_WARNING',
+    'D3D11_MESSAGE_SEVERITY_INFO',
+])
+
+D3D11_MESSAGE_ID = Enum('D3D11_MESSAGE_ID', [
+    'D3D11_MESSAGE_ID_UNKNOWN',
+    'D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD',
+    'D3D11_MESSAGE_ID_STRING_FROM_APPLICATION',
+    'D3D11_MESSAGE_ID_CORRUPTED_THIS',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER1',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER2',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER3',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER4',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER5',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER6',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER7',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER8',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER9',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER10',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER11',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER12',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER13',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER14',
+    'D3D11_MESSAGE_ID_CORRUPTED_PARAMETER15',
+    'D3D11_MESSAGE_ID_CORRUPTED_MULTITHREADING',
+    'D3D11_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_GETPRIVATEDATA_MOREDATA',
+    'D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA',
+    'D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN',
+    'D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS',
+    'D3D11_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE',
+    'D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE',
+    'D3D11_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE',
+    'D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE',
+    'D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE',
+    'D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE',
+    'D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP',
+    'D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS',
+    'D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC',
+    'D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY',
+    'D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS',
+    'D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG',
+    'D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC',
+    'D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED',
+    'D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED',
+    'D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE',
+    'D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID',
+    'D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE',
+    'D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED',
+    'D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED',
+    'D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT',
+    'D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR',
+    'D3D11_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH',
+    'D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH',
+    'D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID',
+    'D3D11_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID',
+    'D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE',
+    'D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE',
+    'D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX',
+    'D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE',
+    'D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE',
+    'D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE',
+    'D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE',
+    'D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE',
+    'D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE',
+    'D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE',
+    'D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX',
+    'D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE',
+    'D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID',
+    'D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID',
+    'D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID',
+    'D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID',
+    'D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID',
+    'D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE',
+    'D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED',
+    'D3D11_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN',
+    'D3D11_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED',
+    'D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE',
+    'D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE',
+    'D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED',
+    'D3D11_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN',
+    'D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE',
+    'D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED',
+    'D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE',
+    'D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE',
+    'D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED',
+    'D3D11_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN',
+    'D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE',
+    'D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED',
+    'D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE',
+    'D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE',
+    'D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED',
+    'D3D11_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN',
+    'D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE',
+    'D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED',
+    'D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED',
+    'D3D11_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED',
+    'D3D11_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS',
+    'D3D11_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN',
+    'D3D11_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE',
+    'D3D11_MESSAGE_ID_REF_THREADING_MODE',
+    'D3D11_MESSAGE_ID_REF_UMDRIVER_EXCEPTION',
+    'D3D11_MESSAGE_ID_REF_KMDRIVER_EXCEPTION',
+    'D3D11_MESSAGE_ID_REF_HARDWARE_EXCEPTION',
+    'D3D11_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE',
+    'D3D11_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER',
+    'D3D11_MESSAGE_ID_REF_OUT_OF_MEMORY',
+    'D3D11_MESSAGE_ID_REF_INFO',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW',
+    'D3D11_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW',
+    'D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW',
+    'D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW',
+    'D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW',
+    'D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND',
+    'D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX',
+    'D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE',
+    'D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK',
+    'D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE',
+    'D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0',
+    'D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT',
+    'D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT',
+    'D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT',
+    'D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC',
+    'D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH',
+    'D3D11_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW',
+    'D3D11_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH',
+    'D3D11_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY',
+    'D3D11_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY',
+    'D3D11_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER',
+    'D3D11_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED',
+    'D3D11_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER',
+    'D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN',
+    'D3D11_MESSAGE_ID_CREATECOUNTER_NULLDESC',
+    'D3D11_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER',
+    'D3D11_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER',
+    'D3D11_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE',
+    'D3D11_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION',
+    'D3D11_MESSAGE_ID_QUERY_BEGIN_DUPLICATE',
+    'D3D11_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS',
+    'D3D11_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION',
+    'D3D11_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS',
+    'D3D11_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN',
+    'D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE',
+    'D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS',
+    'D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN',
+    'D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE',
+    'D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH',
+    'D3D11_MESSAGE_ID_D3D10_MESSAGES_END',
+    'D3D11_MESSAGE_ID_D3D10L9_MESSAGES_START',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED',
+    'D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE',
+    'D3D11_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS',
+    'D3D11_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE',
+    'D3D11_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS',
+    'D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS',
+    'D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX',
+    'D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS',
+    'D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS',
+    'D3D11_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY',
+    'D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK',
+    'D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK',
+    'D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE',
+    'D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE',
+    'D3D11_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED',
+    'D3D11_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND',
+    'D3D11_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE',
+    'D3D11_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3',
+    'D3D11_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR',
+    'D3D11_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA',
+    'D3D11_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP',
+    'D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT',
+    'D3D11_MESSAGE_ID_D3D10L9_MESSAGES_END',
+    'D3D11_MESSAGE_ID_D3D11_MESSAGES_START',
+    'D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE',
+    'D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE',
+    'D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_COMMANDLISTFLAGS',
+    'D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_SINGLETHREADED',
+    'D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_CALL_RETURN',
+    'D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_FINISHDISPLAYLIST_ONIMMEDIATECONTEXT',
+    'D3D11_MESSAGE_ID_FINISHDISPLAYLIST_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_FINISHDISPLAYLIST_INVALID_CALL_RETURN',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES',
+    'D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES',
+    'D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_HAZARD',
+    'D3D11_MESSAGE_ID_HSSETSHADERRESOURCES_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL',
+    'D3D11_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE',
+    'D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE',
+    'D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE',
+    'D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_HSSETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_HSGETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_HSGETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_HSGETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_HAZARD',
+    'D3D11_MESSAGE_ID_DSSETSHADERRESOURCES_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL',
+    'D3D11_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE',
+    'D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE',
+    'D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE',
+    'D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_DSSETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_DSGETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_DSGETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_DSGETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH',
+    'D3D11_MESSAGE_ID_DEFERRED_CONTEXT_REMOVAL_PROCESS_AT_FAULT',
+    'D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW',
+    'D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE',
+    'D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE',
+    'D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED',
+    'D3D11_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN',
+    'D3D11_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD',
+    'D3D11_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE',
+    'D3D11_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS',
+    'D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH',
+    'D3D11_MESSAGE_ID_CREATE_CONTEXT',
+    'D3D11_MESSAGE_ID_LIVE_CONTEXT',
+    'D3D11_MESSAGE_ID_DESTROY_CONTEXT',
+    'D3D11_MESSAGE_ID_CREATE_BUFFER',
+    'D3D11_MESSAGE_ID_LIVE_BUFFER',
+    'D3D11_MESSAGE_ID_DESTROY_BUFFER',
+    'D3D11_MESSAGE_ID_CREATE_TEXTURE1D',
+    'D3D11_MESSAGE_ID_LIVE_TEXTURE1D',
+    'D3D11_MESSAGE_ID_DESTROY_TEXTURE1D',
+    'D3D11_MESSAGE_ID_CREATE_TEXTURE2D',
+    'D3D11_MESSAGE_ID_LIVE_TEXTURE2D',
+    'D3D11_MESSAGE_ID_DESTROY_TEXTURE2D',
+    'D3D11_MESSAGE_ID_CREATE_TEXTURE3D',
+    'D3D11_MESSAGE_ID_LIVE_TEXTURE3D',
+    'D3D11_MESSAGE_ID_DESTROY_TEXTURE3D',
+    'D3D11_MESSAGE_ID_CREATE_SHADERRESOURCEVIEW',
+    'D3D11_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW',
+    'D3D11_MESSAGE_ID_DESTROY_SHADERRESOURCEVIEW',
+    'D3D11_MESSAGE_ID_CREATE_RENDERTARGETVIEW',
+    'D3D11_MESSAGE_ID_LIVE_RENDERTARGETVIEW',
+    'D3D11_MESSAGE_ID_DESTROY_RENDERTARGETVIEW',
+    'D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILVIEW',
+    'D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW',
+    'D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILVIEW',
+    'D3D11_MESSAGE_ID_CREATE_VERTEXSHADER',
+    'D3D11_MESSAGE_ID_LIVE_VERTEXSHADER',
+    'D3D11_MESSAGE_ID_DESTROY_VERTEXSHADER',
+    'D3D11_MESSAGE_ID_CREATE_HULLSHADER',
+    'D3D11_MESSAGE_ID_LIVE_HULLSHADER',
+    'D3D11_MESSAGE_ID_DESTROY_HULLSHADER',
+    'D3D11_MESSAGE_ID_CREATE_DOMAINSHADER',
+    'D3D11_MESSAGE_ID_LIVE_DOMAINSHADER',
+    'D3D11_MESSAGE_ID_DESTROY_DOMAINSHADER',
+    'D3D11_MESSAGE_ID_CREATE_GEOMETRYSHADER',
+    'D3D11_MESSAGE_ID_LIVE_GEOMETRYSHADER',
+    'D3D11_MESSAGE_ID_DESTROY_GEOMETRYSHADER',
+    'D3D11_MESSAGE_ID_CREATE_PIXELSHADER',
+    'D3D11_MESSAGE_ID_LIVE_PIXELSHADER',
+    'D3D11_MESSAGE_ID_DESTROY_PIXELSHADER',
+    'D3D11_MESSAGE_ID_CREATE_INPUTLAYOUT',
+    'D3D11_MESSAGE_ID_LIVE_INPUTLAYOUT',
+    'D3D11_MESSAGE_ID_DESTROY_INPUTLAYOUT',
+    'D3D11_MESSAGE_ID_CREATE_SAMPLER',
+    'D3D11_MESSAGE_ID_LIVE_SAMPLER',
+    'D3D11_MESSAGE_ID_DESTROY_SAMPLER',
+    'D3D11_MESSAGE_ID_CREATE_BLENDSTATE',
+    'D3D11_MESSAGE_ID_LIVE_BLENDSTATE',
+    'D3D11_MESSAGE_ID_DESTROY_BLENDSTATE',
+    'D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILSTATE',
+    'D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE',
+    'D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILSTATE',
+    'D3D11_MESSAGE_ID_CREATE_RASTERIZERSTATE',
+    'D3D11_MESSAGE_ID_LIVE_RASTERIZERSTATE',
+    'D3D11_MESSAGE_ID_DESTROY_RASTERIZERSTATE',
+    'D3D11_MESSAGE_ID_CREATE_QUERY',
+    'D3D11_MESSAGE_ID_LIVE_QUERY',
+    'D3D11_MESSAGE_ID_DESTROY_QUERY',
+    'D3D11_MESSAGE_ID_CREATE_PREDICATE',
+    'D3D11_MESSAGE_ID_LIVE_PREDICATE',
+    'D3D11_MESSAGE_ID_DESTROY_PREDICATE',
+    'D3D11_MESSAGE_ID_CREATE_COUNTER',
+    'D3D11_MESSAGE_ID_LIVE_COUNTER',
+    'D3D11_MESSAGE_ID_DESTROY_COUNTER',
+    'D3D11_MESSAGE_ID_CREATE_COMMANDLIST',
+    'D3D11_MESSAGE_ID_LIVE_COMMANDLIST',
+    'D3D11_MESSAGE_ID_DESTROY_COMMANDLIST',
+    'D3D11_MESSAGE_ID_CREATE_CLASSINSTANCE',
+    'D3D11_MESSAGE_ID_LIVE_CLASSINSTANCE',
+    'D3D11_MESSAGE_ID_DESTROY_CLASSINSTANCE',
+    'D3D11_MESSAGE_ID_CREATE_CLASSLINKAGE',
+    'D3D11_MESSAGE_ID_LIVE_CLASSLINKAGE',
+    'D3D11_MESSAGE_ID_DESTROY_CLASSLINKAGE',
+    'D3D11_MESSAGE_ID_LIVE_DEVICE',
+    'D3D11_MESSAGE_ID_LIVE_OBJECT_SUMMARY',
+    'D3D11_MESSAGE_ID_CREATE_COMPUTESHADER',
+    'D3D11_MESSAGE_ID_LIVE_COMPUTESHADER',
+    'D3D11_MESSAGE_ID_DESTROY_COMPUTESHADER',
+    'D3D11_MESSAGE_ID_CREATE_UNORDEREDACCESSVIEW',
+    'D3D11_MESSAGE_ID_LIVE_UNORDEREDACCESSVIEW',
+    'D3D11_MESSAGE_ID_DESTROY_UNORDEREDACCESSVIEW',
+    'D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACES_FEATURELEVEL',
+    'D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACE_COUNT_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE',
+    'D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_INDEX',
+    'D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_TYPE',
+    'D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_DATA',
+    'D3D11_MESSAGE_ID_DEVICE_SETSHADER_UNBOUND_INSTANCE_DATA',
+    'D3D11_MESSAGE_ID_DEVICE_SETSHADER_INSTANCE_DATA_BINDINGS',
+    'D3D11_MESSAGE_ID_DEVICE_CREATESHADER_CLASSLINKAGE_FULL',
+    'D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE',
+    'D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE',
+    'D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_HAZARD',
+    'D3D11_MESSAGE_ID_CSSETSHADERRESOURCES_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL',
+    'D3D11_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY',
+    'D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE',
+    'D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERTYPE',
+    'D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED',
+    'D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE',
+    'D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT',
+    'D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_HAZARD',
+    'D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS',
+    'D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP',
+    'D3D11_MESSAGE_ID_CSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_PSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_HAZARD',
+    'D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY',
+    'D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS',
+    'D3D11_MESSAGE_ID_CREATESHADERRESESOURCEVIEW_TOOMANYOBJECTS',
+    'D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER',
+    'D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED',
+    'D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW',
+    'D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDCONTEXT',
+    'D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDRESOURCE',
+    'D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDMINLOD',
+    'D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDCONTEXT',
+    'D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDRESOURCE',
+    'D3D11_MESSAGE_ID_OMSETDEPTHSTENCIL_UNBINDDELETINGOBJECT',
+    'D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY',
+    'D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY',
+    'D3D11_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET',
+    'D3D11_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED',
+    'D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW',
+    'D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO',
+    'D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH',
+    'D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET',
+    'D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET',
+    'D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE',
+    'D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE',
+    'D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDVIEW',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDOFFSET',
+    'D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_TOOMANYVIEWS',
+    'D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT',
+    'D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED',
+    'D3D11_MESSAGE_ID_REF_WARNING',
+    'D3D11_MESSAGE_ID_D3D11_MESSAGES_END',
+])
+
+D3D11_MESSAGE = Struct('D3D11_MESSAGE', [
+    (D3D11_MESSAGE_CATEGORY, 'Category'),
+    (D3D11_MESSAGE_SEVERITY, 'Severity'),
+    (D3D11_MESSAGE_ID, 'ID'),
+    (Pointer(Const(Int)), 'pDescription'),
+    (SIZE_T, 'DescriptionByteLength'),
+])
+
+D3D11_INFO_QUEUE_FILTER_DESC = Struct('D3D11_INFO_QUEUE_FILTER_DESC', [
+    (UINT, 'NumCategories'),
+    (Pointer(D3D11_MESSAGE_CATEGORY), 'pCategoryList'),
+    (UINT, 'NumSeverities'),
+    (Pointer(D3D11_MESSAGE_SEVERITY), 'pSeverityList'),
+    (UINT, 'NumIDs'),
+    (Pointer(D3D11_MESSAGE_ID), 'pIDList'),
+])
+
+D3D11_INFO_QUEUE_FILTER = Struct('D3D11_INFO_QUEUE_FILTER', [
+    (D3D11_INFO_QUEUE_FILTER_DESC, 'AllowList'),
+    (D3D11_INFO_QUEUE_FILTER_DESC, 'DenyList'),
+])
+
+ID3D11InfoQueue = Interface('ID3D11InfoQueue', IUnknown)
+ID3D11InfoQueue.methods += [
+    StdMethod(HRESULT, 'SetMessageCountLimit', [(UINT64, 'MessageCountLimit')]),
+    StdMethod(Void, 'ClearStoredMessages', []),
+    StdMethod(HRESULT, 'GetMessage', [(UINT64, 'MessageIndex'), Out(Pointer(D3D11_MESSAGE), 'pMessage'), Out(Pointer(SIZE_T), 'pMessageByteLength')]),
+    StdMethod(UINT64, 'GetNumMessagesAllowedByStorageFilter', []),
+    StdMethod(UINT64, 'GetNumMessagesDeniedByStorageFilter', []),
+    StdMethod(UINT64, 'GetNumStoredMessages', []),
+    StdMethod(UINT64, 'GetNumStoredMessagesAllowedByRetrievalFilter', []),
+    StdMethod(UINT64, 'GetNumMessagesDiscardedByMessageCountLimit', []),
+    StdMethod(UINT64, 'GetMessageCountLimit', []),
+    StdMethod(HRESULT, 'AddStorageFilterEntries', [(Pointer(D3D11_INFO_QUEUE_FILTER), 'pFilter')]),
+    StdMethod(HRESULT, 'GetStorageFilter', [Out(Pointer(D3D11_INFO_QUEUE_FILTER), 'pFilter'), Out(Pointer(SIZE_T), 'pFilterByteLength')]),
+    StdMethod(Void, 'ClearStorageFilter', []),
+    StdMethod(HRESULT, 'PushEmptyStorageFilter', []),
+    StdMethod(HRESULT, 'PushCopyOfStorageFilter', []),
+    StdMethod(HRESULT, 'PushStorageFilter', [(Pointer(D3D11_INFO_QUEUE_FILTER), 'pFilter')]),
+    StdMethod(Void, 'PopStorageFilter', []),
+    StdMethod(UINT, 'GetStorageFilterStackSize', []),
+    StdMethod(HRESULT, 'AddRetrievalFilterEntries', [(Pointer(D3D11_INFO_QUEUE_FILTER), 'pFilter')]),
+    StdMethod(HRESULT, 'GetRetrievalFilter', [Out(Pointer(D3D11_INFO_QUEUE_FILTER), 'pFilter'), Out(Pointer(SIZE_T), 'pFilterByteLength')]),
+    StdMethod(Void, 'ClearRetrievalFilter', []),
+    StdMethod(HRESULT, 'PushEmptyRetrievalFilter', []),
+    StdMethod(HRESULT, 'PushCopyOfRetrievalFilter', []),
+    StdMethod(HRESULT, 'PushRetrievalFilter', [(Pointer(D3D11_INFO_QUEUE_FILTER), 'pFilter')]),
+    StdMethod(Void, 'PopRetrievalFilter', []),
+    StdMethod(UINT, 'GetRetrievalFilterStackSize', []),
+    StdMethod(HRESULT, 'AddMessage', [(D3D11_MESSAGE_CATEGORY, 'Category'), (D3D11_MESSAGE_SEVERITY, 'Severity'), (D3D11_MESSAGE_ID, 'ID'), (LPCSTR, 'pDescription')]),
+    StdMethod(HRESULT, 'AddApplicationMessage', [(D3D11_MESSAGE_SEVERITY, 'Severity'), (LPCSTR, 'pDescription')]),
+    StdMethod(HRESULT, 'SetBreakOnCategory', [(D3D11_MESSAGE_CATEGORY, 'Category'), (BOOL, 'bEnable')]),
+    StdMethod(HRESULT, 'SetBreakOnSeverity', [(D3D11_MESSAGE_SEVERITY, 'Severity'), (BOOL, 'bEnable')]),
+    StdMethod(HRESULT, 'SetBreakOnID', [(D3D11_MESSAGE_ID, 'ID'), (BOOL, 'bEnable')]),
+    StdMethod(BOOL, 'GetBreakOnCategory', [(D3D11_MESSAGE_CATEGORY, 'Category')]),
+    StdMethod(BOOL, 'GetBreakOnSeverity', [(D3D11_MESSAGE_SEVERITY, 'Severity')]),
+    StdMethod(BOOL, 'GetBreakOnID', [(D3D11_MESSAGE_ID, 'ID')]),
+    StdMethod(Void, 'SetMuteDebugOutput', [(BOOL, 'bMute')]),
+    StdMethod(BOOL, 'GetMuteDebugOutput', []),
+]
+
diff --git a/specs/d3d11shader.py b/specs/d3d11shader.py
new file mode 100644 (file)
index 0000000..a1c0247
--- /dev/null
@@ -0,0 +1,186 @@
+##########################################################################
+#
+# Copyright 2012 Jose Fonseca
+# All Rights Reserved.
+#
+# 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 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
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+from d3dcommon import *
+
+
+ID3D11ShaderReflectionType = Interface('ID3D11ShaderReflectionType', IUnknown)
+ID3D11ShaderReflectionVariable = Interface('ID3D11ShaderReflectionVariable', IUnknown)
+ID3D11ShaderReflectionConstantBuffer = Interface('ID3D11ShaderReflectionConstantBuffer', IUnknown)
+ID3D11ShaderReflection = Interface('ID3D11ShaderReflection', IUnknown)
+
+
+D3D11_SHADER_VERSION_TYPE = Enum('D3D11_SHADER_VERSION_TYPE', [
+    'D3D11_SHVER_PIXEL_SHADER',
+    'D3D11_SHVER_VERTEX_SHADER',
+    'D3D11_SHVER_GEOMETRY_SHADER',
+    'D3D11_SHVER_HULL_SHADER',
+    'D3D11_SHVER_DOMAIN_SHADER',
+    'D3D11_SHVER_COMPUTE_SHADER',
+])
+
+D3D11_SIGNATURE_PARAMETER_DESC = Struct('D3D11_SIGNATURE_PARAMETER_DESC', [
+    (LPCSTR, 'SemanticName'),
+    (UINT, 'SemanticIndex'),
+    (UINT, 'Register'),
+    (D3D_NAME, 'SystemValueType'),
+    (D3D_REGISTER_COMPONENT_TYPE, 'ComponentType'),
+    (BYTE, 'Mask'),
+    (BYTE, 'ReadWriteMask'),
+    (UINT, 'Stream'),
+])
+
+D3D11_SHADER_BUFFER_DESC = Struct('D3D11_SHADER_BUFFER_DESC', [
+    (LPCSTR, 'Name'),
+    (D3D_CBUFFER_TYPE, 'Type'),
+    (UINT, 'Variables'),
+    (UINT, 'Size'),
+    (UINT, 'uFlags'),
+])
+
+D3D11_SHADER_VARIABLE_DESC = Struct('D3D11_SHADER_VARIABLE_DESC', [
+    (LPCSTR, 'Name'),
+    (UINT, 'StartOffset'),
+    (UINT, 'Size'),
+    (UINT, 'uFlags'),
+    (LPVOID, 'DefaultValue'),
+    (UINT, 'StartTexture'),
+    (UINT, 'TextureSize'),
+    (UINT, 'StartSampler'),
+    (UINT, 'SamplerSize'),
+])
+
+D3D11_SHADER_TYPE_DESC = Struct('D3D11_SHADER_TYPE_DESC', [
+    (D3D_SHADER_VARIABLE_CLASS, 'Class'),
+    (D3D_SHADER_VARIABLE_TYPE, 'Type'),
+    (UINT, 'Rows'),
+    (UINT, 'Columns'),
+    (UINT, 'Elements'),
+    (UINT, 'Members'),
+    (UINT, 'Offset'),
+    (LPCSTR, 'Name'),
+])
+
+D3D11_SHADER_DESC = Struct('D3D11_SHADER_DESC', [
+    (UINT, 'Version'),
+    (LPCSTR, 'Creator'),
+    (UINT, 'Flags'),
+    (UINT, 'ConstantBuffers'),
+    (UINT, 'BoundResources'),
+    (UINT, 'InputParameters'),
+    (UINT, 'OutputParameters'),
+    (UINT, 'InstructionCount'),
+    (UINT, 'TempRegisterCount'),
+    (UINT, 'TempArrayCount'),
+    (UINT, 'DefCount'),
+    (UINT, 'DclCount'),
+    (UINT, 'TextureNormalInstructions'),
+    (UINT, 'TextureLoadInstructions'),
+    (UINT, 'TextureCompInstructions'),
+    (UINT, 'TextureBiasInstructions'),
+    (UINT, 'TextureGradientInstructions'),
+    (UINT, 'FloatInstructionCount'),
+    (UINT, 'IntInstructionCount'),
+    (UINT, 'UintInstructionCount'),
+    (UINT, 'StaticFlowControlCount'),
+    (UINT, 'DynamicFlowControlCount'),
+    (UINT, 'MacroInstructionCount'),
+    (UINT, 'ArrayInstructionCount'),
+    (UINT, 'CutInstructionCount'),
+    (UINT, 'EmitInstructionCount'),
+    (D3D_PRIMITIVE_TOPOLOGY, 'GSOutputTopology'),
+    (UINT, 'GSMaxOutputVertexCount'),
+    (D3D_PRIMITIVE, 'InputPrimitive'),
+    (UINT, 'PatchConstantParameters'),
+    (UINT, 'cGSInstanceCount'),
+    (UINT, 'cControlPoints'),
+    (D3D_TESSELLATOR_OUTPUT_PRIMITIVE, 'HSOutputPrimitive'),
+    (D3D_TESSELLATOR_PARTITIONING, 'HSPartitioning'),
+    (D3D_TESSELLATOR_DOMAIN, 'TessellatorDomain'),
+    (UINT, 'cBarrierInstructions'),
+    (UINT, 'cInterlockedInstructions'),
+    (UINT, 'cTextureStoreInstructions'),
+])
+
+D3D11_SHADER_INPUT_BIND_DESC = Struct('D3D11_SHADER_INPUT_BIND_DESC', [
+    (LPCSTR, 'Name'),
+    (D3D_SHADER_INPUT_TYPE, 'Type'),
+    (UINT, 'BindPoint'),
+    (UINT, 'BindCount'),
+    (UINT, 'uFlags'),
+    (D3D_RESOURCE_RETURN_TYPE, 'ReturnType'),
+    (D3D_SRV_DIMENSION, 'Dimension'),
+    (UINT, 'NumSamples'),
+])
+
+ID3D11ShaderReflectionType.methods += [
+    StdMethod(HRESULT, 'GetDesc', [Out(Pointer(D3D11_SHADER_TYPE_DESC), 'pDesc')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionType), 'GetMemberTypeByIndex', [(UINT, 'Index')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionType), 'GetMemberTypeByName', [(LPCSTR, 'Name')]),
+    StdMethod(LPCSTR, 'GetMemberTypeName', [(UINT, 'Index')]),
+    StdMethod(HRESULT, 'IsEqual', [(Pointer(ID3D11ShaderReflectionType), 'pType')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionType), 'GetSubType', []),
+    StdMethod(Pointer(ID3D11ShaderReflectionType), 'GetBaseClass', []),
+    StdMethod(UINT, 'GetNumInterfaces', []),
+    StdMethod(Pointer(ID3D11ShaderReflectionType), 'GetInterfaceByIndex', [(UINT, 'uIndex')]),
+    StdMethod(HRESULT, 'IsOfType', [(Pointer(ID3D11ShaderReflectionType), 'pType')]),
+    StdMethod(HRESULT, 'ImplementsInterface', [(Pointer(ID3D11ShaderReflectionType), 'pBase')]),
+]
+
+ID3D11ShaderReflectionVariable.methods += [
+    StdMethod(HRESULT, 'GetDesc', [Out(Pointer(D3D11_SHADER_VARIABLE_DESC), 'pDesc')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionType), 'GetType', []),
+    StdMethod(Pointer(ID3D11ShaderReflectionConstantBuffer), 'GetBuffer', []),
+    StdMethod(UINT, 'GetInterfaceSlot', [(UINT, 'uArrayIndex')]),
+]
+
+ID3D11ShaderReflectionConstantBuffer.methods += [
+    StdMethod(HRESULT, 'GetDesc', [(Pointer(D3D11_SHADER_BUFFER_DESC), 'pDesc')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionVariable), 'GetVariableByIndex', [(UINT, 'Index')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionVariable), 'GetVariableByName', [(LPCSTR, 'Name')]),
+]
+
+ID3D11ShaderReflection.methods += [
+    StdMethod(HRESULT, 'GetDesc', [Out(Pointer(D3D11_SHADER_DESC), 'pDesc')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionConstantBuffer), 'GetConstantBufferByIndex', [(UINT, 'Index')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionConstantBuffer), 'GetConstantBufferByName', [(LPCSTR, 'Name')]),
+    StdMethod(HRESULT, 'GetResourceBindingDesc', [(UINT, 'ResourceIndex'), Out(Pointer(D3D11_SHADER_INPUT_BIND_DESC), 'pDesc')]),
+    StdMethod(HRESULT, 'GetInputParameterDesc', [(UINT, 'ParameterIndex'), Out(Pointer(D3D11_SIGNATURE_PARAMETER_DESC), 'pDesc')]),
+    StdMethod(HRESULT, 'GetOutputParameterDesc', [(UINT, 'ParameterIndex'), Out(Pointer(D3D11_SIGNATURE_PARAMETER_DESC), 'pDesc')]),
+    StdMethod(HRESULT, 'GetPatchConstantParameterDesc', [(UINT, 'ParameterIndex'), Out(Pointer(D3D11_SIGNATURE_PARAMETER_DESC), 'pDesc')]),
+    StdMethod(Pointer(ID3D11ShaderReflectionVariable), 'GetVariableByName', [(LPCSTR, 'Name')]),
+    StdMethod(HRESULT, 'GetResourceBindingDescByName', [(LPCSTR, 'Name'), Out(Pointer(D3D11_SHADER_INPUT_BIND_DESC), 'pDesc')]),
+    StdMethod(UINT, 'GetMovInstructionCount', []),
+    StdMethod(UINT, 'GetMovcInstructionCount', []),
+    StdMethod(UINT, 'GetConversionInstructionCount', []),
+    StdMethod(UINT, 'GetBitwiseInstructionCount', []),
+    StdMethod(D3D_PRIMITIVE, 'GetGSInputPrimitive', []),
+    StdMethod(BOOL, 'IsSampleFrequencyShader', []),
+    StdMethod(UINT, 'GetNumInterfaceSlots', []),
+    StdMethod(HRESULT, 'GetMinFeatureLevel', [Out(Pointer(D3D_FEATURE_LEVEL), 'pLevel')]),
+    StdMethod(UINT, 'GetThreadGroupSize', [Out(Pointer(UINT), 'pSizeX'), Out(Pointer(UINT), 'pSizeY'), Out(Pointer(UINT), 'pSizeZ')]),
+]
+
diff --git a/specs/d3dcommon.py b/specs/d3dcommon.py
new file mode 100644 (file)
index 0000000..af6c5c9
--- /dev/null
@@ -0,0 +1,691 @@
+##########################################################################
+#
+# Copyright 2012 Jose Fonseca
+# All Rights Reserved.
+#
+# 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 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
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+from winapi import *
+
+
+D3D_DRIVER_TYPE = Enum('D3D_DRIVER_TYPE', [
+    'D3D_DRIVER_TYPE_UNKNOWN',
+    'D3D_DRIVER_TYPE_HARDWARE',
+    'D3D_DRIVER_TYPE_REFERENCE',
+    'D3D_DRIVER_TYPE_NULL',
+    'D3D_DRIVER_TYPE_SOFTWARE',
+    'D3D_DRIVER_TYPE_WARP',
+])
+
+D3D_FEATURE_LEVEL = Enum('D3D_FEATURE_LEVEL', [
+    'D3D_FEATURE_LEVEL_9_1',
+    'D3D_FEATURE_LEVEL_9_2',
+    'D3D_FEATURE_LEVEL_9_3',
+    'D3D_FEATURE_LEVEL_10_0',
+    'D3D_FEATURE_LEVEL_10_1',
+    'D3D_FEATURE_LEVEL_11_0',
+])
+
+D3D_PRIMITIVE_TOPOLOGY = Enum('D3D_PRIMITIVE_TOPOLOGY', [
+    'D3D_PRIMITIVE_TOPOLOGY_UNDEFINED',
+    'D3D_PRIMITIVE_TOPOLOGY_POINTLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_LINELIST',
+    'D3D_PRIMITIVE_TOPOLOGY_LINESTRIP',
+    'D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST',
+    'D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP',
+    'D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ',
+    'D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ',
+    'D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ',
+    'D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ',
+    'D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST',
+    'D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST',
+])
+
+D3D10_PRIMITIVE_TOPOLOGY = Enum('D3D10_PRIMITIVE_TOPOLOGY', [
+    'D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED',
+    'D3D10_PRIMITIVE_TOPOLOGY_POINTLIST',
+    'D3D10_PRIMITIVE_TOPOLOGY_LINELIST',
+    'D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP',
+    'D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST',
+    'D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP',
+    'D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ',
+    'D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ',
+    'D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ',
+    'D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ',
+])
+
+D3D11_PRIMITIVE_TOPOLOGY = Enum('D3D11_PRIMITIVE_TOPOLOGY', [
+    'D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED',
+    'D3D11_PRIMITIVE_TOPOLOGY_POINTLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_LINELIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP',
+    'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP',
+    'D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ',
+    'D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ',
+    'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ',
+    'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ',
+    'D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST',
+    'D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST',
+])
+
+D3D_PRIMITIVE = Enum('D3D_PRIMITIVE', [
+    'D3D_PRIMITIVE_UNDEFINED',
+    'D3D_PRIMITIVE_POINT',
+    'D3D_PRIMITIVE_LINE',
+    'D3D_PRIMITIVE_TRIANGLE',
+    'D3D_PRIMITIVE_LINE_ADJ',
+    'D3D_PRIMITIVE_TRIANGLE_ADJ',
+    'D3D_PRIMITIVE_1_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_2_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_3_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_4_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_5_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_6_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_7_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_8_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_9_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_10_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_11_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_12_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_13_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_14_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_15_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_16_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_17_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_18_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_19_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_20_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_21_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_22_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_23_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_24_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_25_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_26_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_27_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_28_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_29_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_30_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_31_CONTROL_POINT_PATCH',
+    'D3D_PRIMITIVE_32_CONTROL_POINT_PATCH',
+])
+
+D3D10_PRIMITIVE = Enum('D3D10_PRIMITIVE', [
+    'D3D10_PRIMITIVE_UNDEFINED',
+    'D3D10_PRIMITIVE_POINT',
+    'D3D10_PRIMITIVE_LINE',
+    'D3D10_PRIMITIVE_TRIANGLE',
+    'D3D10_PRIMITIVE_LINE_ADJ',
+    'D3D10_PRIMITIVE_TRIANGLE_ADJ',
+])
+
+D3D11_PRIMITIVE = Enum('D3D11_PRIMITIVE', [
+    'D3D11_PRIMITIVE_UNDEFINED',
+    'D3D11_PRIMITIVE_POINT',
+    'D3D11_PRIMITIVE_LINE',
+    'D3D11_PRIMITIVE_TRIANGLE',
+    'D3D11_PRIMITIVE_LINE_ADJ',
+    'D3D11_PRIMITIVE_TRIANGLE_ADJ',
+    'D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH',
+    'D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH',
+])
+
+D3D_SRV_DIMENSION = Enum('D3D_SRV_DIMENSION', [
+    'D3D_SRV_DIMENSION_UNKNOWN',
+    'D3D_SRV_DIMENSION_BUFFER',
+    'D3D_SRV_DIMENSION_TEXTURE1D',
+    'D3D_SRV_DIMENSION_TEXTURE1DARRAY',
+    'D3D_SRV_DIMENSION_TEXTURE2D',
+    'D3D_SRV_DIMENSION_TEXTURE2DARRAY',
+    'D3D_SRV_DIMENSION_TEXTURE2DMS',
+    'D3D_SRV_DIMENSION_TEXTURE2DMSARRAY',
+    'D3D_SRV_DIMENSION_TEXTURE3D',
+    'D3D_SRV_DIMENSION_TEXTURECUBE',
+    'D3D_SRV_DIMENSION_TEXTURECUBEARRAY',
+    'D3D_SRV_DIMENSION_BUFFEREX',
+])
+
+D3D10_SRV_DIMENSION = Enum('D3D10_SRV_DIMENSION', [
+    'D3D10_SRV_DIMENSION_UNKNOWN',
+    'D3D10_SRV_DIMENSION_BUFFER',
+    'D3D10_SRV_DIMENSION_TEXTURE1D',
+    'D3D10_SRV_DIMENSION_TEXTURE1DARRAY',
+    'D3D10_SRV_DIMENSION_TEXTURE2D',
+    'D3D10_SRV_DIMENSION_TEXTURE2DARRAY',
+    'D3D10_SRV_DIMENSION_TEXTURE2DMS',
+    'D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY',
+    'D3D10_SRV_DIMENSION_TEXTURE3D',
+    'D3D10_SRV_DIMENSION_TEXTURECUBE',
+])
+
+D3D10_SRV_DIMENSION1 = Enum('D3D10_SRV_DIMENSION1', [
+    'D3D10_1_SRV_DIMENSION_UNKNOWN',
+    'D3D10_1_SRV_DIMENSION_BUFFER',
+    'D3D10_1_SRV_DIMENSION_TEXTURE1D',
+    'D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY',
+    'D3D10_1_SRV_DIMENSION_TEXTURE2D',
+    'D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY',
+    'D3D10_1_SRV_DIMENSION_TEXTURE2DMS',
+    'D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY',
+    'D3D10_1_SRV_DIMENSION_TEXTURE3D',
+    'D3D10_1_SRV_DIMENSION_TEXTURECUBE',
+    'D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY',
+])
+
+D3D11_SRV_DIMENSION = Enum('D3D11_SRV_DIMENSION', [
+    'D3D11_SRV_DIMENSION_UNKNOWN',
+    'D3D11_SRV_DIMENSION_BUFFER',
+    'D3D11_SRV_DIMENSION_TEXTURE1D',
+    'D3D11_SRV_DIMENSION_TEXTURE1DARRAY',
+    'D3D11_SRV_DIMENSION_TEXTURE2D',
+    'D3D11_SRV_DIMENSION_TEXTURE2DARRAY',
+    'D3D11_SRV_DIMENSION_TEXTURE2DMS',
+    'D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY',
+    'D3D11_SRV_DIMENSION_TEXTURE3D',
+    'D3D11_SRV_DIMENSION_TEXTURECUBE',
+    'D3D11_SRV_DIMENSION_TEXTURECUBEARRAY',
+    'D3D11_SRV_DIMENSION_BUFFEREX',
+])
+
+D3D_SHADER_MACRO = Struct('D3D_SHADER_MACRO', [
+    (LPCSTR, 'Name'),
+    (LPCSTR, 'Definition'),
+])
+
+ID3D10Blob = Interface('ID3D10Blob', IUnknown)
+ID3D10Blob.methods += [
+    StdMethod(LPVOID, 'GetBufferPointer', []),
+    StdMethod(SIZE_T, 'GetBufferSize', []),
+]
+
+D3D_INCLUDE_TYPE = Enum('D3D_INCLUDE_TYPE', [
+    'D3D_INCLUDE_LOCAL',
+    'D3D_INCLUDE_SYSTEM',
+])
+
+D3D10_INCLUDE_TYPE = Enum('D3D10_INCLUDE_TYPE', [
+    'D3D10_INCLUDE_LOCAL',
+    'D3D10_INCLUDE_SYSTEM',
+])
+
+D3D_SHADER_VARIABLE_CLASS = Enum('D3D_SHADER_VARIABLE_CLASS', [
+    'D3D_SVC_SCALAR',
+    'D3D_SVC_VECTOR',
+    'D3D_SVC_MATRIX_ROWS',
+    'D3D_SVC_MATRIX_COLUMNS',
+    'D3D_SVC_OBJECT',
+    'D3D_SVC_STRUCT',
+    'D3D_SVC_INTERFACE_CLASS',
+    'D3D_SVC_INTERFACE_POINTER',
+])
+
+D3D10_SHADER_VARIABLE_CLASS = Enum('D3D_SHADER_VARIABLE_CLASS', [
+    'D3D10_SVC_SCALAR',
+    'D3D10_SVC_VECTOR',
+    'D3D10_SVC_MATRIX_ROWS',
+    'D3D10_SVC_MATRIX_COLUMNS',
+    'D3D10_SVC_OBJECT',
+    'D3D10_SVC_STRUCT',
+])
+
+D3D11_SHADER_VARIABLE_CLASS = Enum('D3D_SHADER_VARIABLE_CLASS', [
+    'D3D11_SVC_INTERFACE_CLASS',
+    'D3D11_SVC_INTERFACE_POINTER',
+])
+
+D3D10_SHADER_VARIABLE_FLAGS = Enum('D3D10_SHADER_VARIABLE_FLAGS', [
+    'D3D_SVF_USERPACKED',
+    'D3D_SVF_USED',
+    'D3D_SVF_INTERFACE_POINTER',
+    'D3D_SVF_INTERFACE_PARAMETER',
+])
+
+D3D11_SHADER_VARIABLE_FLAGS = Enum('D3D11_SHADER_VARIABLE_FLAGS', [
+    'D3D10_SVF_USERPACKED',
+    'D3D10_SVF_USED',
+    'D3D11_SVF_INTERFACE_POINTER',
+    'D3D11_SVF_INTERFACE_PARAMETER',
+])
+
+D3D_SHADER_VARIABLE_TYPE = Enum('D3D_SHADER_VARIABLE_TYPE', [
+    'D3D_SVT_VOID',
+    'D3D_SVT_BOOL',
+    'D3D_SVT_INT',
+    'D3D_SVT_FLOAT',
+    'D3D_SVT_STRING',
+    'D3D_SVT_TEXTURE',
+    'D3D_SVT_TEXTURE1D',
+    'D3D_SVT_TEXTURE2D',
+    'D3D_SVT_TEXTURE3D',
+    'D3D_SVT_TEXTURECUBE',
+    'D3D_SVT_SAMPLER',
+    'D3D_SVT_SAMPLER1D',
+    'D3D_SVT_SAMPLER2D',
+    'D3D_SVT_SAMPLER3D',
+    'D3D_SVT_SAMPLERCUBE',
+    'D3D_SVT_PIXELSHADER',
+    'D3D_SVT_VERTEXSHADER',
+    'D3D_SVT_PIXELFRAGMENT',
+    'D3D_SVT_VERTEXFRAGMENT',
+    'D3D_SVT_UINT',
+    'D3D_SVT_UINT8',
+    'D3D_SVT_GEOMETRYSHADER',
+    'D3D_SVT_RASTERIZER',
+    'D3D_SVT_DEPTHSTENCIL',
+    'D3D_SVT_BLEND',
+    'D3D_SVT_BUFFER',
+    'D3D_SVT_CBUFFER',
+    'D3D_SVT_TBUFFER',
+    'D3D_SVT_TEXTURE1DARRAY',
+    'D3D_SVT_TEXTURE2DARRAY',
+    'D3D_SVT_RENDERTARGETVIEW',
+    'D3D_SVT_DEPTHSTENCILVIEW',
+    'D3D_SVT_TEXTURE2DMS',
+    'D3D_SVT_TEXTURE2DMSARRAY',
+    'D3D_SVT_TEXTURECUBEARRAY',
+    'D3D_SVT_HULLSHADER',
+    'D3D_SVT_DOMAINSHADER',
+    'D3D_SVT_INTERFACE_POINTER',
+    'D3D_SVT_COMPUTESHADER',
+    'D3D_SVT_DOUBLE',
+    'D3D_SVT_RWTEXTURE1D',
+    'D3D_SVT_RWTEXTURE1DARRAY',
+    'D3D_SVT_RWTEXTURE2D',
+    'D3D_SVT_RWTEXTURE2DARRAY',
+    'D3D_SVT_RWTEXTURE3D',
+    'D3D_SVT_RWBUFFER',
+    'D3D_SVT_BYTEADDRESS_BUFFER',
+    'D3D_SVT_RWBYTEADDRESS_BUFFER',
+    'D3D_SVT_STRUCTURED_BUFFER',
+    'D3D_SVT_RWSTRUCTURED_BUFFER',
+    'D3D_SVT_APPEND_STRUCTURED_BUFFER',
+    'D3D_SVT_CONSUME_STRUCTURED_BUFFER',
+])
+
+D3D10_SHADER_VARIABLE_TYPE = Enum('D3D10_SHADER_VARIABLE_TYPE', [
+    'D3D10_SVT_VOID',
+    'D3D10_SVT_BOOL',
+    'D3D10_SVT_INT',
+    'D3D10_SVT_FLOAT',
+    'D3D10_SVT_STRING',
+    'D3D10_SVT_TEXTURE',
+    'D3D10_SVT_TEXTURE1D',
+    'D3D10_SVT_TEXTURE2D',
+    'D3D10_SVT_TEXTURE3D',
+    'D3D10_SVT_TEXTURECUBE',
+    'D3D10_SVT_SAMPLER',
+    'D3D10_SVT_SAMPLER1D',
+    'D3D10_SVT_SAMPLER2D',
+    'D3D10_SVT_SAMPLER3D',
+    'D3D10_SVT_SAMPLERCUBE',
+    'D3D10_SVT_PIXELSHADER',
+    'D3D10_SVT_VERTEXSHADER',
+    'D3D10_SVT_PIXELFRAGMENT',
+    'D3D10_SVT_VERTEXFRAGMENT',
+    'D3D10_SVT_UINT',
+    'D3D10_SVT_UINT8',
+    'D3D10_SVT_GEOMETRYSHADER',
+    'D3D10_SVT_RASTERIZER',
+    'D3D10_SVT_DEPTHSTENCIL',
+    'D3D10_SVT_BLEND',
+    'D3D10_SVT_BUFFER',
+    'D3D10_SVT_CBUFFER',
+    'D3D10_SVT_TBUFFER',
+    'D3D10_SVT_TEXTURE1DARRAY',
+    'D3D10_SVT_TEXTURE2DARRAY',
+    'D3D10_SVT_RENDERTARGETVIEW',
+    'D3D10_SVT_DEPTHSTENCILVIEW',
+    'D3D10_SVT_TEXTURE2DMS',
+    'D3D10_SVT_TEXTURE2DMSARRAY',
+    'D3D10_SVT_TEXTURECUBEARRAY',
+])
+
+D3D11_SHADER_VARIABLE_TYPE = Enum('D3D11_SHADER_VARIABLE_TYPE', [
+    'D3D11_SVT_HULLSHADER',
+    'D3D11_SVT_DOMAINSHADER',
+    'D3D11_SVT_INTERFACE_POINTER',
+    'D3D11_SVT_COMPUTESHADER',
+    'D3D11_SVT_DOUBLE',
+    'D3D11_SVT_RWTEXTURE1D',
+    'D3D11_SVT_RWTEXTURE1DARRAY',
+    'D3D11_SVT_RWTEXTURE2D',
+    'D3D11_SVT_RWTEXTURE2DARRAY',
+    'D3D11_SVT_RWTEXTURE3D',
+    'D3D11_SVT_RWBUFFER',
+    'D3D11_SVT_BYTEADDRESS_BUFFER',
+    'D3D11_SVT_RWBYTEADDRESS_BUFFER',
+    'D3D11_SVT_STRUCTURED_BUFFER',
+    'D3D11_SVT_RWSTRUCTURED_BUFFER',
+    'D3D11_SVT_APPEND_STRUCTURED_BUFFER',
+    'D3D11_SVT_CONSUME_STRUCTURED_BUFFER',
+])
+
+D3D_SHADER_INPUT_FLAGS = Enum('D3D_SHADER_INPUT_FLAGS', [
+    'D3D_SIF_USERPACKED',
+    'D3D_SIF_COMPARISON_SAMPLER',
+    'D3D_SIF_TEXTURE_COMPONENT_0',
+    'D3D_SIF_TEXTURE_COMPONENT_1',
+    'D3D_SIF_TEXTURE_COMPONENTS',
+])
+
+D3D10_SHADER_INPUT_FLAGS = Enum('D3D10_SHADER_INPUT_FLAGS', [
+    'D3D10_SIF_USERPACKED',
+    'D3D10_SIF_COMPARISON_SAMPLER',
+    'D3D10_SIF_TEXTURE_COMPONENT_0',
+    'D3D10_SIF_TEXTURE_COMPONENT_1',
+    'D3D10_SIF_TEXTURE_COMPONENTS',
+])
+
+D3D_SHADER_INPUT_TYPE = Enum('D3D_SHADER_INPUT_TYPE', [
+    'D3D_SIT_CBUFFER',
+    'D3D_SIT_TBUFFER',
+    'D3D_SIT_TEXTURE',
+    'D3D_SIT_SAMPLER',
+    'D3D_SIT_UAV_RWTYPED',
+    'D3D_SIT_STRUCTURED',
+    'D3D_SIT_UAV_RWSTRUCTURED',
+    'D3D_SIT_BYTEADDRESS',
+    'D3D_SIT_UAV_RWBYTEADDRESS',
+    'D3D_SIT_UAV_APPEND_STRUCTURED',
+    'D3D_SIT_UAV_CONSUME_STRUCTURED',
+    'D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER',
+])
+
+D3D10_SHADER_INPUT_TYPE = Enum('D3D10_SHADER_INPUT_TYPE', [
+    'D3D10_SIT_CBUFFER',
+    'D3D10_SIT_TBUFFER',
+    'D3D10_SIT_TEXTURE',
+    'D3D10_SIT_SAMPLER',
+])
+
+D3D11_SHADER_INPUT_TYPE = Enum('D3D11_SHADER_INPUT_TYPE', [
+    'D3D11_SIT_UAV_RWTYPED',
+    'D3D11_SIT_STRUCTURED',
+    'D3D11_SIT_UAV_RWSTRUCTURED',
+    'D3D11_SIT_BYTEADDRESS',
+    'D3D11_SIT_UAV_RWBYTEADDRESS',
+    'D3D11_SIT_UAV_APPEND_STRUCTURED',
+    'D3D11_SIT_UAV_CONSUME_STRUCTURED',
+    'D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER',
+])
+
+D3D_SHADER_CBUFFER_FLAGS = Enum('D3D_SHADER_CBUFFER_FLAGS', [
+    'D3D_CBF_USERPACKED',
+])
+
+D3D10_SHADER_CBUFFER_FLAGS = Enum('D3D10_SHADER_CBUFFER_FLAGS', [
+    'D3D10_CBF_USERPACKED',
+])
+
+D3D_CBUFFER_TYPE = Enum('D3D_CBUFFER_TYPE', [
+    'D3D_CT_CBUFFER',
+    'D3D_CT_TBUFFER',
+    'D3D_CT_INTERFACE_POINTERS',
+    'D3D_CT_RESOURCE_BIND_INFO',
+])
+
+D3D10_CBUFFER_TYPE = Enum('D3D10_CBUFFER_TYPE', [
+    'D3D10_CT_CBUFFER',
+    'D3D10_CT_TBUFFER',
+])
+
+D3D11_CBUFFER_TYPE = Enum('D3D11_CBUFFER_TYPE', [
+    'D3D11_CT_CBUFFER',
+    'D3D11_CT_TBUFFER',
+    'D3D11_CT_INTERFACE_POINTERS',
+    'D3D11_CT_RESOURCE_BIND_INFO',
+])
+
+D3D_NAME = Enum('D3D_NAME', [
+    'D3D_NAME_UNDEFINED',
+    'D3D_NAME_POSITION',
+    'D3D_NAME_CLIP_DISTANCE',
+    'D3D_NAME_CULL_DISTANCE',
+    'D3D_NAME_RENDER_TARGET_ARRAY_INDEX',
+    'D3D_NAME_VIEWPORT_ARRAY_INDEX',
+    'D3D_NAME_VERTEX_ID',
+    'D3D_NAME_PRIMITIVE_ID',
+    'D3D_NAME_INSTANCE_ID',
+    'D3D_NAME_IS_FRONT_FACE',
+    'D3D_NAME_SAMPLE_INDEX',
+    'D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR',
+    'D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR',
+    'D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR',
+    'D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR',
+    'D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR',
+    'D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR',
+    'D3D_NAME_TARGET',
+    'D3D_NAME_DEPTH',
+    'D3D_NAME_COVERAGE',
+    'D3D_NAME_DEPTH_GREATER_EQUAL',
+    'D3D_NAME_DEPTH_LESS_EQUAL',
+])
+
+D3D10_NAME = Enum('D3D10_NAME', [
+    'D3D10_NAME_UNDEFINED',
+    'D3D10_NAME_POSITION',
+    'D3D10_NAME_CLIP_DISTANCE',
+    'D3D10_NAME_CULL_DISTANCE',
+    'D3D10_NAME_RENDER_TARGET_ARRAY_INDEX',
+    'D3D10_NAME_VIEWPORT_ARRAY_INDEX',
+    'D3D10_NAME_VERTEX_ID',
+    'D3D10_NAME_PRIMITIVE_ID',
+    'D3D10_NAME_INSTANCE_ID',
+    'D3D10_NAME_IS_FRONT_FACE',
+    'D3D10_NAME_SAMPLE_INDEX',
+    'D3D10_NAME_TARGET',
+    'D3D10_NAME_DEPTH',
+    'D3D10_NAME_COVERAGE',
+])
+
+D3D11_NAME = Enum('D3D11_NAME', [
+    'D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR',
+    'D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR',
+    'D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR',
+    'D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR',
+    'D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR',
+    'D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR',
+    'D3D11_NAME_DEPTH_GREATER_EQUAL',
+    'D3D11_NAME_DEPTH_LESS_EQUAL',
+])
+
+D3D_RESOURCE_RETURN_TYPE = Enum('D3D_RESOURCE_RETURN_TYPE', [
+    'D3D_RETURN_TYPE_UNORM',
+    'D3D_RETURN_TYPE_SNORM',
+    'D3D_RETURN_TYPE_SINT',
+    'D3D_RETURN_TYPE_UINT',
+    'D3D_RETURN_TYPE_FLOAT',
+    'D3D_RETURN_TYPE_MIXED',
+    'D3D_RETURN_TYPE_DOUBLE',
+    'D3D_RETURN_TYPE_CONTINUED',
+])
+
+D3D10_RESOURCE_RETURN_TYPE = Enum('D3D10_RESOURCE_RETURN_TYPE', [
+    'D3D10_RETURN_TYPE_UNORM',
+    'D3D10_RETURN_TYPE_SNORM',
+    'D3D10_RETURN_TYPE_SINT',
+    'D3D10_RETURN_TYPE_UINT',
+    'D3D10_RETURN_TYPE_FLOAT',
+    'D3D10_RETURN_TYPE_MIXED',
+])
+
+D3D11_RESOURCE_RETURN_TYPE = Enum('D3D11_RESOURCE_RETURN_TYPE', [
+    'D3D11_RETURN_TYPE_UNORM',
+    'D3D11_RETURN_TYPE_SNORM',
+    'D3D11_RETURN_TYPE_SINT',
+    'D3D11_RETURN_TYPE_UINT',
+    'D3D11_RETURN_TYPE_FLOAT',
+    'D3D11_RETURN_TYPE_MIXED',
+    'D3D11_RETURN_TYPE_DOUBLE',
+    'D3D11_RETURN_TYPE_CONTINUED',
+])
+
+D3D_REGISTER_COMPONENT_TYPE = Enum('D3D_REGISTER_COMPONENT_TYPE', [
+    'D3D_REGISTER_COMPONENT_UNKNOWN',
+    'D3D_REGISTER_COMPONENT_UINT32',
+    'D3D_REGISTER_COMPONENT_SINT32',
+    'D3D_REGISTER_COMPONENT_FLOAT32',
+])
+
+D3D10_REGISTER_COMPONENT_TYPE = Enum('D3D10_REGISTER_COMPONENT_TYPE', [
+    'D3D10_REGISTER_COMPONENT_UNKNOWN',
+    'D3D10_REGISTER_COMPONENT_UINT32',
+    'D3D10_REGISTER_COMPONENT_SINT32',
+    'D3D10_REGISTER_COMPONENT_FLOAT32',
+])
+
+D3D_TESSELLATOR_DOMAIN = Enum('D3D_TESSELLATOR_DOMAIN', [
+    'D3D_TESSELLATOR_DOMAIN_UNDEFINED',
+    'D3D_TESSELLATOR_DOMAIN_ISOLINE',
+    'D3D_TESSELLATOR_DOMAIN_TRI',
+    'D3D_TESSELLATOR_DOMAIN_QUAD',
+])
+
+D3D11_TESSELLATOR_DOMAIN = Enum('D3D11_TESSELLATOR_DOMAIN', [
+    'D3D11_TESSELLATOR_DOMAIN_UNDEFINED',
+    'D3D11_TESSELLATOR_DOMAIN_ISOLINE',
+    'D3D11_TESSELLATOR_DOMAIN_TRI',
+    'D3D11_TESSELLATOR_DOMAIN_QUAD',
+])
+
+D3D_TESSELLATOR_PARTITIONING = Enum('D3D_TESSELLATOR_PARTITIONING', [
+    'D3D_TESSELLATOR_PARTITIONING_UNDEFINED',
+    'D3D_TESSELLATOR_PARTITIONING_INTEGER',
+    'D3D_TESSELLATOR_PARTITIONING_POW2',
+    'D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD',
+    'D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN',
+])
+
+D3D11_TESSELLATOR_PARTITIONING = Enum('D3D11_TESSELLATOR_PARTITIONING', [
+    'D3D11_TESSELLATOR_PARTITIONING_UNDEFINED',
+    'D3D11_TESSELLATOR_PARTITIONING_INTEGER',
+    'D3D11_TESSELLATOR_PARTITIONING_POW2',
+    'D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD',
+    'D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN',
+])
+
+D3D_TESSELLATOR_OUTPUT_PRIMITIVE = Enum('D3D_TESSELLATOR_OUTPUT_PRIMITIVE', [
+    'D3D_TESSELLATOR_OUTPUT_UNDEFINED',
+    'D3D_TESSELLATOR_OUTPUT_POINT',
+    'D3D_TESSELLATOR_OUTPUT_LINE',
+    'D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW',
+    'D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW',
+])
+
+D3D11_TESSELLATOR_OUTPUT_PRIMITIVE = Enum('D3D11_TESSELLATOR_OUTPUT_PRIMITIVE', [
+    'D3D11_TESSELLATOR_OUTPUT_UNDEFINED',
+    'D3D11_TESSELLATOR_OUTPUT_POINT',
+    'D3D11_TESSELLATOR_OUTPUT_LINE',
+    'D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW',
+    'D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW',
+])
+
index ef04cfca88489b73403ec0f34a80612cf7062cac..013dec0db4ba6b7add8911e0c49a4d45c3c7b813 100755 (executable)
@@ -122,7 +122,7 @@ class DeclParser:
                     self.consume()
                     type = 'Pointer(%s)' % type
                 name = self.consume()
-                print '%s = Alias("%s", %s)' % (name, name, type)
+                print '%s = Alias(%r, %s)' % (name, name, type)
                 if self.match(','):
                     self.consume()
                 else:
@@ -136,7 +136,7 @@ class DeclParser:
         name = self.consume()
         self.consume('{')
 
-        print '%s = Enum("%s", [' % (name, name)
+        print '%s = Enum(%r, [' % (name, name)
 
         #value = 0
         while self.lookahead() != '}':
@@ -147,8 +147,8 @@ class DeclParser:
             if self.match(','):
                 self.consume(',')
             tags = self.parse_tags()
-            #print '    "%s",\t# %s' % (name, value) 
-            print '    "%s",' % (name,) 
+            #print '    %r,\t# %s' % (name, value) 
+            print '    %r,' % (name,) 
             #value += 1
         self.consume('}')
 
@@ -175,18 +175,32 @@ class DeclParser:
         self.consume('define')
         name = self.consume()
         value = self.consume()
-        #print '    "%s",\t# %s' % (name, value) 
-        print '    "%s",' % (name,) 
+        #print '    %r,\t# %s' % (name, value) 
+        print '    %r,' % (name,) 
         return name, value
 
     def parse_struct(self):
         self.consume('struct')
         name = self.consume()
-        self.consume('{')
 
-        print '%s = Struct("%s", [' % (name, name)
+        print '%s = Struct(%r, [' % (name, name)
+        for type, name in self.parse_members():
+            print '    (%s, %r),' % (type, name)
+        print '])'
+        print
+
+    def parse_union(self):
+        self.consume('union')
+        if not self.match('{'):
+            name = self.consume()
+        else:
+            name = None
+        members = self.parse_members()
+        return 'Union(%r, [%s])' % (name, ', '.join('%s, %r' % member for member in members))
 
-        value = 0
+    def parse_members(self):
+        members = []
+        self.consume('{')
         while self.lookahead() != '}':
             type, name = self.parse_named_type()
 
@@ -197,12 +211,9 @@ class DeclParser:
             if self.match(','):
                 self.consume(',')
             self.consume(';')
-            print '    (%s, "%s"),' % (type, name) 
-            value += 1
+            members.append((type, name))
         self.consume('}')
-
-        print '])'
-        print
+        return members
 
     def parse_interface(self, ref_token):
         self.consume(ref_token)
@@ -215,7 +226,7 @@ class DeclParser:
         base = self.consume()
         self.consume('{')
 
-        print '%s = Interface("%s", %s)' % (name, name, base)
+        print '%s = Interface(%r, %s)' % (name, name, base)
         print '%s.methods += [' % (name,)
 
         while self.lookahead() != '}':
@@ -256,7 +267,7 @@ class DeclParser:
             if self.match(','):
                 self.consume()
         self.consume(')')
-        if self.lookahead() == 'const':
+        if self.match('const', 'CONST'):
             self.consume()
             extra = ', const=True' + extra
 
@@ -264,14 +275,14 @@ class DeclParser:
             self.consume()
             self.consume('0')
         
-        print '    %s(%s, "%s", [%s]%s),' % (creator, ret, name, ', '.join(args), extra)
+        print '    %s(%s, %r, [%s]%s),' % (creator, ret, name, ', '.join(args), extra)
 
     def parse_arg(self):
         tags = self.parse_tags()
 
         type, name = self.parse_named_type()
 
-        arg = '(%s, "%s")' % (type, name)
+        arg = '(%s, %r)' % (type, name)
         if 'out' in tags or 'inout' in tags:
             arg = 'Out' + arg
 
@@ -293,6 +304,7 @@ class DeclParser:
         if self.lookahead().startswith('__'):
             # Parse __in, __out, etc tags
             tag = self.consume()[2:]
+            args = []
             if self.match('('):
                 self.consume()
                 while not self.match(')'):
@@ -303,16 +315,20 @@ class DeclParser:
 
     def parse_named_type(self):
         type = self.parse_type()
-        name = self.consume()
-        if self.match('['):
-            self.consume()
-            length = self.consume()
-            self.consume(']')
-            try:
-                int(length)
-            except ValueError:
-                length = "%s" % length
-            type = 'Array(%s, %s)' % (type, length)
+        
+        if self.match(',', ';', '}', ')'):
+            name = None
+        else:
+            name = self.consume()
+            if self.match('['):
+                self.consume()
+                length = self.consume()
+                self.consume(']')
+                try:
+                    int(length)
+                except ValueError:
+                    length = repr(length)
+                type = 'Array(%s, %s)' % (type, length)
         return type, name
 
     int_tokens = ('unsigned', 'signed', 'int', 'long', 'short', 'char')
@@ -332,19 +348,22 @@ class DeclParser:
 
     def parse_type(self):
         const = False
-        token = self.consume()
-        if token == 'const':
-            token = self.consume()
+        if self.match('const', 'CONST'):
+            self.consume()
             const = True
-        if token == 'void':
+        if self.match('void'):
+            self.consume()
             type = 'Void'
-        elif token in self.int_tokens:
+        elif self.match('union'):
+            type = self.parse_union()
+        elif self.match(*self.int_tokens):
             unsigned = False
             signed = False
             long = 0
             short = 0
             char = False
-            while token in self.int_tokens:
+            while self.match(*self.int_tokens):
+                token = self.consume()
                 if token == 'unsigned':
                     unsigned = True
                 if token == 'signed':
@@ -355,10 +374,6 @@ class DeclParser:
                     short += 1
                 if token == 'char':
                     char = False
-                if self.lookahead() in self.int_tokens:
-                    token = self.consume()
-                else:
-                    token = None
             if char:
                 type = 'Char'
                 if signed:
@@ -372,6 +387,7 @@ class DeclParser:
             if unsigned:
                 type = 'U' + type
         else:
+            token = self.consume()
             type = self.type_table.get(token, token)
         if const:
             type = 'Const(%s)' % type
@@ -379,8 +395,8 @@ class DeclParser:
             if self.match('*'):
                 self.consume('*')
                 type = 'Pointer(%s)' % type
-            elif self.match('const'):
-                self.consume('const')
+            elif self.match('const', 'CONST'):
+                self.consume()
                 type = 'Const(%s)' % type
             else:
                 break
index c74d3111bca9aae9659d99be97c6fa2db7285bb6..2057124c9edf9bd4610a0f423fd7e7f359fee71b 100644 (file)
@@ -41,7 +41,10 @@ class Type:
         # on this type, so it should preferrably be something representative of
         # the type.
         if tag is None:
-            tag = ''.join([c for c in expr if c.isalnum() or c in '_'])
+            if expr is not None:
+                tag = ''.join([c for c in expr if c.isalnum() or c in '_'])
+            else:
+                tag = 'anonynoums'
         else:
             for c in tag:
                 assert c.isalnum() or c in '_'
@@ -257,12 +260,35 @@ class Struct(Type):
         Struct.__id += 1
 
         self.name = name
-        self.members = members
+        self.members = []
+
+        # Eliminate anonymous unions
+        for type, name in members:
+            if name is not None:
+                self.members.append((type, name))
+            else:
+                assert isinstance(type, Union)
+                assert type.name is None
+                self.members.extend(type.members)
 
     def visit(self, visitor, *args, **kwargs):
         return visitor.visitStruct(self, *args, **kwargs)
 
 
+class Union(Type):
+
+    __id = 0
+
+    def __init__(self, name, members):
+        Type.__init__(self, name)
+
+        self.id = Union.__id
+        Union.__id += 1
+
+        self.name = name
+        self.members = members
+
+
 class Alias(Type):
 
     def __init__(self, expr, type):
@@ -388,8 +414,8 @@ class Interface(Type):
 
 class Method(Function):
 
-    def __init__(self, type, name, args, const=False, sideeffects=True):
-        Function.__init__(self, type, name, args, call = '__stdcall', sideeffects=sideeffects)
+    def __init__(self, type, name, args, call = '__stdcall', const=False, sideeffects=True):
+        Function.__init__(self, type, name, args, call = call, sideeffects=sideeffects)
         for index in range(len(self.args)):
             self.args[index].index = index + 1
         self.const = const
@@ -400,6 +426,10 @@ class Method(Function):
             s += ' const'
         return s
 
+def StdMethod(*args, **kwargs):
+    kwargs.setdefault('call', '__stdcall')
+    return Method(*args, **kwargs)
+
 
 class String(Type):
 
diff --git a/specs/tags.vim b/specs/tags.vim
deleted file mode 100644 (file)
index 627aad3..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-s/\<__deref_out_bcount\>([^)]*)/[out]/g
-s/\<__deref_out_bcount\>([^)]*)/[out]/g
-s/\<__deref_out_bcount\>([^)]*)/[out]/g
-s/\<__field_ecount\>([^)]*)//g
-s/\<__field_ecount\>([^)]*)//g
-s/\<__field_ecount\>([^)]*)//g
-s/\<__in\>//g
-s/\<__in_bcount\>([^)]*)//g
-s/\<__in_bcount\>([^)]*)//g
-s/\<__in_ecount\>([^)]*)//g
-s/\<__in_ecount\>([^)]*)//g
-s/\<__in_ecount\>([^)]*)//g
-s/\<__in_ecount_opt\>([^)]*)//g
-s/\<__in_ecount_opt\>([^)]*)//g
-s/\<__in_ecount\>([^)]*)//g
-s/\<__in_ecount\>([^)]*)//g
-s/\<__in_opt\>//g
-s/\<__inout\>//g
-s/\<__in_z\>//g
-s/\<__in_z_opt\>//g
-s/\<__maybenull\>//g
-s/\<__notnull\>//g
-s/\<__nullterminated\>//g
-s/\<__out\>/[out]/g
-s/\<__out_bcount\>([^)]*)/[out]/g
-s/\<__out_ecount\>([^)]*)/[out]/g
-s/\<__out_ecount\>([^)]*)/[out]/g
-s/\<__out_ecount\>([^)]*)/[out]/g
-s/\<__out_ecount_opt\>([^)]*)/[out]/g
-s/\<__out_ecount_opt\>([^)]*)/[out]/g
-s/\<__out_ecount_opt\>([^)]*)/[out]/g
-s/\<__out_ecount_opt\>([^)]*)/[out]/g
-s/\<__out_ecount\>([^)]*)/[out]/g
-s/\<__out_ecount_z\>([^)]*)/[out]/g
-s/\<__out_ecount_z\>([^)]*)/[out]/g
-s/\<__out_ecount_z\>([^)]*)/[out]/g
-s/\<__out_opt\>/[out]/g
-s/\<__out_z\>/[out]/g