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