VirtualBox

Changeset 53748 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Jan 6, 2015 3:25:52 AM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
97530
Message:

DisplayImpl: Cache the 'Accelerated3DEnabled && GraphicControlerType == VBoxVGA' query, and use it to avoid a number of useless HGCM call setups when VMSVGA is active.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r53730 r53748  
    9292
    9393Display::Display()
    94     : mParent(NULL)
     94    : mParent(NULL), mfIsCr3DEnabled(false)
    9595{
    9696}
     
    306306#if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL)
    307307        BOOL f3DSnapshot = FALSE;
    308         BOOL is3denabled;
    309         that->mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled);
    310         if (   is3denabled
     308        if (   that->mfIsCr3DEnabled
    311309            && that->mCrOglCallbacks.pfnHasData
    312310            && that->mCrOglCallbacks.pfnHasData())
     
    634632    }
    635633
     634    /* Cache the 3D settings. */
     635    BOOL fIs3DEnabled = FALSE;
     636    mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&fIs3DEnabled);
     637    GraphicsControllerType_T enmGpuType = (GraphicsControllerType_T)GraphicsControllerType_VBoxVGA;
     638    mParent->i_machine()->COMGETTER(GraphicsControllerType)(&enmGpuType);
     639    mfIsCr3DEnabled = fIs3DEnabled && enmGpuType == GraphicsControllerType_VBoxVGA;
     640
    636641    /* Confirm a successful initialization */
    637642    autoInitSpan.setSucceeded();
     
    737742    if (!mhCrOglSvc)
    738743    {
    739         /* no 3D or the VMSVGA3d kind. */
    740 #ifdef VBOX_STRICT
    741         BOOL fIs3DEnabled;
    742         mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&fIs3DEnabled);
    743         GraphicsControllerType_T enmGraphicsController;
    744         mParent->i_machine()->COMGETTER(GraphicsControllerType)(&enmGraphicsController);
    745         Assert(!fIs3DEnabled || enmGraphicsController != GraphicsControllerType_VBoxVGA);
    746 #endif
     744        /* No 3D or the VMSVGA3d kind. */
     745        Assert(!mfIsCr3DEnabled);
    747746        return VERR_INVALID_STATE;
    748747    }
     
    791790        return VINF_SUCCESS; /* nop it */
    792791
    793     BOOL is3denabled;
    794     mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled);
    795 
    796     if (is3denabled)
     792    if (mfIsCr3DEnabled)
    797793    {
    798794        int rc = VERR_INVALID_STATE;
     
    802798            if (pVMMDev)
    803799            {
    804                 VBOXCRCMDCTL_HGCM *pCtl =
    805                     (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof(CRVBOXHGCMDEVRESIZE) + sizeof(VBOXCRCMDCTL_HGCM));
     800                VBOXCRCMDCTL_HGCM *pCtl;
     801                pCtl = (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof(CRVBOXHGCMDEVRESIZE) + sizeof(VBOXCRCMDCTL_HGCM));
    806802                if (pCtl)
    807803                {
     
    817813
    818814                    rc = i_crCtlSubmit(&pCtl->Hdr, sizeof(*pCtl), i_displayCrCmdFree, pCtl);
    819                     if (!RT_SUCCESS(rc))
     815                    if (RT_FAILURE(rc))
    820816                    {
    821817                        AssertMsgFailed(("crCtlSubmit failed rc %d\n", rc));
     
    12281224
    12291225#if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL)
    1230     BOOL is3denabled = FALSE;
    1231 
    1232     mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled);
    1233 
    12341226    VMMDev *vmmDev = mParent->i_getVMMDev();
    1235     if (is3denabled && vmmDev)
     1227    if (mfIsCr3DEnabled && vmmDev)
    12361228    {
    12371229        if (mhCrOglSvc)
     
    15591551    {
    15601552#if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL)
    1561         BOOL fIs3DEnabled = FALSE;
    1562         mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&fIs3DEnabled);
    1563 
    1564         if (fIs3DEnabled)
     1553        if (mfIsCr3DEnabled)
    15651554        {
    15661555            VBOXCRCMDCTL_HGCM data;
     
    16051594    if (ptrVM.isOk())
    16061595    {
    1607         BOOL fIs3DEnabled = FALSE;
    1608         mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&fIs3DEnabled);
    1609 
    1610         if (fIs3DEnabled)
     1596        if (mfIsCr3DEnabled)
    16111597        {
    16121598            VBOXCRCMDCTL_HGCM data;
     
    17401726    if (!enabled)
    17411727    {
    1742         BOOL is3denabled = FALSE;
    1743 
    1744         mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled);
    1745 
    17461728        VMMDev *vmmDev = mParent->i_getVMMDev();
    1747         if (is3denabled && vmmDev)
     1729        if (mfIsCr3DEnabled && vmmDev)
    17481730        {
    17491731            VBOXCRCMDCTL_HGCM *pData = (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof(VBOXCRCMDCTL_HGCM));
     
    17771759                                                uint32_t u32Width, uint32_t u32Height)
    17781760{
    1779     BOOL is3denabled;
    1780     pDisplay->mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled);
    1781     if (   is3denabled
     1761    if (   pDisplay->mfIsCr3DEnabled
    17821762        && pDisplay->mCrOglCallbacks.pfnHasData
    17831763        && pDisplay->mCrOglCallbacks.pfnHasData())
     
    26102590HRESULT Display::viewportChanged(ULONG aScreenId, ULONG aX, ULONG aY, ULONG aWidth, ULONG aHeight)
    26112591{
     2592    AssertMsgReturn(aScreenId < mcMonitors, ("aScreendId=%d mcMonitors=%d\n", aScreenId, mcMonitors), E_INVALIDARG);
     2593
    26122594#if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL)
    2613 
    2614     if (mcMonitors <= aScreenId)
    2615     {
    2616         AssertMsgFailed(("invalid screen id\n"));
    2617         return E_INVALIDARG;
    2618     }
    2619 
    2620     BOOL is3denabled;
    2621     mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled);
    2622 
    2623     if (is3denabled)
     2595    if (mfIsCr3DEnabled)
    26242596    {
    26252597        int rc = i_crViewportNotify(aScreenId, aX, aY, aWidth, aHeight);
     
    26392611    /* The driver might not have been constructed yet */
    26402612    if (mpDrv)
    2641     {
    26422613        mpDrv->pUpPort->pfnSetViewPort(mpDrv->pUpPort, aScreenId, aX, aY, aWidth, aHeight);
    2643     }
    26442614#endif
    26452615
     
    28702840    RTCritSectRwLeaveExcl(&mCrOglLock);
    28712841}
    2872 #endif
     2842#endif /* VBOX_WITH_CRHGSMI */
    28732843
    28742844/**
     
    29372907 * @thread EMT
    29382908 */
    2939 DECLCALLBACK(void) Display::i_displayRefreshCallback(PPDMIDISPLAYCONNECTOR pInterface)
     2909/*static*/ DECLCALLBACK(void) Display::i_displayRefreshCallback(PPDMIDISPLAYCONNECTOR pInterface)
    29402910{
    29412911    PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface);
     
    29792949        do {
    29802950# if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL)
    2981             BOOL is3denabled;
    2982             pDisplay->mParent->i_machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled);
    2983             if (is3denabled)
     2951            if (pDisplay->mfIsCr3DEnabled)
    29842952            {
    29852953                if (ASMAtomicCmpXchgU32(&pDisplay->mfCrOglVideoRecState, CRVREC_STATE_SUBMITTED, CRVREC_STATE_IDLE))
     
    30002968                        if (RT_SUCCESS(rc))
    30012969                            break;
    3002                         else
    3003                             AssertMsgFailed(("crCtlSubmit failed rc %d\n", rc));
     2970                        AssertMsgFailed(("crCtlSubmit failed rc %d\n", rc));
    30042971                    }
    30052972
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