[PATCH 4/6] wined3d: Clean up fallback paths in wined3d_surface_blt().

Matteo Bruni mbruni at codeweavers.com
Tue Aug 13 15:02:11 CDT 2019


Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
wined3d_texture_blt_special() doesn't actually support any blit
flag (even worse, it entirely ignores most of them).

 dlls/wined3d/surface.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 99ee1a4addf..23dc2290480 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -2939,14 +2939,14 @@ HRESULT texture2d_blt(struct wined3d_texture *dst_texture, unsigned int dst_sub_
 
     if (!device->d3d_initialized)
     {
-        WARN("D3D not initialized, using fallback.\n");
+        WARN("D3D not initialized, using CPU blit fallback.\n");
         goto cpu;
     }
 
     if (flags & ~simple_blit)
     {
-        WARN_(d3d_perf)("Using fallback for complex blit (%#x).\n", flags);
-        goto fallback;
+        WARN_(d3d_perf)("Using CPU fallback for complex blit (%#x).\n", flags);
+        goto cpu;
     }
 
     src_swapchain = src_texture->swapchain;
@@ -2960,7 +2960,9 @@ HRESULT texture2d_blt(struct wined3d_texture *dst_texture, unsigned int dst_sub_
     if (src_swapchain && dst_swapchain && src_swapchain != dst_swapchain)
     {
         FIXME("Using fallback for cross-swapchain blit.\n");
-        goto fallback;
+        if (SUCCEEDED(wined3d_texture_blt_special(dst_texture, dst_sub_resource_idx, &dst_rect,
+                src_texture, src_sub_resource_idx, &src_rect, flags, fx, filter)))
+            return WINED3D_OK;
     }
 
     scale = src_box->right - src_box->left != dst_box->right - dst_box->left
@@ -3121,12 +3123,6 @@ HRESULT texture2d_blt(struct wined3d_texture *dst_texture, unsigned int dst_sub_
 
     return WINED3D_OK;
 
-fallback:
-    /* Special cases for render targets. */
-    if (SUCCEEDED(wined3d_texture_blt_special(dst_texture, dst_sub_resource_idx, &dst_rect,
-            src_texture, src_sub_resource_idx, &src_rect, flags, fx, filter)))
-        return WINED3D_OK;
-
 cpu:
     return surface_cpu_blt(dst_texture, dst_sub_resource_idx, dst_box,
             src_texture, src_sub_resource_idx, src_box, flags, fx, filter);
-- 
2.21.0




More information about the wine-devel mailing list