baldurk / renderdoc

RenderDoc is a stand-alone graphics debugging tool.
https://renderdoc.org
MIT License
8.98k stars 1.35k forks source link

DirectComposition D3D11 swap chains break capture #446

Closed nta closed 7 years ago

nta commented 7 years ago

When trying to capture a process that uses D3D11 with a swap chain using DirectComposition (IDXGIFactory2::CreateSwapChainForComposition), the UI will stay on 'No API detected', and the log will show the following:

RDOC 019040: [18:00:09]             core.cpp(1053) - Error   - Invalid FrameCapturer combination: 0X0000000000000000 / 0X00000230D1AA9A90
RDOC 019040: [18:00:09]             core.cpp(1053) - Error   - Invalid FrameCapturer combination: 0X0000000000000000 / 0X00000230D1AA9A90

This seems to be because of d3d11_device.cpp using the OutputWindow in the swap chain description as key for this internal structure, where this type of swap chain has no output window.

I encountered this while trying to debug CEF, which seems to use this particular device creation mode ANGLE offers for the backing D3D device.

baldurk commented 7 years ago

This is probably a simple fix but I need to find a simpler example program I can test with, I'll see what I can do.

baldurk commented 7 years ago

I forgot to update this bug - I think this is fixed now, at least with the simple test program I found.

Let me know if it works for you. I'm just kicking a new nightly build now so there should be one available shortly.

nta commented 7 years ago

Yeah - this particular issue seems to be resolved now. I've not taken an in-depth look yet, but the DComp-based devices in Chrome appear to be detected now.