Index: /trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.cpp	(revision 30307)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.cpp	(revision 30308)
@@ -1151,5 +1151,5 @@
                     DDRAW_CAPS *pCaps = (DDRAW_CAPS*)pData->pData;
                     pCaps->Caps |= DDRAW_CAPS_COLORKEY;
-                    pCaps->Caps2 |= DDRAW_CAPS2_FLIPNOVSYNC;
+//                    pCaps->Caps2 |= DDRAW_CAPS2_FLIPNOVSYNC;
                 }
 #endif
@@ -2563,4 +2563,40 @@
 }
 
+static D3DDDICB_ALLOCATE* vboxWddmRequestAllocAlloc(D3DDDIARG_CREATERESOURCE* pResource)
+{
+    /* allocate buffer for D3DDDICB_ALLOCATE + D3DDDI_ALLOCATIONINFO * numAllocs + PVBOXWDDM_RCINFO with aAllocInfos[numAllocs] */
+    uint32_t cbBuf = sizeof (D3DDDICB_ALLOCATE);
+    uint32_t offDdiAllocInfos = (cbBuf + 7) & ~3;
+    uint32_t cbDdiAllocInfos = sizeof (D3DDDI_ALLOCATIONINFO) * pResource->SurfCount;
+    cbBuf = offDdiAllocInfos + cbDdiAllocInfos;
+    uint32_t offRcInfo = (cbBuf + 7) & ~3;
+    uint32_t cbRcInfo = sizeof (VBOXWDDM_RCINFO);
+    cbBuf = offRcInfo + cbRcInfo;
+    uint32_t offAllocInfos = (cbBuf + 7) & ~3;
+    uint32_t cbAllocInfos = sizeof (VBOXWDDM_ALLOCINFO) * pResource->SurfCount;
+    cbBuf = offAllocInfos + cbAllocInfos;
+    uint8_t *pvBuf = (uint8_t*)RTMemAllocZ(cbBuf);
+    Assert(pvBuf);
+    if (pvBuf)
+    {
+        D3DDDICB_ALLOCATE* pAlloc = (D3DDDICB_ALLOCATE*)pvBuf;
+        pAlloc->NumAllocations = pResource->SurfCount;
+        pAlloc->pAllocationInfo = (D3DDDI_ALLOCATIONINFO*)(pvBuf + offDdiAllocInfos);
+        PVBOXWDDM_RCINFO pRcInfo = (PVBOXWDDM_RCINFO)(pvBuf + offRcInfo);
+        pAlloc->PrivateDriverDataSize = cbRcInfo;
+        pAlloc->pPrivateDriverData = pRcInfo;
+        pAlloc->hResource = pResource->hResource;
+        PVBOXWDDM_ALLOCINFO pAllocInfos = (PVBOXWDDM_ALLOCINFO)(pvBuf + offAllocInfos);
+        for (UINT i = 0; i < pResource->SurfCount; ++i)
+        {
+            D3DDDI_ALLOCATIONINFO* pDdiAllocInfo = &pAlloc->pAllocationInfo[i];
+            PVBOXWDDM_ALLOCINFO pAllocInfo = &pAllocInfos[i];
+            pDdiAllocInfo->pPrivateDriverData = pAllocInfo;
+            pDdiAllocInfo->PrivateDriverDataSize = sizeof (VBOXWDDM_ALLOCINFO);
+        }
+        return pAlloc;
+    }
+    return NULL;
+}
 static HRESULT APIENTRY vboxWddmDDevCreateResource(HANDLE hDevice, D3DDDIARG_CREATERESOURCE* pResource)
 {
@@ -2924,118 +2960,102 @@
     else
     {
-        /* allocate buffer for D3DDDICB_ALLOCATE + D3DDDI_ALLOCATIONINFO * numAllocs + PVBOXWDDM_RCINFO with aAllocInfos[numAllocs] */
-        uint32_t cbBuf = sizeof (D3DDDICB_ALLOCATE);
-        uint32_t offDdiAllocInfos = (cbBuf + 7) & ~3;
-        uint32_t cbDdiAllocInfos = sizeof (D3DDDI_ALLOCATIONINFO) * pResource->SurfCount;
-        cbBuf = offDdiAllocInfos + cbDdiAllocInfos;
-        uint32_t offRcInfo = (cbBuf + 7) & ~3;
-        uint32_t cbRcInfo = sizeof (VBOXWDDM_RCINFO);
-        cbBuf = offRcInfo + cbRcInfo;
-        uint32_t offAllocInfos = (cbBuf + 7) & ~3;
-        uint32_t cbAllocInfos = sizeof (VBOXWDDM_ALLOCINFO) * pResource->SurfCount;
-        cbBuf = offAllocInfos + cbAllocInfos;
-        uint8_t *pvBuf = (uint8_t*)RTMemAllocZ(cbBuf);
-        if (pvBuf)
-        {
-            D3DDDICB_ALLOCATE *pAllocate = (D3DDDICB_ALLOCATE*)pvBuf;
-            D3DDDI_ALLOCATIONINFO* pDdiAllocInfos = (D3DDDI_ALLOCATIONINFO*)(pvBuf + offDdiAllocInfos);
-            PVBOXWDDM_RCINFO pRcInfo = (PVBOXWDDM_RCINFO)(pvBuf + offRcInfo);
-            PVBOXWDDM_ALLOCINFO pAllocInfos = (PVBOXWDDM_ALLOCINFO)(pvBuf + offAllocInfos);
-            pAllocate->pPrivateDriverData = pRcInfo;
-            pAllocate->PrivateDriverDataSize = cbRcInfo;
-            pAllocate->hResource = pResource->hResource;
-            pAllocate->hKMResource = NULL;
-            pAllocate->NumAllocations = pResource->SurfCount;
-            pAllocate->pAllocationInfo = pDdiAllocInfos;
-
-            pRcInfo->fFlags = VBOXWDDM_RESOURCE_F_TYPE_GENERIC;
-            pRcInfo->RcDesc.fFlags = pResource->Flags;
-            pRcInfo->RcDesc.enmFormat = pResource->Format;
-            pRcInfo->RcDesc.enmPool = pResource->Pool;
-            pRcInfo->RcDesc.enmMultisampleType = pResource->MultisampleType;
-            pRcInfo->RcDesc.MultisampleQuality = pResource->MultisampleQuality;
-            pRcInfo->RcDesc.MipLevels = pResource->MipLevels;
-            pRcInfo->RcDesc.Fvf = pResource->Fvf;
-            pRcInfo->RcDesc.VidPnSourceId = pResource->VidPnSourceId;
-            pRcInfo->RcDesc.RefreshRate = pResource->RefreshRate;
-            pRcInfo->RcDesc.enmRotation = pResource->Rotation;
-            pRcInfo->cAllocInfos = pResource->SurfCount;
-
-            for (UINT i = 0; i < pResource->SurfCount; ++i)
-            {
-                PVBOXWDDM_ALLOCINFO pAllocInfo = &pAllocInfos[i];
-                D3DDDI_ALLOCATIONINFO* pDdiAllocInfo = &pDdiAllocInfos[i];
-                CONST D3DDDI_SURFACEINFO* pSurf = &pResource->pSurfList[i];
-                pDdiAllocInfo->hAllocation = NULL;
-                pDdiAllocInfo->pSystemMem = pSurf->pSysMem;
-                Assert((!!(pSurf->pSysMem)) == (pResource->Pool == D3DDDIPOOL_SYSTEMMEM));
-                pDdiAllocInfo->pPrivateDriverData = pAllocInfo;
-                pDdiAllocInfo->PrivateDriverDataSize = sizeof (VBOXWDDM_ALLOCINFO);
-                pDdiAllocInfo->VidPnSourceId = pResource->VidPnSourceId;
-                pDdiAllocInfo->Flags.Value = 0;
-                if (pResource->Flags.Primary)
-                    pDdiAllocInfo->Flags.Primary = 1;
-
-                pAllocInfo->enmType = VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC;
-                pAllocInfo->SurfDesc.width = pSurf->Width;
-                pAllocInfo->SurfDesc.height = pSurf->Height;
-                pAllocInfo->SurfDesc.format = pResource->Format;
-                pAllocInfo->SurfDesc.bpp = vboxWddmCalcBitsPerPixel(pResource->Format);
-
-                if (pSurf->SysMemPitch)
-                {
-                    pAllocInfo->SurfDesc.pitch = pSurf->SysMemPitch;
+        PVBOXWDDMDISP_RESOURCE pRc = vboxResourceAlloc(pResource->SurfCount);
+        Assert(pRc);
+        if (pRc)
+        {
+            pRc->hResource = pResource->hResource;
+            pRc->hKMResource = NULL;
+            pRc->pDevice = pDevice;
+            pRc->fFlags = VBOXWDDM_RESOURCE_F_TYPE_GENERIC;
+            pRc->RcDesc.fFlags = pResource->Flags;
+            pRc->RcDesc.enmFormat = pResource->Format;
+            pRc->RcDesc.enmPool = pResource->Pool;
+            pRc->RcDesc.enmMultisampleType = pResource->MultisampleType;
+            pRc->RcDesc.MultisampleQuality = pResource->MultisampleQuality;
+            pRc->RcDesc.MipLevels = pResource->MipLevels;
+            pRc->RcDesc.Fvf = pResource->Fvf;
+            pRc->RcDesc.VidPnSourceId = pResource->VidPnSourceId;
+            pRc->RcDesc.RefreshRate = pResource->RefreshRate;
+            pRc->RcDesc.enmRotation = pResource->Rotation;
+            pRc->cAllocations = pResource->SurfCount;
+
+            D3DDDICB_ALLOCATE *pDdiAllocate = vboxWddmRequestAllocAlloc(pResource);
+            Assert(pDdiAllocate);
+            if (pDdiAllocate)
+            {
+                Assert(pDdiAllocate->pPrivateDriverData);
+                Assert(pDdiAllocate->PrivateDriverDataSize == sizeof (VBOXWDDM_RCINFO));
+                PVBOXWDDM_RCINFO pRcInfo = (PVBOXWDDM_RCINFO)pDdiAllocate->pPrivateDriverData;
+                pRcInfo->fFlags = VBOXWDDM_RESOURCE_F_TYPE_GENERIC;
+                pRcInfo->RcDesc = pRc->RcDesc;
+                pRcInfo->cAllocInfos = pResource->SurfCount;
+
+                for (UINT i = 0; i < pResource->SurfCount; ++i)
+                {
+                    D3DDDI_ALLOCATIONINFO *pDdiAllocI = &pDdiAllocate->pAllocationInfo[i];
+                    Assert(pDdiAllocI->pPrivateDriverData);
+                    Assert(pDdiAllocI->PrivateDriverDataSize == sizeof (VBOXWDDM_ALLOCINFO));
+                    PVBOXWDDM_ALLOCINFO pAllocInfo = (PVBOXWDDM_ALLOCINFO)pDdiAllocI->pPrivateDriverData;
+                    CONST D3DDDI_SURFACEINFO* pSurf = &pResource->pSurfList[i];
+                    pDdiAllocI->hAllocation = NULL;
+                    pDdiAllocI->pSystemMem = pSurf->pSysMem;
+                    Assert((!!(pSurf->pSysMem)) == (pResource->Pool == D3DDDIPOOL_SYSTEMMEM));
+                    pDdiAllocI->VidPnSourceId = pResource->VidPnSourceId;
+                    pDdiAllocI->Flags.Value = 0;
+                    if (pResource->Flags.Primary)
+                        pDdiAllocI->Flags.Primary = 1;
+
+                    pAllocInfo->enmType = VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC;
+                    pAllocInfo->fFlags = pResource->Flags;
+                    pAllocInfo->SurfDesc.width = pSurf->Width;
+                    pAllocInfo->SurfDesc.height = pSurf->Height;
+                    pAllocInfo->SurfDesc.format = pResource->Format;
+                    pAllocInfo->SurfDesc.bpp = vboxWddmCalcBitsPerPixel(pResource->Format);
+
+                    if (pSurf->SysMemPitch)
+                    {
+                        pAllocInfo->SurfDesc.pitch = pSurf->SysMemPitch;
 #ifdef DEBUG
-                    UINT tst = vboxWddmCalcPitch(pSurf->Width, pAllocInfo->SurfDesc.bpp);
-                    Assert(tst == pSurf->SysMemPitch);
+                        UINT tst = vboxWddmCalcPitch(pSurf->Width, pAllocInfo->SurfDesc.bpp);
+                        Assert(tst == pSurf->SysMemPitch);
 #endif
+                    }
+                    else
+                        pAllocInfo->SurfDesc.pitch = vboxWddmCalcPitch(pSurf->Width, pAllocInfo->SurfDesc.bpp);
+
+                    pAllocInfo->SurfDesc.cbSize = pAllocInfo->SurfDesc.pitch * pAllocInfo->SurfDesc.height;
+                    pAllocInfo->SurfDesc.depth = pSurf->Depth;
+                    pAllocInfo->SurfDesc.slicePitch = pSurf->SysMemSlicePitch;
+                    pAllocInfo->SurfDesc.VidPnSourceId = pResource->VidPnSourceId;
+                    pAllocInfo->SurfDesc.RefreshRate = pResource->RefreshRate;
                 }
-                else
-                    pAllocInfo->SurfDesc.pitch = vboxWddmCalcPitch(pSurf->Width, pAllocInfo->SurfDesc.bpp);
-
-                pAllocInfo->SurfDesc.cbSize = pAllocInfo->SurfDesc.pitch * pAllocInfo->SurfDesc.height;
-                pAllocInfo->SurfDesc.depth = pSurf->Depth;
-                pAllocInfo->SurfDesc.slicePitch = pSurf->SysMemSlicePitch;
-                pAllocInfo->SurfDesc.VidPnSourceId = pResource->VidPnSourceId;
-                pAllocInfo->SurfDesc.RefreshRate = pResource->RefreshRate;
-            }
-
-            hr = pDevice->RtCallbacks.pfnAllocateCb(pDevice->hDevice, pAllocate);
-            Assert(hr == S_OK);
-            if (hr == S_OK)
-            {
-                Assert(pAllocate->hKMResource);
-                PVBOXWDDMDISP_RESOURCE pRc = vboxResourceAlloc(pResource->SurfCount);
-                Assert(pRc);
-                if (pRc)
-                {
-                    pRc->hResource = pResource->hResource;
-                    pRc->hKMResource = pAllocate->hKMResource;
-                    pRc->pDevice = pDevice;
-                    pRc->fFlags = pRcInfo->fFlags;
-                    pRc->RcDesc = pRcInfo->RcDesc;
-                    pRc->cAllocations = pRcInfo->cAllocInfos;
-                    for (UINT i = 0; i < pRcInfo->cAllocInfos; ++i)
+
+                hr = pDevice->RtCallbacks.pfnAllocateCb(pDevice->hDevice, pDdiAllocate);
+                Assert(hr == S_OK);
+                Assert(pDdiAllocate->hKMResource);
+                if (hr == S_OK)
+                {
+                    for (UINT i = 0; i < pResource->SurfCount; ++i)
                     {
                         PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];
-                        D3DDDI_ALLOCATIONINFO* pDdiAllocInfo = &pDdiAllocInfos[i];
-                        PVBOXWDDM_ALLOCINFO pAllocInfo = &pAllocInfos[i];
+                        D3DDDI_ALLOCATIONINFO *pDdiAllocI = &pDdiAllocate->pAllocationInfo[i];
+                        PVBOXWDDM_ALLOCINFO pAllocInfo = (PVBOXWDDM_ALLOCINFO)pDdiAllocI->pPrivateDriverData;
                         CONST D3DDDI_SURFACEINFO* pSurf = &pResource->pSurfList[i];
-                        pAllocation->hAllocation = pDdiAllocInfo->hAllocation;
+                        pAllocation->hAllocation = pDdiAllocI->hAllocation;
                         pAllocation->enmType = VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC;
                         pAllocation->pvMem = (void*)pSurf->pSysMem;
                         pAllocation->SurfDesc = pAllocInfo->SurfDesc;
                     }
-
-                    pResource->hResource = pRc;
-    //                vboxResourceFree(pRc);
                 }
-                else
-                {
-                    hr = E_OUTOFMEMORY;
-                }
-            }
-
-            RTMemFree(pvBuf);
+            }
+            else
+            {
+                hr = E_OUTOFMEMORY;
+            }
+
+            if (hr == S_OK)
+                pResource->hResource = pRc;
+            else
+                vboxResourceFree(pRc);
         }
         else
@@ -3091,4 +3111,13 @@
             hr = pDevice->RtCallbacks.pfnDeallocateCb(pDevice->hDevice, &Dealloc);
             Assert(hr == S_OK);
+//            for (UINT j = 0; j < pRc->cAllocations; ++j)
+//            {
+//                D3DDDICB_DEALLOCATE Dealloc;
+//                Dealloc.hResource = NULL;
+//                Dealloc.NumAllocations = 1;
+//                Dealloc.HandleList = &pRc->aAllocations[j].hAllocation;
+//                HRESULT tmpHr = pDevice->RtCallbacks.pfnDeallocateCb(pDevice->hDevice, &Dealloc);
+//                Assert(tmpHr = S_OK);
+//            }
         }
     }
@@ -3620,4 +3649,5 @@
         OverInfo.VidPnSourceId = pData->VidPnSourceId;
         OverInfo.OverlayInfo.hAllocation = pAlloc->hAllocation;
+        Assert(pAlloc->hAllocation);
         OverInfo.OverlayInfo.DstRect = *(D3DDDIRECT*)((void*)&pData->OverlayInfo.DstRect);
         OverInfo.OverlayInfo.SrcRect = *(D3DDDIRECT*)((void*)&pData->OverlayInfo.SrcRect);
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoIf.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoIf.h	(revision 30307)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoIf.h	(revision 30308)
@@ -26,5 +26,5 @@
 /* @todo: implement a check to ensure display & miniport versions match.
  * One would increase this whenever definitions in this file are changed */
-#define VBOXVIDEOIF_VERSION 2
+#define VBOXVIDEOIF_VERSION 3
 
 /* create allocation func */
@@ -58,4 +58,5 @@
 {
     VBOXWDDM_ALLOC_TYPE enmType;
+    D3DDDI_RESOURCEFLAGS fFlags;
     VBOXWDDM_SURFACE_DESC SurfDesc;
 } VBOXWDDM_ALLOCINFO, *PVBOXWDDM_ALLOCINFO;
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVhwa.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVhwa.cpp	(revision 30307)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVhwa.cpp	(revision 30308)
@@ -814,4 +814,6 @@
             vboxVhwaCommandSubmitAsynchAndComplete(pOverlay->pDevExt, pCmd);
 
+            pOverlay->pCurentAlloc = pAlloc;
+
             rc = VINF_SUCCESS;
         }
@@ -947,5 +949,5 @@
         {
             PVBOXWDDM_ALLOCATION pCurAlloc = &pRc->aAllocations[i];
-            rc = vboxVhwaHlpCreateSurface(pDevExt, pAlloc,
+            rc = vboxVhwaHlpCreateSurface(pDevExt, pCurAlloc,
                         0, pRc->cAllocations - 1, VBOXVHWA_SCAPS_OVERLAY | VBOXVHWA_SCAPS_VIDEOMEMORY | VBOXVHWA_SCAPS_LOCALVIDMEM | VBOXVHWA_SCAPS_COMPLEX,
                         VidPnSourceId);
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp	(revision 30307)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp	(revision 30308)
@@ -1511,17 +1511,17 @@
                     pAllocationInfo->SupportedWriteSegmentSet = 2;
 #endif
-#ifndef VBOXWDDM_RENDER_FROM_SHADOW
+//#ifndef VBOXWDDM_RENDER_FROM_SHADOW
                     pAllocationInfo->Flags.CpuVisible = 1;
-#endif
+//#endif
                     break;
                 case VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC:
-                    Assert(pResource);
-                    if (pResource)
+//                    Assert(pResource);
+//                    if (pResource)
                     {
-                        Assert(pResource->cAllocations);
-                        if (pResource->cAllocations)
+//                        Assert(pResource->cAllocations);
+//                        if (pResource->cAllocations)
                         {
 #ifdef VBOX_WITH_VIDEOHWACCEL
-                            if (pResource->RcDesc.fFlags.Overlay)
+                            if (pAllocInfo->fFlags.Overlay)
                             {
                                 /* actually we can not "properly" issue create overlay commands to the host here
@@ -1536,4 +1536,6 @@
                                     pAllocationInfo->Flags.CpuVisible = 1;
                                     pAllocationInfo->Size = pAllocation->SurfDesc.cbSize;
+
+                                    pAllocationInfo->AllocationPriority = D3DDDI_ALLOCATIONPRIORITY_HIGH;
                                 }
                                 else
@@ -1542,11 +1544,10 @@
 #endif
                         }
-                        else
-                            Status = STATUS_INVALID_PARAMETER;
+//                        else
+//                            Status = STATUS_INVALID_PARAMETER;
                     }
-                    /* do not break to set CPU visibility flag */
+                    break;
                 case VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE:
                 case VBOXWDDM_ALLOC_TYPE_STD_STAGINGSURFACE:
-                    pAllocationInfo->Flags.Value = 0;
                     pAllocationInfo->Flags.CpuVisible = 1;
                     break;
@@ -1558,5 +1559,21 @@
             }
 
-            if (Status != STATUS_SUCCESS)
+            if (Status == STATUS_SUCCESS)
+            {
+                pAllocation->UsageHint.Version = 0;
+                pAllocation->UsageHint.v1.Flags.Value = 0;
+                pAllocation->UsageHint.v1.Format = pAllocInfo->SurfDesc.format;
+                pAllocation->UsageHint.v1.SwizzledFormat = 0;
+                pAllocation->UsageHint.v1.ByteOffset = 0;
+                pAllocation->UsageHint.v1.Width = pAllocation->SurfDesc.width;
+                pAllocation->UsageHint.v1.Height = pAllocation->SurfDesc.height;
+                pAllocation->UsageHint.v1.Pitch = pAllocation->SurfDesc.pitch;
+                pAllocation->UsageHint.v1.Depth = 0;
+                pAllocation->UsageHint.v1.SlicePitch = 0;
+
+                Assert(!pAllocationInfo->pAllocationUsageHint);
+                pAllocationInfo->pAllocationUsageHint = &pAllocation->UsageHint;
+            }
+            else
                 vboxWddmAllocationDeleteFromResource(pResource, pAllocation);
         }
@@ -3263,6 +3280,13 @@
         int rc = vboxVhwaHlpOverlayCreate(pDevExt, pCreateOverlay->VidPnSourceId, &pCreateOverlay->OverlayInfo, pOverlay);
         AssertRC(rc);
-        if (RT_FAILURE(rc))
+        if (RT_SUCCESS(rc))
+        {
+            pCreateOverlay->hOverlay = pOverlay;;
+        }
+        else
+        {
+            vboxWddmMemFree(pOverlay);
             Status = STATUS_UNSUCCESSFUL;
+        }
     }
     else
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.h	(revision 30307)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.h	(revision 30308)
@@ -63,4 +63,6 @@
     VBOXWDDM_SURFACE_DESC SurfDesc;
     struct VBOXWDDM_RESOURCE *pResource;
+    /* to return to the Runtime on DxgkDdiCreateAllocation */
+    DXGK_ALLOCATIONUSAGEHINT UsageHint;
     uint32_t iIndex;
 } VBOXWDDM_ALLOCATION, *PVBOXWDDM_ALLOCATION;
