summaryrefslogtreecommitdiffstats
path: root/third_party/rust/winapi-0.2.8/src/dxgi.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--third_party/rust/winapi-0.2.8/src/dxgi.rs240
1 files changed, 240 insertions, 0 deletions
diff --git a/third_party/rust/winapi-0.2.8/src/dxgi.rs b/third_party/rust/winapi-0.2.8/src/dxgi.rs
new file mode 100644
index 0000000000..c81821504c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dxgi.rs
@@ -0,0 +1,240 @@
+// Copyright © 2015; Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of dxgi.h
+STRUCT!{struct DXGI_FRAME_STATISTICS {
+ PresentCount: ::UINT,
+ PresentRefreshCount: ::UINT,
+ SyncRefreshCount: ::UINT,
+ SyncQPCTime: ::LARGE_INTEGER,
+ SyncGPUTime: ::LARGE_INTEGER,
+}}
+STRUCT!{struct DXGI_MAPPED_RECT {
+ Pitch: ::INT,
+ pBits: *mut ::BYTE,
+}}
+STRUCT!{nodebug struct DXGI_ADAPTER_DESC {
+ Description: [::WCHAR; 128],
+ VectorId: ::UINT,
+ DeviceId: ::UINT,
+ SubSysId: ::UINT,
+ Revision: ::UINT,
+ DedicatedVideoMemory: ::SIZE_T,
+ DedicatedSystemMemory: ::SIZE_T,
+ SharedSystemMemory: ::SIZE_T,
+ AdapterLuid: ::LUID,
+}}
+STRUCT!{nodebug struct DXGI_OUTPUT_DESC {
+ DeviceName: [::WCHAR; 32],
+ DesktopCoordinates: ::RECT,
+ AttachedToDesktop: ::BOOL,
+ Rotation: ::DXGI_MODE_ROTATION,
+ Monitor: ::HMONITOR,
+}}
+STRUCT!{struct DXGI_SHARED_RESOURCE {
+ Handle: ::HANDLE,
+}}
+pub const DXGI_RESOURCE_PRIORITY_MINIMUM: ::DWORD = 0x28000000;
+pub const DXGI_RESOURCE_PRIORITY_LOW: ::DWORD = 0x50000000;
+pub const DXGI_RESOURCE_PRIORITY_NORMAL: ::DWORD = 0x78000000;
+pub const DXGI_RESOURCE_PRIORITY_HIGH: ::DWORD = 0xa0000000;
+pub const DXGI_RESOURCE_PRIORITY_MAXIMUM: ::DWORD = 0xc8000000;
+ENUM!{enum DXGI_RESIDENCY {
+ DXGI_RESIDENCY_FULLY_RESIDENT = 1,
+ DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2,
+ DXGI_RESIDENCY_EVICTED_TO_DISK = 3,
+}}
+STRUCT!{struct DXGI_SURFACE_DESC {
+ Width: ::UINT,
+ Height: ::UINT,
+ Format: ::DXGI_FORMAT,
+ SampleDesc: ::DXGI_SAMPLE_DESC,
+}}
+ENUM!{enum DXGI_SWAP_EFFECT {
+ DXGI_SWAP_EFFECT_DISCARD = 0,
+ DXGI_SWAP_EFFECT_SEQUENTIAL = 1,
+ DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3,
+}}
+FLAGS!{enum DXGI_SWAP_CHAIN_FLAG {
+ DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1,
+ DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 2,
+ DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 4,
+ DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT = 8,
+ DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 16,
+ DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 32,
+ DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 64,
+ DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER = 128,
+ DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO = 256,
+ DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO = 512,
+}}
+STRUCT!{struct DXGI_SWAP_CHAIN_DESC {
+ BufferDesc: ::DXGI_MODE_DESC,
+ SampleDesc: ::DXGI_SAMPLE_DESC,
+ BufferUsage: ::DXGI_USAGE,
+ BufferCount: ::UINT,
+ OutputWindow: ::HWND,
+ Windowed: ::BOOL,
+ SwapEffect: DXGI_SWAP_EFFECT,
+ Flags: ::UINT,
+}}
+RIDL!(
+interface IDXGIObject(IDXGIObjectVtbl): IUnknown(IUnknownVtbl) {
+ fn SetPrivateData(
+ &mut self, Name: ::REFGUID, DataSize: ::UINT, pData: *const ::c_void
+ ) -> ::HRESULT,
+ fn SetPrivateDataInterface(&mut self, Name: ::REFGUID, pUnknown: *const ::IUnknown) -> ::HRESULT,
+ fn GetPrivateData(
+ &mut self, Name: ::REFGUID, pDataSize: *mut ::UINT, pData: *mut ::c_void
+ ) -> ::HRESULT,
+ fn GetParent(
+ &mut self, riid: ::REFIID, ppParent: *mut *mut ::c_void
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn GetDevice(&mut self, riid: ::REFIID, ppDevice: *mut *mut ::c_void) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIResource(IDXGIResourceVtbl): IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl) {
+ fn GetSharedHandle(&mut self, pSharedHandle: *mut ::HANDLE) -> ::HRESULT,
+ fn GetUsage(&mut self, pUsage: *mut ::DXGI_USAGE) -> ::HRESULT,
+ fn SetEvictionPriority(&mut self, EvictionPriority: ::UINT) -> ::HRESULT,
+ fn GetEvictionPriority(&mut self, pEvictionPriority: *mut ::UINT) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIKeyedMutex(IDXGIKeyedMutexVtbl): IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl) {
+ fn AcquireSync(&mut self, Key: ::UINT64, dwMilliseconds: ::DWORD) -> ::HRESULT,
+ fn ReleaseSync(&mut self, Key: ::UINT64) -> ::HRESULT
+});
+RIDL!(
+interface IDXGISurface(IDXGISurfaceVtbl): IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut DXGI_SURFACE_DESC) -> ::HRESULT,
+ fn Map(&mut self, pLockedRect: *mut DXGI_MAPPED_RECT, MapFlags: ::UINT) -> ::HRESULT,
+ fn Unmap(&mut self) -> ::HRESULT
+});
+RIDL!(
+interface IDXGISurface1(IDXGISurface1Vtbl): IDXGISurface(IDXGISurfaceVtbl) {
+ fn GetDC(&mut self, Discard: ::BOOL, phdc: *mut ::HDC) -> ::HRESULT,
+ fn ReleaseDC(&mut self, pDirtyRect: *mut ::RECT) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIAdapter(IDXGIAdapterVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn EnumOutputs(&mut self, Output: ::UINT, ppOutput: *mut *mut IDXGIOutput) -> ::HRESULT,
+ fn GetDesc(&mut self, pDesc: *mut DXGI_ADAPTER_DESC) -> ::HRESULT,
+ fn CheckInterfaceSupport(
+ &mut self, InterfaceName: ::REFGUID, pUMDVersion: *mut ::LARGE_INTEGER
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIOutput(IDXGIOutputVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut DXGI_OUTPUT_DESC) -> ::HRESULT,
+ fn GetDisplayModeList(
+ &mut self, EnumFormat: ::DXGI_FORMAT, Flags: ::UINT, pNumModes: *mut ::UINT,
+ pDesc: *mut ::DXGI_MODE_DESC
+ ) -> ::HRESULT,
+ fn FindClosestMatchingMode(
+ &mut self, pModeToMatch: *const ::DXGI_MODE_DESC, pClosestMatch: *mut ::DXGI_MODE_DESC,
+ pConcernedDevice: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn WaitForVBlank(&mut self) -> ::HRESULT,
+ fn TakeOwnership(&mut self, pDevice: *mut ::IUnknown, Exclusive: ::BOOL) -> ::HRESULT,
+ fn ReleaseOwnership(&mut self) -> (),
+ fn GetGammaControlCapabilities(
+ &mut self, pGammaCaps: *mut ::DXGI_GAMMA_CONTROL_CAPABILITIES
+ ) -> ::HRESULT,
+ fn SetGammaControl(&mut self, pArray: *const ::DXGI_GAMMA_CONTROL) -> ::HRESULT,
+ fn GetGammaControl(&mut self, pArray: *mut ::DXGI_GAMMA_CONTROL) -> ::HRESULT,
+ fn SetDisplaySurface(&mut self, pScanoutSurface: *mut IDXGISurface) -> ::HRESULT,
+ fn GetDisplaySurfaceData(&mut self, pDestination: *mut IDXGISurface) -> ::HRESULT,
+ fn GetFrameStatistics(&mut self, pStats: *mut DXGI_FRAME_STATISTICS) -> ::HRESULT
+});
+pub const DXGI_MAX_SWAP_CHAIN_BUFFERS: ::DWORD = 16;
+pub const DXGI_PRESENT_TEST: ::DWORD = 0x00000001;
+pub const DXGI_PRESENT_DO_NOT_SEQUENCE: ::DWORD = 0x00000002;
+pub const DXGI_PRESENT_RESTART: ::DWORD = 0x00000004;
+pub const DXGI_PRESENT_DO_NOT_WAIT: ::DWORD = 0x00000008;
+pub const DXGI_PRESENT_STEREO_PREFER_RIGHT: ::DWORD = 0x00000010;
+pub const DXGI_PRESENT_STEREO_TEMPORARY_MONO: ::DWORD = 0x00000020;
+pub const DXGI_PRESENT_RESTRICT_TO_OUTPUT: ::DWORD = 0x00000040;
+pub const DXGI_PRESENT_USE_DURATION: ::DWORD = 0x00000100;
+RIDL!(
+interface IDXGISwapChain(IDXGISwapChainVtbl): IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl) {
+ fn Present(&mut self, SyncInterval: ::UINT, Flags: ::UINT) -> ::HRESULT,
+ fn GetBuffer(
+ &mut self, Buffer: ::UINT, riid: ::REFIID, ppSurface: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn SetFullscreenState(&mut self, Fullscreen: ::BOOL, pTarget: *mut IDXGIOutput) -> ::HRESULT,
+ fn GetFullscreenState(
+ &mut self, pFullscreen: *mut ::BOOL, ppTarget: *mut *mut IDXGIOutput
+ ) -> ::HRESULT,
+ fn GetDesc(&mut self, pDesc: *mut DXGI_SWAP_CHAIN_DESC) -> ::HRESULT,
+ fn ResizeBuffers(
+ &mut self, BufferCount: ::UINT, Width: ::UINT, Height: ::UINT, NewFormat: ::DXGI_FORMAT,
+ SwapChainFlags: ::UINT
+ ) -> ::HRESULT,
+ fn ResizeTarget(&mut self, pNewTargetParameters: *const ::DXGI_MODE_DESC) -> ::HRESULT,
+ fn GetContainingOutput(&mut self, ppOutput: *mut *mut IDXGIOutput) -> ::HRESULT,
+ fn GetFrameStatistics(&mut self, pStats: *mut DXGI_FRAME_STATISTICS) -> ::HRESULT,
+ fn GetLastPresentCount(&mut self, pLastPresentCount: *mut ::UINT) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIFactory(IDXGIFactoryVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn EnumAdapters(&mut self, Adapter: ::UINT, ppAdapter: *mut *mut IDXGIAdapter) -> ::HRESULT,
+ fn MakeWindowAssociation(&mut self, WindowHandle: ::HWND, Flags: ::UINT) -> ::HRESULT,
+ fn GetWindowAssociation(&mut self, pWindowHandle: *mut ::HWND) -> ::HRESULT,
+ fn CreateSwapChain(
+ &mut self, pDevice: *mut ::IUnknown, pDesc: *mut DXGI_SWAP_CHAIN_DESC,
+ ppSwapChain: *mut *mut IDXGISwapChain
+ ) -> ::HRESULT,
+ fn CreateSoftwareAdapter(
+ &mut self, Module: ::HMODULE, ppAdapter: *mut *mut IDXGIAdapter
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIDevice(IDXGIDeviceVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn GetAdapter(&mut self, pAdapter: *mut *mut IDXGIAdapter) -> ::HRESULT,
+ fn CreateSurface(
+ &mut self, pDesc: *const DXGI_SURFACE_DESC, NumSurfaces: ::UINT, Usage: ::DXGI_USAGE,
+ pSharedResource: *const DXGI_SHARED_RESOURCE, ppSurface: *mut *mut IDXGISurface
+ ) -> ::HRESULT,
+ fn QueryResourceResidency(
+ &mut self, ppResources: *const *mut ::IUnknown, pResidencyStatus: *mut DXGI_RESIDENCY,
+ NumResources: ::UINT
+ ) -> ::HRESULT,
+ fn SetGPUThreadPriority(&mut self, Priority: ::INT) -> ::HRESULT,
+ fn GetGPUThreadPriority(&mut self, pPriority: *mut ::INT) -> ::HRESULT
+});
+ENUM!{enum DXGI_ADAPTER_FLAG {
+ DXGI_ADAPTER_FLAG_NONE,
+ DXGI_ADAPTER_FLAG_REMOTE,
+ DXGI_ADAPTER_FLAG_SOFTWARE,
+}}
+STRUCT!{nodebug struct DXGI_ADAPTER_DESC1 {
+ Description: [::WCHAR; 128],
+ VendorId: ::UINT,
+ DeviceId: ::UINT,
+ SubSysId: ::UINT,
+ Revision: ::UINT,
+ DedicatedVideoMemory: ::SIZE_T,
+ DedicatedSystemMemory: ::SIZE_T,
+ SharedSystemMemory: ::SIZE_T,
+ AdapterLuid: ::LUID,
+ Flags: ::UINT,
+}}
+STRUCT!{struct DXGI_DISPLAY_COLOR_SPACE {
+ PrimaryCoordinates: [[::FLOAT; 2]; 8],
+ WhitePoints: [[::FLOAT; 2]; 16],
+}}
+RIDL!(
+interface IDXGIFactory1(IDXGIFactory1Vtbl): IDXGIFactory(IDXGIFactoryVtbl) {
+ fn EnumAdapters1(&mut self, Adapter: ::UINT, ppAdapter: *mut *mut IDXGIAdapter1) -> ::HRESULT,
+ fn IsCurrent(&mut self) -> ::BOOL
+});
+RIDL!(
+interface IDXGIAdapter1(IDXGIAdapter1Vtbl): IDXGIAdapter(IDXGIAdapterVtbl) {
+ fn GetDesc1(&mut self, pDesc: *mut DXGI_ADAPTER_DESC1) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIDevice1(IDXGIDevice1Vtbl): IDXGIDevice(IDXGIDeviceVtbl) {
+ fn SetMaximumFrameLatency(&mut self, MaxLatency: ::UINT) -> ::HRESULT,
+ fn GetMaximumFrameLatency(&mut self, pMaxLatency: *mut ::UINT) -> ::HRESULT
+});