diff --git a/docs/Windows/CaptureDialog.aml b/docs/Windows/CaptureDialog.aml index 146c494f3..f7d23f763 100644 --- a/docs/Windows/CaptureDialog.aml +++ b/docs/Windows/CaptureDialog.aml @@ -132,16 +132,6 @@ debug device without RenderDoc involved. Disabled - - Cache State Objects - 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. - 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. - Enabled - Hook into Children This option causes RenderDoc to hook into CreateProcess and intercept any calls to it from diff --git a/renderdoc/api/app/renderdoc_app.h b/renderdoc/api/app/renderdoc_app.h index 9cc68779b..3a852dbcf 100644 --- a/renderdoc/api/app/renderdoc_app.h +++ b/renderdoc/api/app/renderdoc_app.h @@ -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 << " " diff --git a/renderdoc/driver/d3d11/d3d11_device1_wrap.cpp b/renderdoc/driver/d3d11/d3d11_device1_wrap.cpp index 8f6ab5b6a..2934a8273 100644 --- a/renderdoc/driver/d3d11/d3d11_device1_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_device1_wrap.cpp @@ -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(); diff --git a/renderdoc/driver/d3d11/d3d11_device_wrap.cpp b/renderdoc/driver/d3d11/d3d11_device_wrap.cpp index c7b97a8c6..3c088d86c 100644 --- a/renderdoc/driver/d3d11/d3d11_device_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_device_wrap.cpp @@ -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(); diff --git a/renderdocui/Interop/CaptureOptions.cs b/renderdocui/Interop/CaptureOptions.cs index 0434e07fc..5efc886cb 100644 --- a/renderdocui/Interop/CaptureOptions.cs +++ b/renderdocui/Interop/CaptureOptions.cs @@ -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; diff --git a/renderdocui/Windows/Dialogs/CaptureDialog.Designer.cs b/renderdocui/Windows/Dialogs/CaptureDialog.Designer.cs index 83635e050..b08369125 100644 --- a/renderdocui/Windows/Dialogs/CaptureDialog.Designer.cs +++ b/renderdocui/Windows/Dialogs/CaptureDialog.Designer.cs @@ -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; diff --git a/renderdocui/Windows/Dialogs/CaptureDialog.cs b/renderdocui/Windows/Dialogs/CaptureDialog.cs index 2aa1960ca..97e76b33b 100644 --- a/renderdocui/Windows/Dialogs/CaptureDialog.cs +++ b/renderdocui/Windows/Dialogs/CaptureDialog.cs @@ -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;