Module: wine Branch: master Commit: ff30b54791bc61e32faf079ce3e3383decf8695f URL: https://gitlab.winehq.org/wine/wine/-/commit/ff30b54791bc61e32faf079ce3e3383...
Author: Zebediah Figura zfigura@codeweavers.com Date: Fri Dec 30 17:57:23 2022 -0600
d3d9: Use wined3d_texture_acquire_identity_srv().
---
dlls/d3d9/d3d9_private.h | 1 - dlls/d3d9/texture.c | 46 ++-------------------------------------------- 2 files changed, 2 insertions(+), 45 deletions(-)
diff --git a/dlls/d3d9/d3d9_private.h b/dlls/d3d9/d3d9_private.h index fcd82d2e674..a5f059c5aef 100644 --- a/dlls/d3d9/d3d9_private.h +++ b/dlls/d3d9/d3d9_private.h @@ -222,7 +222,6 @@ struct d3d9_texture struct list rtv_list; DWORD usage; BOOL flags; - struct wined3d_shader_resource_view *wined3d_srv; D3DTEXTUREFILTERTYPE autogen_filter_type; };
diff --git a/dlls/d3d9/texture.c b/dlls/d3d9/texture.c index a3a4dc41272..4de7d2eb99e 100644 --- a/dlls/d3d9/texture.c +++ b/dlls/d3d9/texture.c @@ -57,8 +57,6 @@ static ULONG d3d9_texture_decref(struct d3d9_texture *texture) struct d3d9_surface *surface;
wined3d_mutex_lock(); - if (texture->wined3d_srv) - wined3d_shader_resource_view_decref(texture->wined3d_srv); LIST_FOR_EACH_ENTRY(surface, &texture->rtv_list, struct d3d9_surface, rtv_entry) wined3d_rendertarget_view_decref(surface->wined3d_rtv); wined3d_texture_decref(d3d9_texture_get_draw_texture(texture)); @@ -92,56 +90,16 @@ static inline struct d3d9_texture *impl_from_IDirect3DVolumeTexture9(IDirect3DVo return CONTAINING_RECORD(iface, struct d3d9_texture, IDirect3DBaseTexture9_iface); }
-static void STDMETHODCALLTYPE srv_wined3d_object_destroyed(void *parent) -{ - struct d3d9_texture *texture = parent; - - texture->wined3d_srv = NULL; -} - -static const struct wined3d_parent_ops d3d9_srv_wined3d_parent_ops = -{ - srv_wined3d_object_destroyed, -}; - -/* wined3d critical section must be taken by the caller. */ -static struct wined3d_shader_resource_view *d3d9_texture_acquire_shader_resource_view(struct d3d9_texture *texture) -{ - struct wined3d_sub_resource_desc sr_desc; - struct wined3d_view_desc desc; - HRESULT hr; - - if (texture->wined3d_srv) - return texture->wined3d_srv; - - wined3d_texture_get_sub_resource_desc(texture->wined3d_texture, 0, &sr_desc); - desc.format_id = sr_desc.format; - desc.flags = 0; - desc.u.texture.level_idx = 0; - desc.u.texture.level_count = wined3d_texture_get_level_count(texture->wined3d_texture); - desc.u.texture.layer_idx = 0; - desc.u.texture.layer_count = sr_desc.usage & WINED3DUSAGE_LEGACY_CUBEMAP ? 6 : 1; - if (FAILED(hr = wined3d_shader_resource_view_create(&desc, - wined3d_texture_get_resource(d3d9_texture_get_draw_texture(texture)), texture, - &d3d9_srv_wined3d_parent_ops, &texture->wined3d_srv))) - { - ERR("Failed to create shader resource view, hr %#lx.\n", hr); - return NULL; - } - - return texture->wined3d_srv; -} - /* wined3d critical section must be taken by the caller. */ void d3d9_texture_gen_auto_mipmap(struct d3d9_texture *texture) { if (!(texture->flags & D3D9_TEXTURE_MIPMAP_DIRTY)) return; - d3d9_texture_acquire_shader_resource_view(texture); if (texture->draw_texture) wined3d_device_update_texture(texture->parent_device->wined3d_device, texture->wined3d_texture, texture->draw_texture); - wined3d_device_context_generate_mipmaps(texture->parent_device->immediate_context, texture->wined3d_srv); + wined3d_device_context_generate_mipmaps(texture->parent_device->immediate_context, + wined3d_texture_acquire_identity_srv(d3d9_texture_get_draw_texture(texture))); texture->flags &= ~D3D9_TEXTURE_MIPMAP_DIRTY; }