diff options
author | Mikko Pulkki <mikko.pulkki@mapbox.com> | 2019-10-11 16:13:59 +0300 |
---|---|---|
committer | Mikko Pulkki <mikko.pulkki@mapbox.com> | 2019-10-21 18:17:20 +0300 |
commit | 590c8801a42376ad21f77bf6694f1d857767b73f (patch) | |
tree | 75f294c3dfaa37e562da500a2b9991707fbac313 | |
parent | 8f81d291713f79c35c6f4bc3c5627482909483dd (diff) | |
download | qtlocation-mapboxgl-590c8801a42376ad21f77bf6694f1d857767b73f.tar.gz |
Add frame time instrumentation to headless renderer
-rw-r--r-- | platform/default/include/mbgl/gfx/headless_frontend.hpp | 5 | ||||
-rw-r--r-- | platform/default/src/mbgl/gfx/headless_frontend.cpp | 16 |
2 files changed, 17 insertions, 4 deletions
diff --git a/platform/default/include/mbgl/gfx/headless_frontend.hpp b/platform/default/include/mbgl/gfx/headless_frontend.hpp index 33d3adea4f..b777cc7b7f 100644 --- a/platform/default/include/mbgl/gfx/headless_frontend.hpp +++ b/platform/default/include/mbgl/gfx/headless_frontend.hpp @@ -1,11 +1,12 @@ #pragma once +#include <mbgl/gfx/headless_backend.hpp> #include <mbgl/map/camera.hpp> #include <mbgl/renderer/renderer_frontend.hpp> -#include <mbgl/gfx/headless_backend.hpp> #include <mbgl/util/async_task.hpp> #include <mbgl/util/optional.hpp> +#include <atomic> #include <memory> namespace mbgl { @@ -31,6 +32,7 @@ public: void update(std::shared_ptr<UpdateParameters>) override; void setObserver(RendererObserver&) override; + double getFrameTime() const; Size getSize() const; void setSize(Size); @@ -54,6 +56,7 @@ private: Size size; float pixelRatio; + std::atomic<double> frameTime; std::unique_ptr<gfx::HeadlessBackend> backend; util::AsyncTask asyncInvalidate; diff --git a/platform/default/src/mbgl/gfx/headless_frontend.cpp b/platform/default/src/mbgl/gfx/headless_frontend.cpp index 7ec8a55ba7..b7156cc2b7 100644 --- a/platform/default/src/mbgl/gfx/headless_frontend.cpp +++ b/platform/default/src/mbgl/gfx/headless_frontend.cpp @@ -1,10 +1,11 @@ -#include <mbgl/gfx/headless_frontend.hpp> #include <mbgl/gfx/backend_scope.hpp> +#include <mbgl/gfx/headless_frontend.hpp> +#include <mbgl/map/map.hpp> +#include <mbgl/map/transform_state.hpp> #include <mbgl/renderer/renderer.hpp> #include <mbgl/renderer/renderer_state.hpp> #include <mbgl/renderer/update_parameters.hpp> -#include <mbgl/map/map.hpp> -#include <mbgl/map/transform_state.hpp> +#include <mbgl/util/monotonic_timer.hpp> #include <mbgl/util/run_loop.hpp> namespace mbgl { @@ -22,12 +23,14 @@ HeadlessFrontend::HeadlessFrontend(Size size_, const optional<std::string> localFontFamily) : size(size_), pixelRatio(pixelRatio_), + frameTime(0), backend(gfx::HeadlessBackend::Create( {static_cast<uint32_t>(size.width * pixelRatio), static_cast<uint32_t>(size.height * pixelRatio)}, swapBehavior, contextMode)), asyncInvalidate([this] { if (renderer && updateParameters) { + auto startTime = mbgl::util::MonotonicTimer::now(); gfx::BackendScope guard{*getBackend()}; // onStyleImageMissing might be called during a render. The user implemented method @@ -36,6 +39,9 @@ HeadlessFrontend::HeadlessFrontend(Size size_, // still using them. auto updateParameters_ = updateParameters; renderer->render(*updateParameters_); + + auto endTime = mbgl::util::MonotonicTimer::now(); + frameTime = (endTime - startTime).count(); } }), renderer(std::make_unique<Renderer>(*getBackend(), pixelRatio, localFontFamily)) {} @@ -57,6 +63,10 @@ void HeadlessFrontend::setObserver(RendererObserver& observer_) { renderer->setObserver(&observer_); } +double HeadlessFrontend::getFrameTime() const { + return frameTime; +} + Size HeadlessFrontend::getSize() const { return size; } |