Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp	(revision 79791)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp	(revision 79792)
@@ -2061,9 +2061,9 @@
         }
         case D3DDDICAPS_GETFORMATCOUNT:
-            *((uint32_t*)pData->pData) = pAdapter->Formats.cFormstOps;
+            *((uint32_t*)pData->pData) = pAdapter->Formats.cFormatOps;
             break;
         case D3DDDICAPS_GETFORMATDATA:
-            Assert(pData->DataSize == pAdapter->Formats.cFormstOps * sizeof (FORMATOP));
-            memcpy(pData->pData, pAdapter->Formats.paFormstOps, pAdapter->Formats.cFormstOps * sizeof (FORMATOP));
+            Assert(pData->DataSize == pAdapter->Formats.cFormatOps * sizeof (FORMATOP));
+            memcpy(pData->pData, pAdapter->Formats.paFormatOps, pAdapter->Formats.cFormatOps * sizeof (FORMATOP));
             break;
         case D3DDDICAPS_GETD3DQUERYCOUNT:
@@ -6458,5 +6458,5 @@
         )
 
-static BOOL vboxDispIsDDraw(__inout D3DDDIARG_OPENADAPTER*  pOpenData)
+static BOOL vboxDispIsDDraw(D3DDDIARG_OPENADAPTER const *pOpenData)
 {
     /*if we are loaded by ddraw module, the Interface version should be 7
@@ -6536,4 +6536,5 @@
         pAdapter->u32VBox3DCaps = pAdapterInfo->u.vbox.u32VBox3DCaps;
     pAdapter->AdapterInfo = *pAdapterInfo;
+    pAdapter->f3D         = !vboxDispIsDDraw(pOpenData);
 #ifdef VBOX_WITH_VIDEOHWACCEL
     pAdapter->cHeads      = pAdapterInfo->cInfos;
@@ -6564,5 +6565,5 @@
         if (SUCCEEDED(hr))
         {
-            if (!vboxDispIsDDraw(pOpenData))
+            if (pAdapter->f3D)
             {
                 /* 3D adapter. */
@@ -6574,7 +6575,4 @@
                 {
                     LOG(("SUCCESS 3D Enabled, pAdapter (0x%p)", pAdapter));
-
-                    /* Flag indicating that the adapter instance is running in 3D mode. */
-                    pAdapter->f3D = true;
                 }
                 else
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DIf.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DIf.cpp	(revision 79791)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DIf.cpp	(revision 79792)
@@ -904,7 +904,7 @@
     if (pvBuf)
     {
-        pAdapter->Formats.paFormstOps = (FORMATOP*)pvBuf;
-        memcpy ((void*)pAdapter->Formats.paFormstOps , gVBoxFormatOpsBase, sizeof (gVBoxFormatOpsBase));
-        pAdapter->Formats.cFormstOps = RT_ELEMENTS(gVBoxFormatOpsBase);
+        pAdapter->Formats.paFormatOps = (FORMATOP*)pvBuf;
+        memcpy ((void*)pAdapter->Formats.paFormatOps , gVBoxFormatOpsBase, sizeof (gVBoxFormatOpsBase));
+        pAdapter->Formats.cFormatOps = RT_ELEMENTS(gVBoxFormatOpsBase);
 
         FORMATOP fo = {D3DDDIFMT_UNKNOWN, 0, 0, 0, 0};
@@ -918,5 +918,5 @@
                     fo.Format = pVhwa->Settings.aFormats[j];
                     fo.Operations = FORMATOP_OVERLAY;
-                    hr = vboxFormatOpsMerge((FORMATOP *)pAdapter->Formats.paFormstOps, &pAdapter->Formats.cFormstOps, cFormats, &fo);
+                    hr = vboxFormatOpsMerge((FORMATOP *)pAdapter->Formats.paFormatOps, &pAdapter->Formats.cFormatOps, cFormats, &fo);
                     if (FAILED(hr))
                     {
@@ -963,6 +963,9 @@
 void VBoxDispD3DGlobal2DFormatsTerm(PVBOXWDDMDISP_ADAPTER pAdapter)
 {
-    if (pAdapter->Formats.paFormstOps)
-        RTMemFree((void *)pAdapter->Formats.paFormstOps);
+    if (pAdapter->Formats.paFormatOps)
+    {
+        RTMemFree((void *)pAdapter->Formats.paFormatOps);
+        pAdapter->Formats.paFormatOps = NULL;
+    }
 }
 
@@ -998,6 +1001,6 @@
 {
     memset(pFormats, 0, sizeof (*pFormats));
-    pFormats->paFormstOps = gVBoxFormatOps3D;
-    pFormats->cFormstOps = RT_ELEMENTS(gVBoxFormatOps3D);
+    pFormats->paFormatOps = gVBoxFormatOps3D;
+    pFormats->cFormatOps = RT_ELEMENTS(gVBoxFormatOps3D);
 }
 
@@ -1258,8 +1261,8 @@
 
 #ifdef VBOX_WITH_MESA3D
-HRESULT GaWddmD3DBackendOpen(PVBOXWDDMDISP_D3D pD3D, VBOXWDDM_QAI const *pAdapterInfo);
+HRESULT GaWddmD3DBackendOpen(PVBOXWDDMDISP_D3D pD3D, VBOXWDDM_QAI const *pAdapterInfo, PVBOXWDDMDISP_FORMATS pFormats);
 #endif
 
-static HRESULT vboxDispD3DGlobalDoOpen(PVBOXWDDMDISP_D3D pD3D, VBOXWDDM_QAI const *pAdapterInfo)
+static HRESULT vboxDispD3DGlobalDoOpen(PVBOXWDDMDISP_D3D pD3D, VBOXWDDM_QAI const *pAdapterInfo, PVBOXWDDMDISP_FORMATS pFormats)
 {
     memset(pD3D, 0, sizeof (*pD3D));
@@ -1267,8 +1270,11 @@
     HRESULT hr;
     if (pAdapterInfo->enmHwType == VBOXVIDEO_HWTYPE_VBOX)
+    {
+        vboxDispD3DGlobalD3DFormatsInit(pFormats);
         hr = vboxDispD3DGlobalDoOpenWine(pD3D);
+    }
 #ifdef VBOX_WITH_MESA3D
     else if (pAdapterInfo->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
-        hr = GaWddmD3DBackendOpen(pD3D, pAdapterInfo);
+        hr = GaWddmD3DBackendOpen(pD3D, pAdapterInfo, pFormats);
 #endif
     else
@@ -1293,5 +1299,5 @@
     if (!g_cVBoxDispD3DGlobalOpens)
     {
-        HRESULT hr = vboxDispD3DGlobalDoOpen(&g_VBoxDispD3DGlobalD3D, pAdapterInfo);
+        HRESULT hr = vboxDispD3DGlobalDoOpen(&g_VBoxDispD3DGlobalD3D, pAdapterInfo, &g_VBoxDispD3DGlobalD3DFormats);
         if (!SUCCEEDED(hr))
         {
@@ -1300,6 +1306,4 @@
             return hr;
         }
-
-        vboxDispD3DGlobalD3DFormatsInit(&g_VBoxDispD3DGlobalD3DFormats);
     }
     ++g_cVBoxDispD3DGlobalOpens;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DIf.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DIf.h	(revision 79791)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DIf.h	(revision 79792)
@@ -77,6 +77,6 @@
 typedef struct VBOXWDDMDISP_FORMATS
 {
-    uint32_t cFormstOps;
-    const struct _FORMATOP* paFormstOps;
+    uint32_t cFormatOps;
+    const struct _FORMATOP* paFormatOps;
     uint32_t cSurfDescs;
     struct _DDSURFACEDESC *paSurfDescs;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/GaDdi.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/GaDdi.cpp	(revision 79791)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/GaDdi.cpp	(revision 79792)
@@ -4846,10 +4846,10 @@
 
         case D3DDDICAPS_GETFORMATCOUNT:
-            *((uint32_t*)pData->pData) = pAdapter->Formats.cFormstOps;
+            *((uint32_t*)pData->pData) = pAdapter->Formats.cFormatOps;
             break;
 
         case D3DDDICAPS_GETFORMATDATA:
-            Assert(pData->DataSize == pAdapter->Formats.cFormstOps * sizeof(FORMATOP));
-            memcpy(pData->pData, pAdapter->Formats.paFormstOps, pAdapter->Formats.cFormstOps * sizeof(FORMATOP));
+            Assert(pData->DataSize == pAdapter->Formats.cFormatOps * sizeof(FORMATOP));
+            memcpy(pData->pData, pAdapter->Formats.paFormatOps, pAdapter->Formats.cFormatOps * sizeof(FORMATOP));
             break;
 
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/GaWddm.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/GaWddm.cpp	(revision 79791)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/GaWddm.cpp	(revision 79792)
@@ -838,4 +838,303 @@
 }
 
+static FORMATOP gGaFormatOps3D[] = {
+    {D3DDDIFMT_A8R8G8B8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
+        FORMATOP_MEMBEROFGROUP_ARGB|
+        FORMATOP_SRGBWRITE|FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_X8R8G8B8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        FORMATOP_DISPLAYMODE|FORMATOP_3DACCELERATION|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
+        FORMATOP_MEMBEROFGROUP_ARGB|
+        FORMATOP_SRGBWRITE|FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A2R10G10B10,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_MEMBEROFGROUP_ARGB|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_X1R5G5B5,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_MEMBEROFGROUP_ARGB|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A1R5G5B5,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_MEMBEROFGROUP_ARGB|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A4R4G4B4,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_R5G6B5,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        FORMATOP_DISPLAYMODE|FORMATOP_3DACCELERATION|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_MEMBEROFGROUP_ARGB|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_L16,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A8L8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_L8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_D16,   FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
+    {D3DDDIFMT_D24S8, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
+    {D3DDDIFMT_D24X8, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
+    {D3DDDIFMT_D16_LOCKABLE, FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
+    {D3DDDIFMT_X8D24, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
+    {D3DDDIFMT_D32F_LOCKABLE, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
+    {D3DDDIFMT_S8D24, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
+
+    {D3DDDIFMT_DXT1,
+        FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_DXT2,
+        FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_DXT3,
+        FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_DXT4,
+        FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_DXT5,
+        FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_X8L8V8U8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        0|
+        FORMATOP_BUMPMAP|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A2W10V10U10,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        0|
+        FORMATOP_BUMPMAP|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_V8U8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        0|
+        FORMATOP_BUMPMAP|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_Q8W8V8U8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        0|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_BUMPMAP|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_CxV8U8, FORMATOP_NOFILTER|FORMATOP_NOALPHABLEND|FORMATOP_NOTEXCOORDWRAPNORMIP, 0, 0, 0},
+
+    {D3DDDIFMT_R16F,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_R32F,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_G16R16F,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_G32R32F,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A16B16G16R16F,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A32B32G32R32F,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_G16R16,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A16B16G16R16,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        0|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_V16U16,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        0|
+        FORMATOP_BUMPMAP|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_P8, FORMATOP_DISPLAYMODE|FORMATOP_3DACCELERATION|FORMATOP_OFFSCREENPLAIN, 0, 0, 0},
+
+    {D3DDDIFMT_UYVY,
+        0|
+        0|
+        0|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_NOFILTER|
+        FORMATOP_NOALPHABLEND|
+        FORMATOP_NOTEXCOORDWRAPNORMIP, 0, 0, 0},
+
+    {D3DDDIFMT_YUY2,
+        0|
+        0|
+        0|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_NOFILTER|
+        FORMATOP_NOALPHABLEND|
+        FORMATOP_NOTEXCOORDWRAPNORMIP, 0, 0, 0},
+
+    {D3DDDIFMT_Q16W16V16U16,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_BUMPMAP|FORMATOP_DMAP|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_X8B8G8R8,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
+        FORMATOP_DMAP|FORMATOP_MEMBEROFGROUP_ARGB|
+        FORMATOP_SRGBWRITE|FORMATOP_AUTOGENMIPMAP|FORMATOP_VERTEXTEXTURE|
+        FORMATOP_OVERLAY, 0, 0, 0},
+
+    {D3DDDIFMT_BINARYBUFFER, FORMATOP_OFFSCREENPLAIN, 0, 0, 0},
+
+    {D3DDDIFMT_A4L4,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
+        0|
+        0|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_DMAP|
+        FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+
+    {D3DDDIFMT_A2B10G10R10,
+        FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
+        FORMATOP_SAME_FORMAT_RENDERTARGET|
+        0|
+        FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
+        FORMATOP_DMAP|FORMATOP_MEMBEROFGROUP_ARGB|
+        FORMATOP_AUTOGENMIPMAP|FORMATOP_VERTEXTEXTURE, 0, 0, 0},
+};
+
 static void gaWddmD3DBackendClose(PVBOXWDDMDISP_D3D pD3D)
 {
@@ -844,5 +1143,5 @@
 }
 
-HRESULT GaWddmD3DBackendOpen(PVBOXWDDMDISP_D3D pD3D, VBOXWDDM_QAI const *pAdapterInfo)
+HRESULT GaWddmD3DBackendOpen(PVBOXWDDMDISP_D3D pD3D, VBOXWDDM_QAI const *pAdapterInfo, PVBOXWDDMDISP_FORMATS pFormats)
 {
     HRESULT hr = GalliumStackCreate(&pD3D->pGalliumStack);
@@ -862,4 +1161,8 @@
             if (SUCCEEDED(hr))
             {
+                memset(pFormats, 0, sizeof (*pFormats));
+                pFormats->paFormatOps = gGaFormatOps3D;
+                pFormats->cFormatOps = RT_ELEMENTS(gGaFormatOps3D);
+
                 pD3D->pfnD3DBackendClose = gaWddmD3DBackendClose;
 
