wined3d: Prevent blits to surfaces that will be converted.

This commit is contained in:
Stefan Dösinger 2014-01-15 22:02:17 +01:00 committed by Alexandre Julliard
parent 09dbba00d0
commit 65bc678fcc
1 changed files with 4 additions and 1 deletions

View File

@ -6032,6 +6032,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
DWORD src_ds_flags, dst_ds_flags; DWORD src_ds_flags, dst_ds_flags;
RECT src_rect, dst_rect; RECT src_rect, dst_rect;
BOOL scale, convert; BOOL scale, convert;
enum wined3d_conversion_type dst_convert_type;
struct wined3d_format dst_conv_fmt;
static const DWORD simple_blit = WINEDDBLT_ASYNC static const DWORD simple_blit = WINEDDBLT_ASYNC
| WINEDDBLT_COLORFILL | 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 /* We want to avoid invalidating the sysmem location for converted
* surfaces, since otherwise we'd have to convert the data back when * surfaces, since otherwise we'd have to convert the data back when
* locking them. */ * 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"); WARN_(d3d_perf)("Converted surface, using CPU blit.\n");
goto cpu; goto cpu;