ReactOS 0.4.17-dev-934-g091855f
factory.c File Reference
#include "dxgi_private.h"
Include dependency graph for factory.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (dxgi)
 
static struct dxgi_factory * impl_from_IWineDXGIFactory (IWineDXGIFactory *iface)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_QueryInterface (IWineDXGIFactory *iface, REFIID iid, void **out)
 
static ULONG STDMETHODCALLTYPE dxgi_factory_AddRef (IWineDXGIFactory *iface)
 
static ULONG STDMETHODCALLTYPE dxgi_factory_Release (IWineDXGIFactory *iface)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_SetPrivateData (IWineDXGIFactory *iface, REFGUID guid, UINT data_size, const void *data)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_SetPrivateDataInterface (IWineDXGIFactory *iface, REFGUID guid, const IUnknown *object)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_GetPrivateData (IWineDXGIFactory *iface, REFGUID guid, UINT *data_size, void *data)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_GetParent (IWineDXGIFactory *iface, REFIID iid, void **parent)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters1 (IWineDXGIFactory *iface, UINT adapter_idx, IDXGIAdapter1 **adapter)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters (IWineDXGIFactory *iface, UINT adapter_idx, IDXGIAdapter **adapter)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_MakeWindowAssociation (IWineDXGIFactory *iface, HWND window, UINT flags)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_GetWindowAssociation (IWineDXGIFactory *iface, HWND *window)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChain (IWineDXGIFactory *iface, IUnknown *device, DXGI_SWAP_CHAIN_DESC *desc, IDXGISwapChain **swapchain)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSoftwareAdapter (IWineDXGIFactory *iface, HMODULE swrast, IDXGIAdapter **adapter)
 
static BOOL STDMETHODCALLTYPE dxgi_factory_IsCurrent (IWineDXGIFactory *iface)
 
static BOOL STDMETHODCALLTYPE dxgi_factory_IsWindowedStereoEnabled (IWineDXGIFactory *iface)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForHwnd (IWineDXGIFactory *iface, IUnknown *device, HWND window, const DXGI_SWAP_CHAIN_DESC1 *desc, const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *fullscreen_desc, IDXGIOutput *output, IDXGISwapChain1 **swapchain)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForCoreWindow (IWineDXGIFactory *iface, IUnknown *device, IUnknown *window, const DXGI_SWAP_CHAIN_DESC1 *desc, IDXGIOutput *output, IDXGISwapChain1 **swapchain)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_GetSharedResourceAdapterLuid (IWineDXGIFactory *iface, HANDLE resource, LUID *luid)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterOcclusionStatusWindow (IWineDXGIFactory *iface, HWND window, UINT message, DWORD *cookie)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterStereoStatusEvent (IWineDXGIFactory *iface, HANDLE event, DWORD *cookie)
 
static void STDMETHODCALLTYPE dxgi_factory_UnregisterStereoStatus (IWineDXGIFactory *iface, DWORD cookie)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterStereoStatusWindow (IWineDXGIFactory *iface, HWND window, UINT message, DWORD *cookie)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterOcclusionStatusEvent (IWineDXGIFactory *iface, HANDLE event, DWORD *cookie)
 
static void STDMETHODCALLTYPE dxgi_factory_UnregisterOcclusionStatus (IWineDXGIFactory *iface, DWORD cookie)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForComposition (IWineDXGIFactory *iface, IUnknown *device, const DXGI_SWAP_CHAIN_DESC1 *desc, IDXGIOutput *output, IDXGISwapChain1 **swapchain)
 
static UINT STDMETHODCALLTYPE dxgi_factory_GetCreationFlags (IWineDXGIFactory *iface)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapterByLuid (IWineDXGIFactory *iface, LUID luid, REFIID iid, void **adapter)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumWarpAdapter (IWineDXGIFactory *iface, REFIID iid, void **adapter)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_CheckFeatureSupport (IWineDXGIFactory *iface, DXGI_FEATURE feature, void *feature_data, UINT data_size)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapterByGpuPreference (IWineDXGIFactory *iface, UINT adapter_idx, DXGI_GPU_PREFERENCE gpu_preference, REFIID iid, void **adapter)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterAdaptersChangedEvent (IWineDXGIFactory *iface, HANDLE event, DWORD *cookie)
 
static HRESULT STDMETHODCALLTYPE dxgi_factory_UnregisterAdaptersChangedEvent (IWineDXGIFactory *iface, DWORD cookie)
 
struct dxgi_factory * unsafe_impl_from_IDXGIFactory (IDXGIFactory *iface)
 
static HRESULT dxgi_factory_init (struct dxgi_factory *factory, BOOL extended)
 
HRESULT dxgi_factory_create (REFIID riid, void **factory, BOOL extended)
 
HWND dxgi_factory_get_device_window (struct dxgi_factory *factory)
 

Variables

static const struct IWineDXGIFactoryVtbl dxgi_factory_vtbl
 

Function Documentation

◆ dxgi_factory_AddRef()

static ULONG STDMETHODCALLTYPE dxgi_factory_AddRef ( IWineDXGIFactory *  iface)
static

Definition at line 58 of file factory.c.

59{
62
63 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
64
65 return refcount;
66}
#define InterlockedIncrement
Definition: armddk.h:53
static struct dxgi_factory * impl_from_IWineDXGIFactory(IWineDXGIFactory *iface)
Definition: factory.c:24
#define TRACE(s)
Definition: solgame.cpp:4
Definition: main.c:439
uint32_t ULONG
Definition: typedefs.h:59

◆ dxgi_factory_CheckFeatureSupport()

static HRESULT STDMETHODCALLTYPE dxgi_factory_CheckFeatureSupport ( IWineDXGIFactory *  iface,
DXGI_FEATURE  feature,
void *  feature_data,
UINT  data_size 
)
static

Definition at line 447 of file factory.c.

449{
450 TRACE("iface %p, feature %#x, feature_data %p, data_size %u.\n",
451 iface, feature, feature_data, data_size);
452
453 switch (feature)
454 {
456 if (data_size != sizeof(BOOL))
458 *(BOOL *)feature_data = TRUE;
459 return S_OK;
460
461 default:
462 WARN("Unsupported feature %#x.\n", feature);
464 }
465}
#define WARN(fmt,...)
Definition: precomp.h:61
#define TRUE
Definition: types.h:120
@ DXGI_FEATURE_PRESENT_ALLOW_TEARING
Definition: dxgi1_5.idl:47
unsigned int BOOL
Definition: ntddk_ex.h:94
#define S_OK
Definition: intsafe.h:52
INTERNETFEATURELIST feature
Definition: misc.c:1807
#define DXGI_ERROR_INVALID_CALL
Definition: winerror.h:7120

◆ dxgi_factory_create()

HRESULT dxgi_factory_create ( REFIID  riid,
void **  factory,
BOOL  extended 
)

Definition at line 585 of file factory.c.

586{
587 struct dxgi_factory *object;
588 HRESULT hr;
589
590 if (!(object = calloc(1, sizeof(*object))))
591 return E_OUTOFMEMORY;
592
593 if (FAILED(hr = dxgi_factory_init(object, extended)))
594 {
595 WARN("Failed to initialize factory, hr %#lx.\n", hr);
596 free(object);
597 return hr;
598 }
599
600 TRACE("Created factory %p.\n", object);
601
602 hr = IWineDXGIFactory_QueryInterface(&object->IWineDXGIFactory_iface, riid, factory);
603 IWineDXGIFactory_Release(&object->IWineDXGIFactory_iface);
604 return hr;
605}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
static HRESULT dxgi_factory_init(struct dxgi_factory *factory, BOOL extended)
Definition: factory.c:565
REFIID riid
Definition: atlbase.h:39
#define FAILED(hr)
Definition: intsafe.h:51
#define calloc
Definition: rosglue.h:14

Referenced by CreateDXGIFactory(), CreateDXGIFactory1(), and CreateDXGIFactory2().

◆ dxgi_factory_CreateSoftwareAdapter()

static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSoftwareAdapter ( IWineDXGIFactory *  iface,
HMODULE  swrast,
IDXGIAdapter **  adapter 
)
static

Definition at line 243 of file factory.c.

245{
246 FIXME("iface %p, swrast %p, adapter %p stub!\n", iface, swrast, adapter);
247
248 return E_NOTIMPL;
249}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
return adapter
static D3D_DRIVER_TYPE HMODULE swrast
Definition: hlsl_d3d11.c:28

◆ dxgi_factory_CreateSwapChain()

static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChain ( IWineDXGIFactory *  iface,
IUnknown *  device,
DXGI_SWAP_CHAIN_DESC *  desc,
IDXGISwapChain **  swapchain 
)
static

Definition at line 206 of file factory.c.

208{
210 DXGI_SWAP_CHAIN_FULLSCREEN_DESC fullscreen_desc;
211 DXGI_SWAP_CHAIN_DESC1 swapchain_desc;
212
213 TRACE("iface %p, device %p, desc %p, swapchain %p.\n", iface, device, desc, swapchain);
214
215 if (!desc)
216 {
217 WARN("Invalid pointer.\n");
219 }
220
221 swapchain_desc.Width = desc->BufferDesc.Width;
222 swapchain_desc.Height = desc->BufferDesc.Height;
223 swapchain_desc.Format = desc->BufferDesc.Format;
224 swapchain_desc.Stereo = FALSE;
225 swapchain_desc.SampleDesc = desc->SampleDesc;
226 swapchain_desc.BufferUsage = desc->BufferUsage;
227 swapchain_desc.BufferCount = desc->BufferCount;
228 swapchain_desc.Scaling = DXGI_SCALING_STRETCH;
229 swapchain_desc.SwapEffect = desc->SwapEffect;
230 swapchain_desc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;
231 swapchain_desc.Flags = desc->Flags;
232
233 fullscreen_desc.RefreshRate = desc->BufferDesc.RefreshRate;
234 fullscreen_desc.ScanlineOrdering = desc->BufferDesc.ScanlineOrdering;
235 fullscreen_desc.Scaling = desc->BufferDesc.Scaling;
236 fullscreen_desc.Windowed = desc->Windowed;
237
238 return IWineDXGIFactory_CreateSwapChainForHwnd(&factory->IWineDXGIFactory_iface,
239 device, desc->OutputWindow, &swapchain_desc, &fullscreen_desc, NULL,
240 (IDXGISwapChain1 **)swapchain);
241}
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
@ DXGI_ALPHA_MODE_IGNORE
Definition: dxgi1_2.idl:37
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
DXGI_FORMAT Format
Definition: dxgi1_2.idl:223
DXGI_ALPHA_MODE AlphaMode
Definition: dxgi1_2.idl:230
DXGI_USAGE BufferUsage
Definition: dxgi1_2.idl:226
DXGI_SWAP_EFFECT SwapEffect
Definition: dxgi1_2.idl:229
DXGI_SAMPLE_DESC SampleDesc
Definition: dxgi1_2.idl:225
DXGI_SCALING Scaling
Definition: dxgi1_2.idl:228
DXGI_MODE_SCANLINE_ORDER ScanlineOrdering
Definition: dxgi1_2.idl:236
DXGI_MODE_SCALING Scaling
Definition: dxgi1_2.idl:237
Definition: devices.h:37

◆ dxgi_factory_CreateSwapChainForComposition()

static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForComposition ( IWineDXGIFactory *  iface,
IUnknown *  device,
const DXGI_SWAP_CHAIN_DESC1 *  desc,
IDXGIOutput *  output,
IDXGISwapChain1 **  swapchain 
)
static

Definition at line 381 of file factory.c.

383{
384 FIXME("iface %p, device %p, desc %p, output %p, swapchain %p stub!\n",
385 iface, device, desc, output, swapchain);
386
387 return E_NOTIMPL;
388}

◆ dxgi_factory_CreateSwapChainForCoreWindow()

static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForCoreWindow ( IWineDXGIFactory *  iface,
IUnknown *  device,
IUnknown *  window,
const DXGI_SWAP_CHAIN_DESC1 *  desc,
IDXGIOutput *  output,
IDXGISwapChain1 **  swapchain 
)
static

Definition at line 319 of file factory.c.

322{
323 FIXME("iface %p, device %p, window %p, desc %p, output %p, swapchain %p stub!\n",
324 iface, device, window, desc, output, swapchain);
325
326 return E_NOTIMPL;
327}
static IHTMLWindow2 * window
Definition: events.c:77

◆ dxgi_factory_CreateSwapChainForHwnd()

static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForHwnd ( IWineDXGIFactory *  iface,
IUnknown *  device,
HWND  window,
const DXGI_SWAP_CHAIN_DESC1 *  desc,
const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *  fullscreen_desc,
IDXGIOutput *  output,
IDXGISwapChain1 **  swapchain 
)
static

Definition at line 270 of file factory.c.

274{
275 IWineDXGISwapChainFactory *swapchain_factory;
276 ID3D12CommandQueue *command_queue;
277 HRESULT hr;
278
279 TRACE("iface %p, device %p, window %p, desc %p, fullscreen_desc %p, output %p, swapchain %p.\n",
280 iface, device, window, desc, fullscreen_desc, output, swapchain);
281
282 if (!device || !window || !desc || !swapchain)
283 {
284 WARN("Invalid pointer.\n");
286 }
287
288 if (desc->Stereo)
289 {
290 FIXME("Stereo swapchains are not supported.\n");
292 }
293
296
297 if (output)
298 FIXME("Ignoring output %p.\n", output);
299
300 if (SUCCEEDED(IUnknown_QueryInterface(device, &IID_IWineDXGISwapChainFactory, (void **)&swapchain_factory)))
301 {
302 hr = IWineDXGISwapChainFactory_create_swapchain(swapchain_factory,
303 (IDXGIFactory *)iface, window, desc, fullscreen_desc, output, swapchain);
304 IWineDXGISwapChainFactory_Release(swapchain_factory);
305 return hr;
306 }
307
308 if (SUCCEEDED(IUnknown_QueryInterface(device, &IID_ID3D12CommandQueue, (void **)&command_queue)))
309 {
310 hr = d3d12_swapchain_create(iface, command_queue, window, desc, fullscreen_desc, swapchain);
311 ID3D12CommandQueue_Release(command_queue);
312 return hr;
313 }
314
315 ERR("This is not the device we're looking for.\n");
317}
#define ERR(fmt,...)
Definition: precomp.h:57
HRESULT d3d12_swapchain_create(IWineDXGIFactory *factory, ID3D12CommandQueue *queue, HWND window, const DXGI_SWAP_CHAIN_DESC1 *swapchain_desc, const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *fullscreen_desc, IDXGISwapChain1 **swapchain)
Definition: swapchain.c:3399
BOOL dxgi_validate_swapchain_desc(const DXGI_SWAP_CHAIN_DESC1 *desc)
Definition: swapchain.c:63
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define DXGI_ERROR_UNSUPPORTED
Definition: winerror.h:7125

◆ dxgi_factory_EnumAdapterByGpuPreference()

static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapterByGpuPreference ( IWineDXGIFactory *  iface,
UINT  adapter_idx,
DXGI_GPU_PREFERENCE  gpu_preference,
REFIID  iid,
void **  adapter 
)
static

Definition at line 467 of file factory.c.

469{
470 IDXGIAdapter1 *adapter_object;
471 HRESULT hr;
472
473 TRACE("iface %p, adapter_idx %u, gpu_preference %#x, iid %s, adapter %p.\n",
474 iface, adapter_idx, gpu_preference, debugstr_guid(iid), adapter);
475
476 if (gpu_preference != DXGI_GPU_PREFERENCE_UNSPECIFIED)
477 FIXME("Ignoring GPU preference %#x.\n", gpu_preference);
478
479 if (FAILED(hr = dxgi_factory_EnumAdapters1(iface, adapter_idx, &adapter_object)))
480 return hr;
481
482 hr = IDXGIAdapter1_QueryInterface(adapter_object, iid, adapter);
483 IDXGIAdapter1_Release(adapter_object);
484 return hr;
485}
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters1(IWineDXGIFactory *iface, UINT adapter_idx, IDXGIAdapter1 **adapter)
Definition: factory.c:127
@ DXGI_GPU_PREFERENCE_UNSPECIFIED
Definition: dxgi1_6.idl:42
#define debugstr_guid
Definition: kernel32.h:35

◆ dxgi_factory_EnumAdapterByLuid()

static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapterByLuid ( IWineDXGIFactory *  iface,
LUID  luid,
REFIID  iid,
void **  adapter 
)
static

Definition at line 397 of file factory.c.

399{
400 unsigned int adapter_index;
402 IDXGIAdapter1 *adapter1;
403 HRESULT hr;
404
405 TRACE("iface %p, luid %08lx:%08lx, iid %s, adapter %p.\n",
406 iface, luid.HighPart, luid.LowPart, debugstr_guid(iid), adapter);
407
408 if (!adapter)
410
411 adapter_index = 0;
412 while ((hr = dxgi_factory_EnumAdapters1(iface, adapter_index, &adapter1)) == S_OK)
413 {
414 if (FAILED(hr = IDXGIAdapter1_GetDesc1(adapter1, &desc)))
415 {
416 WARN("Failed to get adapter %u desc, hr %#lx.\n", adapter_index, hr);
417 ++adapter_index;
418 continue;
419 }
420
421 if (desc.AdapterLuid.LowPart == luid.LowPart
422 && desc.AdapterLuid.HighPart == luid.HighPart)
423 {
424 hr = IDXGIAdapter1_QueryInterface(adapter1, iid, adapter);
425 IDXGIAdapter1_Release(adapter1);
426 return hr;
427 }
428
429 IDXGIAdapter1_Release(adapter1);
430 ++adapter_index;
431 }
433 WARN("Failed to enumerate adapters, hr %#lx.\n", hr);
434
435 WARN("Adapter could not be found.\n");
437}
LONG HighPart
DWORD LowPart
#define DXGI_ERROR_NOT_FOUND
Definition: winerror.h:7122

◆ dxgi_factory_EnumAdapters()

static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters ( IWineDXGIFactory *  iface,
UINT  adapter_idx,
IDXGIAdapter **  adapter 
)
static

Definition at line 163 of file factory.c.

165{
166 TRACE("iface %p, adapter_idx %u, adapter %p.\n", iface, adapter_idx, adapter);
167
168 return dxgi_factory_EnumAdapters1(iface, adapter_idx, (IDXGIAdapter1 **)adapter);
169}

◆ dxgi_factory_EnumAdapters1()

static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters1 ( IWineDXGIFactory *  iface,
UINT  adapter_idx,
IDXGIAdapter1 **  adapter 
)
static

Definition at line 127 of file factory.c.

129{
131 struct dxgi_adapter *adapter_object;
133 HRESULT hr;
134
135 TRACE("iface %p, adapter_idx %u, adapter %p.\n", iface, adapter_idx, adapter);
136
137 if (!adapter)
139
143
144 if (adapter_idx >= adapter_count)
145 {
146 *adapter = NULL;
148 }
149
150 if (FAILED(hr = dxgi_adapter_create(factory, adapter_idx, &adapter_object)))
151 {
152 *adapter = NULL;
153 return hr;
154 }
155
156 *adapter = (IDXGIAdapter1 *)&adapter_object->IWineDXGIAdapter_iface;
157
158 TRACE("Returning adapter %p.\n", *adapter);
159
160 return S_OK;
161}
HRESULT dxgi_adapter_create(struct dxgi_factory *factory, UINT ordinal, struct dxgi_adapter **adapter)
Definition: adapter.c:448
unsigned int UINT
Definition: sysinfo.c:13
static int adapter_count
Definition: monitor.c:148
IWineDXGIAdapter IWineDXGIAdapter_iface
Definition: dxgi_private.h:160
UINT CDECL wined3d_get_adapter_count(const struct wined3d *wined3d)
Definition: directx.c:1019
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539

Referenced by dxgi_factory_EnumAdapterByGpuPreference(), dxgi_factory_EnumAdapterByLuid(), and dxgi_factory_EnumAdapters().

◆ dxgi_factory_EnumWarpAdapter()

static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumWarpAdapter ( IWineDXGIFactory *  iface,
REFIID  iid,
void **  adapter 
)
static

Definition at line 439 of file factory.c.

441{
442 FIXME("iface %p, iid %s, adapter %p stub!\n", iface, debugstr_guid(iid), adapter);
443
444 return E_NOTIMPL;
445}

◆ dxgi_factory_get_device_window()

HWND dxgi_factory_get_device_window ( struct dxgi_factory *  factory)

Definition at line 607 of file factory.c.

608{
610
611 if (!factory->device_window)
612 {
613 if (!(factory->device_window = CreateWindowA("static", "DXGI device window",
614 WS_DISABLED, 0, 0, 0, 0, NULL, NULL, NULL, NULL)))
615 {
617 ERR("Failed to create a window.\n");
618 return NULL;
619 }
620 TRACE("Created device window %p for factory %p.\n", factory->device_window, factory);
621 }
622
624
625 return factory->device_window;
626}
#define WS_DISABLED
Definition: pedump.c:621
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4469

Referenced by dxgi_device_init().

◆ dxgi_factory_GetCreationFlags()

static UINT STDMETHODCALLTYPE dxgi_factory_GetCreationFlags ( IWineDXGIFactory *  iface)
static

Definition at line 390 of file factory.c.

391{
392 FIXME("iface %p stub!\n", iface);
393
394 return 0;
395}

◆ dxgi_factory_GetParent()

static HRESULT STDMETHODCALLTYPE dxgi_factory_GetParent ( IWineDXGIFactory *  iface,
REFIID  iid,
void **  parent 
)
static

Definition at line 118 of file factory.c.

119{
120 WARN("iface %p, iid %s, parent %p.\n", iface, debugstr_guid(iid), parent);
121
122 *parent = NULL;
123
124 return E_NOINTERFACE;
125}
r parent
Definition: btrfs.c:3010
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ dxgi_factory_GetPrivateData()

static HRESULT STDMETHODCALLTYPE dxgi_factory_GetPrivateData ( IWineDXGIFactory *  iface,
REFGUID  guid,
UINT *  data_size,
void *  data 
)
static

Definition at line 108 of file factory.c.

110{
112
113 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
114
115 return dxgi_get_private_data(&factory->private_store, guid, data_size, data);
116}
GUID guid
Definition: version.c:147
HRESULT dxgi_get_private_data(struct wined3d_private_store *store, REFGUID guid, UINT *data_size, void *data)
Definition: utils.c:624
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

◆ dxgi_factory_GetSharedResourceAdapterLuid()

static HRESULT STDMETHODCALLTYPE dxgi_factory_GetSharedResourceAdapterLuid ( IWineDXGIFactory *  iface,
HANDLE  resource,
LUID *  luid 
)
static

Definition at line 329 of file factory.c.

331{
332 FIXME("iface %p, resource %p, luid %p stub!\n", iface, resource, luid);
333
334 return E_NOTIMPL;
335}

◆ dxgi_factory_GetWindowAssociation()

static HRESULT STDMETHODCALLTYPE dxgi_factory_GetWindowAssociation ( IWineDXGIFactory *  iface,
HWND *  window 
)
static

Definition at line 193 of file factory.c.

194{
195 TRACE("iface %p, window %p.\n", iface, window);
196
197 if (!window)
199
200 /* The tests show that this always returns NULL for some unknown reason. */
201 *window = NULL;
202
203 return S_OK;
204}

◆ dxgi_factory_init()

static HRESULT dxgi_factory_init ( struct dxgi_factory *  factory,
BOOL  extended 
)
static

Definition at line 565 of file factory.c.

566{
567 factory->IWineDXGIFactory_iface.lpVtbl = &dxgi_factory_vtbl;
568 factory->refcount = 1;
569 wined3d_private_store_init(&factory->private_store);
570
572 factory->wined3d = wined3d_create(0);
574 if (!factory->wined3d)
575 {
576 wined3d_private_store_cleanup(&factory->private_store);
578 }
579
580 factory->extended = extended;
581
582 return S_OK;
583}
static const struct IWineDXGIFactoryVtbl dxgi_factory_vtbl
Definition: factory.c:503
static void wined3d_private_store_cleanup(struct wined3d_private_store *store)
Definition: wined3d.h:2636
static void wined3d_private_store_init(struct wined3d_private_store *store)
Definition: wined3d.h:2607
struct wined3d *CDECL wined3d_create(uint32_t flags)
Definition: wined3d_main.c:142

Referenced by dxgi_factory_create().

◆ dxgi_factory_IsCurrent()

static BOOL STDMETHODCALLTYPE dxgi_factory_IsCurrent ( IWineDXGIFactory *  iface)
static

Definition at line 251 of file factory.c.

252{
253 static BOOL once = FALSE;
254
255 if (!once++)
256 FIXME("iface %p stub!\n", iface);
257 else
258 WARN("iface %p stub!\n", iface);
259
260 return TRUE;
261}

◆ dxgi_factory_IsWindowedStereoEnabled()

static BOOL STDMETHODCALLTYPE dxgi_factory_IsWindowedStereoEnabled ( IWineDXGIFactory *  iface)
static

Definition at line 263 of file factory.c.

264{
265 FIXME("iface %p stub!\n", iface);
266
267 return FALSE;
268}

◆ dxgi_factory_MakeWindowAssociation()

static HRESULT STDMETHODCALLTYPE dxgi_factory_MakeWindowAssociation ( IWineDXGIFactory *  iface,
HWND  window,
UINT  flags 
)
static

Definition at line 171 of file factory.c.

173{
175
176 TRACE("iface %p, window %p, flags %#x.\n", iface, window, flags);
177
178 if (flags > DXGI_MWA_VALID)
180
181 if (!window)
182 {
184 return S_OK;
185 }
186
188 return E_FAIL;
189
190 return S_OK;
191}
#define E_FAIL
Definition: ddrawi.h:102
GLbitfield flags
Definition: glext.h:7161
BOOL CDECL wined3d_register_window(struct wined3d *wined3d, HWND window, struct wined3d_device *device, unsigned int flags)
Definition: wined3d_main.c:715
void CDECL wined3d_unregister_windows(struct wined3d *wined3d)
Definition: wined3d_main.c:817

◆ dxgi_factory_QueryInterface()

static HRESULT STDMETHODCALLTYPE dxgi_factory_QueryInterface ( IWineDXGIFactory *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 29 of file factory.c.

30{
32
33 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
34
35 if (IsEqualGUID(iid, &IID_IWineDXGIFactory)
36 || IsEqualGUID(iid, &IID_IDXGIFactory7)
37 || IsEqualGUID(iid, &IID_IDXGIFactory6)
38 || IsEqualGUID(iid, &IID_IDXGIFactory5)
39 || IsEqualGUID(iid, &IID_IDXGIFactory4)
40 || IsEqualGUID(iid, &IID_IDXGIFactory3)
41 || IsEqualGUID(iid, &IID_IDXGIFactory2)
42 || (factory->extended && IsEqualGUID(iid, &IID_IDXGIFactory1))
43 || IsEqualGUID(iid, &IID_IDXGIFactory)
44 || IsEqualGUID(iid, &IID_IDXGIObject)
45 || IsEqualGUID(iid, &IID_IUnknown))
46 {
47 IUnknown_AddRef(iface);
48 *out = iface;
49 return S_OK;
50 }
51
52 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
53
54 *out = NULL;
55 return E_NOINTERFACE;
56}
const GUID IID_IUnknown
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ dxgi_factory_RegisterAdaptersChangedEvent()

static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterAdaptersChangedEvent ( IWineDXGIFactory *  iface,
HANDLE  event,
DWORD *  cookie 
)
static

Definition at line 487 of file factory.c.

489{
490 FIXME("iface %p, event %p, cookie %p stub!\n", iface, event, cookie);
491
492 return E_NOTIMPL;
493}
Definition: cookie.c:34
Definition: filter.c:185

◆ dxgi_factory_RegisterOcclusionStatusEvent()

static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterOcclusionStatusEvent ( IWineDXGIFactory *  iface,
HANDLE  event,
DWORD *  cookie 
)
static

Definition at line 368 of file factory.c.

370{
371 FIXME("iface %p, event %p, cookie %p stub!\n", iface, event, cookie);
372
373 return E_NOTIMPL;
374}

◆ dxgi_factory_RegisterOcclusionStatusWindow()

static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterOcclusionStatusWindow ( IWineDXGIFactory *  iface,
HWND  window,
UINT  message,
DWORD *  cookie 
)
static

Definition at line 337 of file factory.c.

339{
340 FIXME("iface %p, window %p, message %#x, cookie %p stub!\n",
341 iface, window, message, cookie);
342
343 return E_NOTIMPL;
344}
Definition: tftpd.h:60

◆ dxgi_factory_RegisterStereoStatusEvent()

static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterStereoStatusEvent ( IWineDXGIFactory *  iface,
HANDLE  event,
DWORD *  cookie 
)
static

Definition at line 346 of file factory.c.

348{
349 FIXME("iface %p, event %p, cookie %p stub!\n", iface, event, cookie);
350
351 return E_NOTIMPL;
352}

◆ dxgi_factory_RegisterStereoStatusWindow()

static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterStereoStatusWindow ( IWineDXGIFactory *  iface,
HWND  window,
UINT  message,
DWORD *  cookie 
)
static

Definition at line 359 of file factory.c.

361{
362 FIXME("iface %p, window %p, message %#x, cookie %p stub!\n",
363 iface, window, message, cookie);
364
365 return E_NOTIMPL;
366}

◆ dxgi_factory_Release()

static ULONG STDMETHODCALLTYPE dxgi_factory_Release ( IWineDXGIFactory *  iface)
static

Definition at line 68 of file factory.c.

69{
72
73 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
74
75 if (!refcount)
76 {
77 if (factory->device_window)
78 DestroyWindow(factory->device_window);
79
80 wined3d_decref(factory->wined3d);
83 }
84
85 return refcount;
86}
#define InterlockedDecrement
Definition: armddk.h:52
BOOL WINAPI DestroyWindow(_In_ HWND)
ULONG CDECL wined3d_decref(struct wined3d *wined3d)
Definition: directx.c:198

◆ dxgi_factory_SetPrivateData()

static HRESULT STDMETHODCALLTYPE dxgi_factory_SetPrivateData ( IWineDXGIFactory *  iface,
REFGUID  guid,
UINT  data_size,
const void *  data 
)
static

Definition at line 88 of file factory.c.

90{
92
93 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
94
95 return dxgi_set_private_data(&factory->private_store, guid, data_size, data);
96}
HRESULT dxgi_set_private_data(struct wined3d_private_store *store, REFGUID guid, UINT data_size, const void *data)
Definition: utils.c:666

◆ dxgi_factory_SetPrivateDataInterface()

static HRESULT STDMETHODCALLTYPE dxgi_factory_SetPrivateDataInterface ( IWineDXGIFactory *  iface,
REFGUID  guid,
const IUnknown *  object 
)
static

Definition at line 98 of file factory.c.

100{
102
103 TRACE("iface %p, guid %s, object %p.\n", iface, debugstr_guid(guid), object);
104
105 return dxgi_set_private_data_interface(&factory->private_store, guid, object);
106}
HRESULT dxgi_set_private_data_interface(struct wined3d_private_store *store, REFGUID guid, const IUnknown *object)
Definition: utils.c:694

◆ dxgi_factory_UnregisterAdaptersChangedEvent()

static HRESULT STDMETHODCALLTYPE dxgi_factory_UnregisterAdaptersChangedEvent ( IWineDXGIFactory *  iface,
DWORD  cookie 
)
static

Definition at line 495 of file factory.c.

497{
498 FIXME("iface %p, cookie %#lx stub!\n", iface, cookie);
499
500 return E_NOTIMPL;
501}

◆ dxgi_factory_UnregisterOcclusionStatus()

static void STDMETHODCALLTYPE dxgi_factory_UnregisterOcclusionStatus ( IWineDXGIFactory *  iface,
DWORD  cookie 
)
static

Definition at line 376 of file factory.c.

377{
378 FIXME("iface %p, cookie %#lx stub!\n", iface, cookie);
379}

◆ dxgi_factory_UnregisterStereoStatus()

static void STDMETHODCALLTYPE dxgi_factory_UnregisterStereoStatus ( IWineDXGIFactory *  iface,
DWORD  cookie 
)
static

Definition at line 354 of file factory.c.

355{
356 FIXME("iface %p, cookie %#lx stub!\n", iface, cookie);
357}

◆ impl_from_IWineDXGIFactory()

static struct dxgi_factory * impl_from_IWineDXGIFactory ( IWineDXGIFactory *  iface)
inlinestatic

◆ unsafe_impl_from_IDXGIFactory()

struct dxgi_factory * unsafe_impl_from_IDXGIFactory ( IDXGIFactory *  iface)

Definition at line 546 of file factory.c.

547{
548 IWineDXGIFactory *wine_factory;
549 struct dxgi_factory *factory;
550 HRESULT hr;
551
552 if (!iface)
553 return NULL;
554 if (FAILED(hr = IDXGIFactory_QueryInterface(iface, &IID_IWineDXGIFactory, (void **)&wine_factory)))
555 {
556 ERR("Failed to get IWineDXGIFactory interface, hr %#lx.\n", hr);
557 return NULL;
558 }
559 assert(wine_factory->lpVtbl == &dxgi_factory_vtbl);
561 IWineDXGIFactory_Release(wine_factory);
562 return factory;
563}
#define assert(_expr)
Definition: assert.h:32
IWineDXGIFactory IWineDXGIFactory_iface
Definition: dxgi_private.h:114

Referenced by d3d12_swapchain_init(), dxgi_device_init(), and dxgi_swapchain_factory_create_swapchain().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( dxgi  )

Variable Documentation

◆ dxgi_factory_vtbl

const struct IWineDXGIFactoryVtbl dxgi_factory_vtbl
static

Definition at line 503 of file factory.c.

Referenced by dxgi_factory_init(), and unsafe_impl_from_IDXGIFactory().