You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using D3D11on12, when using Desktop Duplication, calling IDXGIOutputDuplication::AcquireNextFrame results in DXGI_ERROR_ACCESS_LOST.
Tracing this as far as I can it seems to be caused by CGraphicsCommandQueue::AcquireKeyedMutex which calls D3DKMTAcquireKeyedMutex2 which returns 0x80 (WAIT_ABANDONED)
Note, this code is functioning perfectly on DX11 directly.
The text was updated successfully, but these errors were encountered:
I also encountered the same issue! The situation is exactly as you described, and I was wondering if I misunderstood the documentation. Did you find a solution later, or do we have to wait for d3d11on12 to fix this bug?
Temporarily resolved, but I still hope that d3d11on12 interp can work as normally as d3d11. 😂
To obtain the correct screenshot, I had to create an additional d3d11Device, share the output d3d11Texture2D with the existing d3d11on12Device, and finally obtain the corresponding d2d1bitmap1 through CreateBitmapFromDxgiSurface:
That final frame is the perfect screenshot. However, the additional d3d11device and resource sharing synchronization introduced some overhead (though it seems that the impact on overall performance is not significant). 🤔
When using D3D11on12, when using Desktop Duplication, calling
IDXGIOutputDuplication::AcquireNextFrame
results inDXGI_ERROR_ACCESS_LOST
.Tracing this as far as I can it seems to be caused by
CGraphicsCommandQueue::AcquireKeyedMutex
which callsD3DKMTAcquireKeyedMutex2
which returns0x80
(WAIT_ABANDONED
)Note, this code is functioning perfectly on DX11 directly.
The text was updated successfully, but these errors were encountered: