Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPVidModes.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPVidModes.cpp	(revision 51942)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPVidModes.cpp	(revision 51943)
@@ -277,6 +277,13 @@
 #else
     ULONG vramSize = vboxWddmVramCpuVisibleSegmentSize(pExt);
-    /* at least two surfaces will be needed: primary & shadow */
-    vramSize /= 2 * pExt->u.primary.commonInfo.cDisplays;
+    vramSize /= pExt->u.primary.commonInfo.cDisplays;
+# ifdef VBOX_WDDM_WIN8
+    if (!g_VBoxDisplayOnly)
+# endif
+    {
+        /* at least two surfaces will be needed: primary & shadow */
+        vramSize /= 2;
+    }
+    vramSize &= ~PAGE_OFFSET_MASK;
 #endif
 
@@ -605,4 +612,5 @@
         vramSize /= 2;
     }
+    vramSize &= ~PAGE_OFFSET_MASK;
 #endif
 
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp	(revision 51942)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp	(revision 51943)
@@ -2072,24 +2072,15 @@
 }
 
-void vboxWddmDmAdjustDefaultVramLocations(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID ModifiedVidPnSourceId, VBOXWDDM_SOURCE *paSources)
+void vboxWddmDmSetupDefaultVramLocation(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID ModifiedVidPnSourceId, VBOXWDDM_SOURCE *paSources)
 {
     PVBOXWDDM_SOURCE pSource = &paSources[ModifiedVidPnSourceId];
-    PHYSICAL_ADDRESS PhAddr;
-    AssertRelease(pSource->AllocData.Addr.SegmentId);
-    AssertRelease(pSource->AllocData.Addr.offVram != VBOXVIDEOOFFSET_VOID);
-    PhAddr.QuadPart = pSource->AllocData.Addr.offVram;
-
-    for (UINT i = ModifiedVidPnSourceId + 1; i < (UINT)VBoxCommonFromDeviceExt(pDevExt)->cDisplays; ++i)
-    {
-        /* increaze the phaddr based on the previous source size info */
-        PhAddr.QuadPart += pSource->AllocData.SurfDesc.cbSize;
-        PhAddr.QuadPart = ROUND_TO_PAGES(PhAddr.QuadPart);
-        pSource = &paSources[i];
-        if (pSource->AllocData.Addr.offVram != PhAddr.QuadPart
-                || pSource->AllocData.Addr.SegmentId != 1)
-            pSource->u8SyncState &= ~VBOXWDDM_HGSYNC_F_SYNCED_LOCATION;
-        pSource->AllocData.Addr.SegmentId = 1;
-        pSource->AllocData.Addr.offVram = PhAddr.QuadPart;
-    }
+    AssertRelease(g_VBoxDisplayOnly);
+    ULONG offVram = vboxWddmVramCpuVisibleSegmentSize(pDevExt);
+    offVram /= VBoxCommonFromDeviceExt(pDevExt)->cDisplays;
+    offVram &= ~PAGE_OFFSET_MASK;
+    offVram *= ModifiedVidPnSourceId;
+
+    if (vboxWddmAddrSetVram(&pSource->AllocData.Addr, 1, offVram))
+        pSource->u8SyncState &= ~VBOXWDDM_HGSYNC_F_SYNCED_LOCATION;
 }
 #endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.h	(revision 51942)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.h	(revision 51943)
@@ -185,5 +185,5 @@
 void vboxWddmDiInitDefault(DXGK_DISPLAY_INFORMATION *pInfo, PHYSICAL_ADDRESS PhAddr, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId);
 void vboxWddmDiToAllocData(PVBOXMP_DEVEXT pDevExt, const DXGK_DISPLAY_INFORMATION *pInfo, struct VBOXWDDM_ALLOC_DATA *pAllocData);
-void vboxWddmDmAdjustDefaultVramLocations(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID ModifiedVidPnSourceId, struct VBOXWDDM_SOURCE *paSources);
+void vboxWddmDmSetupDefaultVramLocation(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID ModifiedVidPnSourceId, struct VBOXWDDM_SOURCE *paSources);
 #endif
 
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp	(revision 51942)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp	(revision 51943)
@@ -2224,5 +2224,5 @@
         if (g_VBoxDisplayOnly)
         {
-            vboxWddmDmAdjustDefaultVramLocations(pDevExt, VidPnSourceId, paSources);
+            vboxWddmDmSetupDefaultVramLocation(pDevExt, VidPnSourceId, paSources);
         }
 #endif
@@ -2235,5 +2235,10 @@
     }
 
-    vboxWddmAssignPrimary(pSource, pAllocation, VidPnSourceId);
+#ifdef VBOX_WDDM_WIN8
+    if (!g_VBoxDisplayOnly)
+        vboxWddmAssignPrimary(pSource, pAllocation, VidPnSourceId);
+    else
+        Assert(!pAllocation);
+#endif
 
     Assert(pSource->AllocData.SurfDesc.VidPnSourceId == VidPnSourceId);
