52 IUnknown_AddRef(iface);
59 IUnknown_AddRef(iface);
60 *
object = &
device->IWineDXGISwapChainFactory_iface;
66 TRACE(
"Forwarding to child layer %p.\n",
device->child_layer);
67 return IUnknown_QueryInterface(
device->child_layer,
riid,
object);
96 IUnknown_Release(
device->child_layer);
101 IWineDXGIAdapter_Release(
device->adapter);
148 hr = IWineDXGIDevice_GetAdapter(iface, &
adapter);
151 ERR(
"Failed to get adapter, hr %#lx.\n",
hr);
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);
188 hr = IWineDXGIDevice_QueryInterface(iface, &IID_IWineDXGIDeviceParent, (
void **)&dxgi_device_parent);
191 ERR(
"Device should implement IWineDXGIDeviceParent.\n");
200 surface_desc.
usage = 0;
204 surface_desc.
depth = 1;
205 surface_desc.
size = 0;
208 memset(surface, 0, surface_count *
sizeof(*surface));
209 for (
i = 0;
i < surface_count; ++
i)
216 ERR(
"Failed to create wined3d texture, hr %#lx.\n",
hr);
220 if (
FAILED(
hr = IWineDXGIDeviceParent_register_swapchain_texture(
224 ERR(
"Failed to create parent swapchain texture, hr %#lx.\n",
hr);
229 TRACE(
"Created IDXGISurface %p (%u/%u).\n", surface[
i],
i + 1, surface_count);
232 IWineDXGIDeviceParent_Release(dxgi_device_parent);
238 for (
j = 0;
j <
i; ++
j)
240 IDXGISurface_Release(surface[
i]);
242 IWineDXGIDeviceParent_Release(dxgi_device_parent);
249 FIXME(
"iface %p, resources %p, residency %p, resource_count %u stub!\n",
250 iface,
resources, residency, resource_count);
273 TRACE(
"iface %p, max_latency %u.\n", iface, max_latency);
289 TRACE(
"iface %p, max_latency %p.\n", iface, max_latency);
304 FIXME(
"iface %p, resource_count %u, resources %p, priority %u stub!\n", iface, resource_count,
313 FIXME(
"iface %p, resource_count %u, resources %p, discarded %p stub!\n", iface, resource_count,
321 FIXME(
"iface %p, event %p stub!\n", iface,
event);
328 FIXME(
"iface %p stub!\n", iface);
340 TRACE(
"iface %p, wined3d_resource %p, usage %#x, shared_resource %p, outer %p, needs_surface %d, "
344 if (!(
object =
calloc(1,
sizeof(*
object))))
346 ERR(
"Failed to allocate DXGI resource object memory.\n");
352 WARN(
"Failed to initialize resource, hr %#lx.\n",
hr);
357 TRACE(
"Created resource %p.\n",
object);
412 TRACE(
"iface %p.\n", iface);
421 TRACE(
"iface %p.\n", iface);
437 TRACE(
"iface %p, factory %p, window %p, desc %p, fullscreen_desc %p, output %p, swapchain %p.\n",
442 WARN(
"Factory %p is not a valid dxgi factory.\n",
factory);
448 WARN(
"Failed to get output from window %p, hr %#lx.\n",
window,
hr);
454 IDXGIOutput_Release(containing_output);
458 if (!(
object =
calloc(1,
sizeof(*
object))))
460 ERR(
"Failed to allocate swapchain memory.\n");
466 WARN(
"Failed to initialise swapchain, hr %#lx.\n",
hr);
471 TRACE(
"Created swapchain %p.\n",
object);
503 WARN(
"This is not the factory we're looking for.\n");
509 WARN(
"This is not the adapter we're looking for.\n");
524 WARN(
"Failed to create device, returning %#lx.\n",
hr);
530 if (
FAILED(
hr = IWineDXGIDevice_QueryInterface(&
device->IWineDXGIDevice_iface,
531 &IID_IWineDXGIDeviceParent, (
void **)&dxgi_device_parent)))
533 ERR(
"DXGI device should implement IWineDXGIDeviceParent.\n");
534 IUnknown_Release(
device->child_layer);
540 IWineDXGIDeviceParent_Release(dxgi_device_parent);
547 WARN(
"Failed to create a wined3d device, returning %#lx.\n",
hr);
548 IUnknown_Release(
device->child_layer);
557 ERR(
"Failed to get output from window %p.\n",
window);
559 IUnknown_Release(
device->child_layer);
566 memset(&swapchain_desc, 0,
sizeof(swapchain_desc));
572 IDXGIOutput_Release(output);
577 ERR(
"Failed to create implicit swapchain, hr %#lx.\n",
hr);
579 IUnknown_Release(
device->child_layer);
588 IWineDXGIAdapter_AddRef(
device->adapter);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define STDMETHODCALLTYPE
enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format)
struct dxgi_adapter * unsafe_impl_from_IDXGIAdapter(IDXGIAdapter *iface)
static HRESULT STDMETHODCALLTYPE dxgi_device_OfferResources(IWineDXGIDevice *iface, UINT resource_count, IDXGIResource *const *resources, DXGI_OFFER_RESOURCE_PRIORITY priority)
static HRESULT STDMETHODCALLTYPE dxgi_device_GetParent(IWineDXGIDevice *iface, REFIID riid, void **parent)
static HRESULT STDMETHODCALLTYPE dxgi_swapchain_factory_QueryInterface(IWineDXGISwapChainFactory *iface, REFIID iid, void **out)
static HRESULT STDMETHODCALLTYPE dxgi_device_GetPrivateData(IWineDXGIDevice *iface, REFGUID guid, UINT *data_size, void *data)
static const struct IWineDXGIDeviceVtbl dxgi_device_vtbl
static struct dxgi_device * impl_from_IWineDXGISwapChainFactory(IWineDXGISwapChainFactory *iface)
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)
static HRESULT STDMETHODCALLTYPE dxgi_device_SetPrivateDataInterface(IWineDXGIDevice *iface, REFGUID guid, const IUnknown *object)
static struct dxgi_device * impl_from_IWineDXGIDevice(IWineDXGIDevice *iface)
static void STDMETHODCALLTYPE dxgi_device_Trim(IWineDXGIDevice *iface)
static HRESULT STDMETHODCALLTYPE dxgi_device_GetGPUThreadPriority(IWineDXGIDevice *iface, INT *priority)
static ULONG STDMETHODCALLTYPE dxgi_swapchain_factory_AddRef(IWineDXGISwapChainFactory *iface)
static HRESULT STDMETHODCALLTYPE dxgi_device_SetMaximumFrameLatency(IWineDXGIDevice *iface, UINT max_latency)
static void STDMETHODCALLTYPE dxgi_null_wined3d_object_destroyed(void *parent)
static ULONG STDMETHODCALLTYPE dxgi_device_AddRef(IWineDXGIDevice *iface)
static HRESULT STDMETHODCALLTYPE dxgi_device_ReclaimResources(IWineDXGIDevice *iface, UINT resource_count, IDXGIResource *const *resources, BOOL *discarded)
static HRESULT STDMETHODCALLTYPE dxgi_device_QueryInterface(IWineDXGIDevice *iface, REFIID riid, void **object)
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)
static HRESULT STDMETHODCALLTYPE dxgi_device_EnqueueSetEvent(IWineDXGIDevice *iface, HANDLE event)
static ULONG STDMETHODCALLTYPE dxgi_device_Release(IWineDXGIDevice *iface)
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)
static HRESULT STDMETHODCALLTYPE dxgi_device_SetGPUThreadPriority(IWineDXGIDevice *iface, INT priority)
static HRESULT STDMETHODCALLTYPE dxgi_device_GetAdapter(IWineDXGIDevice *iface, IDXGIAdapter **adapter)
static HRESULT STDMETHODCALLTYPE dxgi_device_SetPrivateData(IWineDXGIDevice *iface, REFGUID guid, UINT data_size, const void *data)
static const struct IWineDXGISwapChainFactoryVtbl dxgi_swapchain_factory_vtbl
static ULONG STDMETHODCALLTYPE dxgi_swapchain_factory_Release(IWineDXGISwapChainFactory *iface)
static const struct wined3d_parent_ops dxgi_null_wined3d_parent_ops
static HRESULT STDMETHODCALLTYPE dxgi_device_QueryResourceResidency(IWineDXGIDevice *iface, IUnknown *const *resources, DXGI_RESIDENCY *residency, UINT resource_count)
static HRESULT STDMETHODCALLTYPE dxgi_device_GetMaximumFrameLatency(IWineDXGIDevice *iface, UINT *max_latency)
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)
void CDECL wined3d_device_set_max_frame_latency(struct wined3d_device *device, unsigned int latency)
ULONG CDECL wined3d_device_decref(struct wined3d_device *device)
unsigned int CDECL wined3d_device_get_max_frame_latency(const struct wined3d_device *device)
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)
ULONG CDECL wined3d_texture_decref(struct wined3d_texture *texture)
enum _DXGI_OFFER_RESOURCE_PRIORITY DXGI_OFFER_RESOURCE_PRIORITY
struct dxgi_factory * unsafe_impl_from_IDXGIFactory(IDXGIFactory *iface)
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)
HRESULT dxgi_get_output_from_window(IWineDXGIFactory *factory, HWND window, IDXGIOutput **dxgi_output)
HRESULT dxgi_get_private_data(struct wined3d_private_store *store, REFGUID guid, UINT *data_size, void *data)
void wined3d_sample_desc_from_dxgi(enum wined3d_multisample_type *wined3d_type, unsigned int *wined3d_quality, const DXGI_SAMPLE_DESC *dxgi_desc)
unsigned int wined3d_bind_flags_from_dxgi_usage(DXGI_USAGE usage)
HRESULT dxgi_set_private_data(struct wined3d_private_store *store, REFGUID guid, UINT data_size, const void *data)
HRESULT d3d11_swapchain_init(struct d3d11_swapchain *swapchain, struct dxgi_device *device, struct wined3d_swapchain_desc *desc)
HRESULT dxgi_set_private_data_interface(struct wined3d_private_store *store, REFGUID guid, const IUnknown *object)
struct dxgi_output * unsafe_impl_from_IDXGIOutput(IDXGIOutput *iface)
HWND dxgi_factory_get_device_window(struct dxgi_factory *factory)
HRESULT dxgi_resource_init(struct dxgi_resource *resource, IDXGIDevice *device, IUnknown *outer, BOOL needs_surface, struct wined3d_resource *wined3d_resource)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLint GLint layer
GLsizeiptr const GLvoid GLenum usage
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
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
static D3D_DRIVER_TYPE HMODULE UINT const D3D_FEATURE_LEVEL * feature_levels
D3D11_SHADER_VARIABLE_DESC desc
static IHTMLWindow2 * window
#define IsEqualGUID(rguid1, rguid2)
struct wined3d_adapter * wined3d_adapter
IWineDXGIAdapter IWineDXGIAdapter_iface
IWineDXGIDevice IWineDXGIDevice_iface
IWineDXGISwapChainFactory IWineDXGISwapChainFactory_iface
IWineDXGIFactory IWineDXGIFactory_iface
struct wined3d_output * wined3d_output
enum wined3d_resource_type resource_type
enum wined3d_multisample_type multisample_type
unsigned int multisample_quality
enum wined3d_format_id format
struct wined3d_output * output
enum wined3d_swap_effect swap_effect
#define CONTAINING_RECORD(address, type, field)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
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)
ULONG CDECL wined3d_swapchain_decref(struct wined3d_swapchain *swapchain)
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)
static void wined3d_private_store_cleanup(struct wined3d_private_store *store)
#define WINED3D_SWAPCHAIN_IMPLICIT
@ WINED3D_SWAP_EFFECT_DISCARD
#define WINED3D_RESOURCE_ACCESS_GPU
@ WINED3D_RTYPE_TEXTURE_2D
static void wined3d_private_store_init(struct wined3d_private_store *store)
@ WINED3D_DEVICE_TYPE_HAL
void WINAPI wined3d_mutex_unlock(void)
void WINAPI wined3d_mutex_lock(void)
#define DXGI_ERROR_INVALID_CALL