[core] Inline RenderItem and RenderData

This commit is contained in:
John Firebaugh
2017-08-12 13:06:28 -07:00
parent 47ac22b6ac
commit ad70cd30ef
3 changed files with 18 additions and 50 deletions

View File

@@ -183,7 +183,6 @@ set(MBGL_CORE_FILES
src/mbgl/renderer/possibly_evaluated_property_value.hpp
src/mbgl/renderer/property_evaluation_parameters.hpp
src/mbgl/renderer/property_evaluator.hpp
src/mbgl/renderer/render_item.hpp
src/mbgl/renderer/render_layer.cpp
src/mbgl/renderer/render_layer.hpp
src/mbgl/renderer/render_light.cpp

View File

@@ -1,36 +0,0 @@
#pragma once
#include <mbgl/util/color.hpp>
#include <unordered_set>
#include <vector>
namespace mbgl {
class RenderLayer;
class RenderSource;
class RenderTile;
class Bucket;
namespace style {
} // namespace style
class RenderItem {
public:
RenderItem(RenderLayer& layer_,
RenderSource* renderSource_)
: layer(layer_), source(renderSource_) {
}
RenderLayer& layer;
RenderSource* source;
};
class RenderData {
public:
Color backgroundColor;
std::unordered_set<RenderSource*> sources;
std::vector<RenderItem> order;
};
} // namespace mbgl

View File

@@ -1,13 +1,11 @@
#include <mbgl/renderer/renderer_impl.hpp>
#include <mbgl/renderer/render_static_data.hpp>
#include <mbgl/renderer/render_item.hpp>
#include <mbgl/renderer/update_parameters.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/renderer/transition_parameters.hpp>
#include <mbgl/renderer/property_evaluation_parameters.hpp>
#include <mbgl/renderer/tile_parameters.hpp>
#include <mbgl/renderer/render_source.hpp>
#include <mbgl/renderer/render_item.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/renderer/layers/render_background_layer.hpp>
#include <mbgl/renderer/layers/render_circle_layer.hpp>
@@ -296,16 +294,23 @@ void Renderer::Impl::doRender(PaintParameters& parameters) {
parameters.context.setDirtyState();
}
RenderData renderData;
const std::vector<RenderItem>& order = renderData.order;
const std::unordered_set<RenderSource*>& sources = renderData.sources;
std::unordered_set<RenderSource*> sources;
for (const auto& entry : renderSources) {
if (entry.second->isEnabled()) {
renderData.sources.insert(entry.second.get());
sources.insert(entry.second.get());
}
}
Color backgroundColor;
class RenderItem {
public:
RenderLayer& layer;
RenderSource* source;
};
std::vector<RenderItem> order;
for (auto& layerImpl : *layerImpls) {
RenderLayer* layer = getRenderLayer(layerImpl->id);
assert(layer);
@@ -317,22 +322,22 @@ void Renderer::Impl::doRender(PaintParameters& parameters) {
if (const RenderBackgroundLayer* background = layer->as<RenderBackgroundLayer>()) {
if (parameters.debugOptions & MapDebugOptions::Overdraw) {
// We want to skip glClear optimization in overdraw mode.
renderData.order.emplace_back(*layer, nullptr);
order.emplace_back(RenderItem { *layer, nullptr });
continue;
}
const BackgroundPaintProperties::PossiblyEvaluated& paint = background->evaluated;
if (layerImpl.get() == layerImpls->at(0).get() && paint.get<BackgroundPattern>().from.empty()) {
// This is a solid background. We can use glClear().
renderData.backgroundColor = paint.get<BackgroundColor>() * paint.get<BackgroundOpacity>();
backgroundColor = paint.get<BackgroundColor>() * paint.get<BackgroundOpacity>();
} else {
// This is a textured background, or not the bottommost layer. We need to render it with a quad.
renderData.order.emplace_back(*layer, nullptr);
order.emplace_back(RenderItem { *layer, nullptr });
}
continue;
}
if (layer->is<RenderCustomLayer>()) {
renderData.order.emplace_back(*layer, nullptr);
order.emplace_back(RenderItem { *layer, nullptr });
continue;
}
@@ -396,7 +401,7 @@ void Renderer::Impl::doRender(PaintParameters& parameters) {
}
}
layer->setRenderTiles(std::move(sortedTilesForInsertion));
renderData.order.emplace_back(*layer, source);
order.emplace_back(RenderItem { *layer, source });
}
frameHistory.record(parameters.timePoint,
@@ -421,7 +426,7 @@ void Renderer::Impl::doRender(PaintParameters& parameters) {
parameters.backend.bind();
parameters.context.clear((parameters.debugOptions & MapDebugOptions::Overdraw)
? Color::black()
: renderData.backgroundColor,
: backgroundColor,
1.0f,
0);
}