From 2f97a2660ada44cd18f2e02b4de4eb42cfcb07b1 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Tue, 28 May 2019 15:30:14 +0300 Subject: [core] RenderTile returns textures by const reference --- src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp | 4 ++-- src/mbgl/renderer/layers/render_fill_layer.cpp | 6 +++--- src/mbgl/renderer/layers/render_line_layer.cpp | 4 ++-- src/mbgl/renderer/layers/render_symbol_layer.cpp | 8 ++++---- src/mbgl/renderer/render_tile.cpp | 10 ++++++---- src/mbgl/renderer/render_tile.hpp | 4 ++-- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp index 1a2e623dd5..88c2edc1c2 100644 --- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp @@ -179,7 +179,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters) { tile.translatedClipMatrix(evaluated.get(), evaluated.get(), parameters.state), - tile.getIconAtlasTexture()->size, + tile.getIconAtlasTexture().size, crossfade, tile.id, parameters.state, @@ -191,7 +191,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters) { patternPosA, patternPosB, FillExtrusionPatternProgram::TextureBindings{ - textures::image::Value{ tile.getIconAtlasTexture()->getResource(), gfx::TextureFilterType::Linear }, + textures::image::Value{ tile.getIconAtlasTexture().getResource(), gfx::TextureFilterType::Linear }, } ); } diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp index 64e0f0bba1..c549b338df 100644 --- a/src/mbgl/renderer/layers/render_fill_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_layer.cpp @@ -190,7 +190,7 @@ void RenderFillLayer::render(PaintParameters& parameters) { evaluated.get(), parameters.state), parameters.backend.getDefaultRenderable().getSize(), - tile.getIconAtlasTexture()->size, + tile.getIconAtlasTexture().size, crossfade, tile.id, parameters.state, @@ -232,7 +232,7 @@ void RenderFillLayer::render(PaintParameters& parameters) { *bucket.triangleIndexBuffer, bucket.triangleSegments, FillPatternProgram::TextureBindings{ - textures::image::Value{ tile.getIconAtlasTexture()->getResource(), gfx::TextureFilterType::Linear }, + textures::image::Value{ tile.getIconAtlasTexture().getResource(), gfx::TextureFilterType::Linear }, }); } if (evaluated.get() && unevaluated.get().isUndefined()) { @@ -242,7 +242,7 @@ void RenderFillLayer::render(PaintParameters& parameters) { *bucket.lineIndexBuffer, bucket.lineSegments, FillOutlinePatternProgram::TextureBindings{ - textures::image::Value{ tile.getIconAtlasTexture()->getResource(), gfx::TextureFilterType::Linear }, + textures::image::Value{ tile.getIconAtlasTexture().getResource(), gfx::TextureFilterType::Linear }, }); } } diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index 2520386df8..5b20e4667c 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -170,7 +170,7 @@ void RenderLineLayer::render(PaintParameters& parameters) { } else if (!unevaluated.get().isUndefined()) { const auto& linePatternValue = evaluated.get().constantOr(Faded>{ "", ""}); - const Size& texsize = tile.getIconAtlasTexture()->size; + const Size& texsize = tile.getIconAtlasTexture().size; optional posA = tile.getPattern(linePatternValue.from); optional posB = tile.getPattern(linePatternValue.to); @@ -187,7 +187,7 @@ void RenderLineLayer::render(PaintParameters& parameters) { posA, posB, LinePatternProgram::TextureBindings{ - textures::image::Value{ tile.getIconAtlasTexture()->getResource(), gfx::TextureFilterType::Linear }, + textures::image::Value{ tile.getIconAtlasTexture().getResource(), gfx::TextureFilterType::Linear }, }); } else if (!unevaluated.get().getValue().isUndefined()) { assert(colorRampTexture); diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp index 11469f27cc..a77f26088a 100644 --- a/src/mbgl/renderer/layers/render_symbol_layer.cpp +++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp @@ -123,14 +123,14 @@ void drawIcon(const DrawFn& draw, const bool iconScaled = layout.get().constantOr(1.0) != 1.0 || bucket.iconsNeedLinear; const bool iconTransformed = values.rotationAlignment == AlignmentType::Map || parameters.state.getPitch() != 0; - const gfx::TextureBinding textureBinding{ tile.getIconAtlasTexture()->getResource(), + const gfx::TextureBinding textureBinding{ tile.getIconAtlasTexture().getResource(), bucket.sdfIcons || parameters.state.isChanging() || iconScaled || iconTransformed ? gfx::TextureFilterType::Linear : gfx::TextureFilterType::Nearest }; - const Size& iconSize = tile.getIconAtlasTexture()->size; + const Size& iconSize = tile.getIconAtlasTexture().size; if (bucket.sdfIcons) { if (values.hasHalo) { @@ -189,7 +189,7 @@ void drawText(const DrawFn& draw, const auto& evaluated = getEvaluated(renderData.layerProperties); const auto& layout = bucket.layout; - const gfx::TextureBinding textureBinding{ tile.getGlyphAtlasTexture()->getResource(), + const gfx::TextureBinding textureBinding{ tile.getGlyphAtlasTexture().getResource(), gfx::TextureFilterType::Linear }; auto values = textPropertyValues(evaluated, layout); @@ -198,7 +198,7 @@ void drawText(const DrawFn& draw, const bool alongLine = layout.get() != SymbolPlacementType::Point && layout.get() == AlignmentType::Map; - const Size& texsize = tile.getGlyphAtlasTexture()->size; + const Size& texsize = tile.getGlyphAtlasTexture().size; if (values.hasHalo) { draw(parameters.programs.getSymbolLayerPrograms().symbolGlyph, diff --git a/src/mbgl/renderer/render_tile.cpp b/src/mbgl/renderer/render_tile.cpp index a640a96776..b8fb4b2a11 100644 --- a/src/mbgl/renderer/render_tile.cpp +++ b/src/mbgl/renderer/render_tile.cpp @@ -77,14 +77,16 @@ optional RenderTile::getPattern(const std::string& pattern) const return static_cast(tile).getPattern(pattern); } -const optional& RenderTile::getGlyphAtlasTexture() const { +const gfx::Texture& RenderTile::getGlyphAtlasTexture() const { assert(tile.kind == Tile::Kind::Geometry); - return static_cast(tile).glyphAtlasTexture; + assert(static_cast(tile).glyphAtlasTexture); + return *(static_cast(tile).glyphAtlasTexture); } -const optional& RenderTile::getIconAtlasTexture() const { +const gfx::Texture& RenderTile::getIconAtlasTexture() const { assert(tile.kind == Tile::Kind::Geometry); - return static_cast(tile).iconAtlasTexture; + assert(static_cast(tile).iconAtlasTexture); + return *(static_cast(tile).iconAtlasTexture); } std::shared_ptr RenderTile::getFeatureIndex() const { diff --git a/src/mbgl/renderer/render_tile.hpp b/src/mbgl/renderer/render_tile.hpp index aaeef88db0..9725744ace 100644 --- a/src/mbgl/renderer/render_tile.hpp +++ b/src/mbgl/renderer/render_tile.hpp @@ -57,8 +57,8 @@ public: Bucket* getBucket(const style::Layer::Impl&) const; const LayerRenderData* getLayerRenderData(const style::Layer::Impl&) const; optional getPattern(const std::string& pattern) const; - const optional& getGlyphAtlasTexture() const; - const optional& getIconAtlasTexture() const; + const gfx::Texture& getGlyphAtlasTexture() const; + const gfx::Texture& getIconAtlasTexture() const; std::shared_ptr getFeatureIndex() const; void setMask(TileMask&&); -- cgit v1.2.1