summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/paint_parameters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/paint_parameters.cpp')
-rw-r--r--src/mbgl/renderer/paint_parameters.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mbgl/renderer/paint_parameters.cpp b/src/mbgl/renderer/paint_parameters.cpp
index a7f621eb61..11ce6c379c 100644
--- a/src/mbgl/renderer/paint_parameters.cpp
+++ b/src/mbgl/renderer/paint_parameters.cpp
@@ -2,12 +2,14 @@
#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_,
@@ -24,6 +26,7 @@ PaintParameters::PaintParameters(gl::Context& context_,
mapMode(updateParameters.mode),
debugOptions(updateParameters.debugOptions),
contextMode(contextMode_),
+ frameID(frameID_),
timePoint(updateParameters.timePoint),
pixelRatio(pixelRatio_),
#ifndef NDEBUG
@@ -51,6 +54,13 @@ 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);