baldurk / renderdoc

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

Mixed render targets display, CryEngine, DX12 capture #2009

Closed barycz closed 4 years ago

barycz commented 4 years ago

Description

RenderDoc seems to incorrectly detect which texture is used as a render target when debugging a CryEngine demo application. When I run the sample FPS level there is a simple scene with a character. Most of the stuff is rendered using a deferred shading technique. If I capture the scene using PIX I can, for example, find a draw call that renders the gun: image You can see in the OM section, there are 6 render targets with contents as I would expect. But if I try to capture the same frame and lookup the same draw call in RenderDoc, I see some unexpected textures bound there. image It is worth mentioning, that the final image looks the same as when I run the application in Pix. I suspect RenderDoc from having more issues in the texture debug/display functionality, but I find this case easily reproducible.

Steps to reproduce

Environment

Thank You!

baldurk commented 4 years ago

Since you're filing other related DX12 bug does this mean #1986 can be closed? Either if it's not a problem any more or if you don't have time to look into it further. Unless you're able to share a repro case or provide more information I can't look any further into that issue.

baldurk commented 4 years ago

This was related to a change I had to make a while ago to immediately read descriptors inside OMSetRenderTargets. Even though it requires a heap and descriptors the parameters are actually consumed immediately so the descriptors are pointless. Calls to CreateRenderTargetView() would be reflected but calls to CopyDescriptors*() would not, if they happened mid-capture before a OMSetRenderTargets call.