Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVdma.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVdma.cpp	(revision 71657)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVdma.cpp	(revision 71658)
@@ -1182,4 +1182,11 @@
 static NTSTATUS vboxVdmaCrCtlGetDefaultClientId(PVBOXMP_DEVEXT pDevExt, uint32_t *pu32ClienID)
 {
+    if (pDevExt->enmHwType != VBOX_HWTYPE_CROGL)
+    {
+        /* Should not be called at all in this case. */
+        AssertFailed();
+        return STATUS_UNSUCCESSFUL;
+    }
+
     if (!pDevExt->u32CrConDefaultClientID)
     {
@@ -1329,4 +1336,10 @@
 NTSTATUS vboxVdmaTexPresentSetAlloc(PVBOXMP_DEVEXT pDevExt, const VBOXWDDM_ALLOC_DATA *pAllocData)
 {
+    if (pDevExt->enmHwType != VBOX_HWTYPE_CROGL)
+    {
+        /* Not used in this case. */
+        return STATUS_SUCCESS;
+    }
+
     uint32_t u32CrConClientID;
     NTSTATUS Status = vboxVdmaCrCtlGetDefaultClientId(pDevExt, &u32CrConClientID);
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp	(revision 71657)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp	(revision 71658)
@@ -1149,21 +1149,31 @@
             {
 #ifdef VBOX_WITH_CROGL
-                if (pDevExt->f3DEnabled)
-                {
-                    pDevExt->fTexPresentEnabled = !!(VBoxMpCrGetHostCaps() & CR_VBOX_CAP_TEX_PRESENT);
-                    pDevExt->fCmdVbvaEnabled = !!(VBoxMpCrGetHostCaps() & CR_VBOX_CAP_CMDVBVA);
+                if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL)
+                {
+                    if (pDevExt->f3DEnabled)
+                    {
+                        pDevExt->fTexPresentEnabled = !!(VBoxMpCrGetHostCaps() & CR_VBOX_CAP_TEX_PRESENT);
+                        pDevExt->fCmdVbvaEnabled = !!(VBoxMpCrGetHostCaps() & CR_VBOX_CAP_CMDVBVA);
 # if 0
-                    pDevExt->fComplexTopologiesEnabled = pDevExt->fCmdVbvaEnabled;
+                        pDevExt->fComplexTopologiesEnabled = pDevExt->fCmdVbvaEnabled;
 # else
-                    pDevExt->fComplexTopologiesEnabled = FALSE;
+                        pDevExt->fComplexTopologiesEnabled = FALSE;
 # endif
+                    }
+                    else
+                    {
+                        pDevExt->fTexPresentEnabled = FALSE;
+                        pDevExt->fCmdVbvaEnabled = FALSE;
+                        pDevExt->fComplexTopologiesEnabled = FALSE;
+                    }
+#endif
                 }
                 else
                 {
+                    pDevExt->f3DEnabled = FALSE;
                     pDevExt->fTexPresentEnabled = FALSE;
                     pDevExt->fCmdVbvaEnabled = FALSE;
                     pDevExt->fComplexTopologiesEnabled = FALSE;
                 }
-#endif
 
                 /* Guest supports only HGSMI, the old VBVA via VMMDev is not supported.
@@ -1367,5 +1377,5 @@
 
 #ifdef VBOX_WITH_CROGL
-    if (pDevExt->u32CrConDefaultClientID)
+    if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL && pDevExt->u32CrConDefaultClientID)
         VBoxMpCrCtlConDisconnect(pDevExt, &pDevExt->CrCtlCon, pDevExt->u32CrConDefaultClientID);
 
@@ -2325,7 +2335,12 @@
                     memset (pQi, 0, sizeof (VBOXWDDM_QI));
                     pQi->u32Version = VBOXVIDEOIF_VERSION;
+                    if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL)
+                    {
 #ifdef VBOX_WITH_CROGL
-                    pQi->u32VBox3DCaps = VBoxMpCrGetHostCaps();
-#endif
+                        pQi->u32VBox3DCaps = VBoxMpCrGetHostCaps();
+#endif
+                    }
+                    else
+                        pQi->u32VBox3DCaps = 0;
                     pQi->cInfos = VBoxCommonFromDeviceExt(pDevExt)->cDisplays;
 #ifdef VBOX_WITH_VIDEOHWACCEL
@@ -2839,5 +2854,5 @@
         /* wait for all current allocation-related ops are completed */
         vboxWddmAllocationCleanup(pDevExt, pAlloc);
-        if (pAlloc->hSharedHandle && pAlloc->AllocData.hostID)
+        if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL && pAlloc->hSharedHandle && pAlloc->AllocData.hostID)
             VBoxVdmaChromiumParameteriCRSubmit(pDevExt, GL_PIN_TEXTURE_CLEAR_CR, pAlloc->AllocData.hostID);
         vboxWddmAllocationDestroy(pAlloc);
@@ -4545,5 +4560,8 @@
                 if (pEscape->PrivateDriverDataSize == sizeof (*pEscapeHdr))
                 {
-                    pEscapeHdr->u32CmdSpecific = VBoxMpCrGetHostCaps();
+                    if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL)
+                        pEscapeHdr->u32CmdSpecific = VBoxMpCrGetHostCaps();
+                    else
+                        pEscapeHdr->u32CmdSpecific = 0;
                     Status = STATUS_SUCCESS;
                 }
@@ -6881,13 +6899,16 @@
             }
 
+            if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL)
+            {
 #ifdef VBOX_WITH_CROGL
-            if (!VBOXWDDM_IS_DISPLAYONLY() && pDevExt->f3DEnabled)
-            {
-                VBoxMpCrPackerInit(&pContext->CrPacker);
-                int rc = VBoxMpCrCtlConConnect(pDevExt, &pDevExt->CrCtlCon, CR_PROTOCOL_VERSION_MAJOR, CR_PROTOCOL_VERSION_MINOR, &pContext->u32CrConClientID);
-                if (!RT_SUCCESS(rc))
-                    WARN(("VBoxMpCrCtlConConnect failed rc (%d), ignoring for system context", rc));
-            }
-#endif
+                if (!VBOXWDDM_IS_DISPLAYONLY() && pDevExt->f3DEnabled)
+                {
+                    VBoxMpCrPackerInit(&pContext->CrPacker);
+                    int rc = VBoxMpCrCtlConConnect(pDevExt, &pDevExt->CrCtlCon, CR_PROTOCOL_VERSION_MAJOR, CR_PROTOCOL_VERSION_MINOR, &pContext->u32CrConClientID);
+                    if (!RT_SUCCESS(rc))
+                        WARN(("VBoxMpCrCtlConConnect failed rc (%d), ignoring for system context", rc));
+                }
+#endif
+            }
             Status = STATUS_SUCCESS;
         }
@@ -6929,15 +6950,18 @@
                                         if (pDevExt->f3DEnabled)
                                         {
-                                            int rc = VBoxMpCrCtlConConnect(pDevExt, &pDevExt->CrCtlCon,
-                                                pInfo->crVersionMajor, pInfo->crVersionMinor,
-                                                &pContext->u32CrConClientID);
-                                            if (RT_SUCCESS(rc))
+                                            if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL)
                                             {
-                                                VBoxMpCrPackerInit(&pContext->CrPacker);
-                                            }
-                                            else
-                                            {
-                                                WARN(("VBoxMpCrCtlConConnect failed rc (%d)", rc));
-                                                Status = STATUS_UNSUCCESSFUL;
+                                                int rc = VBoxMpCrCtlConConnect(pDevExt, &pDevExt->CrCtlCon,
+                                                    pInfo->crVersionMajor, pInfo->crVersionMinor,
+                                                    &pContext->u32CrConClientID);
+                                                if (RT_SUCCESS(rc))
+                                                {
+                                                    VBoxMpCrPackerInit(&pContext->CrPacker);
+                                                }
+                                                else
+                                                {
+                                                    WARN(("VBoxMpCrCtlConConnect failed rc (%d)", rc));
+                                                    Status = STATUS_UNSUCCESSFUL;
+                                                }
                                             }
                                         }
@@ -6981,11 +7005,14 @@
                                 if (pDevExt->f3DEnabled)
                                 {
-                                    int rc = VBoxMpCrCtlConConnect(pDevExt, &pDevExt->CrCtlCon,
-                                        pInfo->crVersionMajor, pInfo->crVersionMinor,
-                                        &pContext->u32CrConClientID);
-                                    if (!RT_SUCCESS(rc))
+                                    if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL)
                                     {
-                                        WARN(("VBoxMpCrCtlConConnect failed rc (%d)", rc));
-                                        Status = STATUS_UNSUCCESSFUL;
+                                        int rc = VBoxMpCrCtlConConnect(pDevExt, &pDevExt->CrCtlCon,
+                                            pInfo->crVersionMajor, pInfo->crVersionMinor,
+                                            &pContext->u32CrConClientID);
+                                        if (!RT_SUCCESS(rc))
+                                        {
+                                            WARN(("VBoxMpCrCtlConConnect failed rc (%d)", rc));
+                                            Status = STATUS_UNSUCCESSFUL;
+                                        }
                                     }
                                 }
@@ -7118,5 +7145,5 @@
 
 #ifdef VBOX_WITH_CROGL
-    if (pContext->u32CrConClientID)
+    if (pDevExt->enmHwType == VBOX_HWTYPE_CROGL && pContext->u32CrConClientID)
     {
         VBoxMpCrCtlConDisconnect(pDevExt, &pDevExt->CrCtlCon, pContext->u32CrConClientID);
@@ -7251,4 +7278,5 @@
 
     RECT UpdateRect;
+    RT_ZERO(UpdateRect);
     BOOLEAN bUpdateRectInited = FALSE;
 
