Henri Verbeet : wined3d: Introduce a structure for Vulkan context information.

Alexandre Julliard julliard at winehq.org
Thu Aug 8 19:27:19 CDT 2019


Module: wine
Branch: master
Commit: f654f983fa388f77fc2940f7c80fbb67fca28c2c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f654f983fa388f77fc2940f7c80fbb67fca28c2c

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Aug  8 03:35:05 2019 +0430

wined3d: Introduce a structure for Vulkan context information.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/adapter_vk.c      | 35 +++++++++--------------------------
 dlls/wined3d/context.c         |  9 +++++++--
 dlls/wined3d/wined3d_private.h | 25 ++++++++++++++++++++++++-
 3 files changed, 40 insertions(+), 29 deletions(-)

diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index a309847..50f173f 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -24,23 +24,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3d);
 
-struct wined3d_device_vk
-{
-    struct wined3d_device d;
-
-    struct wined3d_context context_vk;
-
-    VkDevice vk_device;
-    VkQueue vk_queue;
-
-    struct wined3d_vk_info vk_info;
-};
-
-static inline struct wined3d_device_vk *wined3d_device_vk(struct wined3d_device *device)
-{
-    return CONTAINING_RECORD(device, struct wined3d_device_vk, d);
-}
-
 static inline const struct wined3d_adapter_vk *wined3d_adapter_vk_const(const struct wined3d_adapter *adapter)
 {
     return CONTAINING_RECORD(adapter, struct wined3d_adapter_vk, a);
@@ -300,7 +283,7 @@ struct wined3d_context *adapter_vk_acquire_context(struct wined3d_device *device
     if (!device->context_count)
         return NULL;
 
-    return &wined3d_device_vk(device)->context_vk;
+    return &wined3d_device_vk(device)->context_vk.c;
 }
 
 void adapter_vk_release_context(struct wined3d_context *context)
@@ -416,8 +399,8 @@ static BOOL adapter_vk_check_format(const struct wined3d_adapter *adapter,
 
 static HRESULT adapter_vk_init_3d(struct wined3d_device *device)
 {
+    struct wined3d_context_vk *context_vk;
     struct wined3d_device_vk *device_vk;
-    struct wined3d_context *context_vk;
     HRESULT hr;
 
     TRACE("device %p.\n", device);
@@ -430,10 +413,10 @@ static HRESULT adapter_vk_init_3d(struct wined3d_device *device)
         return hr;
     }
 
-    if (!device_context_add(device, context_vk))
+    if (!device_context_add(device, &context_vk->c))
     {
         ERR("Failed to add the newly created context to the context list.\n");
-        wined3d_context_cleanup(context_vk);
+        wined3d_context_vk_cleanup(context_vk);
         return E_FAIL;
     }
 
@@ -442,8 +425,8 @@ static HRESULT adapter_vk_init_3d(struct wined3d_device *device)
     if (!(device_vk->d.blitter = wined3d_cpu_blitter_create()))
     {
         ERR("Failed to create CPU blitter.\n");
-        device_context_remove(device, context_vk);
-        wined3d_context_cleanup(context_vk);
+        device_context_remove(device, &context_vk->c);
+        wined3d_context_vk_cleanup(context_vk);
         return E_FAIL;
     }
 
@@ -452,15 +435,15 @@ static HRESULT adapter_vk_init_3d(struct wined3d_device *device)
 
 static void adapter_vk_uninit_3d(struct wined3d_device *device)
 {
-    struct wined3d_context *context_vk;
+    struct wined3d_context_vk *context_vk;
 
     TRACE("device %p.\n", device);
 
     device->blitter->ops->blitter_destroy(device->blitter, NULL);
 
     context_vk = &wined3d_device_vk(device)->context_vk;
-    device_context_remove(device, context_vk);
-    wined3d_context_cleanup(context_vk);
+    device_context_remove(device, &context_vk->c);
+    wined3d_context_vk_cleanup(context_vk);
 }
 
 static HRESULT adapter_vk_create_swapchain(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 2509d90..8a6cd5c 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -1493,6 +1493,11 @@ static void wined3d_context_gl_cleanup(struct wined3d_context_gl *context_gl)
     wined3d_context_cleanup(&context_gl->c);
 }
 
+void wined3d_context_vk_cleanup(struct wined3d_context_vk *context_vk)
+{
+    wined3d_context_cleanup(&context_vk->c);
+}
+
 DWORD context_get_tls_idx(void)
 {
     return wined3d_context_tls_idx;
@@ -2295,11 +2300,11 @@ fail:
     return E_FAIL;
 }
 
-HRESULT wined3d_context_vk_init(struct wined3d_context *context_vk, struct wined3d_swapchain *swapchain)
+HRESULT wined3d_context_vk_init(struct wined3d_context_vk *context_vk, struct wined3d_swapchain *swapchain)
 {
     TRACE("context_vk %p, swapchain %p.\n", context_vk, swapchain);
 
-    wined3d_context_init(context_vk, swapchain);
+    wined3d_context_init(&context_vk->c, swapchain);
 
     return WINED3D_OK;
 }
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index e63d5e6..00ed6dc 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2127,7 +2127,13 @@ void wined3d_context_gl_unmap_bo_address(struct wined3d_context_gl *context_gl,
 void wined3d_context_gl_update_stream_sources(struct wined3d_context_gl *context_gl,
         const struct wined3d_state *state) DECLSPEC_HIDDEN;
 
-HRESULT wined3d_context_vk_init(struct wined3d_context *context_vk,
+struct wined3d_context_vk
+{
+    struct wined3d_context c;
+};
+
+void wined3d_context_vk_cleanup(struct wined3d_context_vk *context_vk) DECLSPEC_HIDDEN;
+HRESULT wined3d_context_vk_init(struct wined3d_context_vk *context_vk,
         struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
 
 typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id);
@@ -3287,6 +3293,23 @@ static inline struct wined3d_device_gl *wined3d_device_gl(struct wined3d_device
     return CONTAINING_RECORD(device, struct wined3d_device_gl, d);
 }
 
+struct wined3d_device_vk
+{
+    struct wined3d_device d;
+
+    struct wined3d_context_vk context_vk;
+
+    VkDevice vk_device;
+    VkQueue vk_queue;
+
+    struct wined3d_vk_info vk_info;
+};
+
+static inline struct wined3d_device_vk *wined3d_device_vk(struct wined3d_device *device)
+{
+    return CONTAINING_RECORD(device, struct wined3d_device_vk, d);
+}
+
 static inline BOOL isStateDirty(const struct wined3d_context *context, unsigned int state_id)
 {
     unsigned int idx = state_id / (sizeof(*context->dirty_graphics_states) * CHAR_BIT);




More information about the wine-cvs mailing list