summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers/render_line_layer.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [core] Store SegmentVectors in ephemeral render objectsKonstantin Käfer2020-02-141-5/+4
| | | | | | | We used some shared SegmentVectors, e.g. for drawing raster or background tiles. In longer running maps, this lead to resource accumulation. By storing the SegmentVectors and the contained gfx::DrawScope objects, we ensure that resources get released when the associated render objects vanish.
* [core] Implement image expression (#15877)Alexander Shalamov2019-11-111-15/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * [core] Bump gl-js version * [core] Implement image expression * [core] Use new image expression * [core] Coerce image expression to / from string * [core] Serialize evaluated image * [core] Pass available images to layout * [core] Pass images to evaluation context * [core] Set available flag value based on image availability * [core] Allow image coercion to boolean to indicate image availability * [core] Coalesce image expression * [core] Add image expression to next build system * [core] Align serialization format and evaluated type with gl-js * [core] Add images to expression evaluation method * [core] Add support for Image expression to expression test runner * [core] Unskip image expression tests * [core] Update unit tests * [core] Use image expression in annotation manager * [core] Add string to ImageExpression conversion * [core] Add image expression to expression dsl * [core] Convert tokens for implicitly created Image literal * [core] Fix clang format * [core] Split generated style code lines that are over 120 characters * [core] Add unit test for image expression equality * [core] Add image property expression evaluation unit test * [core] Unskip image expression render test * [core] Skip 'in' expression tests * [core] Ignore fill-pattern/update-feature-state render test * [core] Rename Image::serialize to Image::toValue
* [core] use individual textures for line dash patternsupstream/zmiao-testKonstantin Käfer2019-10-291-21/+20
| | | | | | | | This moves the LineAtlas from a shared texture that contained SDF dash patterns to use individual textures. Previously, the texture space was limited to a texture of 512 pixels height. Dash patterns were never removed (and are still never removed as of this patch), which means that this texture could fill up for styles that use a lot of different dash patterns. In particular, dash patterns for lines with a round line cap take up 15 pixels of texture height, limiting the amount of unique dash patterns to 34. While this was probably enough for rendering a single style, we quickly exhausted this number when reusing the Map object to render different styles. Instead of a global shared texture, we're now creating individual textures for every dash pattern. These textures are still cached so that we don't need to re-upload the texture on every frame.
* [build] Fix clang format and tidy checksJuha Alanen2019-09-181-16/+14
|
* [core] Feature state support to RenderLayer classesJuha Alanen2019-09-181-6/+7
|
* [core] Fix layer impl cast in render layer implementationsMikhail Pozdnyakov2019-08-161-0/+5
| | | | | | This PR puts `impl()` functions definitions into a nameless namespace to provide internal linkage and to make sure that appropriate cast function is invoked.
* [core] Optimize RenderLineLayer::queryIntersectsFeatureMikhail Pozdnyakov2019-07-241-11/+24
|
* [core] Synchronize render passes and render tilesMikhail Pozdnyakov2019-07-111-1/+2
| | | | | | | | | | | | | | | | Before this change render passes were assigned for the whole layer at properties evaluation stage. This caused problems, as layer render data are bound to the tile and these data might differ from tile to tile, depending on which tile has been updated by the tile worker and which has not been yet updated. This change takes into consideration the actual render passes required for each tile and combines them for the layer render passes. Naturally, this change also introduces render pass check for each render layer in `RenderLayer::render()` implementations.
* [core] Share render tiles lists between layersMikhail Pozdnyakov2019-07-091-2/+3
| | | | This helps to avoid unneeded allocations.
* [core] Remove RenderPass::UploadMikhail Pozdnyakov2019-06-251-1/+1
|
* [core] Simplify RenderLayer::upload()Mikhail Pozdnyakov2019-06-251-23/+16
| | | | | | Now `RenderLayer::upload()` accepts only `uploadPass`, similar to other uploadable objects. Few simplifications were made in the `LineLayer` prepare stage.
* [core] RenderTile returns textures by const referenceMikhail Pozdnyakov2019-05-281-2/+2
|
* [core] RenderTile does not expose TileMikhail Pozdnyakov2019-05-281-10/+8
| | | | | | RenderTile and Tile will be split when ochestration movces to a separate thread. This PR improves encapsulation of Tiles management: now performed within TilePyramid.
* [core] RenderLayer::render(PaintParameters, RenderSource*) -> ↵Mikhail Pozdnyakov2019-05-221-1/+1
| | | | render(PaintParameters)
* [core] add gfx::UploadPass, split startRender into prepare and uploadKonstantin Käfer2019-05-151-6/+37
|
* [core] upgrade mapbox-gl-js pin to the most recent versionKonstantin Käfer2019-05-081-4/+6
|
* [core] change approach to stencil clipping to (almost) match JSKonstantin Käfer2019-04-291-1/+4
|
* [core] Render layers use synchronized buckets and paint propertiesMikhail Pozdnyakov2019-04-171-7/+7
| | | | Actual for layers rendering the geometry tile data: line, fill, fill-extrusion, heatmap, circle, symbol (was updated in previous commits).
* [core] Simplify RenderLayer interface.Mikhail Pozdnyakov2019-04-171-4/+1
|
* [core] Use `style::LayerProperties` in render layers, buckets and layouts.Mikhail Pozdnyakov2019-04-171-10/+19
|
* [core] clang-tidy fixesKonstantin Käfer2019-04-051-1/+1
|
* [core] introduce gfx::RenderPassKonstantin Käfer2019-04-051-0/+1
|
* [core] add getResource template to gfx::*Resource classesKonstantin Käfer2019-04-051-2/+2
|
* [core] Remove RenderLinePaintPropertiesMikhail Pozdnyakov2019-04-021-4/+1
| | | | | | | This patch removes the `RenderLinePaintProperties` by making `LineFloorWidth` part of the `style::LinePaintProperties`. It normalizes paint properties evaluation for the line layer.
* [core] don't access empty texture pos optionals when buckets are out of syncKonstantin Käfer2019-03-271-2/+2
|
* [core] move ProgramMap to within the gl::Program objectKonstantin Käfer2019-03-201-3/+2
|
* [core] remove a_/u_ prefix from attribute/uniform typesKonstantin Käfer2019-03-201-2/+2
|
* [core] remove gl/context.hpp from more files, cast where necessaryKonstantin Käfer2019-03-201-1/+0
|
* Merge pull request #14126 from mapbox/gfx-refactor-4Konstantin Käfer2019-03-151-4/+6
| | | Graphics refactor #4
* [build] update Boost to 1.69 and remove RTTIKonstantin Käfer2019-03-131-1/+0
|
* [core] add texture bindings to draw call instead of Context member fnKonstantin Käfer2019-03-121-8/+10
|
* [core] add texture bindings to draw call invocationsKonstantin Käfer2019-03-121-5/+18
|
* [core] move Texture related enums to gfx namespaceKonstantin Käfer2019-03-121-2/+2
|
* [core] Transform{State}: s/angle/bearing/Bruno de Oliveira Abinader2019-03-041-1/+1
|
* [core] move CullFaceMode to gfx namespaceKonstantin Käfer2019-03-011-1/+1
|
* [core] move DepthMode to gfx namespaceKonstantin Käfer2019-03-011-1/+1
|
* [core] move draw mode and primitives to gfx namespaceKonstantin Käfer2019-03-011-1/+2
|
* [core] Layer manager is responsible for buckets and layouts creationMikhail Pozdnyakov2019-02-251-15/+0
| | | | This is a step to stop using of render layers in tile worker thread.
* [core] Reduce presence of the 'useIntegerZoom' optionMikhail Pozdnyakov2019-02-041-5/+1
| | | | | | | | The `useIntegerZoom` presence is now limited: it is removed from `PossiblyEvaluatedPropertyValue` class specializations (was never used there!) and from the `PropertyEvaluationParameters` class, so we do not have to copy `PropertyEvaluationParameters` instance at `RenderLineLayer::evaluate`.
* [core] Remove paintProperties() method from some render layersMikhail Pozdnyakov2019-01-311-19/+0
| | | | | | | PatternLayout can directly access layer's `evaluated` field. Besides, obviates accessing of moved `evaluatedProps` inside PatternLayout constructor.
* [core] Split layer type specific code in mbgl::ProgramsMikhail Pozdnyakov2019-01-111-4/+4
| | | | | | | | | | | 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).
* [core][Android][Darwin] LayerManager creates RenderLayer instancesMikhail Pozdnyakov2018-11-271-1/+1
| | | | | | | | `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`.
* [core] Add use LayerTypeInfo::Layout for the layers that require LayoutAlexander Shalamov2018-11-191-1/+2
|
* [core] Move layer specific color ramp updates behind common update() methodAlexander Shalamov2018-11-191-0/+4
|
* [core] Add face culling mode parameter to Program::drawBruno de Oliveira Abinader2018-09-131-0/+1
| | | | | | 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.
* [core] simplify dependency layout process and refactor data structuresMolly Lloyd2018-08-311-5/+5
|
* [core] Implement CrossFadedDataDrivenProperty to add support for feature ↵Molly Lloyd2018-08-311-16/+56
| | | | expressions in `*-pattern` properties
* [core] Add `line-gradient` propertyMikhail Pozdnyakov2018-08-231-2/+35
| | | | | | | | Porting of https://github.com/mapbox/mapbox-gl-js/pull/6303 See the link above for the description of the feature and its limitations). Based on patch from @lbud (Lauren Budorick).
* [core] Use hand-rolled RTTIJohn Firebaugh2018-07-241-1/+1
|
* [core] Check all bucket dynamic_castsJohn Firebaugh2018-07-241-2/+5
| | | | A mismatch can occur when a layer changes from one type to another.