when a source-expression like `["get", "property"]` evaluates to null and the default pattern value (empty string) is used, make sure attribute buffers get populated to avoid crashing the app
The ANGLE implementation of GL_KHR_debug on Direct3D seems to be broken
leading to a bad_alloc being thrown when running with a debug build, so
disable it in that platform.
Currently the vertex object extension is disabled through an ifdef for
the Windows platform due to an issue with ANGLE, while there is a
blacklist for other platforms. Unify those by adding ANGLE to that
blacklist and some small refactoring.
Add a parameter to Program::draw to control whether face culling should
be enabled. This will be used in a follow up commit to enable face
culling for fill extrusion layers.
[node] Hook up map-wide "crossSourceCollisions" option, defaulting to true.
[test] Pass "crossSourceCollisions" test option through test harness; enable cross-source-collisions tests on native.
* The worker no longer needs to maintain symbol layer order.
* No need for separate symbolLayoutsNeedPreparation state. That dates back to when we had "two phase" symbol layout. Now we can just check symbolLayouts.empty(). (Similarly for pattern layouts.)
* No need to loop over symbol layouts twice in performSymbolLayout. Same reason as above.
* Simplify iconAtlas initialization. It initialized via every possible branch, so just do it up front.
- Fixes issue #12461.
- Only implement "avoid edges" in MapMode::Tile since it's no longer relevant in Static or Continuous mode.
- New: Force "avoid edges" to "true" for line labels, since in tile mode they'll always clip poorly at tile boundaries.
- Remove unused "withinPlus0/inside" logic.
Fixes issue #12472.
This commit doesn't address the underlying issues that come from symbolAnnotationTree using a slightly lower precision coordinate system than the annotations themselves.
Instead, it just puts a small padding around each tile when it queries for tile data, so that symbols right at the tile boundary will be included in both tiles.
The rendering/querying code will take care of only displaying one instance.
The padding is in global coordinates, so at higher zoom the padding will be larger in tile units -- this is consistent with precision loss also being greater at higher zoom.
- log2 is not available on Android before API 18.
- Android doesn't have 'round' on the std:: namespace when using g++.
Co-authored-by: Thiago Marcos P. Santos <thiago@mapbox.com>