ReactOS 0.4.17-dev-934-g091855f
device.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{
29};
30
32{
34}
35
36/* IUnknown methods */
37
39{
41
42 TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object);
43
45 || IsEqualGUID(riid, &IID_IDXGIObject)
46 || IsEqualGUID(riid, &IID_IDXGIDevice)
47 || IsEqualGUID(riid, &IID_IDXGIDevice1)
48 || IsEqualGUID(riid, &IID_IDXGIDevice2)
49 || IsEqualGUID(riid, &IID_IDXGIDevice3)
50 || IsEqualGUID(riid, &IID_IWineDXGIDevice))
51 {
52 IUnknown_AddRef(iface);
53 *object = iface;
54 return S_OK;
55 }
56
57 if (IsEqualGUID(riid, &IID_IWineDXGISwapChainFactory))
58 {
59 IUnknown_AddRef(iface);
60 *object = &device->IWineDXGISwapChainFactory_iface;
61 return S_OK;
62 }
63
64 if (device->child_layer)
65 {
66 TRACE("Forwarding to child layer %p.\n", device->child_layer);
67 return IUnknown_QueryInterface(device->child_layer, riid, object);
68 }
69
70 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
71
72 *object = NULL;
73 return E_NOINTERFACE;
74}
75
77{
80
81 TRACE("%p increasing refcount to %lu\n", device, refcount);
82
83 return refcount;
84}
85
87{
90
91 TRACE("%p decreasing refcount to %lu.\n", device, refcount);
92
93 if (!refcount)
94 {
95 if (device->child_layer)
96 IUnknown_Release(device->child_layer);
98 wined3d_swapchain_decref(device->implicit_swapchain);
99 wined3d_device_decref(device->wined3d_device);
101 IWineDXGIAdapter_Release(device->adapter);
102 wined3d_private_store_cleanup(&device->private_store);
103 free(device);
104 }
105
106 return refcount;
107}
108
109/* IDXGIObject methods */
110
112 REFGUID guid, UINT data_size, const void *data)
113{
115
116 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
117
118 return dxgi_set_private_data(&device->private_store, guid, data_size, data);
119}
120
122 REFGUID guid, const IUnknown *object)
123{
125
126 TRACE("iface %p, guid %s, object %p.\n", iface, debugstr_guid(guid), object);
127
128 return dxgi_set_private_data_interface(&device->private_store, guid, object);
129}
130
132 REFGUID guid, UINT *data_size, void *data)
133{
135
136 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
137
138 return dxgi_get_private_data(&device->private_store, guid, data_size, data);
139}
140
142{
144 HRESULT hr;
145
146 TRACE("iface %p, riid %s, parent %p.\n", iface, debugstr_guid(riid), parent);
147
148 hr = IWineDXGIDevice_GetAdapter(iface, &adapter);
149 if (FAILED(hr))
150 {
151 ERR("Failed to get adapter, hr %#lx.\n", hr);
152 return hr;
153 }
154
155 hr = IDXGIAdapter_QueryInterface(adapter, riid, parent);
156 IDXGIAdapter_Release(adapter);
157
158 return hr;
159}
160
161/* IDXGIDevice methods */
162
164{
166
167 TRACE("iface %p, adapter %p.\n", iface, adapter);
168
169 *adapter = (IDXGIAdapter *)device->adapter;
170 IDXGIAdapter_AddRef(*adapter);
171 return S_OK;
172}
173
175 const DXGI_SURFACE_DESC *desc, UINT surface_count, DXGI_USAGE usage,
176 const DXGI_SHARED_RESOURCE *shared_resource, IDXGISurface **surface)
177{
179 struct wined3d_resource_desc surface_desc;
180 IWineDXGIDeviceParent *dxgi_device_parent;
181 HRESULT hr;
182 UINT i;
183 UINT j;
184
185 TRACE("iface %p, desc %p, surface_count %u, usage %#x, shared_resource %p, surface %p.\n",
186 iface, desc, surface_count, usage, shared_resource, surface);
187
188 hr = IWineDXGIDevice_QueryInterface(iface, &IID_IWineDXGIDeviceParent, (void **)&dxgi_device_parent);
189 if (FAILED(hr))
190 {
191 ERR("Device should implement IWineDXGIDeviceParent.\n");
192 return E_FAIL;
193 }
194
196 surface_desc.format = wined3dformat_from_dxgi_format(desc->Format);
198 &surface_desc.multisample_quality, &desc->SampleDesc);
200 surface_desc.usage = 0;
201 surface_desc.access = WINED3D_RESOURCE_ACCESS_GPU;
202 surface_desc.width = desc->Width;
203 surface_desc.height = desc->Height;
204 surface_desc.depth = 1;
205 surface_desc.size = 0;
206
208 memset(surface, 0, surface_count * sizeof(*surface));
209 for (i = 0; i < surface_count; ++i)
210 {
212
213 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &surface_desc,
215 {
216 ERR("Failed to create wined3d texture, hr %#lx.\n", hr);
217 goto fail;
218 }
219
220 if (FAILED(hr = IWineDXGIDeviceParent_register_swapchain_texture(
221 dxgi_device_parent, wined3d_texture, 0, &surface[i])))
222 {
224 ERR("Failed to create parent swapchain texture, hr %#lx.\n", hr);
225 goto fail;
226 }
228
229 TRACE("Created IDXGISurface %p (%u/%u).\n", surface[i], i + 1, surface_count);
230 }
232 IWineDXGIDeviceParent_Release(dxgi_device_parent);
233
234 return S_OK;
235
236fail:
238 for (j = 0; j < i; ++j)
239 {
240 IDXGISurface_Release(surface[i]);
241 }
242 IWineDXGIDeviceParent_Release(dxgi_device_parent);
243 return hr;
244}
245
247 IUnknown *const *resources, DXGI_RESIDENCY *residency, UINT resource_count)
248{
249 FIXME("iface %p, resources %p, residency %p, resource_count %u stub!\n",
250 iface, resources, residency, resource_count);
251
252 return E_NOTIMPL;
253}
254
256{
257 FIXME("iface %p, priority %d stub!\n", iface, priority);
258
259 return E_NOTIMPL;
260}
261
263{
264 FIXME("iface %p, priority %p stub!\n", iface, priority);
265
266 return E_NOTIMPL;
267}
268
270{
272
273 TRACE("iface %p, max_latency %u.\n", iface, max_latency);
274
275 if (max_latency > DXGI_FRAME_LATENCY_MAX)
277
279 wined3d_device_set_max_frame_latency(device->wined3d_device, max_latency);
281
282 return S_OK;
283}
284
286{
288
289 TRACE("iface %p, max_latency %p.\n", iface, max_latency);
290
291 if (!max_latency)
293
295 *max_latency = wined3d_device_get_max_frame_latency(device->wined3d_device);
297
298 return S_OK;
299}
300
303{
304 FIXME("iface %p, resource_count %u, resources %p, priority %u stub!\n", iface, resource_count,
306
307 return E_NOTIMPL;
308}
309
311 IDXGIResource * const *resources, BOOL *discarded)
312{
313 FIXME("iface %p, resource_count %u, resources %p, discarded %p stub!\n", iface, resource_count,
314 resources, discarded);
315
316 return E_NOTIMPL;
317}
318
320{
321 FIXME("iface %p, event %p stub!\n", iface, event);
322
323 return E_NOTIMPL;
324}
325
327{
328 FIXME("iface %p stub!\n", iface);
329}
330
331/* IWineDXGIDevice methods */
332
335 const DXGI_SHARED_RESOURCE *shared_resource, IUnknown *outer, BOOL needs_surface, void **resource)
336{
337 struct dxgi_resource *object;
338 HRESULT hr;
339
340 TRACE("iface %p, wined3d_resource %p, usage %#x, shared_resource %p, outer %p, needs_surface %d, "
341 "resource %p.\n", iface, wined3d_resource, usage, shared_resource, outer, needs_surface,
342 resource);
343
344 if (!(object = calloc(1, sizeof(*object))))
345 {
346 ERR("Failed to allocate DXGI resource object memory.\n");
347 return E_OUTOFMEMORY;
348 }
349
350 if (FAILED(hr = dxgi_resource_init(object, (IDXGIDevice *)iface, outer, needs_surface, wined3d_resource)))
351 {
352 WARN("Failed to initialize resource, hr %#lx.\n", hr);
353 free(object);
354 return hr;
355 }
356
357 TRACE("Created resource %p.\n", object);
358 *resource = outer ? &object->IUnknown_iface : (IUnknown *)&object->IDXGIResource_iface;
359
360 return S_OK;
361}
362
363static const struct IWineDXGIDeviceVtbl dxgi_device_vtbl =
364{
365 /* IUnknown methods */
369 /* IDXGIObject methods */
374 /* IDXGIDevice methods */
380 /* IDXGIDevice1 methods */
383 /* IDXGIDevice2 methods */
387 /* IDXGIDevice3 methods */
389 /* IWineDXGIDevice methods */
391};
392
394{
396}
397
399 REFIID iid, void **out)
400{
402
403 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
404
405 return dxgi_device_QueryInterface(&device->IWineDXGIDevice_iface, iid, out);
406}
407
409{
411
412 TRACE("iface %p.\n", iface);
413
414 return dxgi_device_AddRef(&device->IWineDXGIDevice_iface);
415}
416
418{
420
421 TRACE("iface %p.\n", iface);
422
423 return dxgi_device_Release(&device->IWineDXGIDevice_iface);
424}
425
428 const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *fullscreen_desc, IDXGIOutput *output, IDXGISwapChain1 **swapchain)
429{
431 struct wined3d_swapchain_desc wined3d_desc;
432 struct IDXGIOutput *containing_output;
434 struct d3d11_swapchain *object;
435 HRESULT hr;
436
437 TRACE("iface %p, factory %p, window %p, desc %p, fullscreen_desc %p, output %p, swapchain %p.\n",
438 iface, factory, window, desc, fullscreen_desc, output, swapchain);
439
441 {
442 WARN("Factory %p is not a valid dxgi factory.\n", factory);
443 return E_FAIL;
444 }
445
447 {
448 WARN("Failed to get output from window %p, hr %#lx.\n", window, hr);
449 return hr;
450 }
451
452 hr = wined3d_swapchain_desc_from_dxgi(&wined3d_desc, containing_output, window, desc,
453 fullscreen_desc);
454 IDXGIOutput_Release(containing_output);
455 if (FAILED(hr))
456 return hr;
457
458 if (!(object = calloc(1, sizeof(*object))))
459 {
460 ERR("Failed to allocate swapchain memory.\n");
461 return E_OUTOFMEMORY;
462 }
463
464 if (FAILED(hr = d3d11_swapchain_init(object, device, &wined3d_desc)))
465 {
466 WARN("Failed to initialise swapchain, hr %#lx.\n", hr);
467 free(object);
468 return hr;
469 }
470
471 TRACE("Created swapchain %p.\n", object);
472
473 *swapchain = (IDXGISwapChain1 *)&object->IDXGISwapChain4_iface;
474
475 return S_OK;
476}
477
478static const struct IWineDXGISwapChainFactoryVtbl dxgi_swapchain_factory_vtbl =
479{
484};
485
488 const D3D_FEATURE_LEVEL *feature_levels, unsigned int level_count)
489{
491 struct wined3d_swapchain_desc swapchain_desc;
492 IWineDXGIDeviceParent *dxgi_device_parent;
495 struct dxgi_output *dxgi_output;
496 struct IDXGIOutput *output;
497 void *layer_base;
498 HWND window;
499 HRESULT hr;
500
502 {
503 WARN("This is not the factory we're looking for.\n");
504 return E_FAIL;
505 }
506
508 {
509 WARN("This is not the adapter we're looking for.\n");
510 return E_FAIL;
511 }
512
513 device->IWineDXGIDevice_iface.lpVtbl = &dxgi_device_vtbl;
514 device->IWineDXGISwapChainFactory_iface.lpVtbl = &dxgi_swapchain_factory_vtbl;
515 device->refcount = 1;
517 wined3d_private_store_init(&device->private_store);
518
519 layer_base = device + 1;
520
521 if (FAILED(hr = layer->create(layer->id, &layer_base, 0,
522 device, &IID_IUnknown, (void **)&device->child_layer)))
523 {
524 WARN("Failed to create device, returning %#lx.\n", hr);
525 wined3d_private_store_cleanup(&device->private_store);
527 return hr;
528 }
529
530 if (FAILED(hr = IWineDXGIDevice_QueryInterface(&device->IWineDXGIDevice_iface,
531 &IID_IWineDXGIDeviceParent, (void **)&dxgi_device_parent)))
532 {
533 ERR("DXGI device should implement IWineDXGIDeviceParent.\n");
534 IUnknown_Release(device->child_layer);
535 wined3d_private_store_cleanup(&device->private_store);
537 return hr;
538 }
539 wined3d_device_parent = IWineDXGIDeviceParent_get_wined3d_device_parent(dxgi_device_parent);
540 IWineDXGIDeviceParent_Release(dxgi_device_parent);
541
544 (const enum wined3d_feature_level *)feature_levels, level_count,
545 wined3d_device_parent, &device->wined3d_device)))
546 {
547 WARN("Failed to create a wined3d device, returning %#lx.\n", hr);
548 IUnknown_Release(device->child_layer);
549 wined3d_private_store_cleanup(&device->private_store);
551 return hr;
552 }
553
556 {
557 ERR("Failed to get output from window %p.\n", window);
558 wined3d_device_decref(device->wined3d_device);
559 IUnknown_Release(device->child_layer);
560 wined3d_private_store_cleanup(&device->private_store);
562 return hr;
563 }
565
566 memset(&swapchain_desc, 0, sizeof(swapchain_desc));
568 swapchain_desc.device_window = window;
569 swapchain_desc.windowed = TRUE;
570 swapchain_desc.flags = WINED3D_SWAPCHAIN_IMPLICIT;
571 swapchain_desc.output = dxgi_output->wined3d_output;
572 IDXGIOutput_Release(output);
573
574 if (FAILED(hr = wined3d_swapchain_create(device->wined3d_device, &swapchain_desc,
575 NULL, NULL, &dxgi_null_wined3d_parent_ops, &device->implicit_swapchain)))
576 {
577 ERR("Failed to create implicit swapchain, hr %#lx.\n", hr);
578 wined3d_device_decref(device->wined3d_device);
579 IUnknown_Release(device->child_layer);
580 wined3d_private_store_cleanup(&device->private_store);
582 return E_OUTOFMEMORY;
583 }
584
586
588 IWineDXGIAdapter_AddRef(device->adapter);
589
590 return S_OK;
591}
#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
enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format)
Definition: utils.c:323
D3D_FEATURE_LEVEL
Definition: d3dcommon.idl:102
#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
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
struct dxgi_adapter * unsafe_impl_from_IDXGIAdapter(IDXGIAdapter *iface)
Definition: adapter.c:418
static HRESULT STDMETHODCALLTYPE dxgi_device_OfferResources(IWineDXGIDevice *iface, UINT resource_count, IDXGIResource *const *resources, DXGI_OFFER_RESOURCE_PRIORITY priority)
Definition: device.c:301
static HRESULT STDMETHODCALLTYPE dxgi_device_GetParent(IWineDXGIDevice *iface, REFIID riid, void **parent)
Definition: device.c:141
static HRESULT STDMETHODCALLTYPE dxgi_swapchain_factory_QueryInterface(IWineDXGISwapChainFactory *iface, REFIID iid, void **out)
Definition: device.c:398
static HRESULT STDMETHODCALLTYPE dxgi_device_GetPrivateData(IWineDXGIDevice *iface, REFGUID guid, UINT *data_size, void *data)
Definition: device.c:131
static const struct IWineDXGIDeviceVtbl dxgi_device_vtbl
Definition: device.c:363
static struct dxgi_device * impl_from_IWineDXGISwapChainFactory(IWineDXGISwapChainFactory *iface)
Definition: device.c:393
static HRESULT STDMETHODCALLTYPE dxgi_device_CreateSurface(IWineDXGIDevice *iface, const DXGI_SURFACE_DESC *desc, UINT surface_count, DXGI_USAGE usage, const DXGI_SHARED_RESOURCE *shared_resource, IDXGISurface **surface)
Definition: device.c:174
static HRESULT STDMETHODCALLTYPE dxgi_device_SetPrivateDataInterface(IWineDXGIDevice *iface, REFGUID guid, const IUnknown *object)
Definition: device.c:121
static struct dxgi_device * impl_from_IWineDXGIDevice(IWineDXGIDevice *iface)
Definition: device.c:31
static void STDMETHODCALLTYPE dxgi_device_Trim(IWineDXGIDevice *iface)
Definition: device.c:326
static HRESULT STDMETHODCALLTYPE dxgi_device_GetGPUThreadPriority(IWineDXGIDevice *iface, INT *priority)
Definition: device.c:262
static ULONG STDMETHODCALLTYPE dxgi_swapchain_factory_AddRef(IWineDXGISwapChainFactory *iface)
Definition: device.c:408
static HRESULT STDMETHODCALLTYPE dxgi_device_SetMaximumFrameLatency(IWineDXGIDevice *iface, UINT max_latency)
Definition: device.c:269
static void STDMETHODCALLTYPE dxgi_null_wined3d_object_destroyed(void *parent)
Definition: device.c:24
static ULONG STDMETHODCALLTYPE dxgi_device_AddRef(IWineDXGIDevice *iface)
Definition: device.c:76
static HRESULT STDMETHODCALLTYPE dxgi_device_ReclaimResources(IWineDXGIDevice *iface, UINT resource_count, IDXGIResource *const *resources, BOOL *discarded)
Definition: device.c:310
static HRESULT STDMETHODCALLTYPE dxgi_device_QueryInterface(IWineDXGIDevice *iface, REFIID riid, void **object)
Definition: device.c:38
HRESULT dxgi_device_init(struct dxgi_device *device, struct dxgi_device_layer *layer, IDXGIFactory *factory, IDXGIAdapter *adapter, const D3D_FEATURE_LEVEL *feature_levels, unsigned int level_count)
Definition: device.c:486
static HRESULT STDMETHODCALLTYPE dxgi_device_EnqueueSetEvent(IWineDXGIDevice *iface, HANDLE event)
Definition: device.c:319
static ULONG STDMETHODCALLTYPE dxgi_device_Release(IWineDXGIDevice *iface)
Definition: device.c:86
static HRESULT STDMETHODCALLTYPE dxgi_device_create_resource(IWineDXGIDevice *iface, struct wined3d_resource *wined3d_resource, DXGI_USAGE usage, const DXGI_SHARED_RESOURCE *shared_resource, IUnknown *outer, BOOL needs_surface, void **resource)
Definition: device.c:333
static HRESULT STDMETHODCALLTYPE dxgi_device_SetGPUThreadPriority(IWineDXGIDevice *iface, INT priority)
Definition: device.c:255
static HRESULT STDMETHODCALLTYPE dxgi_device_GetAdapter(IWineDXGIDevice *iface, IDXGIAdapter **adapter)
Definition: device.c:163
static HRESULT STDMETHODCALLTYPE dxgi_device_SetPrivateData(IWineDXGIDevice *iface, REFGUID guid, UINT data_size, const void *data)
Definition: device.c:111
static const struct IWineDXGISwapChainFactoryVtbl dxgi_swapchain_factory_vtbl
Definition: device.c:478
static ULONG STDMETHODCALLTYPE dxgi_swapchain_factory_Release(IWineDXGISwapChainFactory *iface)
Definition: device.c:417
static const struct wined3d_parent_ops dxgi_null_wined3d_parent_ops
Definition: device.c:26
static HRESULT STDMETHODCALLTYPE dxgi_device_QueryResourceResidency(IWineDXGIDevice *iface, IUnknown *const *resources, DXGI_RESIDENCY *residency, UINT resource_count)
Definition: device.c:246
static HRESULT STDMETHODCALLTYPE dxgi_device_GetMaximumFrameLatency(IWineDXGIDevice *iface, UINT *max_latency)
Definition: device.c:285
static HRESULT STDMETHODCALLTYPE dxgi_swapchain_factory_create_swapchain(IWineDXGISwapChainFactory *iface, IDXGIFactory *factory, HWND window, const DXGI_SWAP_CHAIN_DESC1 *desc, const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *fullscreen_desc, IDXGIOutput *output, IDXGISwapChain1 **swapchain)
Definition: device.c:426
void CDECL wined3d_device_set_max_frame_latency(struct wined3d_device *device, unsigned int latency)
Definition: device.c:2717
ULONG CDECL wined3d_device_decref(struct wined3d_device *device)
Definition: device.c:251
unsigned int CDECL wined3d_device_get_max_frame_latency(const struct wined3d_device *device)
Definition: device.c:2729
HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct wined3d_resource_desc *desc, UINT layer_count, UINT level_count, uint32_t flags, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_texture **texture)
Definition: texture.c:4158
ULONG CDECL wined3d_texture_decref(struct wined3d_texture *texture)
Definition: texture.c:1606
GUID guid
Definition: version.c:147
r parent
Definition: btrfs.c:3010
enum _DXGI_OFFER_RESOURCE_PRIORITY DXGI_OFFER_RESOURCE_PRIORITY
DXGI_RESIDENCY
Definition: dxgi.idl:71
UINT DXGI_USAGE
Definition: dxgi.idl:42
struct dxgi_factory * unsafe_impl_from_IDXGIFactory(IDXGIFactory *iface)
Definition: factory.c:546
HRESULT wined3d_swapchain_desc_from_dxgi(struct wined3d_swapchain_desc *wined3d_desc, IDXGIOutput *dxgi_containing_output, HWND window, const DXGI_SWAP_CHAIN_DESC1 *dxgi_desc, const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *dxgi_fullscreen_desc)
Definition: utils.c:571
HRESULT dxgi_get_output_from_window(IWineDXGIFactory *factory, HWND window, IDXGIOutput **dxgi_output)
Definition: swapchain.c:103
HRESULT dxgi_get_private_data(struct wined3d_private_store *store, REFGUID guid, UINT *data_size, void *data)
Definition: utils.c:624
void wined3d_sample_desc_from_dxgi(enum wined3d_multisample_type *wined3d_type, unsigned int *wined3d_quality, const DXGI_SAMPLE_DESC *dxgi_desc)
Definition: utils.c:454
unsigned int wined3d_bind_flags_from_dxgi_usage(DXGI_USAGE usage)
Definition: utils.c:504
@ DXGI_FRAME_LATENCY_MAX
Definition: dxgi_private.h:44
HRESULT dxgi_set_private_data(struct wined3d_private_store *store, REFGUID guid, UINT data_size, const void *data)
Definition: utils.c:666
HRESULT d3d11_swapchain_init(struct d3d11_swapchain *swapchain, struct dxgi_device *device, struct wined3d_swapchain_desc *desc)
Definition: swapchain.c:991
HRESULT dxgi_set_private_data_interface(struct wined3d_private_store *store, REFGUID guid, const IUnknown *object)
Definition: utils.c:694
struct dxgi_output * unsafe_impl_from_IDXGIOutput(IDXGIOutput *iface)
Definition: output.c:706
HWND dxgi_factory_get_device_window(struct dxgi_factory *factory)
Definition: factory.c:607
HRESULT dxgi_resource_init(struct dxgi_resource *resource, IDXGIDevice *device, IUnknown *outer, BOOL needs_surface, struct wined3d_resource *wined3d_resource)
Definition: resource.c:426
unsigned int BOOL
Definition: ntddk_ex.h:94
FxCmResList * resources
return adapter
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLenum GLuint GLint GLint layer
Definition: glext.h:7007
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
unsigned int UINT
Definition: sysinfo.c:13
static D3D_DRIVER_TYPE HMODULE UINT const D3D_FEATURE_LEVEL * feature_levels
Definition: hlsl_d3d11.c:28
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#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
static IUnknown * outer
Definition: compobj.c:82
static int priority
Definition: timer.c:163
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define calloc
Definition: rosglue.h:14
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
Definition: scsiwmi.h:51
Definition: devices.h:37
struct wined3d_adapter * wined3d_adapter
Definition: dxgi_private.h:162
IWineDXGIAdapter IWineDXGIAdapter_iface
Definition: dxgi_private.h:160
IWineDXGIDevice IWineDXGIDevice_iface
Definition: dxgi_private.h:129
IWineDXGISwapChainFactory IWineDXGISwapChainFactory_iface
Definition: dxgi_private.h:130
struct wined3d * wined3d
Definition: dxgi_private.h:117
IWineDXGIFactory IWineDXGIFactory_iface
Definition: dxgi_private.h:114
struct wined3d_output * wined3d_output
Definition: dxgi_private.h:148
Definition: filter.c:185
Definition: main.c:439
unsigned int size
Definition: wined3d.h:1801
enum wined3d_resource_type resource_type
Definition: wined3d.h:1791
unsigned int width
Definition: wined3d.h:1798
unsigned int height
Definition: wined3d.h:1799
enum wined3d_multisample_type multisample_type
Definition: wined3d.h:1793
unsigned int multisample_quality
Definition: wined3d.h:1794
unsigned int bind_flags
Definition: wined3d.h:1796
unsigned int usage
Definition: wined3d.h:1795
unsigned int depth
Definition: wined3d.h:1800
enum wined3d_format_id format
Definition: wined3d.h:1792
unsigned int access
Definition: wined3d.h:1797
struct wined3d_output * output
Definition: wined3d.h:1771
enum wined3d_swap_effect swap_effect
Definition: wined3d.h:1779
int32_t INT
Definition: typedefs.h:58
#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
HRESULT CDECL wined3d_device_create(struct wined3d *wined3d, struct wined3d_adapter *adapter, enum wined3d_device_type device_type, HWND focus_window, uint32_t flags, BYTE surface_alignment, const enum wined3d_feature_level *feature_levels, unsigned int feature_level_count, struct wined3d_device_parent *device_parent, struct wined3d_device **device)
Definition: directx.c:2777
ULONG CDECL wined3d_swapchain_decref(struct wined3d_swapchain *swapchain)
Definition: swapchain.c:144
HRESULT CDECL wined3d_swapchain_create(struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
Definition: swapchain.c:1732
static void wined3d_private_store_cleanup(struct wined3d_private_store *store)
Definition: wined3d.h:2636
#define WINED3D_SWAPCHAIN_IMPLICIT
Definition: wined3d.h:901
@ WINED3D_SWAP_EFFECT_DISCARD
Definition: wined3d.h:534
#define WINED3D_RESOURCE_ACCESS_GPU
Definition: wined3d.h:51
@ WINED3D_RTYPE_TEXTURE_2D
Definition: wined3d.h:720
static void wined3d_private_store_init(struct wined3d_private_store *store)
Definition: wined3d.h:2607
wined3d_feature_level
Definition: wined3d.h:98
@ WINED3D_DEVICE_TYPE_HAL
Definition: wined3d.h:91
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539
#define E_NOINTERFACE
Definition: winerror.h:3479
#define DXGI_ERROR_INVALID_CALL
Definition: winerror.h:7120