<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>