Changeset 42158 in vbox
- Timestamp:
- Jul 16, 2012 11:28:07 AM (13 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVdma.cpp
r42081 r42158 585 585 { 586 586 if (pAlloc->AllocData.SurfDesc.VidPnSourceId != D3DDDI_ID_UNINITIALIZED 587 && pAlloc->bAssigned 588 #if 0//def VBOXWDDM_RENDER_FROM_SHADOW 589 && pAlloc->enmType == VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE 590 #else 591 && pAlloc->enmType == VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE 592 #endif 587 && VBOXWDDM_IS_FB_ALLOCATION(pDevExt, pAlloc) 588 && pAlloc->bVisible 593 589 ) 594 590 { … … 768 764 vboxVdmaGgDmaBlt(pDevExt, &pBlt->Blt); 769 765 770 if ((pDstAlloc->enmType == VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE 771 || pDstAlloc->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC) 772 && pDstAlloc->bAssigned) 766 if (VBOXWDDM_IS_FB_ALLOCATION(pDevExt, pDstAlloc) 767 && pDstAlloc->bVisible) 773 768 { 774 769 VBOXWDDM_SOURCE *pSource = &pDevExt->aSources[pDstAlloc->AllocData.SurfDesc.VidPnSourceId]; -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp
r42128 r42158 1571 1571 if (pNewVidPnPresentPathInfo->VidPnSourceId != pNewVidPnPresentPathInfo->VidPnTargetId) 1572 1572 { 1573 WARN(("unsupported source(%d)->target(%d) pair", pNewVidPnPresentPathInfo->VidPnSourceId, pNewVidPnPresentPathInfo->VidPnTargetId));1573 LOG(("unsupported source(%d)->target(%d) pair", pNewVidPnPresentPathInfo->VidPnSourceId, pNewVidPnPresentPathInfo->VidPnTargetId)); 1574 1574 return FALSE; 1575 1575 } -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
r42154 r42158 2981 2981 fRenderFromSharedDisabled = vboxWddmModeRenderFromShadowCheckOnSubmitCommand(pDevExt, NULL); 2982 2982 vboxWddmCheckUpdateFramebufferAddress(pDevExt, pSource); 2983 uint32_t cUnlockedVBVADisabled = ASMAtomicReadU32(&pDevExt->cUnlockedVBVADisabled); 2984 if (!cUnlockedVBVADisabled) 2985 VBOXVBVA_OP(ReportDirtyRect, pDevExt, pSource, &pS2P->Shadow2Primary.SrcRect); 2986 else 2987 { 2988 Assert(KeGetCurrentIrql() == DISPATCH_LEVEL); 2989 VBOXVBVA_OP_WITHLOCK_ATDPC(ReportDirtyRect, pDevExt, pSource, &pS2P->Shadow2Primary.SrcRect); 2990 } 2991 /* get DPC data at IRQL */ 2983 if (pSrcAlloc->bVisible) 2984 { 2985 uint32_t cUnlockedVBVADisabled = ASMAtomicReadU32(&pDevExt->cUnlockedVBVADisabled); 2986 if (!cUnlockedVBVADisabled) 2987 VBOXVBVA_OP(ReportDirtyRect, pDevExt, pSource, &pS2P->Shadow2Primary.SrcRect); 2988 else 2989 { 2990 Assert(KeGetCurrentIrql() == DISPATCH_LEVEL); 2991 VBOXVBVA_OP_WITHLOCK_ATDPC(ReportDirtyRect, pDevExt, pSource, &pS2P->Shadow2Primary.SrcRect); 2992 } 2993 } 2992 2994 2993 2995 Status = vboxVdmaDdiCmdFenceComplete(pDevExt, pContext->NodeOrdinal, pSubmitCommand->SubmissionFenceId, DXGK_INTERRUPT_DMA_COMPLETED); … … 3001 3003 PVBOXWDDM_ALLOCATION pDstAlloc = pBlt->Blt.DstAlloc.pAlloc; 3002 3004 PVBOXWDDM_ALLOCATION pSrcAlloc = pBlt->Blt.SrcAlloc.pAlloc; 3003 VBOXWDDM_SOURCE *pSource = &pDevExt->aSources[pDstAlloc->AllocData.SurfDesc.VidPnSourceId];3004 3005 Assert(pDstAlloc->AllocData.SurfDesc.VidPnSourceId < VBOX_VIDEO_MAX_SCREENS);3006 3005 3007 3006 vboxWddmAddrSetVram(&pDstAlloc->AllocData.Addr, pBlt->Blt.DstAlloc.segmentIdAlloc, pBlt->Blt.DstAlloc.offAlloc); … … 3018 3017 ) 3019 3018 { 3019 VBOXWDDM_SOURCE *pSource = &pDevExt->aSources[pDstAlloc->AllocData.SurfDesc.VidPnSourceId]; 3020 Assert(pDstAlloc->AllocData.SurfDesc.VidPnSourceId < VBOX_VIDEO_MAX_SCREENS); 3021 3020 3022 if (pSrcAlloc->enmType == VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE) 3021 3023 vboxWddmAssignShadow(pDevExt, pSource, pSrcAlloc, pDstAlloc->AllocData.SurfDesc.VidPnSourceId); … … 3030 3032 ) 3031 3033 { 3034 VBOXWDDM_SOURCE *pSource = &pDevExt->aSources[pDstAlloc->AllocData.SurfDesc.VidPnSourceId]; 3035 Assert(pDstAlloc->AllocData.SurfDesc.VidPnSourceId < VBOX_VIDEO_MAX_SCREENS); 3036 3032 3037 if (pDstAlloc->enmType == VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE) 3033 3038 vboxWddmAssignShadow(pDevExt, pSource, pDstAlloc, pSrcAlloc->AllocData.SurfDesc.VidPnSourceId); … … 3048 3053 if (pDstAlloc->bAssigned) 3049 3054 { 3050 Assert(pSource->pPrimaryAllocation == pDstAlloc);3055 // Assert(pSource->pPrimaryAllocation == pDstAlloc); 3051 3056 3052 3057 switch (pSrcAlloc->enmType) … … 3056 3061 fBltFlags.fVisibleRegions = !!cContexts3D; 3057 3062 Assert(pContext->enmType == VBOXWDDM_CONTEXT_TYPE_SYSTEM); 3058 3059 if (!fRenderFromSharedDisabled) 3063 VBOXWDDM_SOURCE *pSource = &pDevExt->aSources[pDstAlloc->AllocData.SurfDesc.VidPnSourceId]; 3064 Assert(pDstAlloc->AllocData.SurfDesc.VidPnSourceId < VBOX_VIDEO_MAX_SCREENS); 3065 3066 if (!fRenderFromSharedDisabled && pSource->bVisible) 3060 3067 { 3061 3068 RECT rect; … … 4355 4362 if (fDisabledFound) 4356 4363 { 4357 WARN(("found unsupported path"));4364 LOG(("found unsupported path")); 4358 4365 bSupported = FALSE; 4359 4366 } … … 4651 4658 # endif 4652 4659 pDevExt->fRenderToShadowDisabled 4660 || (pAllocation && pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC) 4653 4661 ) 4654 4662 #endif … … 4707 4715 # endif 4708 4716 pDevExt->fRenderToShadowDisabled 4717 || (pAllocation && pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC) 4709 4718 ) 4710 4719 #endif … … 5492 5501 Assert(pContext->enmType == VBOXWDDM_CONTEXT_TYPE_SYSTEM); 5493 5502 Assert(pDstAlloc->bAssigned); 5494 Assert(pDstAlloc->bVisible); 5495 if (pDstAlloc->bAssigned 5496 && pDstAlloc->bVisible) 5503 if (pDstAlloc->bAssigned) 5497 5504 { 5498 5505 #ifdef VBOX_WITH_VIDEOHWACCEL … … 6295 6302 } 6296 6303 6297 if (bUpdateRectInited )6304 if (bUpdateRectInited && pSource->bVisible) 6298 6305 { 6299 6306 VBOXVBVA_OP_WITHLOCK(ReportDirtyRect, pDevExt, pSource, &UpdateRect); -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h
r42124 r42158 126 126 Assert(!pAllocation->bAssigned); 127 127 Assert(!pAllocation->bVisible); 128 pAllocation->bVisible = FALSE;129 128 /* this check ensures the shadow is not used for other source simultaneously */ 130 129 Assert(pAllocation->AllocData.SurfDesc.VidPnSourceId == D3DDDI_ID_UNINITIALIZED); 131 130 pAllocation->AllocData.SurfDesc.VidPnSourceId = srcId; 132 131 pAllocation->bAssigned = TRUE; 132 pAllocation->bVisible = pSource->bVisible; 133 133 134 if(!vboxWddmAddrVramEqual(&pSource->AllocData.Addr, &pAllocation->AllocData.Addr)) 134 135 pSource->bGhSynced = FALSE; /* force guest->host notification */ … … 159 160 if (pAllocation) 160 161 { 161 pAllocation->bVisible = FALSE;162 162 Assert(pAllocation->AllocData.SurfDesc.VidPnSourceId == srcId); 163 163 pAllocation->bAssigned = TRUE; 164 pAllocation->bVisible = pSource->bVisible; 164 165 165 166 if(!vboxWddmAddrVramEqual(&pSource->AllocData.Addr, &pAllocation->AllocData.Addr)) … … 192 193 #ifdef VBOXWDDM_RENDER_FROM_SHADOW 193 194 # ifdef VBOX_WDDM_WIN8 194 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ( (g_VBoxDisplayOnly || (_pDevExt)->fRenderToShadowDisabled) ? (_pSrc)->pPrimaryAllocation : (_pSrc)->pShadowAllocation) 195 # define VBOXWDDM_IS_FB_ALLOCATION(_pDevExt, _pAlloc) ( (_pAlloc)->bAssigned \ 196 && ( (_pAlloc)->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC \ 197 || (_pAlloc)->enmType == \ 198 ((g_VBoxDisplayOnly || (_pDevExt)->fRenderToShadowDisabled) ? VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE : VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE) \ 199 )) 195 200 # else 196 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ((_pDevExt)->fRenderToShadowDisabled ? (_pSrc)->pPrimaryAllocation : (_pSrc)->pShadowAllocation) 201 # define VBOXWDDM_IS_FB_ALLOCATION(_pDevExt, _pAlloc) ( (_pAlloc)->bAssigned \ 202 && ( (_pAlloc)->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC \ 203 || (_pAlloc)->enmType == \ 204 (((_pDevExt)->fRenderToShadowDisabled) ? VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE : VBOXWDDM_ALLOC_TYPE_STD_SHADOWSURFACE) \ 205 )) 197 206 # endif 207 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ( ((_pSrc)->pPrimaryAllocation && VBOXWDDM_IS_FB_ALLOCATION(_pDevExt, (_pSrc)->pPrimaryAllocation)) ? \ 208 (_pSrc)->pPrimaryAllocation : ( \ 209 ((_pSrc)->pShadowAllocation && VBOXWDDM_IS_FB_ALLOCATION(_pDevExt, (_pSrc)->pShadowAllocation)) ? \ 210 (_pSrc)->pShadowAllocation : NULL \ 211 ) \ 212 ) 198 213 #else 199 214 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ((_pSrc)->pPrimaryAllocation)
Note:
See TracChangeset
for help on using the changeset viewer.