Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/directx.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/directx.c	(revision 40961)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/directx.c	(revision 40962)
@@ -906,4 +906,17 @@
 #endif
 
+static BOOL match_intel(const struct wined3d_gl_info *gl_info, const char *gl_renderer,
+        enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
+{
+    if (card_vendor == HW_VENDOR_INTEL) return TRUE;
+    if (gl_vendor == HW_VENDOR_INTEL) return TRUE;
+    return FALSE;
+}
+
+static void quirk_force_blit(struct wined3d_gl_info *gl_info)
+{
+    gl_info->quirks |= WINED3D_QUIRK_FORCE_BLIT;
+}
+
 struct driver_quirk
 {
@@ -997,9 +1010,14 @@
 #ifdef VBOX_WITH_WDDM
     {
-            match_mesa_nvidia,
-            quirk_no_shader_3,
-            "disable shader 3 support"
+        match_mesa_nvidia,
+        quirk_no_shader_3,
+        "disable shader 3 support"
     },
 #endif
+    {
+        match_intel,
+        quirk_force_blit,
+        "force framebuffer blit when possible"
+    }
 };
 
@@ -1262,5 +1280,9 @@
             || strstr(gl_renderer, "Intel(R)")
             || strstr(gl_vendor_string, "Intel Inc."))
+    {
+        if (strstr(gl_renderer, "Mesa"))
+            return GL_VENDOR_MESA;
         return GL_VENDOR_INTEL;
+    }
 
     if (strstr(gl_vendor_string, "Mesa")
@@ -1983,11 +2005,19 @@
 }
 
+static enum wined3d_pci_device select_card_intel_cmn(const struct wined3d_gl_info *gl_info,
+        const char *gl_renderer, unsigned int *vidmem)
+{
+    if (strstr(gl_renderer, "HD Graphics")
+            || strstr(gl_renderer, "Sandybridge"))
+        return CARD_INTEL_SBHD;
+    FIXME_(d3d_caps)("Card selection not handled for Windows Intel driver\n");
+    return CARD_INTEL_I915G;
+}
+
 static enum wined3d_pci_device select_card_intel_mesa(const struct wined3d_gl_info *gl_info,
         const char *gl_renderer, unsigned int *vidmem)
 {
-    FIXME_(d3d_caps)("Card selection not handled for Mesa Intel driver\n");
-    return CARD_INTEL_I915G;
-}
-
+    return select_card_intel_cmn(gl_info, gl_renderer, vidmem);
+}
 
 struct vendor_card_selection
@@ -2009,5 +2039,6 @@
     {GL_VENDOR_MESA,   HW_VENDOR_ATI,     "Mesa AMD/ATI driver",      select_card_ati_mesa},
     {GL_VENDOR_MESA,   HW_VENDOR_NVIDIA,  "Mesa Nouveau driver",      select_card_nvidia_mesa},
-    {GL_VENDOR_MESA,   HW_VENDOR_INTEL,   "Mesa Intel driver",        select_card_intel_mesa}
+    {GL_VENDOR_MESA,   HW_VENDOR_INTEL,   "Mesa Intel driver",        select_card_intel_mesa},
+    {GL_VENDOR_INTEL,  HW_VENDOR_INTEL,   "Windows Intel binary driver",  select_card_intel_cmn}
 };
 
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c	(revision 40961)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c	(revision 40962)
@@ -3925,6 +3925,9 @@
            )
         {
-            /* blit framebuffer might be buggy for some GPUs, try if fb_copy_to_texture_direct can do it quickly */
-            if (!fb_copy_to_texture_direct(This, SrcSurface, &src_rect, &dst_rect, Filter, TRUE /* fast only */))
+            /* blit framebuffer might be buggy for some NVIDIA GPUs,
+             * on the contrary some Intel GPUs fail glCopyTexSubImage2D for some reason,
+             * check if we can use fb_copy_to_texture_direct and try if it can do it quickly */
+            if ((myDevice->adapter->gl_info.quirks & WINED3D_QUIRK_FORCE_BLIT)
+                    || !fb_copy_to_texture_direct(This, SrcSurface, &src_rect, &dst_rect, Filter, TRUE /* fast only */))
             {
                 TRACE("fb_copy_to_texture_direct can not do it fast, use stretch_rect_fbo\n");
@@ -5381,5 +5384,5 @@
         }
 
-        IWineD3DBaseTexture_Release(texture);
+        IWineD3DBaseTexture_Release((IWineD3DBaseTexture*)texture);
     }
 
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private.h	(revision 40961)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private.h	(revision 40962)
@@ -81,4 +81,5 @@
 #define WINED3D_QUIRK_FBO_TEX_UPDATE            0x00000020
 #define WINED3D_QUIRK_FULLSIZE_BLIT             0x00000040
+#define WINED3D_QUIRK_FORCE_BLIT                0x00000080
 
 /* Texture format fixups */
@@ -1441,4 +1442,5 @@
     CARD_INTEL_I945GM               = 0x27a2, /* Same as GMA 950? */
     CARD_INTEL_X3100                = 0x2a02, /* Found in Macs. Same as GMA 965? */
+    CARD_INTEL_SBHD                 = 0x0126, /* SundyBridge HD */
 };
 
