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
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.
Commit 1c53dc9ca8 ([core] Refactor vertex array object extension
initialization) changed where the GL renderer string is checked in order
to prevent the vertex array extension initialization in certain
platforms and in doing so made the logging of that string more frequent,
once per context initialization instead of at most once per process.
This is a lot more verbose, specially when running unit tests, so make
sure that string is logged at most once as it was previously.
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.