summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikko Pulkki <mikko.pulkki@mapbox.com>2019-10-11 16:13:59 +0300
committerMikko Pulkki <mikko.pulkki@mapbox.com>2019-10-21 18:17:20 +0300
commit590c8801a42376ad21f77bf6694f1d857767b73f (patch)
tree75f294c3dfaa37e562da500a2b9991707fbac313
parent8f81d291713f79c35c6f4bc3c5627482909483dd (diff)
downloadqtlocation-mapboxgl-590c8801a42376ad21f77bf6694f1d857767b73f.tar.gz
Add frame time instrumentation to headless renderer
-rw-r--r--platform/default/include/mbgl/gfx/headless_frontend.hpp5
-rw-r--r--platform/default/src/mbgl/gfx/headless_frontend.cpp16
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;
}