[core] Remove ImageManager from upload parameters

This commit is contained in:
Mikhail Pozdnyakov
2019-05-27 11:52:54 +03:00
parent 892699a39a
commit c0e5632001
7 changed files with 16 additions and 21 deletions

View File

@@ -38,9 +38,6 @@ void RenderBackgroundLayer::evaluate(const PropertyEvaluationParameters &paramet
passes = properties->evaluated.get<style::BackgroundOpacity>() > 0 ? RenderPass::Translucent
: RenderPass::None;
if (passes != RenderPass::None && !properties->evaluated.get<style::BackgroundPattern>().to.empty()) {
passes |= RenderPass::Upload;
}
evaluatedProperties = std::move(properties);
}
@@ -52,15 +49,6 @@ bool RenderBackgroundLayer::hasCrossfade() const {
return getCrossfade<BackgroundLayerProperties>(evaluatedProperties).t != 1;
}
void RenderBackgroundLayer::upload(gfx::UploadPass&, UploadParameters& parameters) {
const auto& evaluated = static_cast<const BackgroundLayerProperties&>(*evaluatedProperties).evaluated;
if (!evaluated.get<BackgroundPattern>().to.empty()) {
// Ensures that the texture gets added and uploaded to the atlas.
parameters.imageManager.getPattern(evaluated.get<BackgroundPattern>().from);
parameters.imageManager.getPattern(evaluated.get<BackgroundPattern>().to);
}
}
void RenderBackgroundLayer::render(PaintParameters& parameters) {
// Note that for bottommost layers without a pattern, the background color is drawn with
// glClear rather than this method.
@@ -152,4 +140,13 @@ optional<Color> RenderBackgroundLayer::getSolidBackground() const {
return { evaluated.get<BackgroundColor>() * evaluated.get<BackgroundOpacity>() };
}
void RenderBackgroundLayer::prepare(const LayerPrepareParameters& params) {
const auto& evaluated = static_cast<const BackgroundLayerProperties&>(*evaluatedProperties).evaluated;
if (!evaluated.get<BackgroundPattern>().to.empty()) {
// Ensures that the texture gets added and uploaded to the atlas.
params.imageManager.getPattern(evaluated.get<BackgroundPattern>().from);
params.imageManager.getPattern(evaluated.get<BackgroundPattern>().to);
}
}
} // namespace mbgl

View File

@@ -17,8 +17,8 @@ private:
bool hasTransition() const override;
bool hasCrossfade() const override;
optional<Color> getSolidBackground() const override;
void upload(gfx::UploadPass&, UploadParameters&) override;
void render(PaintParameters&) override;
void prepare(const LayerPrepareParameters&) override;
// Paint properties
style::BackgroundPaintProperties::Unevaluated unevaluated;

View File

@@ -50,6 +50,9 @@ void RenderCustomLayer::markContextDestroyed() {
contextDestroyed = true;
}
void RenderCustomLayer::prepare(const LayerPrepareParameters&) {
}
void RenderCustomLayer::render(PaintParameters& paintParameters) {
if (host != impl(baseImpl).host) {
//If the context changed, deinitialize the previous one before initializing the new one.

View File

@@ -16,6 +16,7 @@ private:
bool hasTransition() const override;
bool hasCrossfade() const override;
void markContextDestroyed() override;
void prepare(const LayerPrepareParameters&) override;
void render(PaintParameters&) override;

View File

@@ -34,6 +34,7 @@ public:
class LayerPrepareParameters {
public:
RenderSource* source;
ImageManager& imageManager;
const TransformState& state;
};

View File

@@ -301,11 +301,8 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
}
for (auto& renderItem : renderItems) {
if (!renderItem.source) {
continue;
}
RenderLayer& renderLayer = renderItem.layer;
renderLayer.prepare({renderItem.source, updateParameters.transformState});
renderLayer.prepare({renderItem.source, *imageManager, updateParameters.transformState});
if (renderLayer.needsPlacement()) {
layersNeedPlacement.emplace_back(renderLayer);
}
@@ -385,7 +382,6 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
UploadParameters uploadParameters{
updateParameters.transformState,
*imageManager,
*lineAtlas,
};

View File

@@ -11,15 +11,12 @@ class LineAtlas;
class UploadParameters {
public:
UploadParameters(const TransformState& state_,
ImageManager& imageManager_,
LineAtlas& lineAtlas_)
: state(state_),
imageManager(imageManager_),
lineAtlas(lineAtlas_) {
}
const TransformState& state;
ImageManager& imageManager;
LineAtlas& lineAtlas;
};