=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: wined3d: Prevent blits to surfaces that will be converted.

Alexandre Julliard julliard at winehq.org
Thu Jan 16 14:52:28 CST 2014


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Wed Jan 15 22:02:17 2014 +0100

wined3d: Prevent blits to surfaces that will be converted.

---

 dlls/wined3d/surface.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index ec9f586..015478f 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -6032,6 +6032,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
     DWORD src_ds_flags, dst_ds_flags;
     RECT src_rect, dst_rect;
     BOOL scale, convert;
+    enum wined3d_conversion_type dst_convert_type;
+    struct wined3d_format dst_conv_fmt;
 
     static const DWORD simple_blit = WINEDDBLT_ASYNC
             | WINEDDBLT_COLORFILL
@@ -6146,7 +6148,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
     /* We want to avoid invalidating the sysmem location for converted
      * surfaces, since otherwise we'd have to convert the data back when
      * locking them. */
-    if (dst_surface->flags & SFLAG_CONVERTED)
+    d3dfmt_get_conv(dst_surface, TRUE, TRUE, &dst_conv_fmt, &dst_convert_type);
+    if (dst_convert_type != WINED3D_CT_NONE || dst_conv_fmt.convert || dst_surface->flags & SFLAG_CONVERTED)
     {
         WARN_(d3d_perf)("Converted surface, using CPU blit.\n");
         goto cpu;




More information about the wine-cvs mailing list