Henri Verbeet : wined3d: Create a blitter for the Vulkan adapter.

Alexandre Julliard julliard at winehq.org
Thu Jun 6 17:05:19 CDT 2019


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Jun  6 17:39:08 2019 +0430

wined3d: Create a blitter for the Vulkan adapter.

The CPU blitter isn't the fastest, but it should work.

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

---

 dlls/wined3d/adapter_vk.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index 0009818..0dc6458 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -416,12 +416,14 @@ static BOOL adapter_vk_check_format(const struct wined3d_adapter *adapter,
 
 static HRESULT adapter_vk_init_3d(struct wined3d_device *device)
 {
+    struct wined3d_device_vk *device_vk;
     struct wined3d_context *context_vk;
     HRESULT hr;
 
     TRACE("device %p.\n", device);
 
-    context_vk = &wined3d_device_vk(device)->context_vk;
+    device_vk = wined3d_device_vk(device);
+    context_vk = &device_vk->context_vk;
     if (FAILED(hr = wined3d_context_vk_init(context_vk, device->swapchains[0])))
     {
         WARN("Failed to initialise context.\n");
@@ -437,6 +439,14 @@ static HRESULT adapter_vk_init_3d(struct wined3d_device *device)
 
     TRACE("Initialised context %p.\n", context_vk);
 
+    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);
+        return E_FAIL;
+    }
+
     return WINED3D_OK;
 }
 
@@ -446,6 +456,8 @@ static void adapter_vk_uninit_3d(struct wined3d_device *device)
 
     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);




More information about the wine-cvs mailing list