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

José Fonseca jose.r.fonseca at gmail.com
Mon Mar 11 15:55:46 PDT 2013


Thanks. Pushed.

I just had to massage the new code a little, so that builds on machines
without D3D11.1/DXG1.2 headers don't fail.  I haven't tested though, so
please let me know if there are any regressions on your end.

Jose


On Mon, Mar 11, 2013 at 7:56 PM, Jeff Muizelaar <jmuizelaar at mozilla.com>wrote:

> 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
>
> _______________________________________________
> apitrace mailing list
> apitrace at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/apitrace
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/apitrace/attachments/20130311/00603164/attachment-0001.html>


More information about the apitrace mailing list