[PATCH] Add some missing DXGI and D3D11.1 api

Jeff Muizelaar jmuizelaar at mozilla.com
Mon Mar 11 12:56:30 PDT 2013


diff --git a/specs/d3d11_1.py b/specs/d3d11_1.py
index 5681191..02b0b54 100644
--- a/specs/d3d11_1.py
+++ b/specs/d3d11_1.py
@@ -129,16 +129,17 @@ D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG = Flags(UINT, [
     "D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED",
 ])
 
 ID3D11DeviceContext1.methods += [
     StdMethod(Void, "CopySubresourceRegion1", [(ObjPointer(ID3D11Resource), "pDstResource"), (UINT, "DstSubresource"), (UINT, "DstX"), (UINT, "DstY"), (UINT, "DstZ"), (ObjPointer(ID3D11Resource), "pSrcResource"), (UINT, "SrcSubresource"), (Pointer(Const(D3D11_BOX)), "pSrcBox"), (D3D11_COPY_FLAGS, "CopyFlags")]),
     StdMethod(Void, "UpdateSubresource1", [(ObjPointer(ID3D11Resource), "pDstResource"), (UINT, "DstSubresource"), (Pointer(Const(D3D11_BOX)), "pDstBox"), (Blob(Const(Void), "_calcSubresourceSize(pDstResource, DstSubresource, pDstBox, SrcRowPitch, SrcDepthPitch)"), "pSrcData"), (UINT, "SrcRowPitch"), (UINT, "SrcDepthPitch"), (D3D11_COPY_FLAGS, "CopyFlags")]),
     StdMethod(Void, "DiscardResource", [(ObjPointer(ID3D11Resource), "pResource")]),
     StdMethod(Void, "DiscardView", [(ObjPointer(ID3D11View), "pResourceView")]),
+    StdMethod(Void, "DiscardView1", [(ObjPointer(ID3D11View), "pResourceView"), (Pointer(Const(D3D11_RECT)), "pRect"), (UINT, "NumRects")]),
     StdMethod(Void, "VSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "HSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "DSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "GSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "PSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "CSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "VSGetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(Array(ObjPointer(ID3D11Buffer), "NumBuffers"), "ppConstantBuffers"), Out(Array(UINT, "NumBuffers"), "pFirstConstant"), Out(Array(UINT, "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "HSGetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(Array(ObjPointer(ID3D11Buffer), "NumBuffers"), "ppConstantBuffers"), Out(Array(UINT, "NumBuffers"), "pFirstConstant"), Out(Array(UINT, "NumBuffers"), "pNumConstants")]),
diff --git a/specs/dxgi.py b/specs/dxgi.py
index ca05368..e867384 100644
--- a/specs/dxgi.py
+++ b/specs/dxgi.py
@@ -25,19 +25,21 @@
 
 
 from dxgitype import *
 
 
 IDXGIObject = Interface("IDXGIObject", IUnknown)
 IDXGIDeviceSubObject = Interface("IDXGIDeviceSubObject", IDXGIObject)
 IDXGIResource = Interface("IDXGIResource", IDXGIDeviceSubObject)
+IDXGIResource1 = Interface("IDXGIResource1", IDXGIResource)
 IDXGIKeyedMutex = Interface("IDXGIKeyedMutex", IDXGIDeviceSubObject)
 IDXGISurface = Interface("IDXGISurface", IDXGIDeviceSubObject)
 IDXGISurface1 = Interface("IDXGISurface1", IDXGISurface)
+IDXGISurface2 = Interface("IDXGISurface2", IDXGISurface1)
 IDXGIAdapter = Interface("IDXGIAdapter", IDXGIObject)
 IDXGIOutput = Interface("IDXGIOutput", IDXGIObject)
 IDXGISwapChain = Interface("IDXGISwapChain", IDXGIDeviceSubObject)
 IDXGIFactory = Interface("IDXGIFactory", IDXGIObject)
 IDXGIDevice = Interface("IDXGIDevice", IDXGIObject)
 IDXGIFactory1 = Interface("IDXGIFactory1", IDXGIFactory)
 IDXGIAdapter1 = Interface("IDXGIAdapter1", IDXGIAdapter)
 IDXGIDevice1 = Interface("IDXGIDevice1", IDXGIDevice)
@@ -150,16 +152,22 @@ IDXGIDeviceSubObject.methods += [
 
 IDXGIResource.methods += [
     StdMethod(HRESULT, "GetSharedHandle", [Out(Pointer(HANDLE), "pSharedHandle")]),
     StdMethod(HRESULT, "GetUsage", [Out(Pointer(DXGI_USAGE), "pUsage")], sideeffects=False),
     StdMethod(HRESULT, "SetEvictionPriority", [(DXGI_RESOURCE_PRIORITY, "EvictionPriority")]),
     StdMethod(HRESULT, "GetEvictionPriority", [Out(Pointer(DXGI_RESOURCE_PRIORITY), "pEvictionPriority")], sideeffects=False),
 ]
 
+IDXGIResource1.methods += [
+    StdMethod(HRESULT, "CreateSharedHandle", [In(Pointer(Const(SECURITY_ATTRIBUTES)), "pAttributes"), In(DWORD, "dwAccess"), In(LPCWSTR, "lpName"), Out(Pointer(HANDLE), "pHandle")]),
+    StdMethod(HRESULT, "CreateSubresourceSurface", [In(UINT, "index"), Out(Pointer(ObjPointer(IDXGISurface2)), "ppSurface")]),
+]
+
+
 IDXGIKeyedMutex.methods += [
     StdMethod(HRESULT, "AcquireSync", [(UINT64, "Key"), (DWORD, "dwMilliseconds")]),
     StdMethod(HRESULT, "ReleaseSync", [(UINT64, "Key")]),
 ]
 
 DXGI_MAP = Flags(UINT, [
     "DXGI_MAP_READ",
     "DXGI_MAP_WRITE",
@@ -172,16 +180,20 @@ IDXGISurface.methods += [
     StdMethod(HRESULT, "Unmap", []),
 ]
 
 IDXGISurface1.methods += [
     StdMethod(HRESULT, "GetDC", [(BOOL, "Discard"), Out(Pointer(HDC), "phdc")]),
     StdMethod(HRESULT, "ReleaseDC", [(Pointer(RECT), "pDirtyRect")]),
 ]
 
+IDXGISurface2.methods += [
+    StdMethod(HRESULT, "GetResource", [In(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppParentResource"), Out(Pointer(UINT), "pSubresourceIndex")]),
+]
+
 IDXGIAdapter.methods += [
     StdMethod(HRESULT, "EnumOutputs", [(UINT, "Output"), Out(Pointer(ObjPointer(IDXGIOutput)), "ppOutput")]),
     StdMethod(HRESULT, "GetDesc", [Out(Pointer(DXGI_ADAPTER_DESC), "pDesc")], sideeffects=False),
     StdMethod(HRESULT, "CheckInterfaceSupport", [(REFGUID, "InterfaceName"), Out(Pointer(LARGE_INTEGER), "pUMDVersion")], sideeffects=False),
 ]
 
 DXGI_ENUM_MODES = Flags(UINT, [
     "DXGI_ENUM_MODES_INTERLACED",
@@ -303,13 +315,14 @@ IDXGISwapChainDWM.methods += [
     StdMethod(HRESULT, "GetFullscreenState", [Out(Pointer(BOOL), "pFullscreen"), Out(Pointer(ObjPointer(IDXGIOutput)), "ppTarget")]),
 ]
 
 
 dxgi = Module('dxgi')
 dxgi.addInterfaces([
     IDXGIFactory1,
     IDXGIFactoryDWM,
+    IDXGIResource1
 ])
 dxgi.addFunctions([
     StdFunction(HRESULT, "CreateDXGIFactory", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppFactory")]),
     StdFunction(HRESULT, "CreateDXGIFactory1", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppFactory")]),
 ])
diff --git a/specs/winapi.py b/specs/winapi.py
index 4436c6d..be50155 100644
--- a/specs/winapi.py
+++ b/specs/winapi.py
@@ -173,16 +173,21 @@ LOGFONTW = Struct("LOGFONTW", [
     (BYTE, "lfCharSet"),
     (BYTE, "lfOutPrecision"),
     (BYTE, "lfClipPrecision"),
     (BYTE, "lfQuality"),
     (BYTE, "lfPitchAndFamily"),
     (WString, "lfFaceName"),
 ])
 
+SECURITY_ATTRIBUTES = Struct("SECURITY_ATTRIBUTES", [
+    (DWORD, "nLength"),
+    (LPVOID, "lpSecurityDescriptor"),
+    (BOOL, "bInheritHandle"),
+])
 
 # http://msdn.microsoft.com/en-us/library/ff485842.aspx
 # http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx
 def MAKE_HRESULT(errors, ok = "S_OK", false = "S_FALSE"):
     values = [ok, false]
     values.extend(errors)
     values.extend([
         "E_PENDING", # 0x8000000A



More information about the apitrace mailing list