static void API_renderStill_reuse_map_switch_styles(::benchmark::State& state) { RenderBenchmark bench; HeadlessFrontend frontend { { 1000, 1000 }, 1, bench.fileSource, bench.threadPool }; Map map { frontend, MapObserver::nullObserver(), frontend.getSize(), 1, bench.fileSource, bench.threadPool, MapMode::Still }; while (state.KeepRunning()) { prepare(map, { "{}" }); frontend.render(map); prepare(map); frontend.render(map); } }
TEST(API, RecycleMapUpdateImages) { util::RunLoop loop; StubFileSource fileSource; ThreadPool threadPool(4); float pixelRatio { 1 }; HeadlessFrontend frontend { pixelRatio, fileSource, threadPool }; auto map = std::make_unique<Map>(frontend, MapObserver::nullObserver(), frontend.getSize(), pixelRatio, fileSource, threadPool, MapMode::Static); EXPECT_TRUE(map); auto loadStyle = [&](auto markerName, auto markerPath) { auto source = std::make_unique<GeoJSONSource>("geometry"); source->setGeoJSON( Geometry<double>{ Point<double>{ 0, 0 } } ); auto layer = std::make_unique<SymbolLayer>("geometry", "geometry"); layer->setIconImage({ markerName }); map->getStyle().loadJSON(util::read_file("test/fixtures/api/empty.json")); map->getStyle().addSource(std::move(source)); map->getStyle().addLayer(std::move(layer)); map->getStyle().addImage(std::make_unique<style::Image>(markerName, decodeImage(util::read_file(markerPath)), 1.0)); }; // default marker loadStyle("default_marker", "test/fixtures/sprites/default_marker.png"); test::checkImage("test/fixtures/recycle_map/default_marker", frontend.render(*map), 0.0006, 0.1); // flipped marker loadStyle("flipped_marker", "test/fixtures/sprites/flipped_marker.png"); test::checkImage("test/fixtures/recycle_map/flipped_marker", frontend.render(*map), 0.0006, 0.1); }