Changeset 42081 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h
- Timestamp:
- Jul 10, 2012 9:47:29 AM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 79022
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h
r41638 r42081 35 35 #define VBOXWDDM_CFG_STR_LOG_UM L"VBoxLogUm" 36 36 extern DWORD g_VBoxLogUm; 37 extern DWORD g_VBoxDisplayOnly; 37 38 38 39 RT_C_DECLS_BEGIN … … 75 76 } 76 77 78 DECLINLINE(VOID) vboxWddmAddrSetVram(PVBOXWDDM_ADDR pAddr, UINT SegmentId, VBOXVIDEOOFFSET offVram) 79 { 80 pAddr->SegmentId = SegmentId; 81 pAddr->offVram = offVram; 82 } 83 84 DECLINLINE(bool) vboxWddmAddrVramEqual(PVBOXWDDM_ADDR pAddr1, PVBOXWDDM_ADDR pAddr2) 85 { 86 return pAddr1->SegmentId == pAddr2->SegmentId && pAddr1->offVram == pAddr2->offVram; 87 } 88 89 DECLINLINE(VBOXVIDEOOFFSET) vboxWddmVramAddrToOffset(PVBOXMP_DEVEXT pDevExt, PHYSICAL_ADDRESS Addr) 90 { 91 PVBOXMP_COMMON pCommon = VBoxCommonFromDeviceExt(pDevExt); 92 AssertRelease(pCommon->phVRAM.QuadPart < Addr.QuadPart); 93 return (VBOXVIDEOOFFSET)Addr.QuadPart - pCommon->phVRAM.QuadPart; 94 } 95 77 96 #ifdef VBOXWDDM_RENDER_FROM_SHADOW 78 97 DECLINLINE(void) vboxWddmAssignShadow(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource, PVBOXWDDM_ALLOCATION pAllocation, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId) … … 90 109 pOldAlloc->bVisible = FALSE; 91 110 pOldAlloc->bAssigned = FALSE; 92 Assert(pOldAlloc-> SurfDesc.VidPnSourceId == srcId);111 Assert(pOldAlloc->AllocData.SurfDesc.VidPnSourceId == srcId); 93 112 /* release the shadow surface */ 94 pOldAlloc-> SurfDesc.VidPnSourceId = D3DDDI_ID_UNINITIALIZED;113 pOldAlloc->AllocData.SurfDesc.VidPnSourceId = D3DDDI_ID_UNINITIALIZED; 95 114 } 96 115 … … 101 120 pAllocation->bVisible = FALSE; 102 121 /* this check ensures the shadow is not used for other source simultaneously */ 103 Assert(pAllocation-> SurfDesc.VidPnSourceId == D3DDDI_ID_UNINITIALIZED);104 pAllocation-> SurfDesc.VidPnSourceId = srcId;122 Assert(pAllocation->AllocData.SurfDesc.VidPnSourceId == D3DDDI_ID_UNINITIALIZED); 123 pAllocation->AllocData.SurfDesc.VidPnSourceId = srcId; 105 124 pAllocation->bAssigned = TRUE; 106 if (!vboxWddmCmpSurfDescsBase(&pSource->SurfDesc, &pAllocation->SurfDesc))107 pSource-> offVram = VBOXVIDEOOFFSET_VOID; /* force guest->host notification */108 pSource-> SurfDesc = pAllocation->SurfDesc;125 if(!vboxWddmAddrVramEqual(&pSource->AllocData.Addr, &pAllocation->AllocData.Addr)) 126 pSource->bGhSynced = FALSE; /* force guest->host notification */ 127 pSource->AllocData.Addr = pAllocation->AllocData.Addr; 109 128 } 110 129 … … 125 144 pOldAlloc->bVisible = FALSE; 126 145 pOldAlloc->bAssigned = FALSE; 127 Assert(pOldAlloc-> SurfDesc.VidPnSourceId == srcId);146 Assert(pOldAlloc->AllocData.SurfDesc.VidPnSourceId == srcId); 128 147 129 148 vboxWddmAllocationRelease(pOldAlloc); … … 133 152 { 134 153 pAllocation->bVisible = FALSE; 135 Assert(pAllocation-> SurfDesc.VidPnSourceId == srcId);154 Assert(pAllocation->AllocData.SurfDesc.VidPnSourceId == srcId); 136 155 pAllocation->bAssigned = TRUE; 156 157 if(!vboxWddmAddrVramEqual(&pSource->AllocData.Addr, &pAllocation->AllocData.Addr)) 158 pSource->bGhSynced = FALSE; /* force guest->host notification */ 159 pSource->AllocData.Addr = pAllocation->AllocData.Addr; 137 160 138 161 vboxWddmAllocationRetain(pAllocation); … … 157 180 } 158 181 159 160 182 #define VBOXWDDMENTRY_2_SWAPCHAIN(_pE) ((PVBOXWDDM_SWAPCHAIN)((uint8_t*)(_pE) - RT_OFFSETOF(VBOXWDDM_SWAPCHAIN, DevExtListEntry))) 161 183 162 184 #ifdef VBOXWDDM_RENDER_FROM_SHADOW 163 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ((_pDevExt)->fRenderToShadowDisabled ? (_pSrc)->pPrimaryAllocation : (_pSrc)->pShadowAllocation) 185 # ifdef VBOX_WDDM_WIN8 186 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ( (g_VBoxDisplayOnly || (_pDevExt)->fRenderToShadowDisabled) ? (_pSrc)->pPrimaryAllocation : (_pSrc)->pShadowAllocation) 187 # else 188 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ((_pDevExt)->fRenderToShadowDisabled ? (_pSrc)->pPrimaryAllocation : (_pSrc)->pShadowAllocation) 189 # endif 164 190 #else 165 191 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ((_pSrc)->pPrimaryAllocation)
Note:
See TracChangeset
for help on using the changeset viewer.