[PATCH v2 3/7] wined3d: Move the "users" field to a common wined3d_bo structure.

Zebediah Figura zfigura at codeweavers.com
Tue Oct 12 16:15:44 CDT 2021


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 dlls/wined3d/adapter_vk.c      |  8 ++++----
 dlls/wined3d/buffer.c          |  4 ++--
 dlls/wined3d/context_gl.c      | 10 +++++-----
 dlls/wined3d/context_vk.c      |  4 ++--
 dlls/wined3d/view.c            |  8 ++++----
 dlls/wined3d/wined3d_private.h | 11 +++++++++--
 6 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index 5667cd8d0d3..fe738a4bcaa 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -939,13 +939,13 @@ static void *adapter_vk_map_bo_address(struct wined3d_context *context,
         if (wined3d_context_vk_create_bo(context_vk, bo->size, bo->usage, bo->memory_type, &tmp))
         {
             bool host_synced = bo->host_synced;
-            list_move_head(&tmp.users, &bo->users);
+            list_move_head(&tmp.b.users, &bo->b.users);
             wined3d_context_vk_destroy_bo(context_vk, bo);
             *bo = tmp;
             bo->host_synced = host_synced;
-            list_init(&bo->users);
-            list_move_head(&bo->users, &tmp.users);
-            LIST_FOR_EACH_ENTRY(bo_user, &bo->users, struct wined3d_bo_user, entry)
+            list_init(&bo->b.users);
+            list_move_head(&bo->b.users, &tmp.b.users);
+            LIST_FOR_EACH_ENTRY(bo_user, &bo->b.users, struct wined3d_bo_user, entry)
             {
                 bo_user->valid = false;
             }
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 3ea3bf4b180..e1a5ec26c29 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -193,7 +193,7 @@ static BOOL wined3d_buffer_gl_create_buffer_object(struct wined3d_buffer_gl *buf
         return FALSE;
     }
 
-    list_add_head(&buffer_gl->bo.users, &buffer_gl->bo_user.entry);
+    list_add_head(&buffer_gl->bo.b.users, &buffer_gl->bo_user.entry);
     buffer_gl->b.buffer_object = (uintptr_t)bo;
     buffer_invalidate_bo_range(&buffer_gl->b, 0, 0);
 
@@ -1429,7 +1429,7 @@ static BOOL wined3d_buffer_vk_create_buffer_object(struct wined3d_buffer_vk *buf
     }
 
     list_init(&buffer_vk->bo_user.entry);
-    list_add_head(&buffer_vk->bo.users, &buffer_vk->bo_user.entry);
+    list_add_head(&buffer_vk->bo.b.users, &buffer_vk->bo_user.entry);
     buffer_vk->b.buffer_object = (uintptr_t)&buffer_vk->bo;
     buffer_invalidate_bo_range(&buffer_vk->b, 0, 0);
 
diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c
index 0e4b900efe0..55782f1ba8e 100644
--- a/dlls/wined3d/context_gl.c
+++ b/dlls/wined3d/context_gl.c
@@ -2686,12 +2686,12 @@ static void *wined3d_bo_gl_map(struct wined3d_bo_gl *bo,
         if (wined3d_context_gl_create_bo(context_gl, bo->size,
                 bo->binding, bo->usage, bo->coherent, bo->flags, &tmp))
         {
-            list_move_head(&tmp.users, &bo->users);
+            list_move_head(&tmp.b.users, &bo->b.users);
             wined3d_context_gl_destroy_bo(context_gl, bo);
             *bo = tmp;
-            list_init(&bo->users);
-            list_move_head(&bo->users, &tmp.users);
-            LIST_FOR_EACH_ENTRY(bo_user, &bo->users, struct wined3d_bo_user, entry)
+            list_init(&bo->b.users);
+            list_move_head(&bo->b.users, &tmp.b.users);
+            LIST_FOR_EACH_ENTRY(bo_user, &bo->b.users, struct wined3d_bo_user, entry)
             {
                 bo_user->valid = false;
             }
@@ -2887,7 +2887,7 @@ bool wined3d_context_gl_create_bo(struct wined3d_context_gl *context_gl, GLsizei
     bo->usage = usage;
     bo->flags = flags;
     bo->coherent = coherent;
-    list_init(&bo->users);
+    list_init(&bo->b.users);
     bo->command_fence_id = 0;
 
     return true;
diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c
index 8f0751785ad..efb079899c7 100644
--- a/dlls/wined3d/context_vk.c
+++ b/dlls/wined3d/context_vk.c
@@ -413,7 +413,7 @@ static bool wined3d_context_vk_create_slab_bo(struct wined3d_context_vk *context
     bo->buffer_offset = idx * object_size;
     bo->memory_offset = slab->bo.memory_offset + bo->buffer_offset;
     bo->size = size;
-    list_init(&bo->users);
+    list_init(&bo->b.users);
     bo->command_buffer_id = 0;
     bo->host_synced = false;
 
@@ -492,7 +492,7 @@ BOOL wined3d_context_vk_create_bo(struct wined3d_context_vk *context_vk, VkDevic
     bo->size = size;
     bo->usage = usage;
     bo->memory_type = adapter_vk->memory_properties.memoryTypes[memory_type_idx].propertyFlags;
-    list_init(&bo->users);
+    list_init(&bo->b.users);
     bo->command_buffer_id = 0;
     bo->slab = NULL;
     bo->host_synced = false;
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
index 565d35d1c5a..a8b3a7b4f75 100644
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -966,7 +966,7 @@ static void wined3d_shader_resource_view_gl_cs_init(void *object)
         context = context_acquire(resource->device, NULL, 0);
         create_buffer_view(&view_gl->gl_view, context, desc, buffer, view_format);
         view_gl->bo_user.valid = true;
-        list_add_head(&wined3d_buffer_gl(buffer)->bo.users, &view_gl->bo_user.entry);
+        list_add_head(&wined3d_buffer_gl(buffer)->bo.b.users, &view_gl->bo_user.entry);
         context_release(context);
     }
     else
@@ -1096,7 +1096,7 @@ static void wined3d_shader_resource_view_vk_cs_init(void *object)
 
         srv_vk->view_vk.u.vk_buffer_view = vk_buffer_view;
         srv_vk->view_vk.bo_user.valid = true;
-        list_add_head(&buffer_vk->bo.users, &srv_vk->view_vk.bo_user.entry);
+        list_add_head(&buffer_vk->bo.b.users, &srv_vk->view_vk.bo_user.entry);
 
         return;
     }
@@ -1646,7 +1646,7 @@ static void wined3d_unordered_access_view_gl_cs_init(void *object)
         context_gl = wined3d_context_gl(context_acquire(resource->device, NULL, 0));
         create_buffer_view(&view_gl->gl_view, &context_gl->c, desc, buffer, view_gl->v.format);
         view_gl->bo_user.valid = true;
-        list_add_head(&wined3d_buffer_gl(buffer)->bo.users, &view_gl->bo_user.entry);
+        list_add_head(&wined3d_buffer_gl(buffer)->bo.b.users, &view_gl->bo_user.entry);
         if (desc->flags & (WINED3D_VIEW_BUFFER_COUNTER | WINED3D_VIEW_BUFFER_APPEND))
         {
             struct wined3d_bo_gl *bo = &view_gl->counter_bo;
@@ -2196,7 +2196,7 @@ static void wined3d_unordered_access_view_vk_cs_init(void *object)
 
             uav_vk->view_vk.u.vk_buffer_view = vk_buffer_view;
             uav_vk->view_vk.bo_user.valid = true;
-            list_add_head(&buffer_vk->bo.users, &view_vk->bo_user.entry);
+            list_add_head(&buffer_vk->bo.b.users, &view_vk->bo_user.entry);
         }
 
         if (desc->flags & (WINED3D_VIEW_BUFFER_COUNTER | WINED3D_VIEW_BUFFER_APPEND))
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 0884ba5c023..ab262e3425c 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1588,8 +1588,15 @@ do {                                                                \
 #define checkGLcall(A) do {} while(0)
 #endif
 
+struct wined3d_bo
+{
+    struct list users;
+};
+
 struct wined3d_bo_gl
 {
+    struct wined3d_bo b;
+
     GLuint id;
     GLsizeiptr size;
     GLenum binding;
@@ -1597,7 +1604,6 @@ struct wined3d_bo_gl
 
     GLbitfield flags;
     bool coherent;
-    struct list users;
     uint64_t command_fence_id;
 };
 
@@ -1614,6 +1620,8 @@ struct wined3d_bo_user
 
 struct wined3d_bo_vk
 {
+    struct wined3d_bo b;
+
     VkBuffer vk_buffer;
     struct wined3d_allocator_block *memory;
     struct wined3d_bo_slab_vk *slab;
@@ -1627,7 +1635,6 @@ struct wined3d_bo_vk
     VkBufferUsageFlags usage;
     VkMemoryPropertyFlags memory_type;
 
-    struct list users;
     uint64_t command_buffer_id;
     bool host_synced;
 };
-- 
2.33.0




More information about the wine-devel mailing list