Henri Verbeet : wined3d: Check rectangle alignment in wined3d_surface_blt( ).

Alexandre Julliard julliard at winehq.org
Mon Mar 6 15:25:07 CST 2017


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Mon Mar  6 10:45:25 2017 +0100

wined3d: Check rectangle alignment in wined3d_surface_blt().

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

---

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

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 51200d2..12ec0de 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3183,22 +3183,6 @@ static HRESULT surface_cpu_blt(struct wined3d_texture *dst_texture, unsigned int
             goto release;
         }
 
-        if (!wined3d_texture_check_block_align(src_texture,
-                src_sub_resource_idx % src_texture->level_count, src_box))
-        {
-            WARN("Source rectangle not block-aligned.\n");
-            hr = WINED3DERR_INVALIDCALL;
-            goto release;
-        }
-
-        if (!wined3d_texture_check_block_align(dst_texture,
-                dst_sub_resource_idx % dst_texture->level_count, dst_box))
-        {
-            WARN("Destination rectangle not block-aligned.\n");
-            hr = WINED3DERR_INVALIDCALL;
-            goto release;
-        }
-
         hr = surface_cpu_blt_compressed(sbase, dbuf,
                 src_map.row_pitch, dst_map.row_pitch, dst_width, dst_height,
                 src_format, flags, fx);
@@ -3684,6 +3668,14 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
         return WINEDDERR_INVALIDRECT;
     }
 
+    if ((dst_texture->resource.format_flags & WINED3DFMT_FLAG_BLOCKS)
+            && !wined3d_texture_check_block_align(dst_texture,
+            dst_sub_resource_idx % dst_texture->level_count, &dst_box))
+    {
+        WARN("Destination rectangle not block-aligned.\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
     if (src_texture)
     {
         src_w = wined3d_texture_get_level_width(src_texture, src_surface->texture_level);
@@ -3696,6 +3688,14 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
             WARN("The application gave us a bad source rectangle.\n");
             return WINEDDERR_INVALIDRECT;
         }
+
+        if ((src_texture->resource.format_flags & WINED3DFMT_FLAG_BLOCKS)
+                && !wined3d_texture_check_block_align(src_texture,
+                src_sub_resource_idx % src_texture->level_count, &src_box))
+        {
+            WARN("Source rectangle not block-aligned.\n");
+            return WINED3DERR_INVALIDCALL;
+        }
     }
 
     if (!fx || !(fx->fx))




More information about the wine-cvs mailing list