summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2018-07-23 10:48:15 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2018-07-23 10:48:15 -0700
commitf86d85aef2282ac2f06262f3cd9aa4c2047f4427 (patch)
tree83fca66d798296409e4f841566cb2e6f6de419c9
parentf144c8dd61c3804f1dc648f5bc10a36f0f2be2e5 (diff)
downloadqtlocation-mapboxgl-f86d85aef2282ac2f06262f3cd9aa4c2047f4427.tar.gz
Revert "[core] remove unused generated OpenGL programs after some time"
ced0f4070e8fbcdc79bff67547a02d4eed347298
-rw-r--r--src/mbgl/programs/program.hpp29
-rw-r--r--src/mbgl/programs/programs.hpp18
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp4
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.cpp4
-rw-r--r--src/mbgl/renderer/layers/render_heatmap_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp2
-rw-r--r--src/mbgl/renderer/paint_parameters.cpp10
-rw-r--r--src/mbgl/renderer/paint_parameters.hpp3
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp1
-rw-r--r--src/mbgl/renderer/renderer_impl.hpp1
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;