mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-12-23 22:13:40 +00:00
[client] main: add graph for time spent rendering
This is the time spent in the on_render function, not the time between frames. Having this information helps diagnose slowdowns in renderers.
This commit is contained in:
parent
9192e2039a
commit
62cd5e9c57
@ -242,6 +242,7 @@ static int renderThread(void * unused)
|
|||||||
|
|
||||||
const bool invalidate = atomic_exchange(&g_state.invalidateWindow, false);
|
const bool invalidate = atomic_exchange(&g_state.invalidateWindow, false);
|
||||||
|
|
||||||
|
const uint64_t renderStart = nanotime();
|
||||||
LG_LOCK(g_state.lgrLock);
|
LG_LOCK(g_state.lgrLock);
|
||||||
if (!g_state.lgr->render(g_state.lgrData, g_params.winRotate, newFrame,
|
if (!g_state.lgr->render(g_state.lgrData, g_params.winRotate, newFrame,
|
||||||
invalidate))
|
invalidate))
|
||||||
@ -250,6 +251,7 @@ static int renderThread(void * unused)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
LG_UNLOCK(g_state.lgrLock);
|
LG_UNLOCK(g_state.lgrLock);
|
||||||
|
ringbuffer_push(g_state.renderDuration, &(float) {(nanotime() - renderStart) * 1e-6f});
|
||||||
|
|
||||||
const uint64_t t = nanotime();
|
const uint64_t t = nanotime();
|
||||||
const uint64_t delta = t - g_state.lastRenderTime;
|
const uint64_t delta = t - g_state.lastRenderTime;
|
||||||
@ -830,8 +832,10 @@ static int lg_run(void)
|
|||||||
// initialize metrics ringbuffers
|
// initialize metrics ringbuffers
|
||||||
g_state.renderTimings = ringbuffer_new(256, sizeof(float));
|
g_state.renderTimings = ringbuffer_new(256, sizeof(float));
|
||||||
g_state.frameTimings = ringbuffer_new(256, sizeof(float));
|
g_state.frameTimings = ringbuffer_new(256, sizeof(float));
|
||||||
overlayGraph_register("RENDER", g_state.renderTimings, 0.0f, 50.0f);
|
g_state.renderDuration = ringbuffer_new(256, sizeof(float));
|
||||||
|
overlayGraph_register("FRAME" , g_state.renderTimings , 0.0f, 50.0f);
|
||||||
overlayGraph_register("UPLOAD", g_state.frameTimings , 0.0f, 50.0f);
|
overlayGraph_register("UPLOAD", g_state.frameTimings , 0.0f, 50.0f);
|
||||||
|
overlayGraph_register("RENDER", g_state.renderDuration, 0.0f, 2.0f);
|
||||||
|
|
||||||
initImGuiKeyMap(g_state.io->KeyMap);
|
initImGuiKeyMap(g_state.io->KeyMap);
|
||||||
|
|
||||||
@ -1234,6 +1238,7 @@ static void lg_shutdown(void)
|
|||||||
// free metrics ringbuffers
|
// free metrics ringbuffers
|
||||||
ringbuffer_free(&g_state.renderTimings);
|
ringbuffer_free(&g_state.renderTimings);
|
||||||
ringbuffer_free(&g_state.frameTimings );
|
ringbuffer_free(&g_state.frameTimings );
|
||||||
|
ringbuffer_free(&g_state.renderDuration);
|
||||||
|
|
||||||
free(g_state.fontName);
|
free(g_state.fontName);
|
||||||
igDestroyContext(NULL);
|
igDestroyContext(NULL);
|
||||||
|
@ -119,6 +119,7 @@ struct AppState
|
|||||||
uint64_t lastRenderTime;
|
uint64_t lastRenderTime;
|
||||||
bool lastRenderTimeValid;
|
bool lastRenderTimeValid;
|
||||||
RingBuffer renderTimings;
|
RingBuffer renderTimings;
|
||||||
|
RingBuffer renderDuration;
|
||||||
RingBuffer frameTimings;
|
RingBuffer frameTimings;
|
||||||
|
|
||||||
atomic_uint_least64_t pendingCount;
|
atomic_uint_least64_t pendingCount;
|
||||||
|
Loading…
Reference in New Issue
Block a user