1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
#pragma once
#include <vector>
#include "dxgi_adapter.h"
#include "dxgi_monitor.h"
#include "dxgi_options.h"
#include "../dxvk/dxvk_instance.h"
namespace dxvk {
class DxgiFactory : public DxgiObject<IDXGIFactory7> {
public:
DxgiFactory(UINT Flags);
~DxgiFactory();
HRESULT STDMETHODCALLTYPE QueryInterface(
REFIID riid,
void** ppvObject) final;
HRESULT STDMETHODCALLTYPE GetParent(
REFIID riid,
void** ppParent) final;
BOOL STDMETHODCALLTYPE IsWindowedStereoEnabled() final;
HRESULT STDMETHODCALLTYPE CreateSoftwareAdapter(
HMODULE Module,
IDXGIAdapter** ppAdapter) final;
HRESULT STDMETHODCALLTYPE CreateSwapChain(
IUnknown* pDevice,
DXGI_SWAP_CHAIN_DESC* pDesc,
IDXGISwapChain** ppSwapChain) final;
HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd(
IUnknown* pDevice,
HWND hWnd,
const DXGI_SWAP_CHAIN_DESC1* pDesc,
const DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pFullscreenDesc,
IDXGIOutput* pRestrictToOutput,
IDXGISwapChain1** ppSwapChain) final;
HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow(
IUnknown* pDevice,
IUnknown* pWindow,
const DXGI_SWAP_CHAIN_DESC1* pDesc,
IDXGIOutput* pRestrictToOutput,
IDXGISwapChain1** ppSwapChain) final;
HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition(
IUnknown* pDevice,
const DXGI_SWAP_CHAIN_DESC1* pDesc,
IDXGIOutput* pRestrictToOutput,
IDXGISwapChain1** ppSwapChain) final;
HRESULT STDMETHODCALLTYPE EnumAdapters(
UINT Adapter,
IDXGIAdapter** ppAdapter) final;
HRESULT STDMETHODCALLTYPE EnumAdapters1(
UINT Adapter,
IDXGIAdapter1** ppAdapter) final;
HRESULT STDMETHODCALLTYPE EnumAdapterByLuid(
LUID AdapterLuid,
REFIID riid,
void** ppvAdapter) final;
HRESULT STDMETHODCALLTYPE EnumAdapterByGpuPreference(
UINT Adapter,
DXGI_GPU_PREFERENCE GpuPreference,
REFIID riid,
void** ppvAdapter);
HRESULT STDMETHODCALLTYPE EnumWarpAdapter(
REFIID riid,
void** ppvAdapter) final;
HRESULT STDMETHODCALLTYPE GetWindowAssociation(
HWND* pWindowHandle) final;
HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid(
HANDLE hResource,
LUID* pLuid) final;
HRESULT STDMETHODCALLTYPE MakeWindowAssociation(
HWND WindowHandle,
UINT Flags) final;
BOOL STDMETHODCALLTYPE IsCurrent() final;
HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(
HWND WindowHandle,
UINT wMsg,
DWORD* pdwCookie) final;
HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent(
HANDLE hEvent,
DWORD* pdwCookie) final;
HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(
HWND WindowHandle,
UINT wMsg,
DWORD* pdwCookie) final;
HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent(
HANDLE hEvent,
DWORD* pdwCookie) final;
void STDMETHODCALLTYPE UnregisterStereoStatus(
DWORD dwCookie) final;
void STDMETHODCALLTYPE UnregisterOcclusionStatus(
DWORD dwCookie) final;
UINT STDMETHODCALLTYPE GetCreationFlags() final;
HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
DXGI_FEATURE Feature,
void* pFeatureSupportData,
UINT FeatureSupportDataSize) final;
HRESULT STDMETHODCALLTYPE RegisterAdaptersChangedEvent(
HANDLE hEvent,
DWORD* pdwCookie);
HRESULT STDMETHODCALLTYPE UnregisterAdaptersChangedEvent(
DWORD Cookie);
Rc<DxvkInstance> GetDXVKInstance() const {
return m_instance;
}
const DxgiOptions* GetOptions() const {
return &m_options;
}
DxgiMonitorInfo* GetMonitorInfo() {
return &m_monitorInfo;
}
private:
Rc<DxvkInstance> m_instance;
DxgiMonitorInfo m_monitorInfo;
DxgiOptions m_options;
UINT m_flags;
HWND m_associatedWindow = nullptr;
};
}
|