[[Patch 3/3 try2]] dxgi: Add missing dxgi 1.2 structs and interfaces

Martell Malone martellmalone at gmail.com
Fri Feb 13 07:13:25 CST 2015


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




More information about the wine-patches mailing list