Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c	(revision 39648)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c	(revision 39649)
@@ -3682,4 +3682,7 @@
     IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface;
     RECT dst_rect, src_rect;
+#ifdef VBOX_WITH_WDDM
+    BOOL fNoRtInvolved = FALSE;
+#endif
 
     TRACE("(%p)->(%p,%p,%p,%08x,%p)\n", This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx);
@@ -3705,5 +3708,9 @@
         SrcSurface != myDevice->render_targets[0] && This != (IWineD3DSurfaceImpl *) myDevice->render_targets[0]) {
         TRACE("No surface is render target, not using hardware blit. Src = %p, dst = %p\n", Src, This);
+#ifdef VBOX_WITH_WDDM
+        fNoRtInvolved = TRUE;
+#else
         return WINED3DERR_INVALIDCALL;
+#endif
     }
 
@@ -3832,5 +3839,9 @@
     }
 
-    if((srcSwapchain || SrcSurface == myDevice->render_targets[0]) && !dstSwapchain) {
+    if(
+#ifdef VBOX_WITH_WDDM
+            fNoRtInvolved ||
+#endif
+            ((srcSwapchain || SrcSurface == myDevice->render_targets[0]) && !dstSwapchain)) {
         /* Blit from render target to texture */
         BOOL stretchx;
@@ -4338,7 +4349,10 @@
     }
 
+#ifndef VBOX_WITH_WDDM
     /* Special cases for RenderTargets */
     if( (This->resource.usage & WINED3DUSAGE_RENDERTARGET) ||
-        ( Src && (Src->resource.usage & WINED3DUSAGE_RENDERTARGET) )) {
+        ( Src && (Src->resource.usage & WINED3DUSAGE_RENDERTARGET) ))
+#endif
+    {
         if(IWineD3DSurfaceImpl_BltOverride(This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx, Filter) == WINED3D_OK)
         {
