Index: trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp
===================================================================
--- trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp	(revision 42226)
+++ trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp	(revision 42228)
@@ -1319,5 +1319,4 @@
                         {
                             Status = pNewVidPnTargetModeSetInterface->pfnAddMode(hNewVidPnTargetModeSet, pNewVidPnTargetModeInfo);
-                            Assert(Status == STATUS_SUCCESS);
                             if (NT_SUCCESS(Status))
                             {
@@ -1326,12 +1325,8 @@
                             }
                             else
-                            {
                                 WARN(("pfnAddMode failed, Status 0x%x", Status));
-                            }
                         }
                         else
-                        {
                             WARN(("vboxVidPnPopulateTargetModeInfoFromLegacy failed, Status 0x%x", Status));
-                        }
 
                         NTSTATUS tmpStatus = pNewVidPnTargetModeSetInterface->pfnReleaseModeInfo(hNewVidPnTargetModeSet, pNewVidPnTargetModeInfo);
@@ -1451,5 +1446,4 @@
                     D3DKMDT_VIDPN_SOURCE_MODE *pNewVidPnSourceModeInfo;
                     Status = pNewVidPnSourceModeSetInterface->pfnCreateNewModeInfo(hNewVidPnSourceModeSet, &pNewVidPnSourceModeInfo);
-                    Assert(Status == STATUS_SUCCESS);
                     if (NT_SUCCESS(Status))
                     {
@@ -1459,5 +1453,4 @@
                         {
                             Status = pNewVidPnSourceModeSetInterface->pfnAddMode(hNewVidPnSourceModeSet, pNewVidPnSourceModeInfo);
-                            Assert(Status == STATUS_SUCCESS);
                             if (NT_SUCCESS(Status))
                             {
@@ -1465,4 +1458,6 @@
                                 continue;
                             }
+                            else
+                                WARN(("pfnAddMode failed, Status 0x%x", Status));
                         }
 
@@ -1470,7 +1465,11 @@
                         Assert(tmpStatus == STATUS_SUCCESS);
                     }
+                    else
+                        WARN(("pfnCreateNewModeInfo failed, Status 0x%x", Status));
                     /* we're here because of an error */
                     Assert(!NT_SUCCESS(Status));
-                    break;
+                    /* ignore mode addition failure */
+                    Status = STATUS_SUCCESS;
+                    continue;
                 }
             }
Index: trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
===================================================================
--- trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp	(revision 42226)
+++ trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp	(revision 42228)
@@ -659,5 +659,5 @@
 }
 
-static NTSTATUS vboxWddmChildStatusCheck(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_VIDEOMODES_INFO paInfos)
+static NTSTATUS vboxWddmChildStatusCheckByMask(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_VIDEOMODES_INFO paInfos, uint8_t *pMask)
 {
     NTSTATUS Status = STATUS_SUCCESS;
@@ -665,7 +665,9 @@
     int i;
 
-    Assert(!bChanged[0]);
     for (i = 0; i < VBoxCommonFromDeviceExt(pDevExt)->cDisplays; ++i)
     {
+        if (pMask && !ASMBitTest(pMask, i))
+            continue;
+
         /* @todo: check that we actually need the current source->target */
         PVBOXWDDM_VIDEOMODES_INFO pInfo = &paInfos[i];
@@ -4150,8 +4152,8 @@
                 WARN(("VBOXESC_REINITVIDEOMODESBYMASK should be called instead"));
                 PVBOXWDDM_VIDEOMODES_INFO pInfos = VBoxWddmUpdateAllVideoModesInfos(pDevExt);
-                Status = vboxWddmChildStatusCheck(pDevExt, pInfos);
+                Status = vboxWddmChildStatusCheckByMask(pDevExt, pInfos, NULL);
                 if (!NT_SUCCESS(Status))
                 {
-                    WARN(("vboxWddmChildStatusCheck failed, Status 0x%x", Status));
+                    WARN(("vboxWddmChildStatusCheckByMask failed, Status 0x%x", Status));
                 }
                 break;
@@ -4176,8 +4178,8 @@
                 if (fCheckDisplayRecconect)
                 {
-                    Status = vboxWddmChildStatusCheck(pDevExt, pInfos);
+                    Status = vboxWddmChildStatusCheckByMask(pDevExt, pInfos, pData->ScreenMask);
                     if (!NT_SUCCESS(Status))
                     {
-                        WARN(("vboxWddmChildStatusCheck failed, Status 0x%x", Status));
+                        WARN(("vboxWddmChildStatusCheckByMask failed, Status 0x%x", Status));
                     }
                 }
