From cbff0a972a9e0a4210c94de1c36f0dce278d01e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Fri, 13 Oct 2017 17:53:30 -0700 Subject: [core] don't generate clip IDs for buckets/layers that don't need to be clipped --- src/mbgl/renderer/render_tile.hpp | 1 + src/mbgl/renderer/renderer_impl.cpp | 7 +++++++ 2 files changed, 8 insertions(+) (limited to 'src/mbgl/renderer') diff --git a/src/mbgl/renderer/render_tile.hpp b/src/mbgl/renderer/render_tile.hpp index b498972f5c..3db02393d2 100644 --- a/src/mbgl/renderer/render_tile.hpp +++ b/src/mbgl/renderer/render_tile.hpp @@ -28,6 +28,7 @@ public: mat4 matrix; mat4 nearClippedMatrix; bool used = false; + bool needsClipping = false; mat4 translatedMatrix(const std::array& translate, style::TranslateAnchorType anchor, diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 1a828b80a3..6a8c18792e 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -370,6 +370,13 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { if (bucket) { sortedTilesForInsertion.emplace_back(tile); tile.used = true; + + // We only need clipping when we're _not_ drawing a symbol layer. The only exception + // for symbol layers is when we're rendering still images. See render_symbol_layer.cpp + // for the exception we make there. + if (!symbolLayer || parameters.mapMode == MapMode::Still) { + tile.needsClipping = true; + } } } layer->setRenderTiles(std::move(sortedTilesForInsertion)); -- cgit v1.2.1