Changeset 75487 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Video/mp
- Timestamp:
- Nov 15, 2018 4:09:11 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 126644
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/VBoxMPGaWddm.cpp
r75460 r75487 1876 1876 1877 1877 DXGKRNL_INTERFACE *pDxgkInterface = &pDevExt->u.primary.DxgkInterface; 1878 BOOLEAN bReturnValue = FALSE; 1879 Status = pDxgkInterface->DxgkCbSynchronizeExecution(pDxgkInterface->DeviceHandle, 1880 gaQueryCurrentFenceCb, pDevExt, 0, &bReturnValue); 1881 Assert(bReturnValue); 1878 LARGE_INTEGER DelayInterval; 1879 DelayInterval.QuadPart = -10LL * 1000LL * 1000LL; 1880 uint32_t u32LastCompletedFenceId = 0; 1881 1882 /* Wait until the host processes all submitted buffers to allow delays on the host (debug, etc). */ 1883 for (;;) 1884 { 1885 BOOLEAN bReturnValue = FALSE; 1886 Status = pDxgkInterface->DxgkCbSynchronizeExecution(pDxgkInterface->DeviceHandle, 1887 gaQueryCurrentFenceCb, pDevExt, 0, &bReturnValue); 1888 Assert(bReturnValue); 1889 if (Status != STATUS_SUCCESS) 1890 { 1891 break; 1892 } 1893 1894 u32LastCompletedFenceId = ASMAtomicReadU32(&pGaDevExt->u32LastCompletedFenceId); 1895 uint32_t const u32LastSubmittedFenceId = ASMAtomicReadU32(&pGaDevExt->u32LastSubmittedFenceId); 1896 if (u32LastCompletedFenceId == u32LastSubmittedFenceId) 1897 { 1898 break; 1899 } 1900 1901 GALOG(("hAdapter %p, LastCompletedFenceId %d, LastSubmittedFenceId %d...\n", hAdapter, u32LastCompletedFenceId, u32LastSubmittedFenceId)); 1902 1903 KeDelayExecutionThread(KernelMode, FALSE, &DelayInterval); 1904 } 1882 1905 1883 1906 if (Status == STATUS_SUCCESS) 1884 1907 { 1885 /** @todo Wait until the host processes some or all submitted buffers? */ 1886 pCurrentFence->CurrentFence = ASMAtomicReadU32(&pGaDevExt->u32LastCompletedFenceId); 1908 pCurrentFence->CurrentFence = u32LastCompletedFenceId; 1887 1909 } 1888 1910
Note:
See TracChangeset
for help on using the changeset viewer.