mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-12 21:10:42 +00:00
Forcibly refresh UI state after editing a shader or removing an edit
This commit is contained in:
@@ -616,7 +616,7 @@ namespace renderdocui.Code
|
||||
m_Renderer.Invoke((ReplayRenderer r) =>
|
||||
{
|
||||
r.FileChanged();
|
||||
r.SetFrameEvent(m_FrameID, m_EventID > 0 ? m_EventID-1 : 1);
|
||||
r.SetFrameEvent(m_FrameID, m_EventID > 0 ? m_EventID-1 : 1, true);
|
||||
});
|
||||
|
||||
SetEventID(null, CurFrame, CurEvent);
|
||||
@@ -846,7 +846,7 @@ namespace renderdocui.Code
|
||||
|
||||
m_Renderer.Invoke((ReplayRenderer r) => { r.SetContextFilter(ctx, firstDeferred, lastDeferred); });
|
||||
m_Renderer.Invoke((ReplayRenderer r) => {
|
||||
r.SetFrameEvent(m_FrameID, m_EventID);
|
||||
r.SetFrameEvent(m_FrameID, m_EventID, true);
|
||||
m_D3D11PipelineState = r.GetD3D11PipelineState();
|
||||
m_GLPipelineState = r.GetGLPipelineState();
|
||||
m_VulkanPipelineState = r.GetVulkanPipelineState();
|
||||
@@ -866,7 +866,17 @@ namespace renderdocui.Code
|
||||
}
|
||||
}
|
||||
|
||||
public void RefreshStatus()
|
||||
{
|
||||
SetEventID(null, m_FrameID, m_EventID, true);
|
||||
}
|
||||
|
||||
public void SetEventID(ILogViewerForm exclude, UInt32 frameID, UInt32 eventID)
|
||||
{
|
||||
SetEventID(exclude, frameID, eventID, false);
|
||||
}
|
||||
|
||||
private void SetEventID(ILogViewerForm exclude, UInt32 frameID, UInt32 eventID, bool force)
|
||||
{
|
||||
m_FrameID = frameID;
|
||||
m_EventID = eventID;
|
||||
@@ -876,7 +886,7 @@ namespace renderdocui.Code
|
||||
m_Renderer.Invoke((ReplayRenderer r) => { r.SetContextFilter(ResourceId.Null, 0, 0); });
|
||||
m_Renderer.Invoke((ReplayRenderer r) =>
|
||||
{
|
||||
r.SetFrameEvent(m_FrameID, m_EventID);
|
||||
r.SetFrameEvent(m_FrameID, m_EventID, force);
|
||||
m_D3D11PipelineState = r.GetD3D11PipelineState();
|
||||
m_GLPipelineState = r.GetGLPipelineState();
|
||||
m_VulkanPipelineState = r.GetVulkanPipelineState();
|
||||
|
||||
@@ -209,7 +209,7 @@ namespace renderdoc
|
||||
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern bool ReplayRenderer_SetContextFilter(IntPtr real, ResourceId id, UInt32 firstDefEv, UInt32 lastDefEv);
|
||||
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern bool ReplayRenderer_SetFrameEvent(IntPtr real, UInt32 frameID, UInt32 eventID);
|
||||
private static extern bool ReplayRenderer_SetFrameEvent(IntPtr real, UInt32 frameID, UInt32 eventID, bool force);
|
||||
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern bool ReplayRenderer_GetD3D11PipelineState(IntPtr real, IntPtr mem);
|
||||
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||
@@ -328,8 +328,8 @@ namespace renderdoc
|
||||
|
||||
public bool SetContextFilter(ResourceId id, UInt32 firstDefEv, UInt32 lastDefEv)
|
||||
{ return ReplayRenderer_SetContextFilter(m_Real, id, firstDefEv, lastDefEv); }
|
||||
public bool SetFrameEvent(UInt32 frameID, UInt32 eventID)
|
||||
{ return ReplayRenderer_SetFrameEvent(m_Real, frameID, eventID); }
|
||||
public bool SetFrameEvent(UInt32 frameID, UInt32 eventID, bool force)
|
||||
{ return ReplayRenderer_SetFrameEvent(m_Real, frameID, eventID, force); }
|
||||
|
||||
public GLPipelineState GetGLPipelineState()
|
||||
{
|
||||
|
||||
@@ -2008,6 +2008,8 @@ namespace renderdocui.Windows.PipelineState
|
||||
if (files.Count == 0)
|
||||
return;
|
||||
|
||||
D3D11PipelineStateViewer pipeviewer = this;
|
||||
|
||||
ShaderViewer sv = new ShaderViewer(m_Core, false, entryFunc, files,
|
||||
|
||||
// Save Callback
|
||||
@@ -2101,10 +2103,12 @@ namespace renderdocui.Windows.PipelineState
|
||||
if (to == ResourceId.Null)
|
||||
{
|
||||
r.RemoveReplacement(from);
|
||||
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
|
||||
}
|
||||
else
|
||||
{
|
||||
r.ReplaceResource(from, to);
|
||||
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -2117,6 +2121,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
|
||||
{
|
||||
r.RemoveReplacement(stage.Shader);
|
||||
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -1884,6 +1884,8 @@ namespace renderdocui.Windows.PipelineState
|
||||
if (files.Count == 0)
|
||||
return;
|
||||
|
||||
GLPipelineStateViewer pipeviewer = this;
|
||||
|
||||
ShaderViewer sv = new ShaderViewer(m_Core, false, "main", files,
|
||||
|
||||
// Save Callback
|
||||
@@ -1906,10 +1908,12 @@ namespace renderdocui.Windows.PipelineState
|
||||
if (to == ResourceId.Null)
|
||||
{
|
||||
r.RemoveReplacement(from);
|
||||
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
|
||||
}
|
||||
else
|
||||
{
|
||||
r.ReplaceResource(from, to);
|
||||
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -1922,6 +1926,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
|
||||
{
|
||||
r.RemoveReplacement(stage.Shader);
|
||||
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user