diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-06-12 12:29:28 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-06-25 12:53:52 +0300 |
commit | 23d8ae5e738741c2c31e82e9b33a8c05f21ea3d6 (patch) | |
tree | 8466fd1540d3c48ce400d4ce7df25b6a9e58ca32 /src/mbgl/renderer/layers | |
parent | 290a9fcad57c92a01e2a401df07fea3d7dfacf08 (diff) | |
download | qtlocation-mapboxgl-23d8ae5e738741c2c31e82e9b33a8c05f21ea3d6.tar.gz |
[core] Simplify RenderLayer::upload()
Now `RenderLayer::upload()` accepts only `uploadPass`, similar to other uploadable objects.
Few simplifications were made in the `LineLayer` prepare stage.
Diffstat (limited to 'src/mbgl/renderer/layers')
-rw-r--r-- | src/mbgl/renderer/layers/render_heatmap_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_heatmap_layer.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.cpp | 39 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.hpp | 3 |
4 files changed, 20 insertions, 26 deletions
diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp index ba6e6b7a26..e6dddf501b 100644 --- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp +++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp @@ -55,7 +55,7 @@ bool RenderHeatmapLayer::hasCrossfade() const { return false; } -void RenderHeatmapLayer::upload(gfx::UploadPass& uploadPass, UploadParameters&) { +void RenderHeatmapLayer::upload(gfx::UploadPass& uploadPass) { if (!colorRampTexture) { colorRampTexture = uploadPass.createTexture(colorRamp, gfx::TextureChannelDataType::UnsignedByte); diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.hpp b/src/mbgl/renderer/layers/render_heatmap_layer.hpp index f331ef8435..27e27adb28 100644 --- a/src/mbgl/renderer/layers/render_heatmap_layer.hpp +++ b/src/mbgl/renderer/layers/render_heatmap_layer.hpp @@ -19,7 +19,7 @@ private: void evaluate(const PropertyEvaluationParameters&) override; bool hasTransition() const override; bool hasCrossfade() const override; - void upload(gfx::UploadPass&, UploadParameters&) override; + void upload(gfx::UploadPass&) override; void render(PaintParameters&) override; bool queryIntersectsFeature( diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index 5b20e4667c..2fd48045e9 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -59,34 +59,27 @@ bool RenderLineLayer::hasCrossfade() const { return getCrossfade<LineLayerProperties>(evaluatedProperties).t != 1; } -void RenderLineLayer::upload(gfx::UploadPass& uploadPass, UploadParameters& uploadParameters) { +void RenderLineLayer::prepare(const LayerPrepareParameters& params) { + RenderLayer::prepare(params); for (const RenderTile& tile : renderTiles) { const LayerRenderData* renderData = tile.getLayerRenderData(*baseImpl); - if (!renderData) { - continue; - } - auto& bucket = static_cast<LineBucket&>(*renderData->bucket); - const auto& evaluated = getEvaluated<LineLayerProperties>(renderData->layerProperties); - - if (!evaluated.get<LineDasharray>().from.empty()) { - const LinePatternCap cap = bucket.layout.get<LineCap>() == LineCapType::Round - ? LinePatternCap::Round : LinePatternCap::Square; - // Ensures that the dash data gets added and uploaded to the atlas. - uploadParameters.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().from, cap); - uploadParameters.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().to, cap); + if (!renderData) continue; - } else if (!unevaluated.get<LinePattern>().isUndefined()) { - const auto& linePatternValue = evaluated.get<LinePattern>().constantOr(Faded<std::basic_string<char>>{ "", ""}); + const auto& evaluated = getEvaluated<LineLayerProperties>(renderData->layerProperties); + if (evaluated.get<LineDasharray>().from.empty()) continue; - // Ensures that the pattern gets added and uplodated to the atlas. - tile.getPattern(linePatternValue.from); - tile.getPattern(linePatternValue.to); + auto& bucket = static_cast<LineBucket&>(*renderData->bucket); + const LinePatternCap cap = bucket.layout.get<LineCap>() == LineCapType::Round + ? LinePatternCap::Round : LinePatternCap::Square; + // Ensures that the dash data gets added to the atlas. + params.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().from, cap); + params.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().to, cap); + } +} - } else if (!unevaluated.get<LineGradient>().getValue().isUndefined()) { - if (!colorRampTexture) { - colorRampTexture = uploadPass.createTexture(colorRamp); - } - } +void RenderLineLayer::upload(gfx::UploadPass& uploadPass) { + if (!unevaluated.get<LineGradient>().getValue().isUndefined() && !colorRampTexture) { + colorRampTexture = uploadPass.createTexture(colorRamp); } } diff --git a/src/mbgl/renderer/layers/render_line_layer.hpp b/src/mbgl/renderer/layers/render_line_layer.hpp index f57686e1c8..4454d215d9 100644 --- a/src/mbgl/renderer/layers/render_line_layer.hpp +++ b/src/mbgl/renderer/layers/render_line_layer.hpp @@ -20,7 +20,8 @@ private: void evaluate(const PropertyEvaluationParameters&) override; bool hasTransition() const override; bool hasCrossfade() const override; - void upload(gfx::UploadPass&, UploadParameters&) override; + void prepare(const LayerPrepareParameters&) override; + void upload(gfx::UploadPass&) override; void render(PaintParameters&) override; bool queryIntersectsFeature( |