123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423 |
- /*
- * Copyright 2014 Jacek Caban for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
- import "dxgi.idl";
- const UINT DXGI_ENUM_MODES_STEREO = 0x4;
- const UINT DXGI_ENUM_MODES_DISABLED_STEREO = 0x8;
- const DWORD DXGI_SHARED_RESOURCE_READ = 0x80000000;
- const DWORD DXGI_SHARED_RESOURCE_WRITE = 0x00000001;
- typedef enum _DXGI_OFFER_RESOURCE_PRIORITY {
- DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1,
- DXGI_OFFER_RESOURCE_PRIORITY_NORMAL,
- DXGI_OFFER_RESOURCE_PRIORITY_HIGH
- } DXGI_OFFER_RESOURCE_PRIORITY;
- typedef enum DXGI_ALPHA_MODE {
- DXGI_ALPHA_MODE_UNSPECIFIED = 0,
- DXGI_ALPHA_MODE_PREMULTIPLIED = 1,
- DXGI_ALPHA_MODE_STRAIGHT = 2,
- DXGI_ALPHA_MODE_IGNORE = 3,
- DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff
- } DXGI_ALPHA_MODE;
- 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 = 0x00000001,
- DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x00000002,
- DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x00000004
- } 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;
- 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(191cfac3-a341-470d-b26e-a864f428319c),
- local,
- pointer_default(unique)
- ]
- interface IDXGIOutputDuplication : IDXGIObject
- {
- void GetDesc(
- [out] DXGI_OUTDUPL_DESC *desc
- );
- HRESULT AcquireNextFrame(
- [in] UINT timeout_in_milliseconds,
- [out] DXGI_OUTDUPL_FRAME_INFO *frame_info,
- [out] IDXGIResource **desktop_resource
- );
- HRESULT GetFrameDirtyRects(
- [in] UINT dirty_rects_buffer_size,
- [out] RECT *dirty_rects_buffer,
- [out] UINT *dirty_rects_buffer_size_required
- );
- HRESULT GetFrameMoveRects(
- [in] UINT move_rects_buffer_size,
- [out] DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
- [out] UINT *move_rects_buffer_size_required
- );
- HRESULT GetFramePointerShape(
- [in] UINT pointer_shape_buffer_size,
- [out] void *pointer_shape_buffer,
- [out] UINT *pointer_shape_buffer_size_required,
- [out] DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info
- );
- HRESULT MapDesktopSurface(
- [out] DXGI_MAPPED_RECT *locked_rect
- );
- HRESULT UnMapDesktopSurface();
- HRESULT ReleaseFrame();
- }
- [
- object,
- uuid(aba496dd-b617-4cb8-a866-bc44d7eb1fa2),
- local,
- pointer_default(unique)
- ]
- interface IDXGISurface2 : IDXGISurface1
- {
- HRESULT GetResource(
- [in] REFIID iid,
- [out] void **parent_resource,
- [out] UINT *subresource_idx
- );
- }
- [
- object,
- uuid(30961379-4609-4a41-998e-54fe567ee0c1),
- local,
- pointer_default(unique)
- ]
- interface IDXGIResource1 : IDXGIResource
- {
- HRESULT CreateSubresourceSurface(
- UINT index,
- [out] IDXGISurface2 **surface
- );
- HRESULT CreateSharedHandle(
- [in] const SECURITY_ATTRIBUTES *attributes,
- [in] DWORD access,
- [in] const WCHAR *name,
- [out] HANDLE *handle
- );
- }
- [
- object,
- uuid(ea9dbf1a-c88e-4486-854a-98aa0138f30c),
- local,
- pointer_default(unique)
- ]
- interface IDXGIDisplayControl : IUnknown
- {
- BOOL IsStereoEnabled();
- void SetStereoEnabled(BOOL enabled);
- }
- [
- object,
- uuid(05008617-fbfd-4051-a790-144884b4f6a9),
- local,
- pointer_default(unique)
- ]
- interface IDXGIDevice2 : IDXGIDevice1
- {
- HRESULT OfferResources(
- [in] UINT NumResources,
- [in, size_is(NumResources)] IDXGIResource *const *ppResources,
- [in] DXGI_OFFER_RESOURCE_PRIORITY Priority);
- HRESULT ReclaimResources(
- [in] UINT NumResources,
- [in, size_is(NumResources)] IDXGIResource *const *ppResources,
- [out, size_is(NumResources)] BOOL *pDiscarded);
- HRESULT EnqueueSetEvent(
- [in] HANDLE hEvent);
- }
- typedef enum DXGI_SCALING {
- DXGI_SCALING_STRETCH = 0,
- DXGI_SCALING_NONE = 1,
- DXGI_SCALING_ASPECT_RATIO_STRETCH = 2,
- } DXGI_SCALING;
- typedef struct DXGI_SWAP_CHAIN_DESC1 {
- UINT Width;
- UINT Height;
- DXGI_FORMAT Format;
- BOOL Stereo;
- DXGI_SAMPLE_DESC SampleDesc;
- DXGI_USAGE BufferUsage;
- UINT BufferCount;
- DXGI_SCALING Scaling;
- DXGI_SWAP_EFFECT SwapEffect;
- DXGI_ALPHA_MODE AlphaMode;
- UINT Flags;
- } DXGI_SWAP_CHAIN_DESC1;
- typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC {
- DXGI_RATIONAL RefreshRate;
- DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
- DXGI_MODE_SCALING Scaling;
- BOOL Windowed;
- } DXGI_SWAP_CHAIN_FULLSCREEN_DESC;
- typedef struct DXGI_PRESENT_PARAMETERS {
- UINT DirtyRectsCount;
- RECT *pDirtyRects;
- RECT *pScrollRect;
- POINT *pScrollOffset;
- } DXGI_PRESENT_PARAMETERS;
- [
- object,
- uuid(790a45f7-0d42-4876-983a-0a55cfe6f4aa),
- local,
- pointer_default(unique)
- ]
- interface IDXGISwapChain1 : IDXGISwapChain
- {
- HRESULT GetDesc1(
- [out] DXGI_SWAP_CHAIN_DESC1 *pDesc);
- HRESULT GetFullscreenDesc(
- [out] DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
- HRESULT GetHwnd(
- [out] HWND *pHwnd);
- HRESULT GetCoreWindow(
- [in] REFIID refiid,
- [out] void **ppUnk);
- HRESULT Present1(
- [in] UINT SyncInterval,
- [in] UINT PresentFlags,
- [in] const DXGI_PRESENT_PARAMETERS *pPresentParameters);
- BOOL IsTemporaryMonoSupported();
- HRESULT GetRestrictToOutput(
- [out] IDXGIOutput **ppRestrictToOutput);
- HRESULT SetBackgroundColor(
- [in] const DXGI_RGBA *pColor);
- HRESULT GetBackgroundColor(
- [out] DXGI_RGBA *pColor);
- HRESULT SetRotation(
- [in] DXGI_MODE_ROTATION Rotation);
- 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 *pDevice,
- [in] HWND hWnd,
- [in] const DXGI_SWAP_CHAIN_DESC1 *pDesc,
- [in] const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
- [in] IDXGIOutput *pRestrictToOutput,
- [out] IDXGISwapChain1 **ppSwapChain);
- HRESULT CreateSwapChainForCoreWindow(
- [in] IUnknown *pDevice,
- [in] IUnknown *pWindow,
- [in] const DXGI_SWAP_CHAIN_DESC1 *pDesc,
- [in] IDXGIOutput *pRestrictToOutput,
- [out] IDXGISwapChain1 **ppSwapChain);
- HRESULT GetSharedResourceAdapterLuid(
- [in] HANDLE hResource,
- [out] LUID *pLuid);
- HRESULT RegisterStereoStatusWindow(
- [in] HWND WindowHandle,
- [in] UINT wMsg,
- [out] DWORD *pdwCookie);
- HRESULT RegisterStereoStatusEvent(
- [in] HANDLE hEvent,
- [out] DWORD *pdwCookie);
- void UnregisterStereoStatus(
- [in] DWORD dwCookie);
- HRESULT RegisterOcclusionStatusWindow(
- [in] HWND WindowHandle,
- [in] UINT wMsg,
- [out] DWORD *pdwCookie);
- HRESULT RegisterOcclusionStatusEvent(
- [in] HANDLE hEvent,
- [out] DWORD *pdwCookie);
- void UnregisterOcclusionStatus(
- [in] DWORD dwCookie);
- HRESULT CreateSwapChainForComposition(
- [in] IUnknown *pDevice,
- [in] const DXGI_SWAP_CHAIN_DESC1 *pDesc,
- [in] IDXGIOutput *pRestrictToOutput,
- [out] IDXGISwapChain1 **ppSwapChain);
- }
- typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY {
- DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY,
- DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY,
- DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY,
- DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY,
- DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY
- } DXGI_GRAPHICS_PREEMPTION_GRANULARITY;
- typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY {
- DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY,
- DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY,
- DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY,
- DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY,
- DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY
- } 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 *pDesc);
- }
- [
- object,
- uuid(00cddea8-939b-4b83-a340-a685226666cc),
- local,
- pointer_default(unique)
- ]
- interface IDXGIOutput1 : IDXGIOutput
- {
- HRESULT GetDisplayModeList1(
- [in] DXGI_FORMAT enum_format,
- [in] UINT flags,
- [in, out] UINT *num_modes,
- [out] DXGI_MODE_DESC1 *desc
- );
- HRESULT FindClosestMatchingMode1(
- [in] const DXGI_MODE_DESC1 *mode_to_match,
- [out] DXGI_MODE_DESC1 *closest_match,
- [in] IUnknown *concerned_device
- );
- HRESULT GetDisplaySurfaceData1(
- [in] IDXGIResource *destination
- );
- HRESULT DuplicateOutput(
- [in] IUnknown *device,
- [out] IDXGIOutputDuplication **output_duplication
- );
- }
|