From 21fbe38c52a41cc7b57ad39ef7a7109f2c0071b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 27 Jun 2022 10:47:15 +0200 Subject: [PATCH] DebugTools: avoid excessive repetition in FrameProfilerGL internals. StaticArray is a thing, use it! This also makes it easier to fiddle with the delay. --- src/Magnum/DebugTools/FrameProfiler.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Magnum/DebugTools/FrameProfiler.cpp b/src/Magnum/DebugTools/FrameProfiler.cpp index f4ba37b02..34f519669 100644 --- a/src/Magnum/DebugTools/FrameProfiler.cpp +++ b/src/Magnum/DebugTools/FrameProfiler.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -443,12 +444,14 @@ struct FrameProfilerGL::State { #endif UnsignedLong frameTimeStartFrame[2]; UnsignedLong cpuDurationStartFrame; - GL::TimeQuery timeQueries[3]{GL::TimeQuery{NoCreate}, GL::TimeQuery{NoCreate}, GL::TimeQuery{NoCreate}}; + + enum: std::size_t { QueryCount = 3 }; + Containers::StaticArray timeQueries{DirectInit, NoCreate}; #ifndef MAGNUM_TARGET_GLES - GL::PipelineStatisticsQuery verticesSubmittedQueries[3]{GL::PipelineStatisticsQuery{NoCreate}, GL::PipelineStatisticsQuery{NoCreate}, GL::PipelineStatisticsQuery{NoCreate}}; - GL::PipelineStatisticsQuery vertexShaderInvocationsQueries[3]{GL::PipelineStatisticsQuery{NoCreate}, GL::PipelineStatisticsQuery{NoCreate}, GL::PipelineStatisticsQuery{NoCreate}}; - GL::PipelineStatisticsQuery clippingInputPrimitivesQueries[3]{GL::PipelineStatisticsQuery{NoCreate}, GL::PipelineStatisticsQuery{NoCreate}, GL::PipelineStatisticsQuery{NoCreate}}; - GL::PipelineStatisticsQuery clippingOutputPrimitivesQueries[3]{GL::PipelineStatisticsQuery{NoCreate}, GL::PipelineStatisticsQuery{NoCreate}, GL::PipelineStatisticsQuery{NoCreate}}; + Containers::StaticArray verticesSubmittedQueries{DirectInit, NoCreate}; + Containers::StaticArray vertexShaderInvocationsQueries{DirectInit, NoCreate}; + Containers::StaticArray clippingInputPrimitivesQueries{DirectInit, NoCreate}; + Containers::StaticArray clippingOutputPrimitivesQueries{DirectInit, NoCreate}; #endif }; @@ -502,7 +505,7 @@ void FrameProfilerGL::setup(const Values values, const UnsignedInt maxFrameCount q = GL::TimeQuery{GL::TimeQuery::Target::TimeElapsed}; arrayAppend(measurements, InPlaceInit, "GPU duration", Units::Nanoseconds, - UnsignedInt(Containers::arraySize(_state->timeQueries)), + UnsignedInt(_state->timeQueries.size()), [](void* state, UnsignedInt current) { static_cast(state)->timeQueries[current].begin(); }, @@ -522,7 +525,7 @@ void FrameProfilerGL::setup(const Values values, const UnsignedInt maxFrameCount q = GL::PipelineStatisticsQuery{GL::PipelineStatisticsQuery::Target::VertexShaderInvocations}; arrayAppend(measurements, InPlaceInit, "Vertex fetch ratio", Units::RatioThousandths, - UnsignedInt(Containers::arraySize(_state->verticesSubmittedQueries)), + UnsignedInt(_state->verticesSubmittedQueries.size()), [](void* state, UnsignedInt current) { static_cast(state)->verticesSubmittedQueries[current].begin(); static_cast(state)->vertexShaderInvocationsQueries[current].begin(); @@ -547,7 +550,7 @@ void FrameProfilerGL::setup(const Values values, const UnsignedInt maxFrameCount q = GL::PipelineStatisticsQuery{GL::PipelineStatisticsQuery::Target::ClippingOutputPrimitives}; arrayAppend(measurements, InPlaceInit, "Primitives clipped", Units::PercentageThousandths, - UnsignedInt(Containers::arraySize(_state->clippingInputPrimitivesQueries)), + UnsignedInt(_state->clippingInputPrimitivesQueries.size()), [](void* state, UnsignedInt current) { static_cast(state)->clippingInputPrimitivesQueries[current].begin(); static_cast(state)->clippingOutputPrimitivesQueries[current].begin();