<div dir="ltr">Thanks. The patch is alright, but I'll need to update my developemnt systems with the necessary headers from Windows 8 SDK.  This might take sometime, specially for MinGW crosscompilation, which very important for me (as that's what I used for day-to-day development of apitrace for windows).<div>
<br></div><div>Jose</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Nov 19, 2013 at 8:18 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.py b/specs/d3d11.py<br>
index 7d1e1d7..3da1559 100644<br>
--- a/specs/d3d11.py<br>
+++ b/specs/d3d11.py<br>
@@ -1219,13 +1219,14 @@ d3d11.addFunctions([<br>
     StdFunction(HRESULT, "D3D11CreateDevice", [(ObjPointer(IDXGIAdapter), "pAdapter"), (D3D_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (D3D11_CREATE_DEVICE_FLAG, "Flags"), (Array(Const(D3D_FEATURE_LEVEL), "FeatureLevels"), "pFeatureLevels"), (UINT, "FeatureLevels"), (UINT, "SDKVersion"), Out(Pointer(ObjPointer(ID3D11Device)), "ppDevice"), Out(Pointer(D3D_FEATURE_LEVEL), "pFeatureLevel"), Out(Pointer(ObjPointer(ID3D11DeviceContext)), "ppImmediateContext")]),<br>

     StdFunction(HRESULT, "D3D11CreateDeviceAndSwapChain", [(ObjPointer(IDXGIAdapter), "pAdapter"), (D3D_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (D3D11_CREATE_DEVICE_FLAG, "Flags"), (Array(Const(D3D_FEATURE_LEVEL), "FeatureLevels"), "pFeatureLevels"), (UINT, "FeatureLevels"), (UINT, "SDKVersion"), (Pointer(Const(DXGI_SWAP_CHAIN_DESC)), "pSwapChainDesc"), Out(Pointer(ObjPointer(IDXGISwapChain)), "ppSwapChain"), Out(Pointer(ObjPointer(ID3D11Device)), "ppDevice"), Out(Pointer(D3D_FEATURE_LEVEL), "pFeatureLevel"), Out(Pointer(ObjPointer(ID3D11DeviceContext)), "ppImmediateContext")]),<br>

 ])<br>
<br>
 d3d11.addInterfaces([<br>
     IDXGIFactory1,<br>
     IDXGIAdapter1,<br>
     IDXGIDevice1,<br>
+    IDXGIDevice2,<br>
     IDXGIResource,<br>
     ID3D11Debug,<br>
     ID3D11InfoQueue,<br>
     ID3D11SwitchToRef,<br>
 ])<br>
diff --git a/specs/dxgi.py b/specs/dxgi.py<br>
index 7092b16..1c179d7 100644<br>
--- a/specs/dxgi.py<br>
+++ b/specs/dxgi.py<br>
@@ -36,16 +36,20 @@ IDXGISurface1 = Interface("IDXGISurface1", IDXGISurface)<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>
+IDXGIFactory2 = Interface("IDXGIFactory2", IDXGIFactory1)<br>
+IDXGISwapChain1 = Interface("IDXGISwapChain1", IDXGISwapChain)<br>
+IDXGIDevice2 = Interface("IDXGIDevice2", IDXGIDevice1)<br>
+IDXGIAdapter2 = Interface("IDXGIAdapter2", IDXGIAdapter1)<br>
<br>
<br>
 DXGI_USAGE = Flags(UINT, [<br>
     "DXGI_CPU_ACCESS_NONE", # 0<br>
     "DXGI_CPU_ACCESS_SCRATCH", # 3<br>
     "DXGI_CPU_ACCESS_DYNAMIC", # 1<br>
     "DXGI_CPU_ACCESS_READ_WRITE", # 2<br>
     "DXGI_USAGE_SHADER_INPUT",<br>
@@ -132,16 +136,57 @@ DXGI_SWAP_CHAIN_DESC = Struct("DXGI_SWAP_CHAIN_DESC", [<br>
     (DXGI_USAGE, "BufferUsage"),<br>
     (UINT, "BufferCount"),<br>
     (HWND, "OutputWindow"),<br>
     (BOOL, "Windowed"),<br>
     (DXGI_SWAP_EFFECT, "SwapEffect"),<br>
     (DXGI_SWAP_CHAIN_FLAG, "Flags"),<br>
 ])<br>
<br>
+DXGI_SCALING = Enum("DXGI_SCALING", [<br>
+    "DXGI_SCALING_STRETCH",<br>
+    "DXGI_SCALING_NONE",<br>
+])<br>
+<br>
+DXGI_ALPHA_MODE = Enum("DXGI_ALPHA_MODE", [<br>
+    "DXGI_ALPHA_MODE_UNSPECIFIED",<br>
+    "DXGI_ALPHA_MODE_PREMULTIPLIED",<br>
+    "DXGI_ALPHA_MODE_STRAIGHT",<br>
+    "DXGI_ALPHA_MODE_IGNORE",<br>
+])<br>
+<br>
+DXGI_SWAP_CHAIN_DESC1 = Struct("DXGI_SWAP_CHAIN_DESC1", [<br>
+    (UINT, "Width"),<br>
+    (UINT, "Height"),<br>
+    (DXGI_FORMAT, "Format"),<br>
+    (BOOL, "Stereo"),<br>
+    (DXGI_SAMPLE_DESC, "SampleDesc"),<br>
+    (DXGI_USAGE, "BufferUsage"),<br>
+    (UINT, "BufferCount"),<br>
+    (DXGI_SCALING, "Scaling"),<br>
+    (DXGI_SWAP_EFFECT, "SwapEffect"),<br>
+    (DXGI_ALPHA_MODE, "AlphaMode"),<br>
+    (UINT, "Flags"),<br>
+])<br>
+<br>
+DXGI_SWAP_CHAIN_FULLSCREEN_DESC = Struct("DXGI_SWAP_CHAIN_FULLSCREEN_DESC", [<br>
+    (DXGI_RATIONAL, "RefreshRate"),<br>
+    (DXGI_MODE_SCANLINE_ORDER, "ScanlineOrdering"),<br>
+    (DXGI_MODE_SCALING, "Scaling"),<br>
+    (BOOL, "Windowed"),<br>
+])<br>
+<br>
+DXGI_PRESENT_PARAMETERS = Struct("DXGI_PRESENT_PARAMETERS", [<br>
+    (UINT, "DirtyRectsCount"),<br>
+    (Pointer(RECT), "pDirtyRects"),<br>
+    (Pointer(RECT), "pScrollRect"),<br>
+    (Pointer(POINT), "pScrollOffset"),<br>
+])<br>
+<br>
+<br>
 IDXGIObject.methods += [<br>
     StdMethod(HRESULT, "SetPrivateData", [(REFGUID, "Name"), (UINT, "DataSize"), (OpaqueBlob(Const(Void), "DataSize"), "pData")], sideeffects=False),<br>
     StdMethod(HRESULT, "SetPrivateDataInterface", [(REFGUID, "Name"), (OpaquePointer(Const(IUnknown)), "pUnknown")], sideeffects=False),<br>
     StdMethod(HRESULT, "GetPrivateData", [(REFGUID, "Name"), Out(Pointer(UINT), "pDataSize"), Out(OpaquePointer(Void), "pData")], sideeffects=False),<br>
     StdMethod(HRESULT, "GetParent", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppParent")]),<br>
 ]<br>
<br>
 IDXGIDeviceSubObject.methods += [<br>
@@ -304,18 +349,93 @@ IDXGISwapChainDWM.methods += [<br>
     StdMethod(HRESULT, "ResizeTarget", [(Pointer(Const(DXGI_MODE_DESC)), "pNewTargetParameters")]),<br>
     StdMethod(HRESULT, "GetContainingOutput", [Out(Pointer(ObjPointer(IDXGIOutput)), "ppOutput")]),<br>
     StdMethod(HRESULT, "GetFrameStatistics", [(Pointer(DXGI_FRAME_STATISTICS), "pStats")], sideeffects=False),<br>
     StdMethod(HRESULT, "GetLastPresentCount", [(Pointer(UINT), "pLastPresentCount")], sideeffects=False),<br>
     StdMethod(HRESULT, "SetFullscreenState", [(BOOL, "Fullscreen"), (ObjPointer(IDXGIOutput), "pTarget")]),<br>
     StdMethod(HRESULT, "GetFullscreenState", [Out(Pointer(BOOL), "pFullscreen"), Out(Pointer(ObjPointer(IDXGIOutput)), "ppTarget")]),<br>
 ]<br>
<br>
+IDXGIFactory2.methods += [<br>
+    StdMethod(BOOL, "IsWindowedStereoEnabled", []),<br>
+    StdMethod(HRESULT, "CreateSwapChainForHwnd", [(ObjPointer(IUnknown), "pDevice"), (HWND, "WindowHandle"), (Pointer(Const(DXGI_SWAP_CHAIN_DESC1)), "pDesc"), (Pointer(Const(DXGI_SWAP_CHAIN_FULLSCREEN_DESC)), "pFullscreenDesc"), (ObjPointer(IDXGIOutput), "pRestrictToOutput"), Out(Pointer(ObjPointer(IDXGISwapChain1)), "ppSwapChain")]),<br>

+    StdMethod(HRESULT, "CreateSwapChainForCoreWindow", [(ObjPointer(IUnknown), "pDevice"), (ObjPointer(IUnknown), "pWindow"), (Pointer(Const(DXGI_SWAP_CHAIN_DESC1)), "pDesc"), (ObjPointer(IDXGIOutput), "pRestrictToOutput"), Out(Pointer(ObjPointer(IDXGISwapChain1)), "ppSwapChain")]),<br>

+    StdMethod(HRESULT, "CreateSwapChainForComposition", [(ObjPointer(IUnknown), "pDevice"), (Pointer(Const(DXGI_SWAP_CHAIN_DESC1)), "pDesc"), (ObjPointer(IDXGIOutput), "pRestrictToOutput"), Out(Pointer(ObjPointer(IDXGISwapChain1)), "ppSwapChain")]),<br>

+    StdMethod(HRESULT, "GetSharedResourceAdapterLuid", [(HANDLE, "hResource"), Out(Pointer(LUID), "pLuid")]),<br>
+    StdMethod(HRESULT, "RegisterStereoStatusWindow", [(HWND, "WindowHandle"), (UINT, "wMsg"), Out(Pointer(DWORD), "pdwCookie")]),<br>
+    StdMethod(HRESULT, "RegisterStereoStatusEvent", [(HANDLE, "hEvent"), Out(Pointer(DWORD), "pdwCookie")]),<br>
+    StdMethod(Void, "UnregisterStereoStatus", [(DWORD, "dwCookie")]),<br>
+    StdMethod(HRESULT, "RegisterOcclusionStatusWindow", [(HWND, "WindowHandle"), (UINT, "wMsg"), Out(Pointer(DWORD), "pdwCookie")]),<br>
+    StdMethod(HRESULT, "RegisterOcclusionStatusEvent", [(HANDLE, "hEvent"), Out(Pointer(DWORD), "pdwCookie")]),<br>
+    StdMethod(Void, "UnregisterOcclusionStatus", [(DWORD, "dwCookie")]),<br>
+]<br>
+<br>
+IDXGISwapChain1.methods += [<br>
+    StdMethod(HRESULT, "GetBackgroundColor", [(Out(Pointer(DXGI_RGBA), "pColor"))]),<br>
+    StdMethod(HRESULT, "GetCoreWindow", [(REFIID, "riid"), (Out(Pointer(ObjPointer(Void)), "ppUnk"))]),<br>
+    StdMethod(HRESULT, "GetDesc1", [(Out(Pointer(DXGI_SWAP_CHAIN_DESC1), "pDesc"))]),<br>
+    StdMethod(HRESULT, "GetFullscreenDesc", [(Out(Pointer(DXGI_SWAP_CHAIN_FULLSCREEN_DESC), "pDesc"))]),<br>
+    StdMethod(HRESULT, "GetHwnd", [(Out(Pointer(HWND), "pHwnd"))]),<br>
+    StdMethod(HRESULT, "GetRestrictToOutput", [(Out(Pointer(ObjPointer(IDXGIOutput)), "ppRestrictToOutput"))]),<br>
+    StdMethod(HRESULT, "GetRotation", [(Out(Pointer(DXGI_MODE_ROTATION), "ppRestrictToOutput"))]),<br>
+    StdMethod(BOOL, "IsTemporaryMonoSupported", []),<br>
+    StdMethod(HRESULT, "Present1", [(UINT, "SyncInterval"), (UINT, "Flags"), (Pointer(Const(DXGI_PRESENT_PARAMETERS)), "pPresentParameters")]),<br>
+    StdMethod(HRESULT, "SetBackgroundColor", [(Pointer(Const(DXGI_RGBA)), "pColor")]),<br>
+    StdMethod(HRESULT, "SetRotation", [(DXGI_MODE_ROTATION, "Rotation")]),<br>
+]<br>
+<br>
+DXGI_OFFER_RESOURCE_PRIORITY = Enum("DXGI_OFFER_RESOURCE_PRIORITY", [<br>
+    "DXGI_OFFER_RESOURCE_PRIORITY_LOW",<br>
+    "DXGI_OFFER_RESOURCE_PRIORITY_NORMAL",<br>
+    "DXGI_OFFER_RESOURCE_PRIORITY_HIGH",<br>
+])<br>
+<br>
+IDXGIDevice2.methods += [<br>
+    StdMethod(HRESULT, "OfferResources", [(UINT, "NumResources"), (Array(Const(ObjPointer(IDXGIResource)), "NumResources"), "ppResources"), (DXGI_OFFER_RESOURCE_PRIORITY, "Priority")]),<br>

+    StdMethod(HRESULT, "ReclaimResources", [(UINT, "NumResources"), (Array(Const(ObjPointer(IDXGIResource)), "NumResources"), "ppResources"), Out(Pointer(BOOL), "pDiscarded")]),<br>

+    StdMethod(HRESULT, "EnqueueSetEvent", [(HANDLE, "hEvent")]),<br>
+]<br>
+<br>
+DXGI_GRAPHICS_PREEMPTION_GRANULARITY = Enum("DXGI_GRAPHICS_PREEMPTION_GRANULARITY", [<br>
+    "DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY",<br>
+    "DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY",<br>
+    "DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY",<br>
+    "DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY",<br>
+    "DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY",<br>
+])<br>
+<br>
+DXGI_COMPUTE_PREEMPTION_GRANULARITY = Enum("DXGI_COMPUTE_PREEMPTION_GRANULARITY", [<br>
+    "DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY",<br>
+    "DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY",<br>
+    "DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY",<br>
+    "DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY",<br>
+    "DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY",<br>
+])<br>
+<br>
+DXGI_ADAPTER_DESC2 = Struct("DXGI_ADAPTER_DESC2", [<br>
+    (WString, "Description"),<br>
+    (UINT, "VendorId"),<br>
+    (UINT, "DeviceId"),<br>
+    (UINT, "SubSysId"),<br>
+    (UINT, "Revision"),<br>
+    (SIZE_T, "DedicatedVideoMemory"),<br>
+    (SIZE_T, "DedicatedSystemMemory"),<br>
+    (SIZE_T, "SharedSystemMemory"),<br>
+    (LUID, "AdapterLuid"),<br>
+    (UINT, "Flags"),<br>
+    (DXGI_GRAPHICS_PREEMPTION_GRANULARITY, "GraphicsPreemptionGranularity"),<br>
+    (DXGI_COMPUTE_PREEMPTION_GRANULARITY, "ComputePreemptionGranularity"),<br>
+])<br>
+<br>
+IDXGIAdapter2.methods += [<br>
+    StdMethod(HRESULT, "GetDesc2", [Out(Pointer(DXGI_ADAPTER_DESC2), "pDesc")], sideeffects=False),<br>
+]<br>
<br>
 dxgi = Module('dxgi')<br>
 dxgi.addInterfaces([<br>
-    IDXGIFactory1,<br>
+    IDXGIFactory2,<br>
     IDXGIFactoryDWM,<br>
+    IDXGIAdapter2,<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/dxgitype.py b/specs/dxgitype.py<br>
index c6202b5..0419840 100644<br>
--- a/specs/dxgitype.py<br>
+++ b/specs/dxgitype.py<br>
@@ -108,8 +108,15 @@ DXGI_MODE_DESC = Struct("DXGI_MODE_DESC", [<br>
     (DXGI_MODE_SCALING, "Scaling"),<br>
 ])<br>
<br>
 DXGI_SAMPLE_DESC = Struct("DXGI_SAMPLE_DESC", [<br>
     (UINT, "Count"),<br>
     (UINT, "Quality"),<br>
 ])<br>
<br>
+DXGI_RGBA = Struct("DXGI_RGBA", [<br>
+    (Float, "r"),<br>
+    (Float, "g"),<br>
+    (Float, "b"),<br>
+    (Float, "a"),<br>
+])<br>
+<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>