From 2c3390b24412e7c1136395d4e477e8b3c6720436 Mon Sep 17 00:00:00 2001 From: mwilsnd Date: Mon, 31 Jul 2023 13:43:00 -0500 Subject: [PATCH] Drawable Renderer (#1570), Simplify drawable removal bool conditions --- src/mbgl/renderer/layers/render_circle_layer.cpp | 2 +- src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp | 7 +++++-- src/mbgl/renderer/layers/render_fill_layer.cpp | 6 +++++- src/mbgl/renderer/layers/render_heatmap_layer.cpp | 2 +- src/mbgl/renderer/layers/render_hillshade_layer.cpp | 2 +- src/mbgl/renderer/layers/render_line_layer.cpp | 7 +++++-- src/mbgl/renderer/layers/render_raster_layer.cpp | 2 +- 7 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp index 725321f80..4479a8f43 100644 --- a/src/mbgl/renderer/layers/render_circle_layer.cpp +++ b/src/mbgl/renderer/layers/render_circle_layer.cpp @@ -320,7 +320,7 @@ void RenderCircleLayer::update(gfx::ShaderRegistry& shaders, } stats.drawablesRemoved += tileLayerGroup->removeDrawablesIf( - [&](gfx::Drawable& drawable) { return !(!drawable.getTileID() || hasRenderTile(*drawable.getTileID())); }); + [&](gfx::Drawable& drawable) { return drawable.getTileID() && !hasRenderTile(*drawable.getTileID()); }); const auto& evaluated = static_cast(*evaluatedProperties).evaluated; diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp index d9e658959..5f655554e 100644 --- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp @@ -310,8 +310,11 @@ void RenderFillExtrusionLayer::update(gfx::ShaderRegistry& shaders, stats.drawablesRemoved += tileLayerGroup->removeDrawablesIf([&](gfx::Drawable& drawable) { // If the render pass has changed or the tile has dropped out of the cover set, remove it. - return !(drawable.getRenderPass() == drawPass && - (!drawable.getTileID() || hasRenderTile(*drawable.getTileID()))); + const auto& tileID = drawable.getTileID(); + if (drawable.getRenderPass() != passes || (tileID && !hasRenderTile(*tileID))) { + return true; + } + return false; }); const auto zoom = static_cast(state.getZoom()); diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp index dbb0c6d96..5089f0619 100644 --- a/src/mbgl/renderer/layers/render_fill_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_layer.cpp @@ -364,7 +364,11 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders, stats.drawablesRemoved += tileLayerGroup->removeDrawablesIf([&](gfx::Drawable& drawable) { // If the render pass has changed or the tile has dropped out of the cover set, remove it. - return !(drawable.getRenderPass() == renderPass && drawable.getTileID() && hasRenderTile(*drawable.getTileID())); + const auto& tileID = drawable.getTileID(); + if (drawable.getRenderPass() != passes || (tileID && !hasRenderTile(*tileID))) { + return true; + } + return false; }); for (const RenderTile& tile : *renderTiles) { diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp index 6e3eb9a49..92207547e 100644 --- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp +++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp @@ -339,7 +339,7 @@ void RenderHeatmapLayer::update(gfx::ShaderRegistry& shaders, } stats.drawablesRemoved += tileLayerGroup->removeDrawablesIf( - [&](gfx::Drawable& drawable) { return !(!drawable.getTileID() || hasRenderTile(*drawable.getTileID())); }); + [&](gfx::Drawable& drawable) { return drawable.getTileID() && !hasRenderTile(*drawable.getTileID()); }); const auto& evaluated = static_cast(*evaluatedProperties).evaluated; diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp index 012793241..cd5e44d67 100644 --- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp +++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp @@ -325,7 +325,7 @@ void RenderHillshadeLayer::update(gfx::ShaderRegistry& shaders, } stats.drawablesRemoved += tileLayerGroup->removeDrawablesIf( - [&](gfx::Drawable& drawable) { return !(!drawable.getTileID() || hasRenderTile(*drawable.getTileID())); }); + [&](gfx::Drawable& drawable) { return drawable.getTileID() && !hasRenderTile(*drawable.getTileID()); }); if (!staticDataSharedVertices) { staticDataSharedVertices = std::make_shared(RenderStaticData::rasterVertices()); diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index c19e11413..c9cfb04ba 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -457,8 +457,11 @@ void RenderLineLayer::update(gfx::ShaderRegistry& shaders, stats.drawablesRemoved += tileLayerGroup->removeDrawablesIf([&](gfx::Drawable& drawable) { // If the render pass has changed or the tile has dropped out of the cover set, remove it. - return !(drawable.getRenderPass() == renderPass && - (!drawable.getTileID() || hasRenderTile(*drawable.getTileID()))); + const auto& tileID = drawable.getTileID(); + if (drawable.getRenderPass() != passes || (tileID && !hasRenderTile(*tileID))) { + return true; + } + return false; }); auto createLineBuilder = [&](const std::string& name, diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp index 031fa7272..b6c8fe7b7 100644 --- a/src/mbgl/renderer/layers/render_raster_layer.cpp +++ b/src/mbgl/renderer/layers/render_raster_layer.cpp @@ -506,7 +506,7 @@ void RenderRasterLayer::update(gfx::ShaderRegistry& shaders, if (layerGroup) { stats.drawablesRemoved += layerGroup->removeDrawablesIf([&](gfx::Drawable& drawable) { // Has this tile dropped out of the cover set? - return !(!drawable.getTileID() || hasRenderTile(*drawable.getTileID())); + return drawable.getTileID() && !hasRenderTile(*drawable.getTileID()); }); } else { // Set up a tile layer group