VirtualBox

Changeset 64085 in vbox


Ignore:
Timestamp:
Sep 28, 2016 3:31:56 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
111026
Message:

3D: Skip VBVA_SCREEN_F_DISABLED flag for targets disabled by PM, bugref:8387

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp

    r63963 r64085  
    23502350
    23512351    PVBOXWDDM_SOURCE pSource = &paSources[VidPnSourceId];
    2352     pSource->bBlankedByPowerOff = bPathPowerTransition ? pAllocation == NULL : 0;
     2352    NTSTATUS Status;
     2353
     2354    if (bPathPowerTransition)
     2355    {
     2356        RTRECTSIZE PinnedModeSize;
     2357        bool bHasPinnedMode;
     2358
     2359        Status = vboxVidPnQueryPinnedSourceMode(hDesiredVidPn, pVidPnInterface, VidPnSourceId, &PinnedModeSize);
     2360        bHasPinnedMode = Status == STATUS_SUCCESS && PinnedModeSize.cx > 0 && PinnedModeSize.cy > 0;
     2361        pSource->bBlankedByPowerOff = !bHasPinnedMode;
     2362
     2363        LOG(("Path power transition: srcId %d goes blank %d", VidPnSourceId, pSource->bBlankedByPowerOff));
     2364    }
    23532365
    23542366    VBOXWDDM_TARGET_ITER Iter;
     
    23672379    VBoxVidPnStSourceCleanup(paSources, VidPnSourceId, paTargets, (uint32_t)VBoxCommonFromDeviceExt(pDevExt)->cDisplays);
    23682380
    2369     NTSTATUS Status = pVidPnInterface->pfnAcquireSourceModeSet(hDesiredVidPn,
     2381    Status = pVidPnInterface->pfnAcquireSourceModeSet(hDesiredVidPn,
    23702382                VidPnSourceId,
    23712383                &hCurVidPnSourceModeSet,
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r63943 r64085  
    574574
    575575    bool fFound = false;
    576     bool fPowerOff = false;
    577576    for (int i = 0; i < VBoxCommonFromDeviceExt(pDevExt)->cDisplays; ++i)
    578577    {
     
    585584        }
    586585
     586        if (pTarget->fBlankedByPowerOff)
     587        {
     588            LOG(("Skip doing DISABLED request for PowerOff tgt %d", pTarget->u32Id));
     589            continue;
     590        }
     591
    587592        if (pTarget->u8SyncState != VBOXWDDM_HGSYNC_F_SYNCED_ALL)
    588593        {
     594            ASMBitSet(aTargetMap, i);
    589595            fFound = true;
    590             /* Assume that either all targets are powered off or all are disabled (usually true). */
    591             fPowerOff = pTarget->fBlankedByPowerOff;
    592         }
    593 
    594         ASMBitSet(aTargetMap, i);
     596        }
    595597    }
    596598
     
    601603    VBOXWDDM_ALLOC_DATA AllocData;
    602604    VBoxVidPnAllocDataInit(&AllocData, D3DDDI_ID_UNINITIALIZED);
    603     NTSTATUS Status = vboxWddmGhDisplaySetInfoNew(pDevExt, &AllocData, aTargetMap, &VScreenPos, 0, fPowerOff);
     605    NTSTATUS Status = vboxWddmGhDisplaySetInfoNew(pDevExt, &AllocData, aTargetMap, &VScreenPos, 0, false);
    604606    if (!NT_SUCCESS(Status))
    605607    {
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