Changeset 44331 in vbox
- Timestamp:
- Jan 22, 2013 6:54:28 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 83277
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp
r43489 r44331 2674 2674 if (pSource->AllocData.Addr.offVram != PhAddr.QuadPart 2675 2675 || pSource->AllocData.Addr.SegmentId != 1) 2676 pSource-> bGhSynced = FALSE;2676 pSource->fGhSynced = 0; 2677 2677 pSource->AllocData.Addr.SegmentId = 1; 2678 2678 pSource->AllocData.Addr.offVram = PhAddr.QuadPart; -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPTypes.h
r43489 r44331 111 111 VBOXWDDM_ALLOC_DATA AllocData; 112 112 BOOLEAN bVisible; 113 BOOLEAN bGhSynced;113 char fGhSynced; 114 114 VBOXVBVAINFO Vbva; 115 115 #ifdef VBOX_WITH_VIDEOHWACCEL -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp
r44040 r44331 2122 2122 } 2123 2123 Assert(pSource->AllocData.SurfDesc.VidPnSourceId == srcId); 2124 pSource-> bGhSynced = FALSE;2124 pSource->fGhSynced = 0; 2125 2125 return STATUS_SUCCESS; 2126 2126 } -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
r44040 r44331 296 296 bool vboxWddmGhDisplayCheckSetInfoFromSource(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource) 297 297 { 298 Assert(VBOXVIDEOOFFSET_VOID != pSource->AllocData.Addr.offVram);299 300 if (pSource-> bGhSynced)298 // Assert(VBOXVIDEOOFFSET_VOID != pSource->AllocData.Addr.offVram); 299 300 if (pSource->fGhSynced) 301 301 return false; 302 302 303 char fGhSynced = 1; 303 304 PVBOXWDDM_ALLOCATION pFbAlloc = VBOXWDDM_FB_ALLOCATION(pDevExt, pSource); 305 #ifdef VBOXWDDM_RENDER_FROM_SHADOW 306 # ifdef VBOX_WDDM_WIN8 307 if (!g_VBoxDisplayOnly) 308 # endif 309 { 310 if (!pFbAlloc) 311 { 312 pFbAlloc = VBOXWDDM_NONFB_ALLOCATION(pDevExt, pSource); 313 fGhSynced = -1; 314 } 315 316 if (!pFbAlloc || pFbAlloc->AllocData.Addr.offVram == VBOXVIDEOOFFSET_VOID) 317 { 318 return false; 319 } 320 } 321 #endif 304 322 305 323 #ifdef VBOX_WDDM_WIN8 … … 315 333 NTSTATUS Status = vboxWddmGhDisplaySetInfo(pDevExt, pFbAlloc ? &pFbAlloc->AllocData : &pSource->AllocData, &pSource->VScreenPos); 316 334 if (NT_SUCCESS(Status)) 317 pSource-> bGhSynced = TRUE;335 pSource->fGhSynced = fGhSynced; 318 336 else 319 337 WARN(("vboxWddmGhDisplaySetInfo failed, Status (0x%x)", Status)); … … 355 373 356 374 /* ensure we issue resize command on next update */ 357 pSource-> bGhSynced = FALSE;375 pSource->fGhSynced = 0; 358 376 } 359 377 } … … 403 421 if (pSource->pPrimaryAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC) 404 422 { 405 Assert(pSource->bGhSynced == FALSE);423 // Assert(pSource->fGhSynced == FALSE); 406 424 return false; 407 425 } … … 4746 4764 } 4747 4765 4748 pSource-> bGhSynced = FALSE; /* force guest->host notification */4766 pSource->fGhSynced = 0; /* force guest->host notification */ 4749 4767 4750 4768 if (pSource->bVisible 4751 #if defined(VBOXWDDM_RENDER_FROM_SHADOW)4752 && (4753 # if defined(VBOX_WDDM_WIN8)4754 g_VBoxDisplayOnly4755 ||4756 # endif4757 pDevExt->fRenderToShadowDisabled4758 /* only update for UMD_RC_GENERIC when resolution changes to inform host about it4759 * otherwise keep host using the same VRAM, containing a valid data before the switch (i.e. SHADOW) */4760 || (pAllocation4761 && pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC4762 && (pAllocation->AllocData.SurfDesc.width != pSource->AllocData.SurfDesc.width4763 || pAllocation->AllocData.SurfDesc.height != pSource->AllocData.SurfDesc.height)4764 )4765 )4766 #endif4769 //#if defined(VBOXWDDM_RENDER_FROM_SHADOW) 4770 // && ( 4771 //# if defined(VBOX_WDDM_WIN8) 4772 // g_VBoxDisplayOnly 4773 // || 4774 //# endif 4775 // pDevExt->fRenderToShadowDisabled 4776 // /* only update for UMD_RC_GENERIC when resolution changes to inform host about it 4777 // * otherwise keep host using the same VRAM, containing a valid data before the switch (i.e. SHADOW) */ 4778 // || (pAllocation 4779 // && pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC 4780 // && (pAllocation->AllocData.SurfDesc.width != pSource->AllocData.SurfDesc.width 4781 // || pAllocation->AllocData.SurfDesc.height != pSource->AllocData.SurfDesc.height) 4782 // ) 4783 // ) 4784 //#endif 4767 4785 ) 4768 4786 { … … 4812 4830 pSource->bVisible = pSetVidPnSourceVisibility->Visible; 4813 4831 if (pSource->bVisible 4814 #if defined(VBOXWDDM_RENDER_FROM_SHADOW)4815 && (4816 # if defined(VBOX_WDDM_WIN8)4817 g_VBoxDisplayOnly4818 ||4819 # endif4820 pDevExt->fRenderToShadowDisabled4821 /* only update for UMD_RC_GENERIC when resolution changes to inform host about it4822 * otherwise keep host using the same VRAM, containing a valid data before the switch (i.e. SHADOW) */4823 || (pAllocation4824 && pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC4825 && (pAllocation->AllocData.SurfDesc.width != pSource->AllocData.SurfDesc.width4826 || pAllocation->AllocData.SurfDesc.height != pSource->AllocData.SurfDesc.height)4827 )4828 )4829 #endif4832 //#if defined(VBOXWDDM_RENDER_FROM_SHADOW) 4833 // && ( 4834 //# if defined(VBOX_WDDM_WIN8) 4835 // g_VBoxDisplayOnly 4836 // || 4837 //# endif 4838 // pDevExt->fRenderToShadowDisabled 4839 // /* only update for UMD_RC_GENERIC when resolution changes to inform host about it 4840 // * otherwise keep host using the same VRAM, containing a valid data before the switch (i.e. SHADOW) */ 4841 // || (pAllocation 4842 // && pAllocation->enmType == VBOXWDDM_ALLOC_TYPE_UMD_RC_GENERIC 4843 // && (pAllocation->AllocData.SurfDesc.width != pSource->AllocData.SurfDesc.width 4844 // || pAllocation->AllocData.SurfDesc.height != pSource->AllocData.SurfDesc.height) 4845 // ) 4846 // ) 4847 //#endif 4830 4848 ) 4831 4849 { … … 4995 5013 } 4996 5014 4997 #ifdef VBOX_WDDM_WIN84998 if (g_VBoxDisplayOnly)5015 //#ifdef VBOX_WDDM_WIN8 5016 // if (g_VBoxDisplayOnly) 4999 5017 { 5000 5018 for (int i = 0; /* <- never try to hide a primary monitor */ … … 5002 5020 { 5003 5021 PVBOXWDDM_SOURCE pSource = &pDevExt->aSources[i]; 5004 if (pSource->bVisible && !pSource->bGhSynced)5022 if (pSource->bVisible) 5005 5023 { 5006 5024 vboxWddmGhDisplayCheckSetInfoFromSource(pDevExt, pSource); … … 5008 5026 } 5009 5027 } 5010 #endif5028 //#endif 5011 5029 LOGF(("LEAVE, SUCCESS status(0x%x), context(0x%x)", Status, hAdapter)); 5012 5030 … … 6120 6138 for (int i = 0; i < VBoxCommonFromDeviceExt(pDevExt)->cDisplays; ++i) 6121 6139 { 6122 pDevExt->aSources[i]. bGhSynced = FALSE;6140 pDevExt->aSources[i].fGhSynced = 0; 6123 6141 NTSTATUS tmpStatus= vboxWddmDisplaySettingsQueryPos(pDevExt, i, &pDevExt->aSources[i].VScreenPos); 6124 6142 Assert(tmpStatus == STATUS_SUCCESS); -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h
r44038 r44331 102 102 DECLINLINE(void) vboxWddmAssignShadow(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource, PVBOXWDDM_ALLOCATION pAllocation, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId) 103 103 { 104 if (pSource->pShadowAllocation == pAllocation )104 if (pSource->pShadowAllocation == pAllocation && pSource->fGhSynced > 0) 105 105 { 106 106 Assert(pAllocation->bAssigned); … … 130 130 131 131 if(!vboxWddmAddrVramEqual(&pSource->AllocData.Addr, &pAllocation->AllocData.Addr)) 132 pSource-> bGhSynced = FALSE; /* force guest->host notification */132 pSource->fGhSynced = 0; /* force guest->host notification */ 133 133 pSource->AllocData.Addr = pAllocation->AllocData.Addr; 134 134 } … … 162 162 163 163 if(!vboxWddmAddrVramEqual(&pSource->AllocData.Addr, &pAllocation->AllocData.Addr)) 164 pSource-> bGhSynced = FALSE; /* force guest->host notification */164 pSource->fGhSynced = 0; /* force guest->host notification */ 165 165 pSource->AllocData.Addr = pAllocation->AllocData.Addr; 166 166 … … 208 208 ) \ 209 209 ) 210 # define VBOXWDDM_NONFB_ALLOCATION(_pDevExt, _pSrc) ( !((_pSrc)->pPrimaryAllocation && VBOXWDDM_IS_FB_ALLOCATION(_pDevExt, (_pSrc)->pPrimaryAllocation)) ? \ 211 (_pSrc)->pPrimaryAllocation : ( \ 212 ((_pSrc)->pShadowAllocation && VBOXWDDM_IS_FB_ALLOCATION(_pDevExt, (_pSrc)->pShadowAllocation)) ? \ 213 (_pSrc)->pShadowAllocation : NULL \ 214 ) \ 215 ) 210 216 #else 211 217 # define VBOXWDDM_FB_ALLOCATION(_pDevExt, _pSrc) ((_pSrc)->pPrimaryAllocation)
Note:
See TracChangeset
for help on using the changeset viewer.