Files
renderdoc/docs/Gotchas.aml
T

109 lines
5.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<topic id="a56958b2-bf9e-411a-8354-56284e713f09" revisionNumber="1">
<developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
<introduction>
<para>
<autoOutline />
This page (hopefully) keeps up to date with any known issues, bugs, unimplemented
or partially unimplemented features.
</para>
</introduction>
<section address="Notes">
<title>Things to Note</title>
<content>
<para>
<list class="bullet">
<listItem>
<para>RenderDoc doesn't serialise out the initial contents of large graphics resources when it believes
that they will not be used in replay. e.g. a G-Buffer render target will not be saved out as it
is initialised and written to in-frame. This detection will go wrong if a render target is partially
written to but partially re-used, as RenderDoc will count this as initialised in-frame. This could
happen e.g. with an accumulating texture that is written to in the frame over the top of previous
results.
</para>
<para>You can override this behaviour by selecting 'Save All Initials' in the <link xlink:href="0dd6fe0d-4130-46f4-b2ea-9565de13111d">capture options</link> before
capturing, as this will force RenderDoc to serialise out all initial contents regardless, at the cost
of larger logfiles and slightly slower replay app analysis.
</para>
</listItem>
<listItem>
<para>When capturing, only one swapchain is captured at any given time.
The in-app overlay renders to all swapchains but only one is considered "active" at
any given time - this can be cycled with the F11 key. The capture key will trigger
a capture at the next swap of the currently active swapchain.</para>
</listItem>
<listItem>
<para>RenderDoc relies on saving out the graphics command stream and replaying it
back at inspection time. This means if a bug is timing, machine or driver specific it is
in no way guaranteed to reproduce the bug on a different machine or driver.</para>
<para>RenderDoc has no dependencies on Visual Studio or the DirectX or Windows SDK,
and should run anywhere that a normal DirectX application will run - i.e. on
Artist or QA machines. The only requirement is the DirectX runtime to ensure D3DCompiler.dll
is available.</para>
<para>Currently RenderDoc also requires feature level 11+ hardware for the replay app, although
it can capture lower level applications.</para>
</listItem>
<listItem>
<para>If capturing callstacks from the app, ensure that dbghelp.dll is not loaded or
used by the application as this can easily interfere with RenderDoc's use and cause
undefined or empty results. More information on this can be found in
<link xlink:href="14048aef-0053-4e38-98cd-541f4d15d12e" />.
</para>
</listItem>
<listItem>
<para>RenderDoc can have a significant memory overhead, especially when a lot of resources are allocated
as shadow copies in main memory are created.
</para>
<para>If running in 32bit, it's possible that an application can run out of memory - particularly when
capturing, as this causes a significant spike in memory use. Improvements in memory management are planned
but for now it's recommended to use 64bit, or to limit captures to simple scenes wherever possible.
</para>
</listItem>
</list>
</para>
</content>
</section>
<section address="PartialImpl">
<title>Partially Implemented Features</title>
<content>
<para>
<list class="bullet">
<listItem>
<para>Deferred context &amp; command list support will probably run into problems with non-trivial
use-cases. Let me know if you find a use-case that breaks, as I don't have many test programs!
</para>
</listItem>
<listItem>
<para>In the mesh viewer the Solid Shading option will only apply to the vertex input tab.
(or to the vertex output tab when tessellating).
</para>
<para>Similarly the options to draw "only this draw" or "since last clear" only work for the
vertex output/geometry output tabs.
</para>
<alert class="caution">
<para>The "since last clear" option is likely to be slow when there are a lot of vertices being drawn. Use with care!</para>
</alert>
</listItem>
<listItem>
<para>If a debugged pixel is overdrawn multiple times by the same drawcall RenderDoc will attempt
to pick the pixel that last passed the depth test, but this may not necessarily be entirely
accurate and in the case of blending there's no way currently to pick other pixels that passed
the depth test.
</para>
</listItem>
<listItem>
<para>The API Inspector shows essentially the raw serialised form of the commands in the log
file and so is not always very useful beyond showing which functions were called. There isn't
a way yet to see what views a particular ID corresponds to, and some of the parameters are
a little different from their official function signature.
</para>
</listItem>
</list>
</para>
</content>
</section>
</developerConceptualDocument>
</topic>