From 63dd17e2bbdb2c956789865c1d517305f860a175 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Mon, 1 Jul 2019 21:44:15 +0300 Subject: [core] Introduce TileRenderData Remove rendering functionality from Tile implementations. --- src/mbgl/renderer/render_tile.cpp | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) (limited to 'src/mbgl/renderer/render_tile.cpp') diff --git a/src/mbgl/renderer/render_tile.cpp b/src/mbgl/renderer/render_tile.cpp index 74fc945ac1..a0230a6511 100644 --- a/src/mbgl/renderer/render_tile.cpp +++ b/src/mbgl/renderer/render_tile.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -15,7 +16,8 @@ namespace mbgl { using namespace style; -RenderTile::RenderTile(UnwrappedTileID id_, Tile& tile_) : id(std::move(id_)), tile(tile_) { +RenderTile::RenderTile(UnwrappedTileID id_, Tile& tile_) + : id(std::move(id_)), tile(tile_) { } RenderTile::~RenderTile() = default; @@ -65,32 +67,33 @@ const OverscaledTileID& RenderTile::getOverscaledTileID() const { return tile.id bool RenderTile::holdForFade() const { return tile.holdForFade(); } Bucket* RenderTile::getBucket(const style::Layer::Impl& impl) const { - return tile.getBucket(impl); + assert(renderData); + return renderData->getBucket(impl); } const LayerRenderData* RenderTile::getLayerRenderData(const style::Layer::Impl& impl) const { - return tile.getLayerRenderData(impl); + assert(renderData); + return renderData->getLayerRenderData(impl); } optional RenderTile::getPattern(const std::string& pattern) const { - assert(tile.kind == Tile::Kind::Geometry); - return static_cast(tile).getPattern(pattern); + assert(renderData); + return renderData->getPattern(pattern); } const gfx::Texture& RenderTile::getGlyphAtlasTexture() const { - assert(tile.kind == Tile::Kind::Geometry); - assert(static_cast(tile).glyphAtlasTexture); - return *(static_cast(tile).glyphAtlasTexture); + assert(renderData); + return renderData->getGlyphAtlasTexture(); } const gfx::Texture& RenderTile::getIconAtlasTexture() const { - assert(tile.kind == Tile::Kind::Geometry); - assert(static_cast(tile).iconAtlasTexture); - return *(static_cast(tile).iconAtlasTexture); + assert(renderData); + return renderData->getIconAtlasTexture(); } void RenderTile::upload(gfx::UploadPass& uploadPass) { - tile.upload(uploadPass); + assert(renderData); + renderData->upload(uploadPass); if (debugBucket) { debugBucket->upload(uploadPass); @@ -98,6 +101,10 @@ void RenderTile::upload(gfx::UploadPass& uploadPass) { } void RenderTile::prepare(const SourcePrepareParameters& parameters) { + renderData = tile.createRenderData(); + assert(renderData); + needsRendering = tile.usedByRenderedLayers; + if (parameters.debugOptions != MapDebugOptions::NoDebug && (!debugBucket || debugBucket->renderable != tile.isRenderable() || debugBucket->complete != tile.isComplete() || @@ -121,7 +128,7 @@ void RenderTile::prepare(const SourcePrepareParameters& parameters) { } void RenderTile::finishRender(PaintParameters& parameters) { - if (!tile.usedByRenderedLayers || parameters.debugOptions == MapDebugOptions::NoDebug) + if (!needsRendering || parameters.debugOptions == MapDebugOptions::NoDebug) return; static const style::Properties<>::PossiblyEvaluated properties {}; -- cgit v1.2.1