<font face="courier new,monospace">Thanks. Pushed.</font><div><font face="courier new,monospace"><br></font></div><div><font face="courier new,monospace">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.</font><div>
<font face="courier new,monospace"><br></font></div><div><font face="courier new,monospace">Jose</font></div><div><font face="courier new,monospace"><br></font><br><div class="gmail_quote">On Mon, Mar 11, 2013 at 7:56 PM, Jeff Muizelaar <span dir="ltr"><<a href="mailto:jmuizelaar@mozilla.com" target="_blank">jmuizelaar@mozilla.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">diff --git a/specs/d3d11_1.py b/specs/d3d11_1.py<br>
index 5681191..02b0b54 100644<br>
--- a/specs/d3d11_1.py<br>
+++ b/specs/d3d11_1.py<br>
@@ -129,16 +129,17 @@ D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG = Flags(UINT, [<br>
     "D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED",<br>
 ])<br>
<br>
 ID3D11DeviceContext1.methods += [<br>
     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")]),<br>

     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")]),<br>

     StdMethod(Void, "DiscardResource", [(ObjPointer(ID3D11Resource), "pResource")]),<br>
     StdMethod(Void, "DiscardView", [(ObjPointer(ID3D11View), "pResourceView")]),<br>
+    StdMethod(Void, "DiscardView1", [(ObjPointer(ID3D11View), "pResourceView"), (Pointer(Const(D3D11_RECT)), "pRect"), (UINT, "NumRects")]),<br>
     StdMethod(Void, "VSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),<br>

     StdMethod(Void, "HSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),<br>

     StdMethod(Void, "DSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),<br>

     StdMethod(Void, "GSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),<br>

     StdMethod(Void, "PSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),<br>

     StdMethod(Void, "CSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),<br>

     StdMethod(Void, "VSGetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(Array(ObjPointer(ID3D11Buffer), "NumBuffers"), "ppConstantBuffers"), Out(Array(UINT, "NumBuffers"), "pFirstConstant"), Out(Array(UINT, "NumBuffers"), "pNumConstants")]),<br>

     StdMethod(Void, "HSGetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(Array(ObjPointer(ID3D11Buffer), "NumBuffers"), "ppConstantBuffers"), Out(Array(UINT, "NumBuffers"), "pFirstConstant"), Out(Array(UINT, "NumBuffers"), "pNumConstants")]),<br>

diff --git a/specs/dxgi.py b/specs/dxgi.py<br>
index ca05368..e867384 100644<br>
--- a/specs/dxgi.py<br>
+++ b/specs/dxgi.py<br>
@@ -25,19 +25,21 @@<br>
<br>
<br>
 from dxgitype import *<br>
<br>
<br>
 IDXGIObject = Interface("IDXGIObject", IUnknown)<br>
 IDXGIDeviceSubObject = Interface("IDXGIDeviceSubObject", IDXGIObject)<br>
 IDXGIResource = Interface("IDXGIResource", IDXGIDeviceSubObject)<br>
+IDXGIResource1 = Interface("IDXGIResource1", IDXGIResource)<br>
 IDXGIKeyedMutex = Interface("IDXGIKeyedMutex", IDXGIDeviceSubObject)<br>
 IDXGISurface = Interface("IDXGISurface", IDXGIDeviceSubObject)<br>
 IDXGISurface1 = Interface("IDXGISurface1", IDXGISurface)<br>
+IDXGISurface2 = Interface("IDXGISurface2", IDXGISurface1)<br>
 IDXGIAdapter = Interface("IDXGIAdapter", IDXGIObject)<br>
 IDXGIOutput = Interface("IDXGIOutput", IDXGIObject)<br>
 IDXGISwapChain = Interface("IDXGISwapChain", IDXGIDeviceSubObject)<br>
 IDXGIFactory = Interface("IDXGIFactory", IDXGIObject)<br>
 IDXGIDevice = Interface("IDXGIDevice", IDXGIObject)<br>
 IDXGIFactory1 = Interface("IDXGIFactory1", IDXGIFactory)<br>
 IDXGIAdapter1 = Interface("IDXGIAdapter1", IDXGIAdapter)<br>
 IDXGIDevice1 = Interface("IDXGIDevice1", IDXGIDevice)<br>
@@ -150,16 +152,22 @@ IDXGIDeviceSubObject.methods += [<br>
<br>
 IDXGIResource.methods += [<br>
     StdMethod(HRESULT, "GetSharedHandle", [Out(Pointer(HANDLE), "pSharedHandle")]),<br>
     StdMethod(HRESULT, "GetUsage", [Out(Pointer(DXGI_USAGE), "pUsage")], sideeffects=False),<br>
     StdMethod(HRESULT, "SetEvictionPriority", [(DXGI_RESOURCE_PRIORITY, "EvictionPriority")]),<br>
     StdMethod(HRESULT, "GetEvictionPriority", [Out(Pointer(DXGI_RESOURCE_PRIORITY), "pEvictionPriority")], sideeffects=False),<br>
 ]<br>
<br>
+IDXGIResource1.methods += [<br>
+    StdMethod(HRESULT, "CreateSharedHandle", [In(Pointer(Const(SECURITY_ATTRIBUTES)), "pAttributes"), In(DWORD, "dwAccess"), In(LPCWSTR, "lpName"), Out(Pointer(HANDLE), "pHandle")]),<br>

+    StdMethod(HRESULT, "CreateSubresourceSurface", [In(UINT, "index"), Out(Pointer(ObjPointer(IDXGISurface2)), "ppSurface")]),<br>
+]<br>
+<br>
+<br>
 IDXGIKeyedMutex.methods += [<br>
     StdMethod(HRESULT, "AcquireSync", [(UINT64, "Key"), (DWORD, "dwMilliseconds")]),<br>
     StdMethod(HRESULT, "ReleaseSync", [(UINT64, "Key")]),<br>
 ]<br>
<br>
 DXGI_MAP = Flags(UINT, [<br>
     "DXGI_MAP_READ",<br>
     "DXGI_MAP_WRITE",<br>
@@ -172,16 +180,20 @@ IDXGISurface.methods += [<br>
     StdMethod(HRESULT, "Unmap", []),<br>
 ]<br>
<br>
 IDXGISurface1.methods += [<br>
     StdMethod(HRESULT, "GetDC", [(BOOL, "Discard"), Out(Pointer(HDC), "phdc")]),<br>
     StdMethod(HRESULT, "ReleaseDC", [(Pointer(RECT), "pDirtyRect")]),<br>
 ]<br>
<br>
+IDXGISurface2.methods += [<br>
+    StdMethod(HRESULT, "GetResource", [In(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppParentResource"), Out(Pointer(UINT), "pSubresourceIndex")]),<br>
+]<br>
+<br>
 IDXGIAdapter.methods += [<br>
     StdMethod(HRESULT, "EnumOutputs", [(UINT, "Output"), Out(Pointer(ObjPointer(IDXGIOutput)), "ppOutput")]),<br>
     StdMethod(HRESULT, "GetDesc", [Out(Pointer(DXGI_ADAPTER_DESC), "pDesc")], sideeffects=False),<br>
     StdMethod(HRESULT, "CheckInterfaceSupport", [(REFGUID, "InterfaceName"), Out(Pointer(LARGE_INTEGER), "pUMDVersion")], sideeffects=False),<br>
 ]<br>
<br>
 DXGI_ENUM_MODES = Flags(UINT, [<br>
     "DXGI_ENUM_MODES_INTERLACED",<br>
@@ -303,13 +315,14 @@ IDXGISwapChainDWM.methods += [<br>
     StdMethod(HRESULT, "GetFullscreenState", [Out(Pointer(BOOL), "pFullscreen"), Out(Pointer(ObjPointer(IDXGIOutput)), "ppTarget")]),<br>
 ]<br>
<br>
<br>
 dxgi = Module('dxgi')<br>
 dxgi.addInterfaces([<br>
     IDXGIFactory1,<br>
     IDXGIFactoryDWM,<br>
+    IDXGIResource1<br>
 ])<br>
 dxgi.addFunctions([<br>
     StdFunction(HRESULT, "CreateDXGIFactory", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppFactory")]),<br>
     StdFunction(HRESULT, "CreateDXGIFactory1", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppFactory")]),<br>
 ])<br>
diff --git a/specs/winapi.py b/specs/winapi.py<br>
index 4436c6d..be50155 100644<br>
--- a/specs/winapi.py<br>
+++ b/specs/winapi.py<br>
@@ -173,16 +173,21 @@ LOGFONTW = Struct("LOGFONTW", [<br>
     (BYTE, "lfCharSet"),<br>
     (BYTE, "lfOutPrecision"),<br>
     (BYTE, "lfClipPrecision"),<br>
     (BYTE, "lfQuality"),<br>
     (BYTE, "lfPitchAndFamily"),<br>
     (WString, "lfFaceName"),<br>
 ])<br>
<br>
+SECURITY_ATTRIBUTES = Struct("SECURITY_ATTRIBUTES", [<br>
+    (DWORD, "nLength"),<br>
+    (LPVOID, "lpSecurityDescriptor"),<br>
+    (BOOL, "bInheritHandle"),<br>
+])<br>
<br>
 # <a href="http://msdn.microsoft.com/en-us/library/ff485842.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/ff485842.aspx</a><br>
 # <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx</a><br>
 def MAKE_HRESULT(errors, ok = "S_OK", false = "S_FALSE"):<br>
     values = [ok, false]<br>
     values.extend(errors)<br>
     values.extend([<br>
         "E_PENDING", # 0x8000000A<br>
<br>
_______________________________________________<br>
apitrace mailing list<br>
<a href="mailto:apitrace@lists.freedesktop.org">apitrace@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/apitrace" target="_blank">http://lists.freedesktop.org/mailman/listinfo/apitrace</a><br>
</blockquote></div><br></div></div>