Comment capture options, deprecate CacheStateObjects. Closes #61

This commit is contained in:
baldurk
2014-09-24 23:44:31 +01:00
parent eee2fc9476
commit c1cb2c7333
7 changed files with 46 additions and 36 deletions
-10
View File
@@ -132,16 +132,6 @@
debug device without RenderDoc involved.</para></entry>
<entry><para>Disabled</para></entry>
</row>
<row>
<entry><para>Cache State Objects</para></entry>
<entry><para>In D3D11 creating a state object with the same descriptor as one that already exists
will simply return a pointer to the existing state object, with a reference count added. Given that
creation and destruction in RenderDoc has a certain overhead, when this option is enabled RenderDoc will
hold onto a reference to freed state objects in case they are likely to be re-allocated soon after.</para>
<para>This will reduce churn and overhead with minimal impact to the application, and it's recommended to
leave this enabled unless you have specific problems or want to remove this optimisation.</para></entry>
<entry><para>Enabled</para></entry>
</row>
<row>
<entry><para>Hook into Children</para></entry>
<entry><para>This option causes RenderDoc to hook into CreateProcess and intercept any calls to it from
+45 -3
View File
@@ -67,23 +67,67 @@ struct CaptureOptions
CaptureCallstacks(false),
CaptureCallstacksOnlyDraws(false),
DelayForDebugger(0),
CacheStateObjects(true),
CacheStateObjects(false),
HookIntoChildren(false),
RefAllResources(false),
SaveAllInitials(false),
CaptureAllCmdLists(false)
{}
// Whether or not to allow the application to enable vsync
//
// Enabled - allows the application to enable or disable vsync at will
// Disabled - vsync is force disabled
bool32 AllowVSync;
// Whether or not to allow the application to enable fullscreen
//
// Enabled - allows the application to enable or disable fullscreen at will
// Disabled - fullscreen is force disabled
bool32 AllowFullscreen;
// Enables in-built API debugging features and records the results into the
// capture logfile, which is matched up with events on replay
bool32 DebugDeviceMode;
// Captures callstacks for every API event during capture
bool32 CaptureCallstacks;
// Only captures callstacks for drawcall type API events.
// Ignored if CaptureCallstacks is disabled
bool32 CaptureCallstacksOnlyDraws;
// Specify a delay in seconds to wait for a debugger to attach after
// creating or injecting into a process, before continuing to allow it to run.
uint32_t DelayForDebugger;
// Deprecated, ignored.
bool32 CacheStateObjects;
// Hooks any system API events that create child processes, and injects
// renderdoc into them recursively with the same options.
bool32 HookIntoChildren;
// By default renderdoc only includes resources in the final logfile necessary
// for that frame, this allows you to override that behaviour
//
// Enabled - all live resources at the time of capture are included in the log
// and available for inspection
// Disabled - only the resources referenced by the captured frame are included
bool32 RefAllResources;
// By default renderdoc skips saving initial states for
bool32 SaveAllInitials;
// In APIs that allow for the recording of command lists to be replayed later,
// renderdoc may choose to not capture command lists before a frame capture is
// triggered, to reduce overheads. This means any command lists recorded once
// and replayed many times will not be available and may cause a failure to
// capture.
//
// Enabled - All command lists are captured from the start of the application
// Disabled - Command lists are only captured if their recording begins during
// the period when a frame capture is in progress.
bool32 CaptureAllCmdLists;
#ifdef __cplusplus
@@ -97,7 +141,6 @@ struct CaptureOptions
>> CaptureCallstacks
>> CaptureCallstacksOnlyDraws
>> DelayForDebugger
>> CacheStateObjects
>> HookIntoChildren
>> RefAllResources
>> SaveAllInitials
@@ -114,7 +157,6 @@ struct CaptureOptions
<< CaptureCallstacks << " "
<< CaptureCallstacksOnlyDraws << " "
<< DelayForDebugger << " "
<< CacheStateObjects << " "
<< HookIntoChildren << " "
<< RefAllResources << " "
<< SaveAllInitials << " "
@@ -113,7 +113,6 @@ HRESULT WrappedID3D11Device::CreateBlendState1(const D3D11_BLEND_DESC1 *pBlendSt
ID3D11BlendState1 *wrapped = new WrappedID3D11BlendState1(real, this);
if(RenderDoc::Inst().GetCaptureOptions().CacheStateObjects)
{
RDCASSERT(m_CachedStateObjects.find(wrapped) == m_CachedStateObjects.end());
wrapped->AddRef();
@@ -188,7 +187,6 @@ HRESULT WrappedID3D11Device::CreateRasterizerState1(const D3D11_RASTERIZER_DESC1
ID3D11RasterizerState1 *wrapped = new WrappedID3D11RasterizerState1(real, this);
if(RenderDoc::Inst().GetCaptureOptions().CacheStateObjects)
{
RDCASSERT(m_CachedStateObjects.find(wrapped) == m_CachedStateObjects.end());
wrapped->AddRef();
@@ -2113,7 +2113,6 @@ HRESULT WrappedID3D11Device::CreateBlendState(
ID3D11BlendState *wrapped = new WrappedID3D11BlendState(real, this);
if(RenderDoc::Inst().GetCaptureOptions().CacheStateObjects)
{
RDCASSERT(m_CachedStateObjects.find(wrapped) == m_CachedStateObjects.end());
wrapped->AddRef();
@@ -2191,7 +2190,6 @@ HRESULT WrappedID3D11Device::CreateDepthStencilState(
ID3D11DepthStencilState *wrapped = new WrappedID3D11DepthStencilState(real, this);
if(RenderDoc::Inst().GetCaptureOptions().CacheStateObjects)
{
RDCASSERT(m_CachedStateObjects.find(wrapped) == m_CachedStateObjects.end());
wrapped->AddRef();
@@ -2269,7 +2267,6 @@ HRESULT WrappedID3D11Device::CreateRasterizerState(
ID3D11RasterizerState *wrapped = new WrappedID3D11RasterizerState(real, this);
if(RenderDoc::Inst().GetCaptureOptions().CacheStateObjects)
{
RDCASSERT(m_CachedStateObjects.find(wrapped) == m_CachedStateObjects.end());
wrapped->AddRef();
@@ -2347,7 +2344,6 @@ HRESULT WrappedID3D11Device::CreateSamplerState(
ID3D11SamplerState *wrapped = new WrappedID3D11SamplerState(real, this);
if(RenderDoc::Inst().GetCaptureOptions().CacheStateObjects)
{
RDCASSERT(m_CachedStateObjects.find(wrapped) == m_CachedStateObjects.end());
wrapped->AddRef();
+1 -1
View File
@@ -90,7 +90,7 @@ namespace renderdoc
defs.CaptureCallstacks = false;
defs.CaptureCallstacksOnlyDraws = false;
defs.DelayForDebugger = 0;
defs.CacheStateObjects = true;
defs.CacheStateObjects = false;
defs.HookIntoChildren = false;
defs.RefAllResources = false;
defs.SaveAllInitials = false;
-14
View File
@@ -48,7 +48,6 @@
this.CaptureCallstacks = new System.Windows.Forms.CheckBox();
this.CaptureCallstacksOnlyDraws = new System.Windows.Forms.CheckBox();
this.DebugDeviceMode = new System.Windows.Forms.CheckBox();
this.CacheStateObjects = new System.Windows.Forms.CheckBox();
this.HookIntoChildren = new System.Windows.Forms.CheckBox();
this.SaveAllInitials = new System.Windows.Forms.CheckBox();
this.RefAllResources = new System.Windows.Forms.CheckBox();
@@ -215,7 +214,6 @@
this.capOptsFlow.Controls.Add(this.CaptureCallstacks);
this.capOptsFlow.Controls.Add(this.CaptureCallstacksOnlyDraws);
this.capOptsFlow.Controls.Add(this.DebugDeviceMode);
this.capOptsFlow.Controls.Add(this.CacheStateObjects);
this.capOptsFlow.Controls.Add(this.HookIntoChildren);
this.capOptsFlow.Controls.Add(this.SaveAllInitials);
this.capOptsFlow.Controls.Add(this.RefAllResources);
@@ -312,17 +310,6 @@
"nings");
this.DebugDeviceMode.UseVisualStyleBackColor = true;
//
// CacheStateObjects
//
this.CacheStateObjects.Location = new System.Drawing.Point(275, 29);
this.CacheStateObjects.Name = "CacheStateObjects";
this.CacheStateObjects.Size = new System.Drawing.Size(130, 20);
this.CacheStateObjects.TabIndex = 13;
this.CacheStateObjects.Text = "Cache State Objects";
this.toolTip.SetToolTip(this.CacheStateObjects, "D3D11: Caches state objects so that rapid creation & destruction\r\ndoesn\'t inflate" +
" memory used and log file size");
this.CacheStateObjects.UseVisualStyleBackColor = true;
//
// HookIntoChildren
//
this.HookIntoChildren.Location = new System.Drawing.Point(411, 29);
@@ -656,7 +643,6 @@
private System.Windows.Forms.Button capture;
private System.Windows.Forms.Button close;
private System.Windows.Forms.CheckBox CacheStateObjects;
private System.Windows.Forms.CheckBox AllowVSync;
private System.Windows.Forms.CheckBox DebugDeviceMode;
private System.Windows.Forms.CheckBox AllowFullscreen;
@@ -68,7 +68,6 @@ namespace renderdocui.Windows.Dialogs
AllowFullscreen.Checked = settings.Options.AllowFullscreen;
AllowVSync.Checked = settings.Options.AllowVSync;
CacheStateObjects.Checked = settings.Options.CacheStateObjects;
HookIntoChildren.Checked = settings.Options.HookIntoChildren;
CaptureCallstacks.Checked = settings.Options.CaptureCallstacks;
CaptureCallstacksOnlyDraws.Checked = settings.Options.CaptureCallstacksOnlyDraws;
@@ -107,7 +106,6 @@ namespace renderdocui.Windows.Dialogs
ret.Options.AllowFullscreen = AllowFullscreen.Checked;
ret.Options.AllowVSync = AllowVSync.Checked;
ret.Options.HookIntoChildren = HookIntoChildren.Checked;
ret.Options.CacheStateObjects = CacheStateObjects.Checked;
ret.Options.CaptureCallstacks = CaptureCallstacks.Checked;
ret.Options.CaptureCallstacksOnlyDraws = CaptureCallstacksOnlyDraws.Checked;
ret.Options.DebugDeviceMode = DebugDeviceMode.Checked;