1 module aurora.directx.dxgi.dxgi1_6;
2 
3 version(Windows):
4 
5 import aurora.directx.com;
6 public import aurora.directx.dxgi.dxgi1_5;
7 
8 public:
9 
10 ///
11 /// Constants
12 ///
13 
14 ///
15 /// Functions
16 ///
17 
18 ///
19 /// Enumerations
20 ///
21 
22 enum DXGI_ADAPTER_FLAG3
23 {
24     NONE = 0,
25     REMOTE = 1,
26     SOFTWARE = 2,
27     ACG_COMPATIBLE = 4,
28     SUPPORT_MONITORED_FENCES = 8,
29     SUPPORT_NON_MONITORED_FENCES = 0x10,
30     KEYED_MUTEX_CONFORMANCE	= 0x20,
31     FORCE_DWORD	= 0xffffffff
32 }
33 
34 enum DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS
35 {
36     FULLSCREEN= 1,
37     WINDOWED = 2,
38     CURSOR_STRETCHED = 4
39 }
40 
41 ///
42 /// Structures
43 ///
44 
45 struct DXGI_ADAPTER_DESC3
46 {
47     wchar[128] Description;
48     uint VendorId;
49     uint DeviceId;
50     uint SubSysId;
51     uint Revision;
52     size_t DedicatedVideoMemory;
53     size_t DedicatedSystemMemory;
54     size_t SharedSystemMemory;
55     LUID AdapterLuid;
56     DXGI_ADAPTER_FLAG3 Flags;
57     DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
58     DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
59 }
60 
61 struct DXGI_OUTPUT_DESC1
62 {
63     wchar[32] DeviceName;
64     RECT DesktopCoordinates;
65     bool AttachedToDesktop;
66     DXGI_MODE_ROTATION Rotation;
67     HMONITOR Monitor;
68     uint BitsPerColor;
69     DXGI_COLOR_SPACE_TYPE ColorSpace;
70     float[2] RedPrimary;
71     float[2] GreenPrimary;
72     float[2] BluePrimary;
73     float[2] WhitePoint;
74     float MinLuminance;
75     float MaxLuminance;
76     float MaxFullFrameLuminance;
77 }
78 
79 ///
80 /// Interfaces
81 ///
82 
83 mixin(uuid!(IDXGIAdapter4, "3c8d99d1-4fbf-4181-a82c-af66bf7bd24e"));
84 public interface IDXGIAdapter4 : IDXGIAdapter3
85 {
86 extern(Windows):
87     HRESULT GetDesc3(DXGI_ADAPTER_DESC3 *pDesc);
88 }
89 
90 mixin(uuid!(IDXGIOutput6, "068346e8-aaec-4b84-add7-137f513f77a1"));
91 public interface IDXGIOutput6 : IDXGIOutput5
92 {
93 extern(Windows):
94     HRESULT GetDesc1(DXGI_OUTPUT_DESC1 *pDesc);
95 }
96 
97 enum DXGI_GPU_PREFERENCE
98 {
99     DXGI_GPU_PREFERENCE_UNSPECIFIED = 0,
100     DXGI_GPU_PREFERENCE_MINIMUM_POWER = ( DXGI_GPU_PREFERENCE_UNSPECIFIED + 1 ),
101     DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE = ( DXGI_GPU_PREFERENCE_MINIMUM_POWER + 1 )
102 }
103 
104 mixin(uuid!(IDXGIFactory6, "c1b6694f-ff09-44a9-b03c-77900a0a1d17"));
105 public interface IDXGIFactory6 : IDXGIFactory5
106 {
107 extern(Windows):
108     HRESULT EnumAdapterByGpuPreference(uint Adapter, DXGI_GPU_PREFERENCE GpuPreference, REFIID riid, void **ppvAdapter);
109 }
110 
111 mixin(uuid!(IDXGIFactory7, "a4966eed-76db-44da-84c1-ee9a7afb20a8"));
112 public interface IDXGIFactory7 : IDXGIFactory6
113 {
114 extern(Windows):
115     HRESULT RegisterAdaptersChangedEvent(HANDLE hEvent, uint *pdwCookie);
116     HRESULT UnregisterAdaptersChangedEvent(uint dwCookie);
117 }