Module: wine Branch: master Commit: a313daea70a066e01b8b838557cdb9fcb97bce65 URL: https://source.winehq.org/git/wine.git/?a=commit;h=a313daea70a066e01b8b83855...
Author: Zebediah Figura z.figura12@gmail.com Date: Mon Apr 19 23:38:08 2021 -0500
wined3d: Pass a wined3d_device_context to wined3d_device_get_depth_stencil_view().
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/d3d11/device.c | 5 ++--- dlls/d3d8/device.c | 6 +++--- dlls/d3d9/device.c | 4 ++-- dlls/ddraw/ddraw.c | 2 +- dlls/ddraw/device.c | 2 +- dlls/ddraw/surface.c | 5 +++-- dlls/wined3d/device.c | 7 ++++--- dlls/wined3d/wined3d.spec | 2 +- include/wine/wined3d.h | 3 ++- 9 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index b95423c4c7c..e58b02038c8 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -2055,7 +2055,6 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMGetRenderTargets(ID3D11D ID3D11DepthStencilView **depth_stencil_view) { struct d3d11_immediate_context *context = impl_from_ID3D11DeviceContext1(iface); - struct d3d_device *device = device_from_immediate_ID3D11DeviceContext1(iface); struct wined3d_rendertarget_view *wined3d_view;
TRACE("iface %p, render_target_view_count %u, render_target_views %p, depth_stencil_view %p.\n", @@ -2085,7 +2084,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMGetRenderTargets(ID3D11D { struct d3d_depthstencil_view *view_impl;
- if (!(wined3d_view = wined3d_device_get_depth_stencil_view(device->wined3d_device)) + if (!(wined3d_view = wined3d_device_context_get_depth_stencil_view(context->wined3d_context)) || !(view_impl = wined3d_rendertarget_view_get_parent(wined3d_view))) { *depth_stencil_view = NULL; @@ -5435,7 +5434,7 @@ static void STDMETHODCALLTYPE d3d10_device_OMGetRenderTargets(ID3D10Device1 *ifa { struct d3d_depthstencil_view *view_impl;
- if (!(wined3d_view = wined3d_device_get_depth_stencil_view(device->wined3d_device)) + if (!(wined3d_view = wined3d_device_context_get_depth_stencil_view(device->immediate_context.wined3d_context)) || !(view_impl = wined3d_rendertarget_view_get_parent(wined3d_view))) { *depth_stencil_view = NULL; diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index 4f76a55172c..938eb19c8f5 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c @@ -1535,7 +1535,7 @@ static HRESULT WINAPI d3d8_device_SetRenderTarget(IDirect3DDevice8 *iface, } }
- original_dsv = wined3d_device_get_depth_stencil_view(device->wined3d_device); + original_dsv = wined3d_device_context_get_depth_stencil_view(device->immediate_context); rtv = ds_impl ? d3d8_surface_acquire_rendertarget_view(ds_impl) : NULL; hr = wined3d_device_context_set_depth_stencil_view(device->immediate_context, rtv); d3d8_surface_release_rendertarget_view(ds_impl, rtv); @@ -1603,7 +1603,7 @@ static HRESULT WINAPI d3d8_device_GetDepthStencilSurface(IDirect3DDevice8 *iface return D3DERR_INVALIDCALL;
wined3d_mutex_lock(); - if ((wined3d_dsv = wined3d_device_get_depth_stencil_view(device->wined3d_device))) + if ((wined3d_dsv = wined3d_device_context_get_depth_stencil_view(device->immediate_context))) { /* We want the sub resource parent here, since the view itself may be * internal to wined3d and may not have a parent. */ @@ -1928,7 +1928,7 @@ static void resolve_depth_buffer(struct d3d8_device *device) && desc.format != WINED3DFMT_INTZ) return;
- if (!(wined3d_dsv = wined3d_device_get_depth_stencil_view(device->wined3d_device))) + if (!(wined3d_dsv = wined3d_device_context_get_depth_stencil_view(device->immediate_context))) return; d3d8_dsv = wined3d_rendertarget_view_get_sub_resource_parent(wined3d_dsv);
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index f7a6e04beae..ee1cdc87567 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -2109,7 +2109,7 @@ static HRESULT WINAPI d3d9_device_GetDepthStencilSurface(IDirect3DDevice9Ex *ifa return D3DERR_INVALIDCALL;
wined3d_mutex_lock(); - if ((wined3d_dsv = wined3d_device_get_depth_stencil_view(device->wined3d_device))) + if ((wined3d_dsv = wined3d_device_context_get_depth_stencil_view(device->immediate_context))) { /* We want the sub resource parent here, since the view itself may be * internal to wined3d and may not have a parent. */ @@ -2425,7 +2425,7 @@ static void resolve_depth_buffer(struct d3d9_device *device) && desc.format != WINED3DFMT_INTZ) return;
- if (!(wined3d_dsv = wined3d_device_get_depth_stencil_view(device->wined3d_device))) + if (!(wined3d_dsv = wined3d_device_context_get_depth_stencil_view(device->immediate_context))) return; d3d9_dsv = wined3d_rendertarget_view_get_sub_resource_parent(wined3d_dsv);
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index 9063c64b41f..972c18fbfe9 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -938,7 +938,7 @@ static HRESULT ddraw_set_cooperative_level(struct ddraw *ddraw, HWND window, else if (rtv) wined3d_rendertarget_view_incref(rtv);
- if ((dsv = wined3d_device_get_depth_stencil_view(ddraw->wined3d_device))) + if ((dsv = wined3d_device_context_get_depth_stencil_view(ddraw->immediate_context))) wined3d_rendertarget_view_incref(dsv); }
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c index c3681cc9440..898bef5e534 100644 --- a/dlls/ddraw/device.c +++ b/dlls/ddraw/device.c @@ -3437,7 +3437,7 @@ static void d3d_device_sync_rendertarget(struct d3d_device *device) if ((rtv = wined3d_device_context_get_rendertarget_view(device->immediate_context, 0))) ddraw_surface_get_draw_texture(wined3d_rendertarget_view_get_parent(rtv), DDRAW_SURFACE_RW);
- if ((rtv = wined3d_device_get_depth_stencil_view(device->wined3d_device))) + if ((rtv = wined3d_device_context_get_depth_stencil_view(device->immediate_context))) ddraw_surface_get_draw_texture(wined3d_rendertarget_view_get_parent(rtv), DDRAW_SURFACE_RW); }
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 51179db05dd..7834d9c943b 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -2136,6 +2136,7 @@ static HRESULT WINAPI ddraw_surface1_AddAttachedSurface(IDirectDrawSurface *ifac static HRESULT ddraw_surface_delete_attached_surface(struct ddraw_surface *surface, struct ddraw_surface *attachment, IUnknown *detach_iface) { + struct wined3d_rendertarget_view *dsv; struct ddraw_surface *prev = surface;
TRACE("surface %p, attachment %p, detach_iface %p.\n", surface, attachment, detach_iface); @@ -2183,8 +2184,8 @@ static HRESULT ddraw_surface_delete_attached_surface(struct ddraw_surface *surfa * QueryInterface(). Some applications, SCP - Containment Breach in * particular, modify the QueryInterface() pointer in the surface vtbl * but don't cleanup properly after the relevant dll is unloaded. */ - if (attachment->surface_desc.ddsCaps.dwCaps & DDSCAPS_ZBUFFER - && wined3d_device_get_depth_stencil_view(surface->ddraw->wined3d_device) == attachment->wined3d_rtv) + dsv = wined3d_device_context_get_depth_stencil_view(surface->ddraw->immediate_context); + if (attachment->surface_desc.ddsCaps.dwCaps & DDSCAPS_ZBUFFER && dsv == attachment->wined3d_rtv) wined3d_device_context_set_depth_stencil_view(surface->ddraw->immediate_context, NULL); wined3d_mutex_unlock();
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 40ee9739c5e..9590c7d7341 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -5408,11 +5408,12 @@ struct wined3d_rendertarget_view * CDECL wined3d_device_context_get_rendertarget return context->state->fb.render_targets[view_idx]; }
-struct wined3d_rendertarget_view * CDECL wined3d_device_get_depth_stencil_view(const struct wined3d_device *device) +struct wined3d_rendertarget_view * CDECL wined3d_device_context_get_depth_stencil_view( + const struct wined3d_device_context *context) { - TRACE("device %p.\n", device); + TRACE("context %p.\n", context);
- return device->cs->c.state->fb.depth_stencil; + return context->state->fb.depth_stencil; }
HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device, diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 8a01bf1711f..0a5cb608fc1 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -61,7 +61,6 @@ @ cdecl wined3d_device_get_cs_resource_view(ptr long) @ cdecl wined3d_device_get_cs_sampler(ptr long) @ cdecl wined3d_device_get_cs_uav(ptr long) -@ cdecl wined3d_device_get_depth_stencil_view(ptr) @ cdecl wined3d_device_get_device_caps(ptr ptr) @ cdecl wined3d_device_get_display_mode(ptr long ptr ptr) @ cdecl wined3d_device_get_domain_shader(ptr) @@ -167,6 +166,7 @@ @ cdecl wined3d_device_context_get_blend_state(ptr ptr ptr) @ cdecl wined3d_device_context_get_constant_buffer(ptr long long) @ cdecl wined3d_device_context_get_depth_stencil_state(ptr ptr) +@ cdecl wined3d_device_context_get_depth_stencil_view(ptr) @ cdecl wined3d_device_context_get_rasterizer_state(ptr) @ cdecl wined3d_device_context_get_rendertarget_view(ptr long) @ cdecl wined3d_device_context_get_sampler(ptr long long) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index fd9840379d3..61162819ede 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2385,7 +2385,8 @@ struct wined3d_shader_resource_view * __cdecl wined3d_device_get_cs_resource_vie struct wined3d_sampler * __cdecl wined3d_device_get_cs_sampler(const struct wined3d_device *device, unsigned int idx); struct wined3d_unordered_access_view * __cdecl wined3d_device_get_cs_uav(const struct wined3d_device *device, unsigned int idx); -struct wined3d_rendertarget_view * __cdecl wined3d_device_get_depth_stencil_view(const struct wined3d_device *device); +struct wined3d_rendertarget_view * __cdecl wined3d_device_context_get_depth_stencil_view( + const struct wined3d_device_context *context); HRESULT __cdecl wined3d_device_get_device_caps(const struct wined3d_device *device, struct wined3d_caps *caps); HRESULT __cdecl wined3d_device_get_display_mode(const struct wined3d_device *device, UINT swapchain_idx, struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation);