VirtualBox

Ignore:
Timestamp:
Oct 30, 2013 1:13:02 PM (11 years ago)
Author:
vboxsync
Message:

wddm: 1. switch to using common VBVA code 2.dx-based command submission - work in progress 3.some prototyping for getting 3D data for video recording/take snapshot

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxUhgsmiBase.cpp

    r43723 r49332  
    3333int vboxUhgsmiBaseBufferTerm(PVBOXUHGSMI_BUFFER_PRIVATE_ESC_BASE pBuffer)
    3434{
    35     PVBOXUHGSMI_PRIVATE_BASE pPrivate = VBOXUHGSMIBASE_GET(pBuffer->PrivateBase.pHgsmi);
     35    PVBOXUHGSMI_PRIVATE_BASE pPrivate = VBOXUHGSMIBASE_GET(pBuffer->BasePrivate.pHgsmi);
    3636    VBOXDISPIFESCAPE_UHGSMI_DEALLOCATE DeallocInfo = {0};
    3737    DeallocInfo.EscapeHdr.escapeCode = VBOXESC_UHGSMI_DEALLOCATE;
     
    9898    pBuffer->Alloc = AllocInfo.Alloc;
    9999    Assert(pBuffer->Alloc.pvData);
    100     pBuffer->PrivateBase.pHgsmi = pPrivate;
    101     pBuffer->PrivateBase.Base.pfnLock = vboxUhgsmiBaseEscBufferLock;
    102     pBuffer->PrivateBase.Base.pfnUnlock = vboxUhgsmiBaseEscBufferUnlock;
    103     pBuffer->PrivateBase.Base.pfnDestroy = pfnDestroy;
    104     pBuffer->PrivateBase.Base.fType = fUhgsmiType;
    105     pBuffer->PrivateBase.Base.cbBuffer = AllocInfo.Alloc.cbData;
     100    pBuffer->BasePrivate.pHgsmi = pPrivate;
     101    pBuffer->BasePrivate.Base.pfnLock = vboxUhgsmiBaseEscBufferLock;
     102    pBuffer->BasePrivate.Base.pfnUnlock = vboxUhgsmiBaseEscBufferUnlock;
     103    pBuffer->BasePrivate.Base.pfnDestroy = pfnDestroy;
     104    pBuffer->BasePrivate.Base.fType = fUhgsmiType;
     105    pBuffer->BasePrivate.Base.cbBuffer = AllocInfo.Alloc.cbData;
    106106    pBuffer->hSynch = hSynch;
    107107    return VINF_SUCCESS;
     
    137137    if (RT_SUCCESS(rc))
    138138    {
    139         *ppBuf = &pBuffer->PrivateBase.Base;
     139        *ppBuf = &pBuffer->BasePrivate.Base;
    140140        return VINF_SUCCESS;
    141141    }
     
    182182        {
    183183            pSubmInfo->Info.offData = 0;
    184             pSubmInfo->Info.cbData = pBuf->PrivateBase.Base.cbBuffer;
     184            pSubmInfo->Info.cbData = pBuf->BasePrivate.Base.cbBuffer;
    185185        }
    186186        else
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxUhgsmiBase.h

    r44529 r49332  
    6868typedef struct VBOXUHGSMI_BUFFER_PRIVATE_ESC_BASE
    6969{
    70     VBOXUHGSMI_BUFFER_PRIVATE_BASE PrivateBase;
     70    VBOXUHGSMI_BUFFER_PRIVATE_BASE BasePrivate;
    7171    VBOXVIDEOCM_UM_ALLOC Alloc;
    7272    HANDLE hSynch;
     
    7575typedef struct VBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE
    7676{
    77     VBOXUHGSMI_BUFFER_PRIVATE_BASE PrivateBase;
     77    VBOXUHGSMI_BUFFER_PRIVATE_BASE BasePrivate;
    7878    D3DKMT_HANDLE hAllocation;
    7979    UINT aLockPageIndices[1];
     
    8484#define VBOXUHGSMIBASE_GET_BUFFER(_p) VBOXUHGSMIBASE_GET_PRIVATE(_p, VBOXUHGSMI_BUFFER_PRIVATE_BASE)
    8585
    86 #define VBOXUHGSMIPRIVATEBASE_GET_PRIVATE(_p, _t) ((_t*)(((uint8_t*)_p) - RT_OFFSETOF(_t, PrivateBase.Base)))
     86#define VBOXUHGSMIPRIVATEBASE_GET_PRIVATE(_p, _t) ((_t*)(((uint8_t*)_p) - RT_OFFSETOF(_t, BasePrivate.Base)))
    8787#define VBOXUHGSMIESCBASE_GET_BUFFER(_p) VBOXUHGSMIPRIVATEBASE_GET_PRIVATE(_p, VBOXUHGSMI_BUFFER_PRIVATE_ESC_BASE)
    8888#define VBOXUHGSMDXALLOCBASE_GET_BUFFER(_p) VBOXUHGSMIPRIVATEBASE_GET_PRIVATE(_p, VBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE)
    8989
    90 DECLINLINE(int) vboxUhgsmiBaseLockData(PVBOXUHGSMI_BUFFER pBuf, uint32_t offLock, uint32_t cbLock, VBOXUHGSMI_BUFFER_LOCK_FLAGS fFlags,
    91                                     D3DDDICB_LOCKFLAGS *pfFlags, UINT *pNumPages, UINT* pPages)
    92 {
     90DECLINLINE(int) vboxUhgsmiBaseDxLockData(PVBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE pPrivate, uint32_t offLock, uint32_t cbLock, VBOXUHGSMI_BUFFER_LOCK_FLAGS fFlags,
     91                                    D3DDDICB_LOCKFLAGS *pfFlags, UINT *pNumPages)
     92{
     93    PVBOXUHGSMI_BUFFER pBuf = &pPrivate->BasePrivate.Base;
    9394    D3DDDICB_LOCKFLAGS fLockFlags;
    9495    fLockFlags.Value = 0;
     
    127128            for (UINT i = 0, j = iFirstPage; i < cPages; ++i, ++j)
    128129            {
    129                 pPages[i] = j;
     130                pPrivate->aLockPageIndices[i] = j;
    130131            }
    131132        }
     
    141142}
    142143
    143 #if 0
    144 DECLINLINE(int) vboxUhgsmiBaseDmaFill(PVBOXUHGSMI_BUFFER_SUBMIT aBuffers, uint32_t cBuffers,
     144DECLINLINE(int) vboxUhgsmiBaseDxDmaFill(PVBOXUHGSMI_BUFFER_SUBMIT aBuffers, uint32_t cBuffers,
    145145        VOID* pCommandBuffer, UINT *pCommandBufferSize,
    146146        D3DDDI_ALLOCATIONLIST *pAllocationList, UINT AllocationListSize,
     
    170170    {
    171171        PVBOXUHGSMI_BUFFER_SUBMIT pBufInfo = &aBuffers[i];
    172         PVBOXUHGSMI_BUFFER_PRIVATE_BASE pBuffer = VBOXUHGSMIBASE_GET_BUFFER(pBufInfo->pBuf);
     172        PVBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE pBuffer = VBOXUHGSMDXALLOCBASE_GET_BUFFER(pBufInfo->pBuf);
    173173
    174174        memset(pAllocationList, 0, sizeof (D3DDDI_ALLOCATIONLIST));
     
    181181        {
    182182            pBufSubmInfo->offData = 0;
    183             pBufSubmInfo->cbData = pBuffer->Base.cbBuffer;
     183            pBufSubmInfo->cbData = pBuffer->BasePrivate.Base.cbBuffer;
    184184        }
    185185        else
     
    195195    return VINF_SUCCESS;
    196196}
    197 #endif
    198197
    199198DECLCALLBACK(int) vboxUhgsmiBaseEscBufferLock(PVBOXUHGSMI_BUFFER pBuf, uint32_t offLock, uint32_t cbLock, VBOXUHGSMI_BUFFER_LOCK_FLAGS fFlags, void**pvLock);
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxUhgsmiDisp.cpp

    r44529 r49332  
    2222#define VBOXUHGSMID3D_GET(_p) VBOXUHGSMID3D_GET_PRIVATE(_p, VBOXUHGSMI_PRIVATE_D3D)
    2323
    24 #if 0
    25 #define VBOXUHGSMID3D_GET_BUFFER(_p) VBOXUHGSMID3D_GET_PRIVATE(_p, VBOXUHGSMI_BUFFER_PRIVATE_D3D)
    26 
    2724#include <iprt/mem.h>
    2825#include <iprt/err.h>
    2926
    30 typedef struct VBOXUHGSMI_BUFFER_PRIVATE_D3D
    31 {
    32     VBOXUHGSMI_BUFFER_PRIVATE_BASE BasePrivate;
    33     PVBOXWDDMDISP_DEVICE pDevice;
    34     UINT aLockPageIndices[1];
    35 } VBOXUHGSMI_BUFFER_PRIVATE_D3D, *PVBOXUHGSMI_BUFFER_PRIVATE_D3D;
    36 
    37 
    38 
    3927DECLCALLBACK(int) vboxUhgsmiD3DBufferDestroy(PVBOXUHGSMI_BUFFER pBuf)
    4028{
    41     PVBOXUHGSMI_BUFFER_PRIVATE_D3D pBuffer = VBOXUHGSMID3D_GET_BUFFER(pBuf);
     29    PVBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE pBuffer = VBOXUHGSMDXALLOCBASE_GET_BUFFER(pBuf);
     30    struct VBOXWDDMDISP_DEVICE *pDevice = VBOXUHGSMID3D_GET(pBuffer->BasePrivate.pHgsmi)->pDevice;
    4231    D3DDDICB_DEALLOCATE DdiDealloc;
    4332    DdiDealloc.hResource = 0;
    4433    DdiDealloc.NumAllocations = 1;
    45     DdiDealloc.HandleList = &pBuffer->BasePrivate.hAllocation;
    46     HRESULT hr = pBuffer->pDevice->RtCallbacks.pfnDeallocateCb(pBuffer->pDevice->hDevice, &DdiDealloc);
    47     Assert(hr == S_OK);
    48     if (hr == S_OK)
    49     {
    50         if (pBuffer->BasePrivate.hSynch)
    51             CloseHandle(pBuffer->BasePrivate.hSynch);
     34    DdiDealloc.HandleList = &pBuffer->hAllocation;
     35    HRESULT hr = pDevice->RtCallbacks.pfnDeallocateCb(pDevice->hDevice, &DdiDealloc);
     36    if (hr == S_OK)
     37    {
    5238        RTMemFree(pBuffer);
    5339        return VINF_SUCCESS;
    5440    }
    55     return VERR_GENERAL_FAILURE;
    56 }
    57 
     41
     42    WARN(("pfnDeallocateCb failed, hr %#x", hr));
     43    return VERR_GENERAL_FAILURE;
     44}
     45
     46/* typedef DECLCALLBACK(int) FNVBOXUHGSMI_BUFFER_LOCK(PVBOXUHGSMI_BUFFER pBuf, uint32_t offLock, uint32_t cbLock, VBOXUHGSMI_BUFFER_LOCK_FLAGS fFlags, void**pvLock); */
    5847DECLCALLBACK(int) vboxUhgsmiD3DBufferLock(PVBOXUHGSMI_BUFFER pBuf, uint32_t offLock, uint32_t cbLock, VBOXUHGSMI_BUFFER_LOCK_FLAGS fFlags, void**pvLock)
    5948{
    60     PVBOXUHGSMI_BUFFER_PRIVATE_D3D pBuffer = VBOXUHGSMID3D_GET_BUFFER(pBuf);
     49    PVBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE pBuffer = VBOXUHGSMDXALLOCBASE_GET_BUFFER(pBuf);
     50    struct VBOXWDDMDISP_DEVICE *pDevice = VBOXUHGSMID3D_GET(pBuffer->BasePrivate.pHgsmi)->pDevice;
    6151    D3DDDICB_LOCK DdiLock = {0};
    62     DdiLock.hAllocation = pBuffer->BasePrivate.hAllocation;
     52    DdiLock.hAllocation = pBuffer->hAllocation;
    6353    DdiLock.PrivateDriverData = 0;
    6454
    65     int rc = vboxUhgsmiBaseLockData(pBuf, offLock, cbLock, fFlags,
    66                                          &DdiLock.Flags, &DdiLock.NumPages, pBuffer->aLockPageIndices);
    67     AssertRC(rc);
    68     if (RT_FAILURE(rc))
     55    int rc = vboxUhgsmiBaseDxLockData(pBuffer, offLock, cbLock, fFlags,
     56                                         &DdiLock.Flags, &DdiLock.NumPages);
     57    if (!RT_SUCCESS(rc))
     58    {
     59        WARN(("vboxUhgsmiBaseDxLockData failed rc %d", rc));
    6960        return rc;
     61    }
    7062
    7163    if (DdiLock.NumPages)
     
    7466        DdiLock.pPages = NULL;
    7567
    76     HRESULT hr = pBuffer->pDevice->RtCallbacks.pfnLockCb(pBuffer->pDevice->hDevice, &DdiLock);
    77     Assert(hr == S_OK);
     68    HRESULT hr = pDevice->RtCallbacks.pfnLockCb(pDevice->hDevice, &DdiLock);
    7869    if (hr == S_OK)
    7970    {
     
    8172        return VINF_SUCCESS;
    8273    }
     74
     75    WARN(("pfnLockCb failed, hr %#x", hr));
    8376    return VERR_GENERAL_FAILURE;
    8477}
     
    8679DECLCALLBACK(int) vboxUhgsmiD3DBufferUnlock(PVBOXUHGSMI_BUFFER pBuf)
    8780{
    88     PVBOXUHGSMI_BUFFER_PRIVATE_D3D pBuffer = VBOXUHGSMID3D_GET_BUFFER(pBuf);
     81    PVBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE pBuffer = VBOXUHGSMDXALLOCBASE_GET_BUFFER(pBuf);
     82    struct VBOXWDDMDISP_DEVICE *pDevice = VBOXUHGSMID3D_GET(pBuffer->BasePrivate.pHgsmi)->pDevice;
    8983    D3DDDICB_UNLOCK DdiUnlock;
    9084    DdiUnlock.NumAllocations = 1;
    91     DdiUnlock.phAllocations = &pBuffer->BasePrivate.hAllocation;
    92     HRESULT hr = pBuffer->pDevice->RtCallbacks.pfnUnlockCb(pBuffer->pDevice->hDevice, &DdiUnlock);
    93     Assert(hr == S_OK);
    94     if (hr == S_OK)
    95         return VINF_SUCCESS;
    96     return VERR_GENERAL_FAILURE;
    97 }
    98 
    99 DECLCALLBACK(int) vboxUhgsmiD3DBufferCreate(PVBOXUHGSMI pHgsmi, uint32_t cbBuf, VBOXUHGSMI_BUFFER_TYPE_FLAGS fUhgsmiType, PVBOXUHGSMI_BUFFER* ppBuf)
    100 {
    101     HANDLE hSynch = NULL;
     85    DdiUnlock.phAllocations = &pBuffer->hAllocation;
     86    HRESULT hr = pDevice->RtCallbacks.pfnUnlockCb(pDevice->hDevice, &DdiUnlock);
     87    if (hr == S_OK)
     88        return VINF_SUCCESS;
     89
     90    WARN(("pfnUnlockCb failed, hr %#x", hr));
     91    return VERR_GENERAL_FAILURE;
     92}
     93
     94/*typedef DECLCALLBACK(int) FNVBOXUHGSMI_BUFFER_CREATE(PVBOXUHGSMI pHgsmi, uint32_t cbBuf, VBOXUHGSMI_BUFFER_TYPE_FLAGS fType, PVBOXUHGSMI_BUFFER* ppBuf);*/
     95DECLCALLBACK(int) vboxUhgsmiD3DBufferCreate(PVBOXUHGSMI pHgsmi, uint32_t cbBuf, VBOXUHGSMI_BUFFER_TYPE_FLAGS fType, PVBOXUHGSMI_BUFFER* ppBuf)
     96{
    10297    if (!cbBuf)
    10398        return VERR_INVALID_PARAMETER;
    10499
    105     int rc = vboxUhgsmiBaseEventChkCreate(fUhgsmiType, &hSynch);
    106     AssertRC(rc);
    107     if (RT_FAILURE(rc))
    108         return rc;
     100    int rc = VINF_SUCCESS;
    109101
    110102    cbBuf = VBOXWDDM_ROUNDBOUND(cbBuf, 0x1000);
     
    114106
    115107    PVBOXUHGSMI_PRIVATE_D3D pPrivate = VBOXUHGSMID3D_GET(pHgsmi);
    116     PVBOXUHGSMI_BUFFER_PRIVATE_D3D pBuf = (PVBOXUHGSMI_BUFFER_PRIVATE_D3D)RTMemAllocZ(RT_OFFSETOF(VBOXUHGSMI_BUFFER_PRIVATE_D3D, aLockPageIndices[cPages]));
    117     Assert(pBuf);
     108    PVBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE pBuf = (PVBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE)RTMemAllocZ(RT_OFFSETOF(VBOXUHGSMI_BUFFER_PRIVATE_DX_ALLOC_BASE, aLockPageIndices[cPages]));
    118109    if (pBuf)
    119110    {
    120         struct
    121         {
    122             D3DDDICB_ALLOCATE DdiAlloc;
    123             D3DDDI_ALLOCATIONINFO DdiAllocInfo;
    124             VBOXWDDM_ALLOCINFO AllocInfo;
    125         } Buf;
    126         memset(&Buf, 0, sizeof (Buf));
    127         Buf.DdiAlloc.hResource = NULL;
    128         Buf.DdiAlloc.hKMResource = NULL;
    129         Buf.DdiAlloc.NumAllocations = 1;
    130         Buf.DdiAlloc.pAllocationInfo = &Buf.DdiAllocInfo;
    131         Buf.DdiAllocInfo.pPrivateDriverData = &Buf.AllocInfo;
    132         Buf.DdiAllocInfo.PrivateDriverDataSize = sizeof (Buf.AllocInfo);
    133         Buf.AllocInfo.enmType = VBOXWDDM_ALLOC_TYPE_UMD_HGSMI_BUFFER;
    134         Buf.AllocInfo.cbBuffer = cbBuf;
    135         Buf.AllocInfo.hSynch = hSynch;
    136         Buf.AllocInfo.fUhgsmiType = fUhgsmiType;
    137 
    138         HRESULT hr = pPrivate->pDevice->RtCallbacks.pfnAllocateCb(pPrivate->pDevice->hDevice, &Buf.DdiAlloc);
    139         Assert(hr == S_OK);
     111        D3DDDICB_ALLOCATE DdiAlloc;
     112        D3DDDI_ALLOCATIONINFO DdiAllocInfo;
     113        VBOXWDDM_ALLOCINFO AllocInfo;
     114
     115        memset(&DdiAlloc, 0, sizeof (DdiAlloc));
     116        DdiAlloc.hResource = NULL;
     117        DdiAlloc.hKMResource = NULL;
     118        DdiAlloc.NumAllocations = 1;
     119        DdiAlloc.pAllocationInfo = &DdiAllocInfo;
     120        DdiAllocInfo.pPrivateDriverData = &AllocInfo;
     121        DdiAllocInfo.PrivateDriverDataSize = sizeof (AllocInfo);
     122        AllocInfo.enmType = VBOXWDDM_ALLOC_TYPE_UMD_HGSMI_BUFFER;
     123        AllocInfo.cbBuffer = cbBuf;
     124        AllocInfo.hSynch = 0;
     125        AllocInfo.fUhgsmiType = fType;
     126
     127        HRESULT hr = pPrivate->pDevice->RtCallbacks.pfnAllocateCb(pPrivate->pDevice->hDevice, &DdiAlloc);
    140128        if (hr == S_OK)
    141129        {
    142             Assert(Buf.DdiAllocInfo.hAllocation);
     130            Assert(DdiAllocInfo.hAllocation);
    143131            pBuf->BasePrivate.Base.pfnLock = vboxUhgsmiD3DBufferLock;
    144132            pBuf->BasePrivate.Base.pfnUnlock = vboxUhgsmiD3DBufferUnlock;
    145 //            pBuf->Base.pfnAdjustValidDataRange = vboxUhgsmiD3DBufferAdjustValidDataRange;
    146133            pBuf->BasePrivate.Base.pfnDestroy = vboxUhgsmiD3DBufferDestroy;
    147134
    148             pBuf->BasePrivate.Base.fType = fUhgsmiType;
     135            pBuf->BasePrivate.Base.fType = fType;
    149136            pBuf->BasePrivate.Base.cbBuffer = cbBuf;
    150137
    151             pBuf->pDevice = pPrivate->pDevice;
    152             pBuf->BasePrivate.hAllocation = Buf.DdiAllocInfo.hAllocation;
     138            pBuf->hAllocation = DdiAllocInfo.hAllocation;
    153139
    154140            *ppBuf = &pBuf->BasePrivate.Base;
     
    156142            return VINF_SUCCESS;
    157143        }
     144        else
     145        {
     146            WARN(("pfnAllocateCb failed hr %#x"));
     147            rc = VERR_GENERAL_FAILURE;
     148        }
    158149
    159150        RTMemFree(pBuf);
    160151    }
    161152    else
     153    {
     154        WARN(("RTMemAllocZ failed"));
    162155        rc = VERR_NO_MEMORY;
    163 
    164     if (hSynch)
    165         CloseHandle(hSynch);
     156    }
    166157
    167158    return rc;
    168159}
    169160
     161/* typedef DECLCALLBACK(int) FNVBOXUHGSMI_BUFFER_SUBMIT(PVBOXUHGSMI pHgsmi, PVBOXUHGSMI_BUFFER_SUBMIT aBuffers, uint32_t cBuffers); */
    170162DECLCALLBACK(int) vboxUhgsmiD3DBufferSubmit(PVBOXUHGSMI pHgsmi, PVBOXUHGSMI_BUFFER_SUBMIT aBuffers, uint32_t cBuffers)
    171163{
     
    173165    PVBOXWDDMDISP_DEVICE pDevice = pHg->pDevice;
    174166    UINT cbDmaCmd = pDevice->DefaultContext.ContextInfo.CommandBufferSize;
    175     int rc = vboxUhgsmiBaseDmaFill(aBuffers, cBuffers,
     167    int rc = vboxUhgsmiBaseDxDmaFill(aBuffers, cBuffers,
    176168            pDevice->DefaultContext.ContextInfo.pCommandBuffer, &cbDmaCmd,
    177169            pDevice->DefaultContext.ContextInfo.pAllocationList, pDevice->DefaultContext.ContextInfo.AllocationListSize,
    178170            pDevice->DefaultContext.ContextInfo.pPatchLocationList, pDevice->DefaultContext.ContextInfo.PatchLocationListSize);
    179     AssertRC(rc);
    180171    if (RT_FAILURE(rc))
     172    {
     173        WARN(("vboxUhgsmiBaseDxDmaFill failed, rc %d", rc));
    181174        return rc;
     175    }
    182176
    183177    D3DDDICB_RENDER DdiRender = {0};
     
    194188
    195189    HRESULT hr = pDevice->RtCallbacks.pfnRenderCb(pDevice->hDevice, &DdiRender);
    196     Assert(hr == S_OK);
    197190    if (hr == S_OK)
    198191    {
     
    207200    }
    208201
    209     return VERR_GENERAL_FAILURE;
    210 }
    211 
    212 HRESULT vboxUhgsmiD3DInit(PVBOXUHGSMI_PRIVATE_D3D pHgsmi, PVBOXWDDMDISP_DEVICE pDevice)
     202    WARN(("pfnRenderCb failed, hr %#x", hr));
     203    return VERR_GENERAL_FAILURE;
     204}
     205
     206void vboxUhgsmiD3DInit(PVBOXUHGSMI_PRIVATE_D3D pHgsmi, PVBOXWDDMDISP_DEVICE pDevice)
    213207{
    214208    pHgsmi->BasePrivate.Base.pfnBufferCreate = vboxUhgsmiD3DBufferCreate;
    215209    pHgsmi->BasePrivate.Base.pfnBufferSubmit = vboxUhgsmiD3DBufferSubmit;
     210    /* no escapes (for now) */
     211    pHgsmi->BasePrivate.pfnEscape = NULL;
    216212    pHgsmi->pDevice = pDevice;
    217     return S_OK;
    218 }
    219 #endif
     213}
    220214
    221215static DECLCALLBACK(int) vboxCrHhgsmiDispEscape(struct VBOXUHGSMI_PRIVATE_BASE *pHgsmi, void *pvData, uint32_t cbData, BOOL fHwAccess)
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxUhgsmiDisp.h

    r44529 r49332  
    2929} VBOXUHGSMI_PRIVATE_D3D, *PVBOXUHGSMI_PRIVATE_D3D;
    3030
    31 #if 0
    3231void vboxUhgsmiD3DInit(PVBOXUHGSMI_PRIVATE_D3D pHgsmi, struct VBOXWDDMDISP_DEVICE *pDevice);
    33 #endif
    3432
    3533void vboxUhgsmiD3DEscInit(PVBOXUHGSMI_PRIVATE_D3D pHgsmi, struct VBOXWDDMDISP_DEVICE *pDevice);
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxUhgsmiKmt.cpp

    r44529 r49332  
    7171    EnterCriticalSection(&pBuffer->CritSect);
    7272
    73     int rc = vboxUhgsmiBaseLockData(pBuf, offLock, cbLock, fFlags,
    74                                          &DdiLock.Flags, &DdiLock.NumPages, pBuffer->aLockPageIndices);
     73    int rc = vboxUhgsmiBaseDxLockData(&pBuffer->BasePrivate, offLock, cbLock, fFlags,
     74                                         &DdiLock.Flags, &DdiLock.NumPages);
    7575    AssertRC(rc);
    7676    if (RT_FAILURE(rc))
     
    194194    PVBOXUHGSMI_PRIVATE_KMT pHg = VBOXUHGSMIKMT_GET(pHgsmi);
    195195    UINT cbDmaCmd = pHg->Context.CommandBufferSize;
    196     int rc = vboxUhgsmiBaseDmaFill(aBuffers, cBuffers,
     196    int rc = vboxUhgsmiBaseDxDmaFill(aBuffers, cBuffers,
    197197            pHg->Context.pCommandBuffer, &cbDmaCmd,
    198198            pHg->Context.pAllocationList, pHg->Context.AllocationListSize,
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette