diff options
Diffstat (limited to 'src/mbgl/renderer/render_layer.cpp')
-rw-r--r-- | src/mbgl/renderer/render_layer.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/mbgl/renderer/render_layer.cpp b/src/mbgl/renderer/render_layer.cpp index b92b28998c..f15dc7e6f4 100644 --- a/src/mbgl/renderer/render_layer.cpp +++ b/src/mbgl/renderer/render_layer.cpp @@ -48,7 +48,7 @@ bool RenderLayer::supportsZoom(float zoom) const { void RenderLayer::prepare(const LayerPrepareParameters& params) { assert(params.source); renderTiles = params.source->getRenderTiles(); - assert(renderTiles); + addRenderPassesFromTiles(); } optional<Color> RenderLayer::getSolidBackground() const { @@ -86,5 +86,21 @@ void RenderLayer::checkRenderability(const PaintParameters& parameters, } } +void RenderLayer::addRenderPassesFromTiles() { + assert(renderTiles); + for (const RenderTile& tile : *renderTiles) { + if (const LayerRenderData* renderData = tile.getLayerRenderData(*baseImpl)) { + passes |= RenderPass(renderData->layerProperties->renderPasses); + } + } +} + +const LayerRenderData* RenderLayer::getRenderDataForPass(const RenderTile& tile, RenderPass pass) const { + if (const LayerRenderData* renderData = tile.getLayerRenderData(*baseImpl)) { + return bool(RenderPass(renderData->layerProperties->renderPasses) & pass) ? renderData : nullptr; + } + return nullptr; +} + } //namespace mbgl |