Commit Graph

34 Commits

Author SHA1 Message Date
Mikhail Pozdnyakov
b83030aa9b [core] Remove tile sorting from the clip and mask algorithms
The tile sorting can be now removed from the algorithms, which
calculate tile mask and clip ids, because their client code
provides tiles being already sorted (in `TilePyramid`).

This patch brings significant improvements to the Tile-related
performance tests results, for example the `TileMaskGeneration`
benchmark test runs 33 times faster with these changes applied.
2019-01-18 14:35:15 +02:00
Konstantin Käfer
8bf66ef7a7 [core] remove some uses of <iostream> and <sstream> 2018-10-23 12:23:40 +02:00
Molly Lloyd
cec3eaa198 [core] fix flickering caused by incorrect ClipIDs
we missed a check for RenderTile.needsClipping when generating the new ClipIDs for some tiles, resulting in incorrect clipping that caused flickering in some cases
2018-10-03 11:46:49 -07:00
Konstantin Käfer
2ea0833ecf [core] don't break ascent in the overscaled tile phase
We optimize our updateRenderable algorithm by breaking ascent when we've already checked a certain tile. So far, we've compared the UnwrappedTileIDs, but they don't include the overscale component. When ascending through overscaled tile IDs, we've stopped the ascent too early, when we should've kept the search going.
2018-09-21 12:12:35 +02:00
Bruno de Oliveira Abinader
1683da3225 [core] coveredByChildren is false if at least one child is uncovered 2018-07-24 09:18:19 +03:00
Asheem Mamoowala
10a44050f4 Support TileJSON bounds property (#10701)
* [core] Parse TileJSON bounds property
* [core] Add TileRange and LatLngBounds::contains(CanonicalTileID)
Move LatLngBounds::contains impl to cpp file
* [core] Skip tile creation outside of tileset bounds
* [core] Fix TileRange for wrapped bounds and use for CustomTileLoader instead of LatLngBounds comparisons for tiles.
2018-01-05 06:35:31 -08:00
Konstantin Käfer
cbff0a972a [core] don't generate clip IDs for buckets/layers that don't need to be clipped 2017-10-17 15:08:22 -07:00
Konstantin Käfer
f4cb3b8a4f [core] make forcing cache/network only more explicit
Previously, we used the existence of a `prior*` field in the Resource object as an indication for whether we should consult the cache or not. However, this is prone to error, since a failed cache lookup won't set any prior fields. Therefore, we manually set `priorExpires` to 0. This in turn triggered another bug where generated wrong expiration timestamps when the server response we got was expired (or expired between sending and receiving).

This commit changes the flags so that we can now explicitly request CacheOnly/NetworkOnly (or All) loading methods, rather than the implicit Optional/Required naming scheme.
2017-10-12 10:41:49 +02:00
Konstantin Käfer
4dff51719b [core] add algorithm for computing masks for raster tiles 2017-07-24 12:10:45 +02:00
Chris Loer
a432a289a3 [core] Change OverscaledTileID to also include a "wrap" value.
This prevents TilePyramid from sharing wrapped copies of tiles.
This is necessary because two wrapped tiles no longer share the same CollisionTile.
2017-07-11 09:10:24 -07:00
Konstantin Käfer
64a827c325 [core] rename getStencils() to getClipIDs() to better reflect what it actually does 2017-07-06 12:32:54 +02:00
Konstantin Käfer
107622a72b [core] don't use unordered_* collections for things we need to sort anyway 2017-07-06 12:32:54 +02:00
Konstantin Käfer
6d526c7b1d [core] refactor ClipID generation 2017-07-06 12:32:54 +02:00
Thiago Marcos P. Santos
bc868b8433 [core] Suppress "stencil mask overflow" warning
When it starts, we get a log warning for every frame, which is
expensive. Now we get only one warning.
2017-05-02 12:25:38 +03:00
Konstantin Käfer
9a9408e811 [core] Render parent raster tiles when ideal tile can't be loaded 2017-04-20 09:38:18 +02:00
Konstantin Käfer
e76de05402 [build] move logging to util 2016-11-22 20:58:51 +01:00
Konstantin Käfer
bcdbbbcac2 [core] don't assign clip IDs to tiles that aren't rendered 2016-11-08 18:09:58 +01:00
Bruno de Oliveira Abinader
38f536049a [core] Moved util::log2 to its own header
- Added util::{MIN,MAX}_ZOOM_F to avoid consecutive conversions from
double to float
- Move util::log2 to its own header (part of mbgl/math)
2016-10-31 16:53:07 +02:00
Lucas Wojciechowski
37cb2bd756 [core] Convert uses of std::set to std::unordered_set (#6325)
* src/mbgl/annotation/annotation_manager.hpp

* src/mbgl/algorithm/update_renderables.hpp

* src/mbgl/geometry/glyph_atlas.hpp

* src/mbgl/renderer/painter.cpp and src/mbgl/renderer/render_item.hpp

* src/mbgl/renderer/symbol_bucket.hpp and src/mbgl/text/glyph_store.hpp

* src/mbgl/sprite/sprite_atlas.hpp

* include/mbgl/storage/network_status.hpp

* src/mbgl/text/collision_tile.cpp

* src/mbgl/style/update_batch.hpp

* platform/default/mbgl/storage/offline_download.hpp

* Add GlyphRangeSet typedef

* Fix whitespace & unused imports
2016-09-19 17:26:25 -07:00
Brad Leege
d0f9ba4998 [core] #3980 - Switching Core GL instances of map to unordered_map 2016-09-14 16:40:20 -07:00
John Firebaugh
a79d2afe1b [core] Rename data ⇢ tile; use Resource::Necessity 2016-08-26 10:30:55 -07:00
John Firebaugh
6eab895bc0 [core] Use Range<uint8_t> instead of full Tileset where possible 2016-06-14 11:25:45 -07:00
John Firebaugh
5c7dfd948f [core] *Tile ↔ *TileData
Tile is now the main base class; RasterTile, VectorTile, etc are its subclasses. GeometryTileData and its subclasses form the piece that's passed to the worker.
2016-06-13 10:59:33 -07:00
John Firebaugh
3ab7c1cca3 [core] Tile ⇢ RenderTile 2016-06-13 10:57:46 -07:00
Konstantin Käfer
4e5d065000 [core] load parents of missing tiles as optional 2016-06-10 12:42:14 +02:00
Konstantin Käfer
2c7f7fb566 [core] createTile callback can load optional and required tiles 2016-06-10 12:42:14 +02:00
Konstantin Käfer
1b8d280e3f [core] refactor updateRenderables algorithm 2016-05-27 10:15:06 +02:00
Konstantin Käfer
ebff2234e4 [core] remove unused template definition 2016-05-27 10:15:02 +02:00
Konstantin Käfer
c60fd0604a [core] TileData::isReady() => TileData::isRenderable() 2016-05-25 21:51:25 +02:00
Konstantin Käfer
e2bcea90fc [core] use #pragma once instead of ifdef include guards 2016-05-25 21:35:37 +02:00
Konstantin Käfer
7332ae0073 [core] retain tiles differently and remove old TileID class 2016-05-10 14:50:56 +02:00
Konstantin Käfer
dde59eaf76 [core] move Painter and dependents to new *TileID classes 2016-05-10 14:50:56 +02:00
Konstantin Käfer
5b640fb446 [core] add algorithm for generating clip IDs based on the new TileID classes 2016-05-10 14:50:56 +02:00
Konstantin Käfer
ecc8e018fa [core] add algorithm for detecting whether an ordered map contains covering children 2016-05-10 14:50:56 +02:00