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();