Changeset 52226 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVbva.cpp
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/VBox-4.3 merged: 95295
- Property svn:mergeinfo changed
-
trunk/src/VBox
- Property svn:mergeinfo changed
/branches/VBox-4.3/src/VBox merged: 95295
- Property svn:mergeinfo changed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVbva.cpp
r51357 r52226 785 785 PVBOXMP_DEVEXT pDevExt = pData->pDevExt; 786 786 VBOXCMDVBVA *pVbva = pData->pVbva; 787 if (!pData->u32SubmitFenceId || pVbva->u32FenceCompleted == pData->u32SubmitFenceId) 787 Assert(pVbva->u32FenceProcessed >= pVbva->u32FenceCompleted); 788 if (!pData->u32SubmitFenceId || pVbva->u32FenceProcessed == pData->u32SubmitFenceId) 788 789 { 789 790 vboxCmdVbvaDdiNotifyCompleteIrq(pDevExt, pVbva, pData->u32PreemptFenceId, DXGK_INTERRUPT_DMA_PREEMPTED); … … 793 794 else 794 795 { 795 Assert(pVbva->u32Fence Completed < pData->u32SubmitFenceId);796 Assert(pVbva->u32FenceProcessed < pData->u32SubmitFenceId); 796 797 Assert(pVbva->cPreempt <= VBOXCMDVBVA_PREEMPT_EL_SIZE); 797 798 if (pVbva->cPreempt == VBOXCMDVBVA_PREEMPT_EL_SIZE) … … 872 873 /* last submitted fence id */ 873 874 uint32_t u32FenceSubmitted; 875 /* last processed fence id (i.e. either completed or cancelled) */ 876 uint32_t u32FenceProcessed; 874 877 } VBOXCMDVBVA_CHECK_COMPLETED_CB; 875 878 … … 882 885 pCompleted->u32FenceCompleted = pCompleted->pVbva->u32FenceCompleted; 883 886 pCompleted->u32FenceSubmitted = pCompleted->pVbva->u32FenceSubmitted; 887 pCompleted->u32FenceProcessed = pCompleted->pVbva->u32FenceProcessed; 884 888 } 885 889 else … … 888 892 pCompleted->u32FenceCompleted = 0; 889 893 pCompleted->u32FenceSubmitted = 0; 894 pCompleted->u32FenceProcessed = 0; 890 895 } 891 896 return bRc; … … 893 898 894 899 895 static uint32_t vboxCmdVbvaCheckCompleted(PVBOXMP_DEVEXT pDevExt, VBOXCMDVBVA *pVbva, bool fPingHost, HGSMIGUESTCOMMANDCONTEXT *pCtx, bool fBufferOverflow, uint32_t *pu32FenceSubmitted )900 static uint32_t vboxCmdVbvaCheckCompleted(PVBOXMP_DEVEXT pDevExt, VBOXCMDVBVA *pVbva, bool fPingHost, HGSMIGUESTCOMMANDCONTEXT *pCtx, bool fBufferOverflow, uint32_t *pu32FenceSubmitted, uint32_t *pu32FenceProcessed) 896 901 { 897 902 if (fPingHost) … … 903 908 context.u32FenceCompleted = 0; 904 909 context.u32FenceSubmitted = 0; 910 context.u32FenceProcessed = 0; 905 911 BOOLEAN bRet; 906 912 NTSTATUS Status = pDevExt->u.primary.DxgkInterface.DxgkCbSynchronizeExecution( … … 915 921 *pu32FenceSubmitted = context.u32FenceSubmitted; 916 922 923 if (pu32FenceProcessed) 924 *pu32FenceProcessed = context.u32FenceProcessed; 925 917 926 return context.u32FenceCompleted; 918 927 } … … 922 931 PVBOXMP_DEVEXT pDevExt = (PVBOXMP_DEVEXT)pvFlush; 923 932 924 vboxCmdVbvaCheckCompleted(pDevExt, NULL, true /*fPingHost*/, pHGSMICtx, true /*fBufferOverflow*/, NULL );933 vboxCmdVbvaCheckCompleted(pDevExt, NULL, true /*fPingHost*/, pHGSMICtx, true /*fBufferOverflow*/, NULL, NULL); 925 934 } 926 935 … … 1112 1121 VBoxVBVAExCBufferCompleted(&pVbva->Vbva); 1113 1122 1123 if (!u32FenceID) 1124 { 1125 WARN(("fence is NULL")); 1126 continue; 1127 } 1128 1129 pVbva->u32FenceProcessed = u32FenceID; 1130 1114 1131 if (u8State == VBOXCMDVBVA_STATE_IN_PROGRESS) 1115 {1116 if (!u32FenceID)1117 {1118 WARN(("fence is NULL"));1119 continue;1120 }1121 1122 1132 pVbva->u32FenceCompleted = u32FenceID; 1123 }1124 1133 else 1125 1134 { … … 1155 1164 } 1156 1165 1157 uint32_t VBoxCmdVbvaCheckCompleted(PVBOXMP_DEVEXT pDevExt, VBOXCMDVBVA *pVbva, bool fPingHost, uint32_t *pu32FenceSubmitted )1158 { 1159 return vboxCmdVbvaCheckCompleted(pDevExt, pVbva, fPingHost, &VBoxCommonFromDeviceExt(pDevExt)->guestCtx, false /* fBufferOverflow */, pu32FenceSubmitted );1166 uint32_t VBoxCmdVbvaCheckCompleted(PVBOXMP_DEVEXT pDevExt, VBOXCMDVBVA *pVbva, bool fPingHost, uint32_t *pu32FenceSubmitted, uint32_t *pu32FenceProcessed) 1167 { 1168 return vboxCmdVbvaCheckCompleted(pDevExt, pVbva, fPingHost, &VBoxCommonFromDeviceExt(pDevExt)->guestCtx, false /* fBufferOverflow */, pu32FenceSubmitted, pu32FenceProcessed); 1160 1169 } 1161 1170
Note:
See TracChangeset
for help on using the changeset viewer.