diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2018-07-23 10:48:15 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2018-07-23 10:48:15 -0700 |
commit | f86d85aef2282ac2f06262f3cd9aa4c2047f4427 (patch) | |
tree | 83fca66d798296409e4f841566cb2e6f6de419c9 | |
parent | f144c8dd61c3804f1dc648f5bc10a36f0f2be2e5 (diff) | |
download | qtlocation-mapboxgl-f86d85aef2282ac2f06262f3cd9aa4c2047f4427.tar.gz |
Revert "[core] remove unused generated OpenGL programs after some time"
ced0f4070e8fbcdc79bff67547a02d4eed347298
-rw-r--r-- | src/mbgl/programs/program.hpp | 29 | ||||
-rw-r--r-- | src/mbgl/programs/programs.hpp | 18 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_circle_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_fill_layer.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_heatmap_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_symbol_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/paint_parameters.cpp | 10 | ||||
-rw-r--r-- | src/mbgl/renderer/paint_parameters.hpp | 3 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer_impl.hpp | 1 |
12 files changed, 15 insertions, 63 deletions
diff --git a/src/mbgl/programs/program.hpp b/src/mbgl/programs/program.hpp index aadbceeb06..4d5de05337 100644 --- a/src/mbgl/programs/program.hpp +++ b/src/mbgl/programs/program.hpp @@ -113,37 +113,22 @@ public: parameters(std::move(parameters_)) { } - Program& get(size_t frameID, const typename PaintProperties::PossiblyEvaluated& currentProperties) { + Program& get(const typename PaintProperties::PossiblyEvaluated& currentProperties) { Bitset bits = PaintPropertyBinders::constants(currentProperties); auto it = programs.find(bits); if (it != programs.end()) { - std::get<size_t>(it->second) = frameID; - return std::get<Program>(it->second); - } - return std::get<Program>( - programs.emplace(std::piecewise_construct, - std::forward_as_tuple(bits), - std::forward_as_tuple<Program, size_t>( - { context, parameters.withAdditionalDefines(PaintPropertyBinders::defines(currentProperties)) }, - std::move(frameID) - )).first->second); - } - - // We are periodically removing old Program objects from our cache to prevent them from piling up. - void evictNotUsedSince(const size_t frameID) { - for (auto it = programs.begin(); it != programs.end();) { - if (std::get<size_t>(it->second) < frameID) { - programs.erase(it++); - } else { - ++it; - } + return it->second; } + return programs.emplace(std::piecewise_construct, + std::forward_as_tuple(bits), + std::forward_as_tuple(context, + parameters.withAdditionalDefines(PaintPropertyBinders::defines(currentProperties)))).first->second; } private: gl::Context& context; ProgramParameters parameters; - std::unordered_map<Bitset, std::tuple<Program, size_t>> programs; + std::unordered_map<Bitset, Program> programs; }; } // namespace mbgl diff --git a/src/mbgl/programs/programs.hpp b/src/mbgl/programs/programs.hpp index e45f9e919b..b703323d9c 100644 --- a/src/mbgl/programs/programs.hpp +++ b/src/mbgl/programs/programs.hpp @@ -49,24 +49,6 @@ public: clippingMask(context, programParameters) { } - // We are periodically removing old Program objects from our cache to prevent them from piling up. - void evictNotUsedSince(const size_t frameID) { - circle.evictNotUsedSince(frameID); - fill.evictNotUsedSince(frameID); - fillExtrusion.evictNotUsedSince(frameID); - fillExtrusionPattern.evictNotUsedSince(frameID); - fillPattern.evictNotUsedSince(frameID); - fillOutline.evictNotUsedSince(frameID); - fillOutlinePattern.evictNotUsedSince(frameID); - heatmap.evictNotUsedSince(frameID); - line.evictNotUsedSince(frameID); - lineSDF.evictNotUsedSince(frameID); - linePattern.evictNotUsedSince(frameID); - symbolIcon.evictNotUsedSince(frameID); - symbolIconSDF.evictNotUsedSince(frameID); - symbolGlyph.evictNotUsedSince(frameID); - } - BackgroundProgram background; BackgroundPatternProgram backgroundPattern; ProgramMap<CircleProgram> circle; diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp index e971fbeb49..4c96137143 100644 --- a/src/mbgl/renderer/layers/render_circle_layer.cpp +++ b/src/mbgl/renderer/layers/render_circle_layer.cpp @@ -61,7 +61,7 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) { const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID()); - auto& programInstance = parameters.programs.circle.get(parameters.frameID, evaluated); + auto& programInstance = parameters.programs.circle.get(evaluated); const auto allUniformValues = programInstance.computeAllUniformValues( CircleProgram::UniformValues { diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp index 138f0cb308..00ab05858f 100644 --- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp @@ -105,7 +105,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource* *reinterpret_cast<FillExtrusionBucket*>(tile.tile.getBucket(*baseImpl)); draw( - parameters.programs.fillExtrusion.get(parameters.frameID, evaluated), + parameters.programs.fillExtrusion.get(evaluated), bucket, FillExtrusionUniforms::values( tile.translatedClipMatrix(evaluated.get<FillExtrusionTranslate>(), @@ -134,7 +134,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource* *reinterpret_cast<FillExtrusionBucket*>(tile.tile.getBucket(*baseImpl)); draw( - parameters.programs.fillExtrusionPattern.get(parameters.frameID, evaluated), + parameters.programs.fillExtrusionPattern.get(evaluated), bucket, FillExtrusionPatternUniforms::values( tile.translatedClipMatrix(evaluated.get<FillExtrusionTranslate>(), diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp index d48e1fd95e..2607ebc170 100644 --- a/src/mbgl/renderer/layers/render_fill_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_layer.cpp @@ -69,7 +69,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) { const auto& depthMode, const auto& indexBuffer, const auto& segments) { - auto& programInstance = program.get(parameters.frameID, evaluated); + auto& programInstance = program.get(evaluated); const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID()); @@ -154,7 +154,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) { const auto& depthMode, const auto& indexBuffer, const auto& segments) { - auto& programInstance = program.get(parameters.frameID, evaluated); + auto& programInstance = program.get(evaluated); const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID()); diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp index 60282a17b2..86884b01a4 100644 --- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp +++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp @@ -94,7 +94,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) { const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID()); - auto& programInstance = parameters.programs.heatmap.get(parameters.frameID, evaluated); + auto& programInstance = parameters.programs.heatmap.get(evaluated); const auto allUniformValues = programInstance.computeAllUniformValues( HeatmapProgram::UniformValues { diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index f817277f46..e7fe4d34b2 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -62,7 +62,7 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) { LineBucket& bucket = *reinterpret_cast<LineBucket*>(tile.tile.getBucket(*baseImpl)); auto draw = [&] (auto& program, auto&& uniformValues) { - auto& programInstance = program.get(parameters.frameID, evaluated); + auto& programInstance = program.get(evaluated); const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID()); diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp index 6c6e12deba..e48c0e2f92 100644 --- a/src/mbgl/renderer/layers/render_symbol_layer.cpp +++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp @@ -88,7 +88,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) { const auto& binders, const auto& paintProperties) { - auto& programInstance = program.get(parameters.frameID, paintProperties); + auto& programInstance = program.get(paintProperties); const auto allUniformValues = programInstance.computeAllUniformValues( std::move(uniformValues), diff --git a/src/mbgl/renderer/paint_parameters.cpp b/src/mbgl/renderer/paint_parameters.cpp index 11ce6c379c..a7f621eb61 100644 --- a/src/mbgl/renderer/paint_parameters.cpp +++ b/src/mbgl/renderer/paint_parameters.cpp @@ -2,14 +2,12 @@ #include <mbgl/renderer/update_parameters.hpp> #include <mbgl/renderer/render_static_data.hpp> #include <mbgl/map/transform_state.hpp> -#include <mbgl/util/chrono.hpp> namespace mbgl { PaintParameters::PaintParameters(gl::Context& context_, float pixelRatio_, GLContextMode contextMode_, - const size_t frameID_, RendererBackend& backend_, const UpdateParameters& updateParameters, const EvaluatedLight& evaluatedLight_, @@ -26,7 +24,6 @@ PaintParameters::PaintParameters(gl::Context& context_, mapMode(updateParameters.mode), debugOptions(updateParameters.debugOptions), contextMode(contextMode_), - frameID(frameID_), timePoint(updateParameters.timePoint), pixelRatio(pixelRatio_), #ifndef NDEBUG @@ -54,13 +51,6 @@ PaintParameters::PaintParameters(gl::Context& context_, } } -PaintParameters::~PaintParameters() { - const size_t retention = mapMode == MapMode::Continuous ? 100 : 20; - if (frameID >= retention) { - programs.evictNotUsedSince(frameID - retention); - } -} - mat4 PaintParameters::matrixForTile(const UnwrappedTileID& tileID, bool aligned) const { mat4 matrix; state.matrixFor(matrix, tileID); diff --git a/src/mbgl/renderer/paint_parameters.hpp b/src/mbgl/renderer/paint_parameters.hpp index 8846bd92b6..41f46ae34e 100644 --- a/src/mbgl/renderer/paint_parameters.hpp +++ b/src/mbgl/renderer/paint_parameters.hpp @@ -28,14 +28,12 @@ public: PaintParameters(gl::Context&, float pixelRatio, GLContextMode, - size_t frameID, RendererBackend&, const UpdateParameters&, const EvaluatedLight&, RenderStaticData&, ImageManager&, LineAtlas&); - ~PaintParameters(); gl::Context& context; RendererBackend& backend; @@ -51,7 +49,6 @@ public: MapMode mapMode; MapDebugOptions debugOptions; GLContextMode contextMode; - const size_t frameID; TimePoint timePoint; float pixelRatio; diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 63d0877eb0..7b25b37cf2 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -256,7 +256,6 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { backend.getContext(), pixelRatio, contextMode, - frameCount++, backend, updateParameters, renderLight.getEvaluated(), diff --git a/src/mbgl/renderer/renderer_impl.hpp b/src/mbgl/renderer/renderer_impl.hpp index 8d205d43ae..4675ac79ea 100644 --- a/src/mbgl/renderer/renderer_impl.hpp +++ b/src/mbgl/renderer/renderer_impl.hpp @@ -98,7 +98,6 @@ private: RenderState renderState = RenderState::Never; ZoomHistory zoomHistory; TransformState transformState; - size_t frameCount = 0; std::unique_ptr<GlyphManager> glyphManager; std::unique_ptr<ImageManager> imageManager; |