From: Martell Malone Subject: [[Patch 3/3 try2]] dxgi: Add missing dxgi 1.2 structs and interfaces Message-Id: <1423833205-17732-1-git-send-email-martellmalone@gmail.com> Date: Fri, 13 Feb 2015 13:13:25 +0000 --- include/dxgi1_2.idl | 268 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) diff --git a/include/dxgi1_2.idl b/include/dxgi1_2.idl index bba4ab8..eed13bb 100644 --- a/include/dxgi1_2.idl +++ b/include/dxgi1_2.idl @@ -1,5 +1,6 @@ /* * Copyright 2014 Jacek Caban for CodeWeavers + * Copyright 2015 Martell Malone * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,6 +19,114 @@ import "dxgi.idl"; +[ + object, + uuid(ea9dbf1a-c88e-4486-854a-98aa0138f30c), + local, + pointer_default(unique) +] +interface IDXGIDisplayControl : IUnknown +{ + BOOL IsStereoEnabled(); + + void SetStereoEnabled( + BOOL enabled + ); +} + +typedef struct DXGI_OUTDUPL_MOVE_RECT +{ + POINT SourcePoint; + RECT DestinationRect; +} DXGI_OUTDUPL_MOVE_RECT; + +typedef struct DXGI_OUTDUPL_DESC +{ + DXGI_MODE_DESC ModeDesc; + DXGI_MODE_ROTATION Rotation; + BOOL DesktopImageInSystemMemory; +} DXGI_OUTDUPL_DESC; + +typedef struct DXGI_OUTDUPL_POINTER_POSITION +{ + POINT Position; + BOOL Visible; +} DXGI_OUTDUPL_POINTER_POSITION; + +typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE +{ + DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1, + DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2, + DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4 +} DXGI_OUTDUPL_POINTER_SHAPE_TYPE; + +typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO +{ + UINT Type; + UINT Width; + UINT Height; + UINT Pitch; + POINT HotSpot; +} DXGI_OUTDUPL_POINTER_SHAPE_INFO; + +typedef struct DXGI_OUTDUPL_FRAME_INFO +{ + LARGE_INTEGER LastPresentTime; + LARGE_INTEGER LastMouseUpdateTime; + UINT AccumulatedFrames; + BOOL RectsCoalesced; + BOOL ProtectedContentMaskedOut; + DXGI_OUTDUPL_POINTER_POSITION PointerPosition; + UINT TotalMetadataBufferSize; + UINT PointerShapeBufferSize; +} DXGI_OUTDUPL_FRAME_INFO; + +[ + object, + uuid(191cfac3-a341-470d-b26e-a864f428319c), + local, + pointer_default(unique) +] +interface IDXGIOutputDuplication : IDXGIObject +{ + void GetDesc( + [out] DXGI_OUTDUPL_DESC *desc + ); + + HRESULT AcquireNextFrame( + [in] UINT timeout, + [out] DXGI_OUTDUPL_FRAME_INFO *frame_info, + [out] IDXGIResource **resource + ); + + HRESULT GetFrameDirtyRects( + [in] UINT dirty_size, + [out] RECT *buffer, + [out] UINT *buffer_size + ); + + HRESULT GetFrameMoveRects( + [in] UINT move_size, + [out] DXGI_OUTDUPL_MOVE_RECT *rect, + [out] UINT *rect_size + ); + + HRESULT GetFramePointerShape( + [in] UINT shape_size, + [out] void *buffer, + [out] UINT *buffer_size, + [out] DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info + ); + + HRESULT MapDesktopSurface( + [out] DXGI_MAPPED_RECT *rect + ); + + HRESULT UnMapDesktopSurface(); + + HRESULT ReleaseFrame(); +} + typedef enum _DXGI_OFFER_RESOURCE_PRIORITY { DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1, DXGI_OFFER_RESOURCE_PRIORITY_NORMAL, @@ -130,3 +239,162 @@ interface IDXGISwapChain1 : IDXGISwapChain HRESULT GetRotation( [out] DXGI_MODE_ROTATION *pRotation); } + +[ + object, + uuid(50c83a1c-e072-4c48-87b0-3630fa36a6d0), + local, + pointer_default(unique) +] +interface IDXGIFactory2 : IDXGIFactory1 +{ + BOOL IsWindowedStereoEnabled(); + + HRESULT CreateSwapChainForHwnd( + [in] IUnknown *device, + [in] HWND hwnd, + [in] const DXGI_SWAP_CHAIN_DESC1 *desc, + [in] const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *fullscreen_desc, + [in] IDXGIOutput *output, + [out] IDXGISwapChain1 **swapchain + ); + + HRESULT CreateSwapChainForCoreWindow( + [in] IUnknown *device, + [in] IUnknown *window, + [in] const DXGI_SWAP_CHAIN_DESC1 *desc, + [in] IDXGIOutput *output, + [out] IDXGISwapChain1 **swapchain + ); + + HRESULT GetSharedResourceAdapterLuid( + [in] HANDLE resource, + [out] LUID *luid + ); + + HRESULT RegisterStereoStatusWindow( + [in] HWND window, + [in] UINT msg, + [out] DWORD *cookie + ); + + HRESULT RegisterStereoStatusEvent( + [in] HANDLE event, + [out] DWORD *cookie + ); + + void UnregisterStereoStatus( + [in] DWORD cookie + ); + + HRESULT RegisterOcclusionStatusWindow( + [in] HWND window, + [in] UINT msg, + [out] DWORD *cookie + ); + + HRESULT RegisterOcclusionStatusEvent( + [in] HANDLE event, + [out] DWORD *cookie + ); + + void UnregisterOcclusionStatus( + [in] DWORD cookie + ); + + HRESULT CreateSwapChainForComposition( + [in] IUnknown *device, + [in] const DXGI_SWAP_CHAIN_DESC1 *desc, + [in] IDXGIOutput *output, + [out] IDXGISwapChain1 **swapchain + ); + } + +typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY +{ + DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0, + DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1, + DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2, + DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3, + DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4, +} DXGI_GRAPHICS_PREEMPTION_GRANULARITY; + +typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY +{ + DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0, + DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1, + DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2, + DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3, + DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4, +} DXGI_COMPUTE_PREEMPTION_GRANULARITY; + +typedef struct DXGI_ADAPTER_DESC2 +{ + WCHAR Description[128]; + UINT VendorId; + UINT DeviceId; + UINT SubSysId; + UINT Revision; + SIZE_T DedicatedVideoMemory; + SIZE_T DedicatedSystemMemory; + SIZE_T SharedSystemMemory; + LUID AdapterLuid; + UINT Flags; + DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity; + DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity; +} DXGI_ADAPTER_DESC2; + +[ + object, + uuid(0aa1ae0a-fa0e-4B84-8644-e05ff8e5acb5), + local, + pointer_default(unique) +] +interface IDXGIAdapter2 : IDXGIAdapter1 +{ + HRESULT GetDesc2( + [out] DXGI_ADAPTER_DESC2 *desc + ); +} + +typedef struct DXGI_MODE_DESC1 +{ + UINT Width; + UINT Height; + DXGI_RATIONAL RefreshRate; + DXGI_FORMAT Format; + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; + DXGI_MODE_SCALING Scaling; + BOOL Stereo; +} DXGI_MODE_DESC1; + +[ + object, + uuid(00cddea8-939b-4b83-a340-a685226666cc), + local, + pointer_default(unique) +] +interface IDXGIOutput1 : IDXGIOutput +{ + HRESULT GetDisplayModeList1( + [in] DXGI_FORMAT format, + [in] UINT flags, + [in, out] UINT *mode_count, + [out] DXGI_MODE_DESC1 *desc + ); + + HRESULT FindClosestMatchingMode1( + [in] const DXGI_MODE_DESC1 *mode, + [out] DXGI_MODE_DESC1 *closest_match, + [in] IUnknown *device + ); + + HRESULT GetDisplaySurfaceData1( + [in] IDXGIResource *resource + ); + + HRESULT DuplicateOutput( + [in] IUnknown *device, + [out] IDXGIOutputDuplication **output + ); +} -- 2.3.0