[PATCH vkd3d 4/4] vkd3d: Don't copy entire descriptor when destroying view.

Conor McCarthy cmccarthy at codeweavers.com
Tue Sep 21 01:00:10 CDT 2021


From: Philip Rebohle <philip.rebohle at tu-dortmund.de>
Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
---
 libs/vkd3d/resource.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/libs/vkd3d/resource.c b/libs/vkd3d/resource.c
index f3cbb684..8316138f 100644
--- a/libs/vkd3d/resource.c
+++ b/libs/vkd3d/resource.c
@@ -2121,16 +2121,14 @@ void vkd3d_view_decref(struct vkd3d_view *view, struct d3d12_device *device)
 void d3d12_desc_write_atomic(struct d3d12_desc *dst, const struct d3d12_desc *src,
         struct d3d12_device *device)
 {
-    struct d3d12_desc destroy_desc;
-
-    destroy_desc.u.view = NULL;
+    struct vkd3d_view *destroy_view = NULL;
 
     vkd3d_spinlock_acquire(&dst->spinlock);
 
     /* Nothing to do for VKD3D_DESCRIPTOR_MAGIC_CBV. */
     if ((dst->magic & VKD3D_DESCRIPTOR_MAGIC_HAS_VIEW)
             && !InterlockedDecrement(&dst->u.view->refcount))
-        destroy_desc = *dst;
+        destroy_view = dst->u.view;
 
     dst->magic = src->magic;
     dst->vk_descriptor_type = src->vk_descriptor_type;
@@ -2139,8 +2137,8 @@ void d3d12_desc_write_atomic(struct d3d12_desc *dst, const struct d3d12_desc *sr
     vkd3d_spinlock_release(&dst->spinlock);
 
     /* Destroy the view after unlocking to reduce wait time. */
-    if (destroy_desc.u.view)
-        vkd3d_view_destroy(destroy_desc.u.view, device);
+    if (destroy_view)
+        vkd3d_view_destroy(destroy_view, device);
 }
 
 static void d3d12_desc_destroy(struct d3d12_desc *descriptor, struct d3d12_device *device)
-- 
2.32.0




More information about the wine-devel mailing list