Commit Graph

3287 Commits

Author SHA1 Message Date
Konstantin Käfer
13d6920661 [core] fix division by zero when defaultFadeDuration is 0 2017-07-13 17:57:36 +02:00
John Firebaugh
1176eade34 [android] Force previously cached program binaries to be regenerated 2017-07-12 14:55:02 -07:00
John Firebaugh
c0d6a07a8e [core] Pass correct sources to programIdentifier 2017-07-12 14:55:02 -07:00
John Firebaugh
86ee821c6e [core] No need for optional in map of VertexArrays 2017-07-12 14:55:02 -07:00
John Firebaugh
2691fe165d [core] Add comments explaining typing of AttributeLocation and UniformLocation 2017-07-12 14:55:02 -07:00
John Firebaugh
4c42132183 [core] Reduce memory requirements of VertexArrays 2017-07-12 14:55:02 -07:00
John Firebaugh
49726cdc75 [core] Remove segment.cpp 2017-07-12 14:48:22 -07:00
John Firebaugh
01aff01274 [core] Use a type alias for SegmentVector 2017-07-12 14:48:22 -07:00
John Firebaugh
358b0305ae [core] Per-segment-per-layer vertex arrays
Reduces rebinding, matches gl-js, and works around the buggy VAO implementation on PowerVR SGX544 GPUs.
2017-07-12 14:48:22 -07:00
John Firebaugh
c61041b44c [core] Rework attribute binding (again)
These changes are necessary for programs whose set of active attributes is not fixed at compile time by a template parameter pack, but rather varies based on the generated shader text at runtime. In such cases, the attribute location of a given named attribute may vary between instances of the same Program.

Previously, attribute bindings were implicitly associated with a location based on template parameter order, and -1 was used to indicate an inactive attribute. This left us unable to disable the appropriate attribute when it went from active to inactive. Now, the state tracker for bindings explicitly associates locations and state, and an empty optional is used to indicate an inactive attribute.

In addition, a gl::VertexArray class is now exposed, allowing more flexibility in the relationship between Programs, Segments, and attribute bindings. In this commit, that relationship does not change, but the subsequent commit adjusts it to match gl-js, reduce rebinds, and work around buggy VAO implementations.

VertexArray uses a pimpl idiom in order to support implementations that lack the VAO extension. In that case, all VertexArrays share global binding state, reflecting the platform reality in the absence of VAOs, while still providing a uniform API.
2017-07-12 14:48:22 -07:00
John Firebaugh
fedfaa2f6e [core] Inline getActiveAttributes details 2017-07-12 14:43:23 -07:00
John Firebaugh
8fb212dbb3 [core] Include what you use 2017-07-12 14:43:23 -07:00
Chris Loer
e8657becc5 [core] Update shaders.
Implements 'icon-pitch-alignment' (issue #9345)
Fixes issue #9456 (map-aligned point label regression)
2017-07-12 14:14:09 -07:00
Chris Loer
8ef9fcdf3e [core] Base label "keep-upright" orientation on start and end of label
Fixes issue #9457.
2017-07-12 13:32:44 -07:00
Bruno de Oliveira Abinader
4014aa6721 [core] GCC 4.9 bracket initialization issues 2017-07-12 20:42:29 +03:00
Bruno de Oliveira Abinader
2fae373fc9 [core] GCC 4.9 is unable to deduce ctors when using bracket init 2017-07-12 20:42:29 +03:00
Bruno de Oliveira Abinader
21031b624f [core] Added missing header includes 2017-07-12 20:42:29 +03:00
Bruno de Oliveira Abinader
6282b28b6f [core] Added MBGL_CONSTEXPR to satisfy GCC 4.9 2017-07-12 20:42:29 +03:00
Bruno de Oliveira Abinader
3afbfa2de7 [core] GCC 4.9 shadow member warnings 2017-07-12 20:42:29 +03:00
Bruno de Oliveira Abinader
f1ac757bd2 [core] GCC 4.9 does not fully support custom variable templates 2017-07-12 20:42:29 +03:00
Thiago Marcos P. Santos
70e557a6f8 [core] Use gmtime_s on Windows
gmtime_r is POSIX
2017-07-12 15:13:33 +03:00
Thiago Marcos P. Santos
0d7d3d8959 [core] Use std::to_string on Windows
Clang on Window's can't parse rapidjson's dtoa.
2017-07-12 15:13:33 +03:00
Thiago Marcos P. Santos
3b49ec3a0b [core] Prefer std:: functions over POSIX
s/unlink/std::remove
2017-07-12 15:13:33 +03:00
Ansis Brammanis
eac297185d [core] add static asserts for more gl constants
and rename BufferUsageType to BufferUsage
2017-07-11 09:10:25 -07:00
Ansis Brammanis
d661b4ba61 [core] port pitch-label collision hack
81363951ed
2017-07-11 09:10:25 -07:00
Ansis Brammanis
e514138b69 [core] improve legibility of labels that follow lines
port https://github.com/mapbox/mapbox-gl-js/pull/4781

This improves legibility of labels that follow lines in pitched views.
The previous approach used the limited information in the shader to
calculate put the glyph in approximatelyright place. The new approach
does this more accurately by doing it on the cpu where we have access to
the entire line geometry.
2017-07-11 09:10:24 -07:00
Ansis Brammanis
77734cfe1b [core] fix transformMat4
It used to overwrite values in the middle of the calculation which would
cause problems when `out` and `a` were a reference to the same vector.
2017-07-11 09:10:24 -07:00
Chris Loer
a0e37fe35b [core] Hold on to tile yStretch value for rendering old symbolBuckets while waiting for new ones. 2017-07-11 09:10:24 -07: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
Chris Loer
72f6b73590 [core] Limit symbol re-placement on changed tile distance to pitch > 25. 2017-07-11 09:10:24 -07:00
Chris Loer
7c7564d72e [core] Re-generate shaders. 2017-07-11 09:10:24 -07:00
Chris Loer
8c23f14a9f [core] Use fade texture in collision debug boxes so that they agree more closely with symbol shaders. 2017-07-11 09:10:23 -07:00
Chris Loer
f8402e2042 [core] Set "max_camera_distance" to 1.5 for viewport-aligned road labels.
Viewport-aligned curved labels start to look very strange in the distance. Until we have a better system for projecting them, just prevent them from showing.
2017-07-11 09:10:23 -07:00
Chris Loer
2ee59796fb [core] Enable tile clipping for collision boxes.
Necessary because collision boxes now change shape based on while tile they're part of.
2017-07-11 09:10:23 -07:00
Chris Loer
7b29b90e7f [core] Extend collision feature boxes to accommodate potential pitch-scaling. 2017-07-11 09:10:23 -07:00
Chris Loer
8f5e0b66ab [core] Pass pitch-scaling vertex attributes and uniforms to shaders. 2017-07-11 09:10:23 -07:00
Chris Loer
59df3a90f4 [core] Improved label pitch-scaling: approximate collision box shapes based on tile distance from camera. 2017-07-11 09:10:22 -07:00
Konstantin Käfer
d03fd0dce2 [build] Don't use maybe-uninitialized and misleading-indentation in Clang, since they're not implemented there 2017-07-11 16:23:19 +02:00
Thiago Marcos P. Santos
7c117281bc [core] Isolate pthread-based tls implementation 2017-07-07 18:10:06 +03:00
Thiago Marcos P. Santos
f734126416 [core] Fix conditional unitialized jump on RenderGeoJSONSource
```
==24942== Conditional jump or move depends on uninitialised value(s)
==24942==    at 0x7D943D: mbgl::RenderGeoJSONSource::update(mbgl::Immutable<mbgl::style::Source::Impl>, std::vector<mbgl::Immutable<mbgl::style::Layer::Impl>, std::allocator<mbgl::Immutable<mbgl::style::Layer::Impl> > > const&, bool, bool, mbgl::TileParameters const&) (in /home/tmpsantos/Projects/mapbox-gl-native/build/linux-x86_64/Release/mbgl-test)
==24942==    by 0x796445: mbgl::RenderStyle::update(mbgl::UpdateParameters const&) (in /home/tmpsantos/Projects/mapbox-gl-native/build/linux-x86_64/Release/mbgl-test)
==24942==    by 0x77E29D: mbgl::Map::Impl::render(mbgl::View&) (in /home/tmpsantos/Projects/mapbox-gl-native/build/linux-x86_64/Release/mbgl-test)
==24942==    by 0x77E559: mbgl::Map::Impl::renderStill() (in /home/tmpsantos/Projects/mapbox-gl-native/build/linux-x86_64/Release/mbgl-test)
==24942==    by 0xA39772: uv__async_event (async.c:98)
==24942==    by 0xA398F8: uv__async_io (async.c:138)
==24942==    by 0xA4375F: uv__io_poll (linux-core.c:380)
==24942==    by 0xA3A1F2: uv_run (core.c:354)
==24942==    by 0x61BADC: API_ZoomHistory_Test::TestBody() (in /home/tmpsantos/Projects/mapbox-gl-native/build/linux-x86_64/Release/mbgl-test)
==24942==    by 0x89FDE9: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (in /home/tmpsantos/Projects/mapbox-gl-native/build/linux-x86_64/Release/mbgl-test)
==24942==    by 0x885450: testing::Test::Run() (in /home/tmpsantos/Projects/mapbox-gl-native/build/linux-x86_64/Release/mbgl-test)
==24942==    by 0x88642F: testing::TestInfo::Run() (in /home/tmpsantos/Projects/mapbox-gl-native/build/linux-x86_64/Release/mbgl-test)
==24942==
```
2017-07-07 17:05:34 +03:00
Thiago Marcos P. Santos
e962b79b0f [core] Fix sorting order for render tiles
Sort by z order, so lower res tiles don't get rendered
over high res tiles.
2017-07-07 14:28:52 +03:00
Thiago Marcos P. Santos
407fbc70b1 [core] Prefetch low resolution tiles 2017-07-07 14:28:52 +03:00
Minh Nguyễn
2fe3dd64c0 [core] Updated script detection for Unicode 10
Updated script detection code to reflect changes in Unicode 10 and UTR 50 revision 17.
2017-07-06 11:50:03 -07:00
Chris Loer
d5fbcb242a [core] Implement circle-pitch-alignment property
Closes issue #9349.
2017-07-06 09:39:26 -07:00
Bruno de Oliveira Abinader
a1ed9f8794 [core] Don't upload empty buckets 2017-07-06 16:17:58 +03:00
John Firebaugh
754d2f377a [core] make{Glyph,Image}Atlas only once for any number of symbol layers 2017-07-06 05:28:37 -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
John Firebaugh
87081b8391 [core] Fix iterator invalidation in erase_if
vector::erase invalidates iterators. It's not safe for erase_if to cache the end iterator nor increment, then erase.
2017-07-05 20:15:17 +02:00