Commit Graph

3797 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
Mikhail Pozdnyakov
ac3d59862a [core] TilePyramid has sorted render tiles
Thus we obviate unneeded extra sorting of render tiles at each render layer.
2019-01-16 16:16:18 +02:00
Mikhail Pozdnyakov
12295ef335 [core] SymbolBucket: use single map for paint properties data
Obviates unnecessary lookups, improves readability.
2019-01-14 12:53:44 +02:00
Konstantin Käfer
1185fe0d31 [core] return constexpr strings from functions to avoid ODR compile failures 2019-01-11 16:05:17 +01:00
Mikhail Pozdnyakov
d37918c169 [core] Split layer type specific code in mbgl::Programs
Progams code for a certain layer type is encapsulted within
a dedicated `<layer type>Programs` class, inherited from
the generic base `LayerTypePrograms` class.

`mbgl::Programs::get<layer type>Programs()` lazily initializes the
layer type-specific programs code using pointer to the base class,
which allows LTO to remove this code from binaries (if the corresponding
`get<layer type>Programs()` method can never be invoked).
2019-01-11 16:43:52 +02:00
Mikhail Pozdnyakov
2bdab82ded [core] shader program must always match bucket in render symbol layer
Before this change, `RenderSymbolLayer` with updated style was trying to render
symbols using the previous bucket (with paint property binders that matched a previous program).

Now, symbol bucket caches the latest corresponding paint properties (caching is happening on
complete tiles only). As a result, `RenderSymbolLayer` always picks the shader program and
its parameters in sync with the obtained bucket.
2019-01-11 11:30:04 +02:00
Konstantin Käfer
6f60ccf08e [build] generate header maps instead of -files.txt 2019-01-09 10:26:53 +01:00
Minh Nguyễn
d0f330a319 [core] Updated script detection for Unicode 11
Updated script detection code to reflect changes in Unicode 11.
2019-01-07 09:56:37 -08:00
Ansis Brammanis
750734df34 [core] fix deduping rings in querying, #11357 2019-01-04 15:00:19 -08:00
Mikhail Pozdnyakov
c621b8100d [core] Drop LayerType
Drop LayerType and its remaining usages.
The generic code should be layer type agnostic.
2019-01-04 11:51:33 +02:00
Chris Loer
b7e2b11a75 [core] Support for excluding ideographic glyphs from offline downloads. 2018-12-21 15:13:48 -08:00
Mikhail Pozdnyakov
cf6c97ad68 [core] Remove fnv_hash.hpp 2018-12-20 09:50:14 +02:00
Mikhail Pozdnyakov
d4d12fb8a5 [core] Use eternal::hash_map in style::Layers 2018-12-19 19:09:19 +02:00
Alexander Shalamov
a1ca06e304 [core] Introduce Renderer::queryFeatureExtension API
New interface allows it's users to query additional information about
feature that was provided by qRF interface. This is particularly
useful for clustered features.
2018-12-12 15:08:18 +02:00
Alexander Shalamov
664ceb4398 [core] Share GeoJSONData pointer as weak_ptr instead of raw ptr 2018-12-12 15:08:18 +02:00
Alexander Shalamov
8a03d16990 [core] Expose getChildren, getLeaves, getClusterExpansionZoom on SuperclusterData 2018-12-12 15:08:18 +02:00
Chris Loer
d812babecd [core] Avoid divide-by-zero when transition duration is 0..
Fixes issue #13506 -- transition duration of 0 would cause symbol flickering.
2018-12-11 14:03:34 -08:00
Chris Loer
662a495561 [docs] EnterIdle -> BecomeIdle 2018-12-11 11:46:16 -08:00
Chris Loer
70c2d5a4ca [core, darwin, android] Add onDidEnterIdle to MapObserver.
didEnterIdle fires whenever render completes and no repaint is scheduled.
2018-12-11 11:46:16 -08:00
Mikhail Pozdnyakov
c043d01e14 [core]Disable RenderAnnotationSource when annotations are disabled
This patch disables creation of `RenderAnnotationSource` instances
and thus saves extra 4Ki on Android when `LayerManager::annotationsEnabled`
is `false`.
2018-12-11 15:09:34 +02:00
Mikhail Pozdnyakov
ebd87a5442 [core, android, darwin] Move layer factories to separate files 2018-12-10 18:20:32 +02:00
Łukasz Paczos
794b851f02 [android] expose Formatted text-field setter 2018-12-04 17:22:38 +01:00
Konstantin Käfer
64559a255b [core] convert CompoundExpressionRegistry to constexpr hash map 2018-12-04 16:20:51 +02:00
Konstantin Käfer
2b9f3aad9a [core] use constexpr map using eternal for expression lookups 2018-12-04 16:20:51 +02:00
Vladimir Agafonkin
c89daf6bf1 Add basic shader minification (#13500)
* add basic shader minification (same GL JS does)

* don't remove line break at shader end
2018-12-04 16:09:43 +02:00
Mikhail Pozdnyakov
92352de87d [core] layermanager folder
Move `LayerManager` and `LayerFactory` abstract classes to a dedicated folder.
2018-11-30 19:09:17 +02:00
Bruno de Oliveira Abinader
369d1f005b [core] Do not consider X axis when constraining scale 2018-11-29 14:23:55 +02:00
Bruno de Oliveira Abinader
e64c28613a [core] Support fill-extrusion-vertical-gradient 2018-11-29 14:23:55 +02:00
Mikhail Pozdnyakov
ad03e42b28 [core] LayerManager can disable annotations
At the moment, the annotations implementation in the `mapbox-gl-native`
core is creating concrete layer instances apart from `LayerManager/LayerFactory`
code path.

So, annotations must be disabled if the `LayerManager` implementation does
not provide line, fill or symbol layers (those, used by the annotations).

Note: in future, annotations implementation will be moved from the core to the
platform SDK level(see https://github.com/mapbox/mapbox-plugins-android/tree/master/plugin-annotation)
and `LayerManager` won't need to disable it.
2018-11-28 17:18:38 +02:00
Bruno de Oliveira Abinader
20ca1a0418 [core] Cleanup Transform, use {jump,ease}To() instead 2018-11-27 21:38:36 +02:00
Bruno de Oliveira Abinader
e8f7866e9e [core] Remove error-prone setlatLng overload 2018-11-27 21:38:36 +02:00
Mikhail Pozdnyakov
361982fef8 [core][Android][Darwin] LayerManager creates RenderLayer instances
`LayerManager` is now responsible for `RenderLayer` instances creation,
so that there is a single entry point for creating of objects, which
correspond to a certain layer type.

The `LayerType type` field is dropped from `Layer::Impl`.
2018-11-27 18:10:21 +02:00
Bruno de Oliveira Abinader
52cce7925d [core] Camera center and anchor points are mutually exclusive 2018-11-26 17:15:51 +02:00
Bruno de Oliveira Abinader
82be3104cd [core] Fix VectorTileFeature::getValue() semantics after geometry@v1.0.0 2018-11-26 12:43:13 +02:00
Minh Nguyễn
7d5be980e2 [core] Fixed {prefix} evaluation
This appears to have been an attempt to use the std::string fill constructor, but it ended up creating a one-character-long string and attempting to overwrite the null terminator.
2018-11-21 09:54:05 -08:00
Bruno de Oliveira Abinader
594d2074a3 [core] Let placement transitions use the transition duration, if set, and allow disabling them entirely 2018-11-21 16:43:20 +02:00
Bruno de Oliveira Abinader
5fb0b0c1bc [core] Let property evaluation transitions use the transition duration, if set 2018-11-21 16:43:20 +02:00
Mikhail Pozdnyakov
8ac87ec5cb Refactor util::fontStacks()
So that it does not downcast `Layer::Impl` instances.
Also, an unneeded `std::vector` construction was removed from
`Parser::fontStacks()`.
2018-11-19 17:16:54 +02:00
Alexander Shalamov
9592e61288 [core] Construct RenderItem objects in-place and remove unused headers 2018-11-19 14:06:21 +02:00
Alexander Shalamov
e59110d586 [core] Remove RenderLayer's is<> as<> methods 2018-11-19 14:06:21 +02:00
Alexander Shalamov
77911f1cc9 [core] Replace RenderSymbolLayer downcast with symbol interface 2018-11-19 14:06:21 +02:00
Alexander Shalamov
20c471669c [core] Remove casts in buckets 2018-11-19 14:06:21 +02:00
Alexander Shalamov
eb170b250a [core] Add use LayerTypeInfo::Layout for the layers that require Layout 2018-11-19 14:06:21 +02:00
Alexander Shalamov
05d5edfa74 [core] Remove casts where expected type is part of the contract 2018-11-19 14:06:21 +02:00
Alexander Shalamov
767745e8b8 [core] Remove casts for Custom and Background render layers 2018-11-19 14:06:21 +02:00
Alexander Shalamov
a7274f66d0 [core] Move layer specific color ramp updates behind common update() method 2018-11-19 14:06:21 +02:00
Alexander Shalamov
f6ad5f378e [core] Move RenderTile filtering / sorting logic to render layers 2018-11-19 14:06:21 +02:00
Alexander Shalamov
006ee8b003 [core] Move markContextDestroyed() to the RenderLayer 2018-11-19 14:06:21 +02:00
Alexander Shalamov
44906b1ff3 [core] Remove downcasts for layers that require 3D render pass 2018-11-19 14:06:21 +02:00
Alexander Shalamov
527851e2aa [core] Add static layer properties to mbgl::style::LayerTypeInfo 2018-11-19 14:06:21 +02:00