VirtualBox

Changeset 80482 in vbox for trunk/src/VBox/Additions/WINNT


Ignore:
Timestamp:
Aug 28, 2019 3:53:17 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
132975
Message:

WDDM: remove Gallium driver dependency on CmdVbva. bugref:9529

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPDevExt.h

    r80478 r80482  
    225225#endif
    226226
     227   ULONG cbVRAMCpuVisible;                     /* How much video memory is available for the CPU visible segment. */
    227228} VBOXMP_DEVEXT, *PVBOXMP_DEVEXT;
    228229
     
    244245DECLINLINE(ULONG) vboxWddmVramCpuVisibleSize(PVBOXMP_DEVEXT pDevExt)
    245246{
    246 #ifdef VBOX_WITH_CROGL
    247     if (pDevExt->fCmdVbvaEnabled)
    248     {
    249         /* all memory layout info should be initialized */
    250         Assert(pDevExt->CmdVbva.Vbva.offVRAMBuffer);
    251         /* page aligned */
    252         Assert(!(pDevExt->CmdVbva.Vbva.offVRAMBuffer & 0xfff));
    253 
    254         return (ULONG)(pDevExt->CmdVbva.Vbva.offVRAMBuffer & ~0xfffULL);
    255     }
    256 #endif
    257     /* all memory layout info should be initialized */
    258     Assert(pDevExt->aSources[0].Vbva.Vbva.offVRAMBuffer);
    259     /* page aligned */
    260     Assert(!(pDevExt->aSources[0].Vbva.Vbva.offVRAMBuffer & 0xfff));
    261 
    262     return (ULONG)(pDevExt->aSources[0].Vbva.Vbva.offVRAMBuffer & ~0xfffULL);
     247    return pDevExt->cbVRAMCpuVisible;
    263248}
    264249
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r80478 r80482  
    883883#endif
    884884
     885        /* vboxWddmVramCpuVisibleSize uses this value */
     886        pDevExt->cbVRAMCpuVisible = offset;
     887
    885888        rc = VBoxMPCmnMapAdapterMemory(VBoxCommonFromDeviceExt(pDevExt), (void**)&pDevExt->pvVisibleVram,
    886889                                       0, vboxWddmVramCpuVisibleSize(pDevExt));
     
    903906                            - VBVA_ADAPTER_INFORMATION_SIZE;
    904907
    905     /* Size of the VBVA buffer which is used to pass VBOXCMDVBVA_* commands to the host.
    906      * Estimate max 4KB per command.
    907      */
    908     ULONG cbCmdVbva = VBOXCMDVBVA_BUFFERSIZE(4096);
    909 
    910     if (cbCmdVbva >= cbAvailable)
    911     {
    912         WARN(("too few VRAM memory fatal, %d, requested for CmdVbva %d", cbAvailable, cbCmdVbva));
     908    /* vboxWddmVramCpuVisibleSize uses this value */
     909    pDevExt->cbVRAMCpuVisible = cbAvailable;
     910
     911    int rc = VBoxMPCmnMapAdapterMemory(VBoxCommonFromDeviceExt(pDevExt), (void**)&pDevExt->pvVisibleVram,
     912                                   0, vboxWddmVramCpuVisibleSize(pDevExt));
     913    if (RT_FAILURE(rc))
     914    {
     915        WARN(("VBoxMPCmnMapAdapterMemory failed, rc %d", rc));
    913916        return STATUS_UNSUCCESSFUL;
    914917    }
    915918
    916 
    917     ULONG offCmdVbva = cbAvailable - cbCmdVbva;
    918 
    919 /// @todo The Gallium 3D driver (which still needs pDevExt->fCmdVbvaEnabled == true) does not (should not) use CmdVbva.
    920 ///       But we still have to create the Vbva structure because code elsewhere in the driver depends on it,
    921 ///       for example vboxWddmVramCpuVisibleSize. CmdVbva will be removed eventually.
    922     int rc = VBoxCmdVbvaCreate(pDevExt, &pDevExt->CmdVbva, offCmdVbva, cbCmdVbva);
    923     if (RT_SUCCESS(rc))
    924     {
    925 // Do not actually send the request to the host, because the Gallium driver does not need this.
    926 //        rc = VBoxCmdVbvaEnable(pDevExt, &pDevExt->CmdVbva);
    927 //        if (RT_SUCCESS(rc))
    928 //        {
    929             rc = VBoxMPCmnMapAdapterMemory(VBoxCommonFromDeviceExt(pDevExt), (void**)&pDevExt->pvVisibleVram,
    930                                            0, vboxWddmVramCpuVisibleSize(pDevExt));
    931             if (RT_SUCCESS(rc))
    932                 return STATUS_SUCCESS;
    933             else
    934                 WARN(("VBoxMPCmnMapAdapterMemory failed, rc %d", rc));
    935 
    936 //            VBoxCmdVbvaDisable(pDevExt, &pDevExt->CmdVbva);
    937 //        }
    938 //        else
    939 //            WARN(("VBoxCmdVbvaEnable failed, rc %d", rc));
    940 
    941         VBoxCmdVbvaDestroy(pDevExt, &pDevExt->CmdVbva);
    942     }
    943     else
    944         WARN(("VBoxCmdVbvaCreate failed, rc %d", rc));
    945 
    946     return STATUS_UNSUCCESSFUL;
     919    return STATUS_SUCCESS;
    947920}
    948921#endif
     
    971944        VBoxMPCmnUnmapAdapterMemory(VBoxCommonFromDeviceExt(pDevExt), (void**)&pDevExt->pvVisibleVram);
    972945
    973     if (pDevExt->fCmdVbvaEnabled)
    974     {
    975 //        rc = VBoxCmdVbvaDisable(pDevExt, &pDevExt->CmdVbva);
    976 //        if (RT_SUCCESS(rc))
    977 //        {
    978 //            rc = VBoxCmdVbvaDestroy(pDevExt, &pDevExt->CmdVbva);
    979 //            if (RT_FAILURE(rc))
    980 //                WARN(("VBoxCmdVbvaDestroy failed %d", rc));
    981 //        }
    982 //        else
    983 //            WARN(("VBoxCmdVbvaDestroy failed %d", rc));
    984 
    985     }
    986     else
     946    if (!pDevExt->fCmdVbvaEnabled)
    987947    {
    988948        for (int i = VBoxCommonFromDeviceExt(pDevExt)->cDisplays-1; i >= 0; --i)
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