summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-05-19 11:41:22 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-05-22 16:41:10 +0300
commit84d3b5f89971c839c1a15beedf56d8b064be1d6f (patch)
treeca94bb72b196bc3640b46a473fedc0080fc2b77f
parente2ed9833c4e069fee1251753d13c9a4ef0cb798b (diff)
downloadqtlocation-mapboxgl-84d3b5f89971c839c1a15beedf56d8b064be1d6f.tar.gz
[core] Prepare render sources before render layers are initialized
-rw-r--r--src/mbgl/annotation/render_annotation_source.cpp2
-rw-r--r--src/mbgl/annotation/render_annotation_source.hpp2
-rw-r--r--src/mbgl/renderer/paint_parameters.cpp31
-rw-r--r--src/mbgl/renderer/paint_parameters.hpp16
-rw-r--r--src/mbgl/renderer/render_source.cpp2
-rw-r--r--src/mbgl/renderer/render_source.hpp11
-rw-r--r--src/mbgl/renderer/render_tile.cpp13
-rw-r--r--src/mbgl/renderer/render_tile.hpp4
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp26
-rw-r--r--src/mbgl/renderer/sources/render_custom_geometry_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_custom_geometry_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_geojson_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_geojson_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_image_source.cpp8
-rw-r--r--src/mbgl/renderer/sources/render_image_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_dem_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_dem_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_vector_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_vector_source.hpp2
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp2
-rw-r--r--src/mbgl/renderer/tile_pyramid.hpp3
23 files changed, 84 insertions, 58 deletions
diff --git a/src/mbgl/annotation/render_annotation_source.cpp b/src/mbgl/annotation/render_annotation_source.cpp
index fcf9a8d8a7..c90b73dad9 100644
--- a/src/mbgl/annotation/render_annotation_source.cpp
+++ b/src/mbgl/annotation/render_annotation_source.cpp
@@ -51,7 +51,7 @@ void RenderAnnotationSource::upload(gfx::UploadPass& uploadPass) {
tilePyramid.upload(uploadPass);
}
-void RenderAnnotationSource::prepare(PaintParameters& parameters) {
+void RenderAnnotationSource::prepare(const SourcePrepareParameters& parameters) {
tilePyramid.prepare(parameters);
}
diff --git a/src/mbgl/annotation/render_annotation_source.hpp b/src/mbgl/annotation/render_annotation_source.hpp
index 46fd9ed06f..8267fea39e 100644
--- a/src/mbgl/annotation/render_annotation_source.hpp
+++ b/src/mbgl/annotation/render_annotation_source.hpp
@@ -19,7 +19,7 @@ public:
const TileParameters&) final;
void upload(gfx::UploadPass&) final;
- void prepare(PaintParameters&) final;
+ void prepare(const SourcePrepareParameters&) final;
void finishRender(PaintParameters&) final;
std::vector<std::reference_wrapper<RenderTile>> getRenderTiles() final;
diff --git a/src/mbgl/renderer/paint_parameters.cpp b/src/mbgl/renderer/paint_parameters.cpp
index 38cdb11f9f..d8d9cb55dc 100644
--- a/src/mbgl/renderer/paint_parameters.cpp
+++ b/src/mbgl/renderer/paint_parameters.cpp
@@ -10,11 +10,27 @@
namespace mbgl {
+TransformParameters::TransformParameters(const TransformState& state_)
+ : state(state_) {
+ // Update the default matrices to the current viewport dimensions.
+ state.getProjMatrix(projMatrix);
+
+ // Also compute a projection matrix that aligns with the current pixel grid, taking into account
+ // odd viewport sizes.
+ state.getProjMatrix(alignedProjMatrix, 1, true);
+
+ // Calculate a second projection matrix with the near plane clipped to 100 so as
+ // not to waste lots of depth buffer precision on very close empty space, for layer
+ // types (fill-extrusion) that use the depth buffer to emulate real-world space.
+ state.getProjMatrix(nearClippedProjMatrix, 100);
+}
+
PaintParameters::PaintParameters(gfx::Context& context_,
float pixelRatio_,
gfx::RendererBackend& backend_,
const UpdateParameters& updateParameters,
const EvaluatedLight& evaluatedLight_,
+ const TransformParameters& transformParams_,
RenderStaticData& staticData_,
ImageManager& imageManager_,
LineAtlas& lineAtlas_)
@@ -23,6 +39,7 @@ PaintParameters::PaintParameters(gfx::Context& context_,
encoder(context.createCommandEncoder()),
state(updateParameters.transformState),
evaluatedLight(evaluatedLight_),
+ transformParams(transformParams_),
staticData(staticData_),
imageManager(imageManager_),
lineAtlas(lineAtlas_),
@@ -36,18 +53,6 @@ PaintParameters::PaintParameters(gfx::Context& context_,
programs(staticData_.programs)
#endif
{
- // Update the default matrices to the current viewport dimensions.
- state.getProjMatrix(projMatrix);
-
- // Also compute a projection matrix that aligns with the current pixel grid, taking into account
- // odd viewport sizes.
- state.getProjMatrix(alignedProjMatrix, 1, true);
-
- // Calculate a second projection matrix with the near plane clipped to 100 so as
- // not to waste lots of depth buffer precision on very close empty space, for layer
- // types (fill-extrusion) that use the depth buffer to emulate real-world space.
- state.getProjMatrix(nearClippedProjMatrix, 100);
-
pixelsToGLUnits = {{ 2.0f / state.getSize().width, -2.0f / state.getSize().height }};
if (state.getViewportMode() == ViewportMode::FlippedY) {
@@ -60,7 +65,7 @@ PaintParameters::~PaintParameters() = default;
mat4 PaintParameters::matrixForTile(const UnwrappedTileID& tileID, bool aligned) const {
mat4 matrix;
state.matrixFor(matrix, tileID);
- matrix::multiply(matrix, aligned ? alignedProjMatrix : projMatrix, matrix);
+ matrix::multiply(matrix, aligned ? transformParams.alignedProjMatrix : transformParams.projMatrix, matrix);
return matrix;
}
diff --git a/src/mbgl/renderer/paint_parameters.hpp b/src/mbgl/renderer/paint_parameters.hpp
index 245f6704d2..84106bcd50 100644
--- a/src/mbgl/renderer/paint_parameters.hpp
+++ b/src/mbgl/renderer/paint_parameters.hpp
@@ -31,6 +31,16 @@ class CommandEncoder;
class RenderPass;
} // namespace gfx
+
+class TransformParameters {
+public:
+ TransformParameters(const TransformState&);
+ mat4 projMatrix;
+ mat4 alignedProjMatrix;
+ mat4 nearClippedProjMatrix;
+ const TransformState& state;
+};
+
class PaintParameters {
public:
PaintParameters(gfx::Context&,
@@ -38,6 +48,7 @@ public:
gfx::RendererBackend&,
const UpdateParameters&,
const EvaluatedLight&,
+ const TransformParameters&,
RenderStaticData&,
ImageManager&,
LineAtlas&);
@@ -50,6 +61,7 @@ public:
const TransformState& state;
const EvaluatedLight& evaluatedLight;
+ const TransformParameters& transformParams;
RenderStaticData& staticData;
ImageManager& imageManager;
@@ -71,10 +83,6 @@ public:
mat4 matrixForTile(const UnwrappedTileID&, bool aligned = false) const;
- mat4 projMatrix;
- mat4 alignedProjMatrix;
- mat4 nearClippedProjMatrix;
-
// Stencil handling
public:
void renderTileClippingMasks(const std::vector<std::reference_wrapper<RenderTile>>&);
diff --git a/src/mbgl/renderer/render_source.cpp b/src/mbgl/renderer/render_source.cpp
index 81638605f0..d0f5689a9e 100644
--- a/src/mbgl/renderer/render_source.cpp
+++ b/src/mbgl/renderer/render_source.cpp
@@ -55,6 +55,8 @@ RenderSource::RenderSource(Immutable<style::Source::Impl> impl)
observer(&nullObserver) {
}
+RenderSource::~RenderSource() = default;
+
void RenderSource::setObserver(RenderSourceObserver* observer_) {
observer = observer_;
}
diff --git a/src/mbgl/renderer/render_source.hpp b/src/mbgl/renderer/render_source.hpp
index 2e433c01f9..cea45cfaca 100644
--- a/src/mbgl/renderer/render_source.hpp
+++ b/src/mbgl/renderer/render_source.hpp
@@ -1,5 +1,6 @@
#pragma once
+#include <mbgl/map/mode.hpp>
#include <mbgl/tile/tile_id.hpp>
#include <mbgl/tile/tile_observer.hpp>
#include <mbgl/util/mat4.hpp>
@@ -26,14 +27,22 @@ class Tile;
class RenderSourceObserver;
class TileParameters;
class CollisionIndex;
+class TransformParameters;
namespace gfx {
class UploadPass;
} // namespace gfx
+class SourcePrepareParameters {
+public:
+ const TransformParameters& transform;
+ const MapDebugOptions& debugOptions;
+};
+
class RenderSource : protected TileObserver {
public:
static std::unique_ptr<RenderSource> create(Immutable<style::Source::Impl>);
+ virtual ~RenderSource();
// Check whether this source is of the given subtype.
template <class T>
@@ -60,7 +69,7 @@ public:
const TileParameters&) = 0;
virtual void upload(gfx::UploadPass&) = 0;
- virtual void prepare(PaintParameters&) = 0;
+ virtual void prepare(const SourcePrepareParameters&) = 0;
virtual void finishRender(PaintParameters&) = 0;
// Returns a list of RenderTiles, sorted by tile id.
diff --git a/src/mbgl/renderer/render_tile.cpp b/src/mbgl/renderer/render_tile.cpp
index 828163bd6e..3a2c2de5e3 100644
--- a/src/mbgl/renderer/render_tile.cpp
+++ b/src/mbgl/renderer/render_tile.cpp
@@ -1,6 +1,8 @@
#include <mbgl/renderer/render_tile.hpp>
+
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/renderer/buckets/debug_bucket.hpp>
+#include <mbgl/renderer/render_source.hpp>
#include <mbgl/renderer/render_static_data.hpp>
#include <mbgl/programs/programs.hpp>
#include <mbgl/map/transform_state.hpp>
@@ -70,7 +72,7 @@ void RenderTile::upload(gfx::UploadPass& uploadPass) {
}
}
-void RenderTile::prepare(PaintParameters& parameters) {
+void RenderTile::prepare(const SourcePrepareParameters& parameters) {
if (parameters.debugOptions != MapDebugOptions::NoDebug &&
(!debugBucket || debugBucket->renderable != tile.isRenderable() ||
debugBucket->complete != tile.isComplete() ||
@@ -86,10 +88,11 @@ void RenderTile::prepare(PaintParameters& parameters) {
// Calculate two matrices for this tile: matrix is the standard tile matrix; nearClippedMatrix
// clips the near plane to 100 to save depth buffer precision
- parameters.state.matrixFor(matrix, id);
- parameters.state.matrixFor(nearClippedMatrix, id);
- matrix::multiply(matrix, parameters.projMatrix, matrix);
- matrix::multiply(nearClippedMatrix, parameters.nearClippedProjMatrix, nearClippedMatrix);
+ const auto& transform = parameters.transform;
+ transform.state.matrixFor(matrix, id);
+ transform.state.matrixFor(nearClippedMatrix, id);
+ matrix::multiply(matrix, transform.projMatrix, matrix);
+ matrix::multiply(nearClippedMatrix, transform.nearClippedProjMatrix, nearClippedMatrix);
}
void RenderTile::finishRender(PaintParameters& parameters) {
diff --git a/src/mbgl/renderer/render_tile.hpp b/src/mbgl/renderer/render_tile.hpp
index 559f37a090..552a093ab7 100644
--- a/src/mbgl/renderer/render_tile.hpp
+++ b/src/mbgl/renderer/render_tile.hpp
@@ -1,5 +1,6 @@
#pragma once
+#include <mbgl/map/mode.hpp>
#include <mbgl/tile/tile_id.hpp>
#include <mbgl/util/mat4.hpp>
#include <mbgl/style/types.hpp>
@@ -18,6 +19,7 @@ class Tile;
class TransformState;
class PaintParameters;
class DebugBucket;
+class SourcePrepareParameters;
class RenderTile final {
public:
@@ -46,7 +48,7 @@ public:
void setMask(TileMask&&);
void upload(gfx::UploadPass&);
- void prepare(PaintParameters&);
+ void prepare(const SourcePrepareParameters&);
void finishRender(PaintParameters&);
mat4 translateVtxMatrix(const mat4& tileMatrix,
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index c32a1589b8..10d60cbef7 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -291,6 +291,15 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
observer->onWillStartRenderingFrame();
+ TransformParameters transformParams(updateParameters.transformState);
+
+ // Update all matrices and generate data that we should upload to the GPU.
+ for (const auto& entry : renderSources) {
+ if (entry.second->isEnabled()) {
+ entry.second->prepare({transformParams, updateParameters.debugOptions});
+ }
+ }
+
// Set render tiles to the render items.
for (auto& renderItem : renderItems) {
if (!renderItem.source) {
@@ -312,13 +321,11 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
bool symbolBucketsChanged = false;
const bool placementChanged = !placement->stillRecent(updateParameters.timePoint);
std::set<std::string> usedSymbolLayers;
- mat4 projMatrix;
if (placementChanged) {
placement = std::make_unique<Placement>(
updateParameters.transformState, updateParameters.mode,
updateParameters.transitionOptions, updateParameters.crossSourceCollisions,
std::move(placement));
- updateParameters.transformState.getProjMatrix(projMatrix);
}
for (auto it = layersNeedPlacement.rbegin(); it != layersNeedPlacement.rend(); ++it) {
@@ -327,7 +334,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
if (placementChanged) {
usedSymbolLayers.insert(layer.getID());
- placement->placeLayer(layer, projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
+ placement->placeLayer(layer, transformParams.projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
}
}
@@ -357,6 +364,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
backend,
updateParameters,
renderLight.getEvaluated(),
+ transformParams,
*staticData,
*imageManager,
*lineAtlas,
@@ -364,18 +372,6 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
parameters.symbolFadeChange = placement->symbolFadeChange(updateParameters.timePoint);
- // TODO: move this pass to before the PaintParameters initialization
- // - PREPARE PASS -------------------------------------------------------------------------------
- // Runs an initialization pass for all sources.
- {
- // Update all matrices and generate data that we should upload to the GPU.
- for (const auto& entry : renderSources) {
- if (entry.second->isEnabled()) {
- entry.second->prepare(parameters);
- }
- }
- }
-
// - UPLOAD PASS -------------------------------------------------------------------------------
// Uploads all required buffers and images before we do any actual rendering.
{
diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
index 45d49ffa5b..9746d84599 100644
--- a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
+++ b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
@@ -51,7 +51,7 @@ void RenderCustomGeometrySource::upload(gfx::UploadPass& uploadPass) {
tilePyramid.upload(uploadPass);
}
-void RenderCustomGeometrySource::prepare(PaintParameters& parameters) {
+void RenderCustomGeometrySource::prepare(const SourcePrepareParameters& parameters) {
tilePyramid.prepare(parameters);
}
diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.hpp b/src/mbgl/renderer/sources/render_custom_geometry_source.hpp
index 485979bee9..aac6fe221b 100644
--- a/src/mbgl/renderer/sources/render_custom_geometry_source.hpp
+++ b/src/mbgl/renderer/sources/render_custom_geometry_source.hpp
@@ -19,7 +19,7 @@ public:
const TileParameters&) final;
void upload(gfx::UploadPass&) final;
- void prepare(PaintParameters&) final;
+ void prepare(const SourcePrepareParameters&) final;
void finishRender(PaintParameters&) final;
std::vector<std::reference_wrapper<RenderTile>> getRenderTiles() final;
diff --git a/src/mbgl/renderer/sources/render_geojson_source.cpp b/src/mbgl/renderer/sources/render_geojson_source.cpp
index 7ff371620a..c43b44934e 100644
--- a/src/mbgl/renderer/sources/render_geojson_source.cpp
+++ b/src/mbgl/renderer/sources/render_geojson_source.cpp
@@ -127,7 +127,7 @@ void RenderGeoJSONSource::upload(gfx::UploadPass& parameters) {
tilePyramid.upload(parameters);
}
-void RenderGeoJSONSource::prepare(PaintParameters& parameters) {
+void RenderGeoJSONSource::prepare(const SourcePrepareParameters& parameters) {
tilePyramid.prepare(parameters);
}
diff --git a/src/mbgl/renderer/sources/render_geojson_source.hpp b/src/mbgl/renderer/sources/render_geojson_source.hpp
index 1a2ff55427..f2b0014ac4 100644
--- a/src/mbgl/renderer/sources/render_geojson_source.hpp
+++ b/src/mbgl/renderer/sources/render_geojson_source.hpp
@@ -24,7 +24,7 @@ public:
const TileParameters&) final;
void upload(gfx::UploadPass&) final;
- void prepare(PaintParameters&) final;
+ void prepare(const SourcePrepareParameters&) final;
void finishRender(PaintParameters&) final;
std::vector<std::reference_wrapper<RenderTile>> getRenderTiles() final;
diff --git a/src/mbgl/renderer/sources/render_image_source.cpp b/src/mbgl/renderer/sources/render_image_source.cpp
index e63c9ad15c..2c6538221f 100644
--- a/src/mbgl/renderer/sources/render_image_source.cpp
+++ b/src/mbgl/renderer/sources/render_image_source.cpp
@@ -37,18 +37,18 @@ void RenderImageSource::upload(gfx::UploadPass& uploadPass) {
}
}
-void RenderImageSource::prepare(PaintParameters& parameters) {
+void RenderImageSource::prepare(const SourcePrepareParameters& parameters) {
if (!isLoaded()) {
return;
}
matrices.clear();
-
+ const auto& transformParams = parameters.transform;
for (auto& tileId : tileIds) {
mat4 matrix;
matrix::identity(matrix);
- parameters.state.matrixFor(matrix, tileId);
- matrix::multiply(matrix, parameters.alignedProjMatrix, matrix);
+ transformParams.state.matrixFor(matrix, tileId);
+ matrix::multiply(matrix, transformParams.alignedProjMatrix, matrix);
matrices.push_back(matrix);
}
}
diff --git a/src/mbgl/renderer/sources/render_image_source.hpp b/src/mbgl/renderer/sources/render_image_source.hpp
index c07fd467cb..cdc866ea5c 100644
--- a/src/mbgl/renderer/sources/render_image_source.hpp
+++ b/src/mbgl/renderer/sources/render_image_source.hpp
@@ -16,7 +16,7 @@ public:
bool isLoaded() const final;
void upload(gfx::UploadPass&) final;
- void prepare(PaintParameters&) final;
+ void prepare(const SourcePrepareParameters&) final;
void finishRender(PaintParameters&) final;
void update(Immutable<style::Source::Impl>,
diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp
index c9f17f38c4..9962e26337 100644
--- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp
@@ -130,7 +130,7 @@ void RenderRasterDEMSource::upload(gfx::UploadPass& parameters) {
tilePyramid.upload(parameters);
}
-void RenderRasterDEMSource::prepare(PaintParameters& parameters) {
+void RenderRasterDEMSource::prepare(const SourcePrepareParameters& parameters) {
algorithm::updateTileMasks(tilePyramid.getRenderTiles());
tilePyramid.prepare(parameters);
}
diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.hpp b/src/mbgl/renderer/sources/render_raster_dem_source.hpp
index 57180bb4e2..712f4fefaa 100644
--- a/src/mbgl/renderer/sources/render_raster_dem_source.hpp
+++ b/src/mbgl/renderer/sources/render_raster_dem_source.hpp
@@ -19,7 +19,7 @@ public:
const TileParameters&) final;
void upload(gfx::UploadPass&) final;
- void prepare(PaintParameters&) final;
+ void prepare(const SourcePrepareParameters&) final;
void finishRender(PaintParameters&) final;
std::vector<std::reference_wrapper<RenderTile>> getRenderTiles() final;
diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp
index 39cccd47e6..d7dec8ff17 100644
--- a/src/mbgl/renderer/sources/render_raster_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_source.cpp
@@ -61,7 +61,7 @@ void RenderRasterSource::upload(gfx::UploadPass& parameters) {
tilePyramid.upload(parameters);
}
-void RenderRasterSource::prepare(PaintParameters& parameters) {
+void RenderRasterSource::prepare(const SourcePrepareParameters& parameters) {
algorithm::updateTileMasks(tilePyramid.getRenderTiles());
tilePyramid.prepare(parameters);
}
diff --git a/src/mbgl/renderer/sources/render_raster_source.hpp b/src/mbgl/renderer/sources/render_raster_source.hpp
index e399893cb9..74f81a1397 100644
--- a/src/mbgl/renderer/sources/render_raster_source.hpp
+++ b/src/mbgl/renderer/sources/render_raster_source.hpp
@@ -19,7 +19,7 @@ public:
const TileParameters&) final;
void upload(gfx::UploadPass&) final;
- void prepare(PaintParameters&) final;
+ void prepare(const SourcePrepareParameters&) final;
void finishRender(PaintParameters&) final;
std::vector<std::reference_wrapper<RenderTile>> getRenderTiles() final;
diff --git a/src/mbgl/renderer/sources/render_vector_source.cpp b/src/mbgl/renderer/sources/render_vector_source.cpp
index 21b728e266..36fc69d988 100644
--- a/src/mbgl/renderer/sources/render_vector_source.cpp
+++ b/src/mbgl/renderer/sources/render_vector_source.cpp
@@ -61,7 +61,7 @@ void RenderVectorSource::upload(gfx::UploadPass& parameters) {
tilePyramid.upload(parameters);
}
-void RenderVectorSource::prepare(PaintParameters& parameters) {
+void RenderVectorSource::prepare(const SourcePrepareParameters& parameters) {
tilePyramid.prepare(parameters);
}
diff --git a/src/mbgl/renderer/sources/render_vector_source.hpp b/src/mbgl/renderer/sources/render_vector_source.hpp
index bea9bad20e..fd37e1e4fd 100644
--- a/src/mbgl/renderer/sources/render_vector_source.hpp
+++ b/src/mbgl/renderer/sources/render_vector_source.hpp
@@ -19,7 +19,7 @@ public:
const TileParameters&) final;
void upload(gfx::UploadPass&) final;
- void prepare(PaintParameters&) final;
+ void prepare(const SourcePrepareParameters&) final;
void finishRender(PaintParameters&) final;
std::vector<std::reference_wrapper<RenderTile>> getRenderTiles() final;
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index 36ac0162e6..51999c0aac 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -46,7 +46,7 @@ void TilePyramid::upload(gfx::UploadPass& parameters) {
}
}
-void TilePyramid::prepare(PaintParameters& parameters) {
+void TilePyramid::prepare(const SourcePrepareParameters& parameters) {
for (auto& tile : renderTiles) {
tile.prepare(parameters);
}
diff --git a/src/mbgl/renderer/tile_pyramid.hpp b/src/mbgl/renderer/tile_pyramid.hpp
index c912a669ff..5dbdae5d38 100644
--- a/src/mbgl/renderer/tile_pyramid.hpp
+++ b/src/mbgl/renderer/tile_pyramid.hpp
@@ -25,6 +25,7 @@ class RenderLayer;
class RenderedQueryOptions;
class SourceQueryOptions;
class TileParameters;
+class SourcePrepareParameters;
class TilePyramid {
public:
@@ -44,7 +45,7 @@ public:
std::function<std::unique_ptr<Tile> (const OverscaledTileID&)> createTile);
void upload(gfx::UploadPass&);
- void prepare(PaintParameters&);
+ void prepare(const SourcePrepareParameters&);
void finishRender(PaintParameters&);
std::vector<std::reference_wrapper<RenderTile>> getRenderTiles();