1 module aurora.directx.dxgi.dxgi1_4; 2 3 version(Windows): 4 5 import aurora.directx.com; 6 public import aurora.directx.dxgi.dxgi1_3; 7 8 public: 9 10 /// 11 /// Constants 12 /// 13 14 /// 15 /// Functions 16 /// 17 18 /// 19 /// Enumerations 20 /// 21 22 enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG 23 { 24 PRESENT = 0x1, 25 OVERLAY_PRESENT = 0x2 26 } 27 28 enum DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG 29 { 30 PRESENT = 0x1 31 } 32 33 enum DXGI_MEMORY_SEGMENT_GROUP 34 { 35 LOCAL = 0, 36 NON_LOCAL = 1 37 } 38 39 /// 40 /// Structures 41 /// 42 43 struct DXGI_QUERY_VIDEO_MEMORY_INFO 44 { 45 ulong Budget; 46 ulong CurrentUsage; 47 ulong AvailableForReservation; 48 ulong CurrentReservation; 49 } 50 51 /// 52 /// Interfaces 53 /// 54 55 mixin(uuid!(IDXGISwapChain3, "94d99bdb-f1f8-4ab0-b236-7da0170edab1")); 56 public interface IDXGISwapChain3 : IDXGISwapChain2 57 { 58 extern(Windows): 59 uint GetCurrentBackBufferIndex(); 60 HRESULT CheckColorSpaceSupport(DXGI_COLOR_SPACE_TYPE ColorSpace, uint *pColorSpaceSupport); 61 HRESULT ResizeBuffers1(uint BufferCount, uint Width, uint Height, DXGI_FORMAT Format, uint SwapChainFlags, const uint *pCreationNodeMask, const(IUnknown) *ppPresentQueue); 62 HRESULT SetColorSpace1(DXGI_COLOR_SPACE_TYPE ColorSpace); 63 } 64 65 mixin(uuid!(IDXGIOutput4, "dc7dca35-2196-414d-9F53-617884032a60")); 66 public interface IDXGIOutput4 : IDXGIOutput3 67 { 68 extern(Windows): 69 HRESULT CheckOverlayColorSpaceSupport(DXGI_FORMAT Format, DXGI_COLOR_SPACE_TYPE ColorSpace, IUnknown pConcernedDevice, uint *pFlags); 70 } 71 72 mixin(uuid!(IDXGIFactory4, "1bc6ea02-ef36-464f-bf0c-21ca39e5168a")); 73 public interface IDXGIFactory4 : IDXGIFactory3 74 { 75 extern(Windows): 76 HRESULT EnumAdapterByLuid(LUID AdapterLuid, REFIID riid, void **ppvAdapter); 77 HRESULT EnumWarpAdapter(REFIID riid, void **ppvAdapter); 78 } 79 80 mixin(uuid!(IDXGIAdapter3, "645967A4-1392-4310-A798-8053CE3E93FD")); 81 public interface IDXGIAdapter3 : IDXGIAdapter2 82 { 83 extern(Windows): 84 HRESULT QueryVideoMemoryInfo(uint NodeIndex, DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, DXGI_QUERY_VIDEO_MEMORY_INFO *pVideoMemoryInfo); 85 HRESULT RegisterHardwareContentProtectionTeardownStatusEvent(HANDLE hEvent, uint *pdwCookie); 86 HRESULT RegisterVideoMemoryBudgetChangeNotificationEvent(HANDLE hEvent, uint *pdwCookie); 87 HRESULT SetVideoMemoryReservation(uint NodeIndex, DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, ulong Reservation); 88 void UnregisterHardwareContentProtectionTeardownStatus(uint dwCookie); 89 void UnregisterVideoMemoryBudgetChangeNotification(uint dwCookie); 90 }