From 251a9773c25d93da1ce6b93899d68344e87a6718 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 29 Dec 2015 22:41:19 +0100 Subject: [PATCH] remove min/max event IDs from FetchCounters - always times whole frame --- renderdoc/api/replay/renderdoc_replay.h | 4 ++-- renderdoc/core/image_viewer.cpp | 2 +- renderdoc/core/replay_proxy.cpp | 8 +++----- renderdoc/core/replay_proxy.h | 2 +- renderdoc/driver/d3d11/d3d11_counters.cpp | 13 +++---------- renderdoc/driver/d3d11/d3d11_debug.h | 2 +- renderdoc/driver/d3d11/d3d11_replay.cpp | 4 ++-- renderdoc/driver/d3d11/d3d11_replay.h | 2 +- renderdoc/driver/gl/gl_counters.cpp | 13 +++---------- renderdoc/driver/gl/gl_replay.h | 2 +- renderdoc/driver/vulkan/vk_counters.cpp | 2 +- renderdoc/driver/vulkan/vk_replay.h | 2 +- renderdoc/replay/replay_driver.h | 2 +- renderdoc/replay/replay_renderer.cpp | 9 ++++----- renderdoc/replay/replay_renderer.h | 2 +- renderdocui/Interop/ReplayRenderer.cs | 6 +++--- renderdocui/Windows/EventBrowser.cs | 2 +- 17 files changed, 30 insertions(+), 47 deletions(-) diff --git a/renderdoc/api/replay/renderdoc_replay.h b/renderdoc/api/replay/renderdoc_replay.h index c59aa0e32..0178a0e4f 100644 --- a/renderdoc/api/replay/renderdoc_replay.h +++ b/renderdoc/api/replay/renderdoc_replay.h @@ -191,7 +191,7 @@ struct IReplayRenderer virtual bool GetFrameInfo(rdctype::array *frame) = 0; virtual bool GetDrawcalls(uint32_t frameID, rdctype::array *draws) = 0; - virtual bool FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, uint32_t *counters, uint32_t numCounters, rdctype::array *results) = 0; + virtual bool FetchCounters(uint32_t frameID, uint32_t *counters, uint32_t numCounters, rdctype::array *results) = 0; virtual bool EnumerateCounters(rdctype::array *counters) = 0; virtual bool DescribeCounter(uint32_t counterID, CounterDescription *desc) = 0; virtual bool GetTextures(rdctype::array *texs) = 0; @@ -258,7 +258,7 @@ extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_FreeTargetResource(R extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetFrameInfo(ReplayRenderer *rend, rdctype::array *frame); extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetDrawcalls(ReplayRenderer *rend, uint32_t frameID, rdctype::array *draws); -extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_FetchCounters(ReplayRenderer *rend, uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, uint32_t *counters, uint32_t numCounters, rdctype::array *results); +extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_FetchCounters(ReplayRenderer *rend, uint32_t frameID, uint32_t *counters, uint32_t numCounters, rdctype::array *results); extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_EnumerateCounters(ReplayRenderer *rend, rdctype::array *counters); extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_DescribeCounter(ReplayRenderer *rend, uint32_t counterID, CounterDescription *desc); extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetTextures(ReplayRenderer *rend, rdctype::array *texs); diff --git a/renderdoc/core/image_viewer.cpp b/renderdoc/core/image_viewer.cpp index 26494cf6d..9e52a4852 100644 --- a/renderdoc/core/image_viewer.cpp +++ b/renderdoc/core/image_viewer.cpp @@ -126,7 +126,7 @@ class ImageViewer : public IReplayDriver ResourceId GetLiveID(ResourceId id) { return id; } vector EnumerateCounters() { return vector(); } void DescribeCounter(uint32_t counterID, CounterDescription &desc) { RDCEraseEl(desc); desc.counterID = counterID; } - vector FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters) { return vector(); } + vector FetchCounters(uint32_t frameID, const vector &counters) { return vector(); } void FillCBufferVariables(ResourceId shader, string entryPoint, uint32_t cbufSlot, vector &outvars, const vector &data) {} void GetBufferData(ResourceId buff, uint64_t offset, uint64_t len, vector &retData) {} void InitPostVSBuffers(uint32_t frameID, uint32_t eventID) {} diff --git a/renderdoc/core/replay_proxy.cpp b/renderdoc/core/replay_proxy.cpp index 852f94ade..0db60f207 100644 --- a/renderdoc/core/replay_proxy.cpp +++ b/renderdoc/core/replay_proxy.cpp @@ -1344,7 +1344,7 @@ bool ProxySerialiser::Tick() case eCommand_FetchCounters: { vector counters; - FetchCounters(0, 0, 0, counters); + FetchCounters(0, counters); break; } case eCommand_EnumerateCounters: @@ -1751,18 +1751,16 @@ ResourceId ProxySerialiser::GetLiveID(ResourceId id) return ret; } -vector ProxySerialiser::FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters) +vector ProxySerialiser::FetchCounters(uint32_t frameID, const vector &counters) { vector ret; m_ToReplaySerialiser->Serialise("", frameID); - m_ToReplaySerialiser->Serialise("", minEventID); - m_ToReplaySerialiser->Serialise("", maxEventID); m_ToReplaySerialiser->Serialise("", (vector &)counters); if(m_ReplayHost) { - ret = m_Remote->FetchCounters(frameID, minEventID, maxEventID, counters); + ret = m_Remote->FetchCounters(frameID, counters); } else { diff --git a/renderdoc/core/replay_proxy.h b/renderdoc/core/replay_proxy.h index 7bcf51435..149b462fe 100644 --- a/renderdoc/core/replay_proxy.h +++ b/renderdoc/core/replay_proxy.h @@ -348,7 +348,7 @@ class ProxySerialiser : public IReplayDriver, Callstack::StackResolver vector EnumerateCounters(); void DescribeCounter(uint32_t counterID, CounterDescription &desc); - vector FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counterID); + vector FetchCounters(uint32_t frameID, const vector &counterID); void FillCBufferVariables(ResourceId shader, string entryPoint, uint32_t cbufSlot, vector &outvars, const vector &data); diff --git a/renderdoc/driver/d3d11/d3d11_counters.cpp b/renderdoc/driver/d3d11/d3d11_counters.cpp index 573e37b86..dce4b0727 100644 --- a/renderdoc/driver/d3d11/d3d11_counters.cpp +++ b/renderdoc/driver/d3d11/d3d11_counters.cpp @@ -144,8 +144,6 @@ struct GPUTimer struct CounterContext { uint32_t frameID; - uint32_t minEID; - uint32_t maxEID; uint32_t eventStart; vector timers; int reuseIdx; @@ -168,9 +166,6 @@ void D3D11DebugManager::FillTimers(CounterContext &ctx, const DrawcallTreeNode & HRESULT hr = S_OK; - bool includeEvent = (d.eventID >= ctx.minEID && d.eventID <= ctx.maxEID); - - if(includeEvent) { if(ctx.reuseIdx == -1) { @@ -195,7 +190,7 @@ void D3D11DebugManager::FillTimers(CounterContext &ctx, const DrawcallTreeNode & m_pImmediateContext->Flush(); - if(includeEvent && timer->before && timer->after) + if(timer->before && timer->after) { m_pImmediateContext->End(timer->before); m_WrappedDevice->ReplayLog(ctx.frameID, ctx.eventStart, d.eventID, eReplay_OnlyDraw); @@ -210,7 +205,7 @@ void D3D11DebugManager::FillTimers(CounterContext &ctx, const DrawcallTreeNode & } } -vector D3D11DebugManager::FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters) +vector D3D11DebugManager::FetchCounters(uint32_t frameID, const vector &counters) { vector ret; @@ -224,7 +219,7 @@ vector D3D11DebugManager::FetchCounters(uint32_t frameID, uint32_ RDCASSERT(counters.size() == 1); RDCASSERT(counterID == eCounter_EventGPUDuration); - SCOPED_TIMER("Fetch Counters over %u-%u for %u", minEventID, maxEventID, counterID); + SCOPED_TIMER("Fetch Counters for %u", counterID); D3D11_QUERY_DESC disjointdesc = { D3D11_QUERY_TIMESTAMP_DISJOINT, 0 }; ID3D11Query *disjoint = NULL; @@ -250,8 +245,6 @@ vector D3D11DebugManager::FetchCounters(uint32_t frameID, uint32_ CounterContext ctx; ctx.frameID = frameID; - ctx.minEID = minEventID; - ctx.maxEID = maxEventID; for(int loop=0; loop < 1; loop++) { diff --git a/renderdoc/driver/d3d11/d3d11_debug.h b/renderdoc/driver/d3d11/d3d11_debug.h index bc4495980..b33869d6f 100644 --- a/renderdoc/driver/d3d11/d3d11_debug.h +++ b/renderdoc/driver/d3d11/d3d11_debug.h @@ -141,7 +141,7 @@ class D3D11DebugManager vector EnumerateCounters(); void DescribeCounter(uint32_t counterID, CounterDescription &desc); - vector FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters); + vector FetchCounters(uint32_t frameID, const vector &counters); void RenderText(float x, float y, const char *textfmt, ...); void RenderMesh(uint32_t frameID, uint32_t eventID, const vector &secondaryDraws, MeshDisplay cfg); diff --git a/renderdoc/driver/d3d11/d3d11_replay.cpp b/renderdoc/driver/d3d11/d3d11_replay.cpp index bc3b0f5eb..0dc605461 100644 --- a/renderdoc/driver/d3d11/d3d11_replay.cpp +++ b/renderdoc/driver/d3d11/d3d11_replay.cpp @@ -1396,9 +1396,9 @@ void D3D11Replay::DescribeCounter(uint32_t counterID, CounterDescription &desc) m_pDevice->GetDebugManager()->DescribeCounter(counterID, desc); } -vector D3D11Replay::FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters) +vector D3D11Replay::FetchCounters(uint32_t frameID, const vector &counters) { - return m_pDevice->GetDebugManager()->FetchCounters(frameID, minEventID, maxEventID, counters); + return m_pDevice->GetDebugManager()->FetchCounters(frameID, counters); } void D3D11Replay::RenderMesh(uint32_t frameID, uint32_t eventID, const vector &secondaryDraws, MeshDisplay cfg) diff --git a/renderdoc/driver/d3d11/d3d11_replay.h b/renderdoc/driver/d3d11/d3d11_replay.h index 862dce626..4a27b37b2 100644 --- a/renderdoc/driver/d3d11/d3d11_replay.h +++ b/renderdoc/driver/d3d11/d3d11_replay.h @@ -102,7 +102,7 @@ class D3D11Replay : public IReplayDriver vector EnumerateCounters(); void DescribeCounter(uint32_t counterID, CounterDescription &desc); - vector FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters); + vector FetchCounters(uint32_t frameID, const vector &counters); ResourceId CreateProxyTexture(FetchTexture templateTex); void SetProxyTextureData(ResourceId texid, uint32_t arrayIdx, uint32_t mip, byte *data, size_t dataSize); diff --git a/renderdoc/driver/gl/gl_counters.cpp b/renderdoc/driver/gl/gl_counters.cpp index 3821e2be8..e793df436 100644 --- a/renderdoc/driver/gl/gl_counters.cpp +++ b/renderdoc/driver/gl/gl_counters.cpp @@ -83,8 +83,6 @@ struct GPUTimer struct CounterContext { uint32_t frameID; - uint32_t minEID; - uint32_t maxEID; uint32_t eventStart; vector timers; int reuseIdx; @@ -103,9 +101,6 @@ void GLReplay::FillTimers(CounterContext &ctx, const DrawcallTreeNode &drawnode) GPUTimer *timer = NULL; - bool includeEvent = (d.eventID >= ctx.minEID && d.eventID <= ctx.maxEID); - - if(includeEvent) { if(ctx.reuseIdx == -1) { @@ -125,7 +120,7 @@ void GLReplay::FillTimers(CounterContext &ctx, const DrawcallTreeNode &drawnode) m_pDriver->ReplayLog(ctx.frameID, ctx.eventStart, d.eventID, eReplay_WithoutDraw); - if(includeEvent && timer->obj) + if(timer->obj) { m_pDriver->glBeginQuery(eGL_TIME_ELAPSED, timer->obj); m_pDriver->ReplayLog(ctx.frameID, ctx.eventStart, d.eventID, eReplay_OnlyDraw); @@ -140,7 +135,7 @@ void GLReplay::FillTimers(CounterContext &ctx, const DrawcallTreeNode &drawnode) } } -vector GLReplay::FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters) +vector GLReplay::FetchCounters(uint32_t frameID, const vector &counters) { vector ret; @@ -156,12 +151,10 @@ vector GLReplay::FetchCounters(uint32_t frameID, uint32_t minEven RDCASSERT(counters.size() == 1); RDCASSERT(counterID == eCounter_EventGPUDuration); - SCOPED_TIMER("Fetch Counters over %u-%u for %u", minEventID, maxEventID, counterID); + SCOPED_TIMER("Fetch Counters for %u", counterID); CounterContext ctx; ctx.frameID = frameID; - ctx.minEID = minEventID; - ctx.maxEID = maxEventID; for(int loop=0; loop < 1; loop++) { diff --git a/renderdoc/driver/gl/gl_replay.h b/renderdoc/driver/gl/gl_replay.h index 2831b47e6..709bf4c77 100644 --- a/renderdoc/driver/gl/gl_replay.h +++ b/renderdoc/driver/gl/gl_replay.h @@ -147,7 +147,7 @@ class GLReplay : public IReplayDriver vector EnumerateCounters(); void DescribeCounter(uint32_t counterID, CounterDescription &desc); - vector FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters); + vector FetchCounters(uint32_t frameID, const vector &counters); void RenderMesh(uint32_t frameID, uint32_t eventID, const vector &secondaryDraws, MeshDisplay cfg); diff --git a/renderdoc/driver/vulkan/vk_counters.cpp b/renderdoc/driver/vulkan/vk_counters.cpp index 56b671c1b..7c8b68123 100644 --- a/renderdoc/driver/vulkan/vk_counters.cpp +++ b/renderdoc/driver/vulkan/vk_counters.cpp @@ -104,7 +104,7 @@ struct GPUTimerCallback : public DrawcallCallback vector m_Results; }; -vector VulkanReplay::FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters) +vector VulkanReplay::FetchCounters(uint32_t frameID, const vector &counters) { uint32_t maxEID = m_pDriver->GetMaxEID(); diff --git a/renderdoc/driver/vulkan/vk_replay.h b/renderdoc/driver/vulkan/vk_replay.h index c82662281..5e2fda29e 100644 --- a/renderdoc/driver/vulkan/vk_replay.h +++ b/renderdoc/driver/vulkan/vk_replay.h @@ -122,7 +122,7 @@ class VulkanReplay : public IReplayDriver vector EnumerateCounters(); void DescribeCounter(uint32_t counterID, CounterDescription &desc); - vector FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counters); + vector FetchCounters(uint32_t frameID, const vector &counters); bool GetMinMax(ResourceId texid, uint32_t sliceFace, uint32_t mip, uint32_t sample, float *minval, float *maxval); bool GetHistogram(ResourceId texid, uint32_t sliceFace, uint32_t mip, uint32_t sample, float minval, float maxval, bool channels[4], vector &histogram); diff --git a/renderdoc/replay/replay_driver.h b/renderdoc/replay/replay_driver.h index 781c934a9..8ffd81fca 100644 --- a/renderdoc/replay/replay_driver.h +++ b/renderdoc/replay/replay_driver.h @@ -97,7 +97,7 @@ class IRemoteDriver virtual vector EnumerateCounters() = 0; virtual void DescribeCounter(uint32_t counterID, CounterDescription &desc) = 0; - virtual vector FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, const vector &counterID) = 0; + virtual vector FetchCounters(uint32_t frameID, const vector &counterID) = 0; virtual void FillCBufferVariables(ResourceId shader, string entryPoint, uint32_t cbufSlot, vector &outvars, const vector &data) = 0; diff --git a/renderdoc/replay/replay_renderer.cpp b/renderdoc/replay/replay_renderer.cpp index 7c5a50bf8..cb9729cb4 100644 --- a/renderdoc/replay/replay_renderer.cpp +++ b/renderdoc/replay/replay_renderer.cpp @@ -273,8 +273,7 @@ bool ReplayRenderer::GetDrawcalls(uint32_t frameID, rdctype::array *results) +bool ReplayRenderer::FetchCounters(uint32_t frameID, uint32_t *counters, uint32_t numCounters, rdctype::array *results) { if(frameID >= (uint32_t)m_FrameRecord.size() || results == NULL) return false; @@ -284,7 +283,7 @@ bool ReplayRenderer::FetchCounters(uint32_t frameID, uint32_t minEventID, uint32 for(uint32_t i=0; i < numCounters; i++) counterArray.push_back(counters[i]); - *results = m_pDevice->FetchCounters(frameID, minEventID, maxEventID, counterArray); + *results = m_pDevice->FetchCounters(frameID, counterArray); return true; } @@ -1599,8 +1598,8 @@ extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetFrameInfo(ReplayR { return rend->GetFrameInfo(frame); } extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetDrawcalls(ReplayRenderer *rend, uint32_t frameID, rdctype::array *draws) { return rend->GetDrawcalls(frameID, draws); } -extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_FetchCounters(ReplayRenderer *rend, uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, uint32_t *counters, uint32_t numCounters, rdctype::array *results) -{ return rend->FetchCounters(frameID, minEventID, maxEventID, counters, numCounters, results); } +extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_FetchCounters(ReplayRenderer *rend, uint32_t frameID, uint32_t *counters, uint32_t numCounters, rdctype::array *results) +{ return rend->FetchCounters(frameID, counters, numCounters, results); } extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_EnumerateCounters(ReplayRenderer *rend, rdctype::array *counters) { return rend->EnumerateCounters(counters); } extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_DescribeCounter(ReplayRenderer *rend, uint32_t counterID, CounterDescription *desc) diff --git a/renderdoc/replay/replay_renderer.h b/renderdoc/replay/replay_renderer.h index 248ffd7ff..a85521625 100644 --- a/renderdoc/replay/replay_renderer.h +++ b/renderdoc/replay/replay_renderer.h @@ -162,7 +162,7 @@ struct ReplayRenderer : public IReplayRenderer bool GetFrameInfo(rdctype::array *frame); bool GetDrawcalls(uint32_t frameID, rdctype::array *draws); - bool FetchCounters(uint32_t frameID, uint32_t minEventID, uint32_t maxEventID, uint32_t *counters, uint32_t numCounters, rdctype::array *results); + bool FetchCounters(uint32_t frameID, uint32_t *counters, uint32_t numCounters, rdctype::array *results); bool EnumerateCounters(rdctype::array *counters); bool DescribeCounter(uint32_t counterID, CounterDescription *desc); bool GetTextures(rdctype::array *texs); diff --git a/renderdocui/Interop/ReplayRenderer.cs b/renderdocui/Interop/ReplayRenderer.cs index 52c48d328..611bd1eef 100644 --- a/renderdocui/Interop/ReplayRenderer.cs +++ b/renderdocui/Interop/ReplayRenderer.cs @@ -235,7 +235,7 @@ namespace renderdoc [DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] private static extern bool ReplayRenderer_GetDrawcalls(IntPtr real, UInt32 frameID, IntPtr outdraws); [DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] - private static extern bool ReplayRenderer_FetchCounters(IntPtr real, UInt32 frameID, UInt32 minEventID, UInt32 maxEventID, IntPtr counters, UInt32 numCounters, IntPtr outresults); + private static extern bool ReplayRenderer_FetchCounters(IntPtr real, UInt32 frameID, IntPtr counters, UInt32 numCounters, IntPtr outresults); [DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] private static extern bool ReplayRenderer_EnumerateCounters(IntPtr real, IntPtr outcounters); [DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] @@ -471,7 +471,7 @@ namespace renderdoc } } - public Dictionary> FetchCounters(UInt32 frameID, UInt32 minEventID, UInt32 maxEventID, UInt32[] counters) + public Dictionary> FetchCounters(UInt32 frameID, UInt32[] counters) { IntPtr mem = CustomMarshal.Alloc(typeof(templated_array)); @@ -481,7 +481,7 @@ namespace renderdoc for (int i = 0; i < counters.Length; i++) Marshal.WriteInt32(countersmem, sizeof(UInt32) * i, (int)counters[i]); - bool success = ReplayRenderer_FetchCounters(m_Real, frameID, minEventID, maxEventID, countersmem, (uint)counters.Length, mem); + bool success = ReplayRenderer_FetchCounters(m_Real, frameID, countersmem, (uint)counters.Length, mem); CustomMarshal.Free(countersmem); diff --git a/renderdocui/Windows/EventBrowser.cs b/renderdocui/Windows/EventBrowser.cs index a848392d7..bad47ab6a 100644 --- a/renderdocui/Windows/EventBrowser.cs +++ b/renderdocui/Windows/EventBrowser.cs @@ -780,7 +780,7 @@ namespace renderdocui.Windows Dictionary>[] times = new Dictionary>[m_Core.FrameInfo.Length]; for (int curFrame = 0; curFrame < m_Core.FrameInfo.Length; curFrame++) - times[curFrame] = r.FetchCounters((UInt32)curFrame, 0, ~0U, counters); + times[curFrame] = r.FetchCounters((UInt32)curFrame, counters); BeginInvoke((MethodInvoker)delegate {