ReactOS 0.4.17-dev-923-g4c9a150
factory.c
Go to the documentation of this file.
1/*
2 * Copyright 2008 Henri Verbeet for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 *
18 */
19
20#include "dxgi_private.h"
21
23
25{
27}
28
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}
57
59{
62
63 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
64
65 return refcount;
66}
67
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}
87
89 REFGUID guid, UINT data_size, const void *data)
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}
97
99 REFGUID guid, const IUnknown *object)
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}
107
109 REFGUID guid, UINT *data_size, void *data)
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}
117
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}
126
128 UINT adapter_idx, IDXGIAdapter1 **adapter)
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}
162
164 UINT adapter_idx, IDXGIAdapter **adapter)
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}
170
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}
192
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}
205
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}
242
245{
246 FIXME("iface %p, swrast %p, adapter %p stub!\n", iface, swrast, adapter);
247
248 return E_NOTIMPL;
249}
250
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}
262
264{
265 FIXME("iface %p stub!\n", iface);
266
267 return FALSE;
268}
269
272 const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *fullscreen_desc,
273 IDXGIOutput *output, IDXGISwapChain1 **swapchain)
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}
318
321 IDXGIOutput *output, IDXGISwapChain1 **swapchain)
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}
328
330 HANDLE resource, LUID *luid)
331{
332 FIXME("iface %p, resource %p, luid %p stub!\n", iface, resource, luid);
333
334 return E_NOTIMPL;
335}
336
339{
340 FIXME("iface %p, window %p, message %#x, cookie %p stub!\n",
341 iface, window, message, cookie);
342
343 return E_NOTIMPL;
344}
345
348{
349 FIXME("iface %p, event %p, cookie %p stub!\n", iface, event, cookie);
350
351 return E_NOTIMPL;
352}
353
355{
356 FIXME("iface %p, cookie %#lx stub!\n", iface, cookie);
357}
358
361{
362 FIXME("iface %p, window %p, message %#x, cookie %p stub!\n",
363 iface, window, message, cookie);
364
365 return E_NOTIMPL;
366}
367
370{
371 FIXME("iface %p, event %p, cookie %p stub!\n", iface, event, cookie);
372
373 return E_NOTIMPL;
374}
375
377{
378 FIXME("iface %p, cookie %#lx stub!\n", iface, cookie);
379}
380
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}
389
391{
392 FIXME("iface %p stub!\n", iface);
393
394 return 0;
395}
396
398 LUID luid, REFIID iid, void **adapter)
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}
438
440 REFIID iid, void **adapter)
441{
442 FIXME("iface %p, iid %s, adapter %p stub!\n", iface, debugstr_guid(iid), adapter);
443
444 return E_NOTIMPL;
445}
446
448 DXGI_FEATURE feature, void *feature_data, UINT data_size)
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}
466
468 UINT adapter_idx, DXGI_GPU_PREFERENCE gpu_preference, REFIID iid, void **adapter)
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}
486
489{
490 FIXME("iface %p, event %p, cookie %p stub!\n", iface, event, cookie);
491
492 return E_NOTIMPL;
493}
494
497{
498 FIXME("iface %p, cookie %#lx stub!\n", iface, cookie);
499
500 return E_NOTIMPL;
501}
502
503static const struct IWineDXGIFactoryVtbl dxgi_factory_vtbl =
504{
517 /* IDXGIFactory1 methods */
520 /* IDXGIFactory2 methods */
532 /* IDXGIFactory3 methods */
534 /* IDXGIFactory4 methods */
537 /* IDXIGFactory5 methods */
539 /* IDXGIFactory6 methods */
541 /* IDXGIFactory7 methods */
544};
545
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}
564
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}
584
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}
606
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 InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
const GUID IID_IUnknown
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
static BOOL STDMETHODCALLTYPE dxgi_factory_IsWindowedStereoEnabled(IWineDXGIFactory *iface)
Definition: factory.c:263
static HRESULT STDMETHODCALLTYPE dxgi_factory_UnregisterAdaptersChangedEvent(IWineDXGIFactory *iface, DWORD cookie)
Definition: factory.c:495
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterStereoStatusEvent(IWineDXGIFactory *iface, HANDLE event, DWORD *cookie)
Definition: factory.c:346
struct dxgi_factory * unsafe_impl_from_IDXGIFactory(IDXGIFactory *iface)
Definition: factory.c:546
static ULONG STDMETHODCALLTYPE dxgi_factory_AddRef(IWineDXGIFactory *iface)
Definition: factory.c:58
static HRESULT STDMETHODCALLTYPE dxgi_factory_SetPrivateDataInterface(IWineDXGIFactory *iface, REFGUID guid, const IUnknown *object)
Definition: factory.c:98
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)
Definition: factory.c:270
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForComposition(IWineDXGIFactory *iface, IUnknown *device, const DXGI_SWAP_CHAIN_DESC1 *desc, IDXGIOutput *output, IDXGISwapChain1 **swapchain)
Definition: factory.c:381
static void STDMETHODCALLTYPE dxgi_factory_UnregisterStereoStatus(IWineDXGIFactory *iface, DWORD cookie)
Definition: factory.c:354
static HRESULT STDMETHODCALLTYPE dxgi_factory_MakeWindowAssociation(IWineDXGIFactory *iface, HWND window, UINT flags)
Definition: factory.c:171
static HRESULT STDMETHODCALLTYPE dxgi_factory_CheckFeatureSupport(IWineDXGIFactory *iface, DXGI_FEATURE feature, void *feature_data, UINT data_size)
Definition: factory.c:447
static HRESULT STDMETHODCALLTYPE dxgi_factory_GetSharedResourceAdapterLuid(IWineDXGIFactory *iface, HANDLE resource, LUID *luid)
Definition: factory.c:329
static HRESULT STDMETHODCALLTYPE dxgi_factory_GetPrivateData(IWineDXGIFactory *iface, REFGUID guid, UINT *data_size, void *data)
Definition: factory.c:108
static BOOL STDMETHODCALLTYPE dxgi_factory_IsCurrent(IWineDXGIFactory *iface)
Definition: factory.c:251
static void STDMETHODCALLTYPE dxgi_factory_UnregisterOcclusionStatus(IWineDXGIFactory *iface, DWORD cookie)
Definition: factory.c:376
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters(IWineDXGIFactory *iface, UINT adapter_idx, IDXGIAdapter **adapter)
Definition: factory.c:163
static struct dxgi_factory * impl_from_IWineDXGIFactory(IWineDXGIFactory *iface)
Definition: factory.c:24
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapterByLuid(IWineDXGIFactory *iface, LUID luid, REFIID iid, void **adapter)
Definition: factory.c:397
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapterByGpuPreference(IWineDXGIFactory *iface, UINT adapter_idx, DXGI_GPU_PREFERENCE gpu_preference, REFIID iid, void **adapter)
Definition: factory.c:467
static const struct IWineDXGIFactoryVtbl dxgi_factory_vtbl
Definition: factory.c:503
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterStereoStatusWindow(IWineDXGIFactory *iface, HWND window, UINT message, DWORD *cookie)
Definition: factory.c:359
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChain(IWineDXGIFactory *iface, IUnknown *device, DXGI_SWAP_CHAIN_DESC *desc, IDXGISwapChain **swapchain)
Definition: factory.c:206
HRESULT dxgi_factory_create(REFIID riid, void **factory, BOOL extended)
Definition: factory.c:585
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterAdaptersChangedEvent(IWineDXGIFactory *iface, HANDLE event, DWORD *cookie)
Definition: factory.c:487
static HRESULT STDMETHODCALLTYPE dxgi_factory_QueryInterface(IWineDXGIFactory *iface, REFIID iid, void **out)
Definition: factory.c:29
static HRESULT STDMETHODCALLTYPE dxgi_factory_GetWindowAssociation(IWineDXGIFactory *iface, HWND *window)
Definition: factory.c:193
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterOcclusionStatusEvent(IWineDXGIFactory *iface, HANDLE event, DWORD *cookie)
Definition: factory.c:368
static HRESULT STDMETHODCALLTYPE dxgi_factory_RegisterOcclusionStatusWindow(IWineDXGIFactory *iface, HWND window, UINT message, DWORD *cookie)
Definition: factory.c:337
static ULONG STDMETHODCALLTYPE dxgi_factory_Release(IWineDXGIFactory *iface)
Definition: factory.c:68
static HRESULT STDMETHODCALLTYPE dxgi_factory_GetParent(IWineDXGIFactory *iface, REFIID iid, void **parent)
Definition: factory.c:118
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForCoreWindow(IWineDXGIFactory *iface, IUnknown *device, IUnknown *window, const DXGI_SWAP_CHAIN_DESC1 *desc, IDXGIOutput *output, IDXGISwapChain1 **swapchain)
Definition: factory.c:319
static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSoftwareAdapter(IWineDXGIFactory *iface, HMODULE swrast, IDXGIAdapter **adapter)
Definition: factory.c:243
static UINT STDMETHODCALLTYPE dxgi_factory_GetCreationFlags(IWineDXGIFactory *iface)
Definition: factory.c:390
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumWarpAdapter(IWineDXGIFactory *iface, REFIID iid, void **adapter)
Definition: factory.c:439
HWND dxgi_factory_get_device_window(struct dxgi_factory *factory)
Definition: factory.c:607
static HRESULT STDMETHODCALLTYPE dxgi_factory_SetPrivateData(IWineDXGIFactory *iface, REFGUID guid, UINT data_size, const void *data)
Definition: factory.c:88
static HRESULT dxgi_factory_init(struct dxgi_factory *factory, BOOL extended)
Definition: factory.c:565
static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters1(IWineDXGIFactory *iface, UINT adapter_idx, IDXGIAdapter1 **adapter)
Definition: factory.c:127
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HRESULT dxgi_adapter_create(struct dxgi_factory *factory, UINT ordinal, struct dxgi_adapter **adapter)
Definition: adapter.c:448
GUID guid
Definition: version.c:147
#define assert(_expr)
Definition: assert.h:32
r parent
Definition: btrfs.c:3010
@ DXGI_ALPHA_MODE_IGNORE
Definition: dxgi1_2.idl:37
DXGI_FEATURE
Definition: dxgi1_5.idl:46
@ DXGI_FEATURE_PRESENT_ALLOW_TEARING
Definition: dxgi1_5.idl:47
DXGI_GPU_PREFERENCE
Definition: dxgi1_6.idl:41
@ DXGI_GPU_PREFERENCE_UNSPECIFIED
Definition: dxgi1_6.idl:42
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
HRESULT dxgi_get_private_data(struct wined3d_private_store *store, REFGUID guid, UINT *data_size, void *data)
Definition: utils.c:624
BOOL dxgi_validate_swapchain_desc(const DXGI_SWAP_CHAIN_DESC1 *desc)
Definition: swapchain.c:63
HRESULT dxgi_set_private_data(struct wined3d_private_store *store, REFGUID guid, UINT data_size, const void *data)
Definition: utils.c:666
HRESULT dxgi_set_private_data_interface(struct wined3d_private_store *store, REFGUID guid, const IUnknown *object)
Definition: utils.c:694
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
return adapter
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLbitfield flags
Definition: glext.h:7161
unsigned int UINT
Definition: sysinfo.c:13
static D3D_DRIVER_TYPE HMODULE swrast
Definition: hlsl_d3d11.c:28
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_guid
Definition: kernel32.h:35
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
static IHTMLWindow2 * window
Definition: events.c:77
INTERNETFEATURELIST feature
Definition: misc.c:1807
static int adapter_count
Definition: monitor.c:148
#define WS_DISABLED
Definition: pedump.c:621
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4469
BOOL WINAPI DestroyWindow(_In_ HWND)
#define calloc
Definition: rosglue.h:14
#define TRACE(s)
Definition: solgame.cpp:4
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: scsiwmi.h:51
LONG HighPart
DWORD LowPart
Definition: cookie.c:34
Definition: devices.h:37
IWineDXGIAdapter IWineDXGIAdapter_iface
Definition: dxgi_private.h:160
IWineDXGIFactory IWineDXGIFactory_iface
Definition: dxgi_private.h:114
Definition: filter.c:185
Definition: main.c:439
Definition: tftpd.h:60
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
ULONG CDECL wined3d_decref(struct wined3d *wined3d)
Definition: directx.c:198
UINT CDECL wined3d_get_adapter_count(const struct wined3d *wined3d)
Definition: directx.c:1019
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
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539
struct wined3d *CDECL wined3d_create(uint32_t flags)
Definition: wined3d_main.c:142
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
#define DXGI_ERROR_NOT_FOUND
Definition: winerror.h:7122
#define DXGI_ERROR_UNSUPPORTED
Definition: winerror.h:7125
#define E_NOINTERFACE
Definition: winerror.h:3479
#define DXGI_ERROR_INVALID_CALL
Definition: winerror.h:7120