summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/layers')
-rw-r--r--src/mbgl/renderer/layers/render_background_layer.cpp1
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp1
-rw-r--r--src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp14
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_heatmap_layer.cpp20
-rw-r--r--src/mbgl/renderer/layers/render_hillshade_layer.cpp8
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp1
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.cpp1
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp3
9 files changed, 31 insertions, 20 deletions
diff --git a/src/mbgl/renderer/layers/render_background_layer.cpp b/src/mbgl/renderer/layers/render_background_layer.cpp
index 269b227a7d..b633ad0671 100644
--- a/src/mbgl/renderer/layers/render_background_layer.cpp
+++ b/src/mbgl/renderer/layers/render_background_layer.cpp
@@ -67,6 +67,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
program.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
parameters.depthModeForSublayer(0, gfx::DepthMaskType::ReadOnly),
gfx::StencilMode::disabled(),
diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp
index 1c13a6152b..ad4e6a020f 100644
--- a/src/mbgl/renderer/layers/render_circle_layer.cpp
+++ b/src/mbgl/renderer/layers/render_circle_layer.cpp
@@ -97,6 +97,7 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
parameters.depthModeForSublayer(0, gfx::DepthMaskType::ReadOnly),
parameters.mapMode != MapMode::Continuous
diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
index 720d2ff2f8..6f69916734 100644
--- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
@@ -13,9 +13,8 @@
#include <mbgl/util/intersection_tests.hpp>
#include <mbgl/tile/geometry_tile.hpp>
#include <mbgl/gfx/renderer_backend.hpp>
+#include <mbgl/gfx/render_pass.hpp>
#include <mbgl/gfx/cull_face_mode.hpp>
-#include <mbgl/gl/context.hpp>
-#include <mbgl/gl/renderable_resource.hpp>
namespace mbgl {
@@ -52,9 +51,6 @@ bool RenderFillExtrusionLayer::hasCrossfade() const {
}
void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*) {
- // TODO: remove cast
- gl::Context& glContext = static_cast<gl::Context&>(parameters.context);
-
if (parameters.pass == RenderPass::Opaque) {
return;
}
@@ -67,14 +63,14 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
renderTexture = parameters.context.createOffscreenTexture(size, *parameters.staticData.depthRenderbuffer);
}
- renderTexture->getResource<gl::RenderableResource>().bind();
-
optional<float> depthClearValue = {};
if (parameters.staticData.depthRenderbuffer->needsClearing()) depthClearValue = 1.0;
// Flag the depth buffer as no longer needing to be cleared for the remainder of this pass.
parameters.staticData.depthRenderbuffer->setShouldClear(false);
- glContext.clear(Color{ 0.0f, 0.0f, 0.0f, 0.0f }, depthClearValue, {});
+ auto renderPass = parameters.encoder->createRenderPass(
+ "fill extrusion",
+ { *renderTexture, Color{ 0.0f, 0.0f, 0.0f, 0.0f }, depthClearValue, {} });
auto draw = [&](auto& programInstance, const auto& tileBucket, auto&& uniformValues,
const optional<ImagePosition>& patternPositionA,
@@ -98,6 +94,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
programInstance.draw(
parameters.context,
+ *renderPass,
gfx::Triangles(),
parameters.depthModeFor3D(gfx::DepthMaskType::ReadWrite),
gfx::StencilMode::disabled(),
@@ -201,6 +198,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
gfx::DepthMode::disabled(),
gfx::StencilMode::disabled(),
diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp
index 3e44f7bfb0..aba1481044 100644
--- a/src/mbgl/renderer/layers/render_fill_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_layer.cpp
@@ -104,6 +104,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
drawMode,
depthMode,
parameters.stencilModeForClipping(tile.clip),
@@ -194,6 +195,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
drawMode,
depthMode,
parameters.stencilModeForClipping(tile.clip),
diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
index f8a159f3da..333b8f9890 100644
--- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp
+++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
@@ -10,8 +10,8 @@
#include <mbgl/style/layers/heatmap_layer_impl.hpp>
#include <mbgl/geometry/feature_index.hpp>
#include <mbgl/gfx/cull_face_mode.hpp>
-#include <mbgl/gl/context.hpp>
-#include <mbgl/gl/renderable_resource.hpp>
+#include <mbgl/gfx/render_pass.hpp>
+#include <mbgl/gfx/context.hpp>
#include <mbgl/util/math.hpp>
#include <mbgl/util/intersection_tests.hpp>
@@ -57,6 +57,10 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
const auto& viewportSize = parameters.staticData.backendSize;
const auto size = Size{viewportSize.width / 4, viewportSize.height / 4};
+ if (!colorRampTexture) {
+ colorRampTexture = parameters.context.createTexture(colorRamp, gfx::TextureChannelDataType::UnsignedByte);
+ }
+
if (!renderTexture || renderTexture->getSize() != size) {
renderTexture.reset();
if (parameters.context.supportsHalfFloatTextures) {
@@ -74,14 +78,8 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
}
}
- renderTexture->getResource<gl::RenderableResource>().bind();
-
- if (!colorRampTexture) {
- colorRampTexture = parameters.context.createTexture(colorRamp, gfx::TextureChannelDataType::UnsignedByte);
- }
-
- // TODO: remove cast
- static_cast<gl::Context&>(parameters.context).clear(Color{ 0.0f, 0.0f, 0.0f, 1.0f }, {}, {});
+ auto renderPass = parameters.encoder->createRenderPass(
+ "heatmap texture", { *renderTexture, Color{ 0.0f, 0.0f, 0.0f, 1.0f }, {}, {} });
for (const RenderTile& tile : renderTiles) {
auto bucket_ = tile.tile.getBucket<HeatmapBucket>(*baseImpl);
@@ -120,6 +118,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
programInstance.draw(
parameters.context,
+ *renderPass,
gfx::Triangles(),
parameters.depthModeForSublayer(0, gfx::DepthMaskType::ReadOnly),
stencilMode,
@@ -165,6 +164,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
gfx::DepthMode::disabled(),
gfx::StencilMode::disabled(),
diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
index 426c34e599..5736280892 100644
--- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp
+++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
@@ -11,7 +11,7 @@
#include <mbgl/style/layers/hillshade_layer_impl.hpp>
#include <mbgl/gfx/cull_face_mode.hpp>
#include <mbgl/gfx/offscreen_texture.hpp>
-#include <mbgl/gl/renderable_resource.hpp>
+#include <mbgl/gfx/render_pass.hpp>
#include <mbgl/util/geo.hpp>
namespace mbgl {
@@ -98,6 +98,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
parameters.depthModeForSublayer(0, gfx::DepthMaskType::ReadOnly),
gfx::StencilMode::disabled(),
@@ -132,7 +133,9 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
const uint16_t stride = bucket.getDEMData().stride;
const uint16_t tilesize = bucket.getDEMData().dim;
auto view = parameters.context.createOffscreenTexture({ tilesize, tilesize });
- view->getResource<gl::RenderableResource>().bind();
+
+ auto renderPass = parameters.encoder->createRenderPass(
+ "hillshade prepare", { *view, Color{ 0.0f, 0.0f, 0.0f, 0.0f }, {}, {} });
const Properties<>::PossiblyEvaluated properties;
const HillshadePrepareProgram::Binders paintAttributeData{ properties, 0 };
@@ -160,6 +163,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
programInstance.draw(
parameters.context,
+ *renderPass,
gfx::Triangles(),
parameters.depthModeForSublayer(0, gfx::DepthMaskType::ReadOnly),
gfx::StencilMode::disabled(),
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp
index dbc1fa2f3e..ba6d045b49 100644
--- a/src/mbgl/renderer/layers/render_line_layer.cpp
+++ b/src/mbgl/renderer/layers/render_line_layer.cpp
@@ -86,6 +86,7 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
parameters.depthModeForSublayer(0, gfx::DepthMaskType::ReadOnly),
parameters.stencilModeForClipping(tile.clip),
diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp
index 09aa94800f..4964afe6a7 100644
--- a/src/mbgl/renderer/layers/render_raster_layer.cpp
+++ b/src/mbgl/renderer/layers/render_raster_layer.cpp
@@ -110,6 +110,7 @@ void RenderRasterLayer::render(PaintParameters& parameters, RenderSource* source
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
parameters.depthModeForSublayer(0, gfx::DepthMaskType::ReadOnly),
gfx::StencilMode::disabled(),
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index 313a86539e..84ce0a73e0 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -130,6 +130,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
programInstance.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
values_.pitchAlignment == AlignmentType::Map
? parameters.depthModeForSublayer(0, gfx::DepthMaskType::ReadOnly)
@@ -352,6 +353,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
}};
parameters.programs.getSymbolLayerPrograms().collisionBox.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Lines { 1.0f },
gfx::DepthMode::disabled(),
gfx::StencilMode::disabled(),
@@ -388,6 +390,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
parameters.programs.getSymbolLayerPrograms().collisionCircle.draw(
parameters.context,
+ *parameters.renderPass,
gfx::Triangles(),
gfx::DepthMode::disabled(),
gfx::StencilMode::disabled(),