summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-10 15:48:11 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-11 16:51:45 +0200
commitb83de65813fa8a7b6e79954a1ed19bd51b6ce1e9 (patch)
tree00bc1370d48ad15d66f240fe1b96300d738c17a4 /src/mbgl/renderer
parent6c26e141a89a1718f6f6ddf53f4a738e2558c803 (diff)
downloadqtlocation-mapboxgl-b83de65813fa8a7b6e79954a1ed19bd51b6ce1e9.tar.gz
[core] Adjust mapbox-gl-native for the updated debug shader semantics
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r--src/mbgl/renderer/buckets/debug_bucket.cpp5
-rw-r--r--src/mbgl/renderer/buckets/debug_bucket.hpp1
-rw-r--r--src/mbgl/renderer/render_tile.cpp15
-rw-r--r--src/mbgl/renderer/sources/render_image_source.cpp13
-rw-r--r--src/mbgl/renderer/sources/render_image_source.hpp2
5 files changed, 26 insertions, 10 deletions
diff --git a/src/mbgl/renderer/buckets/debug_bucket.cpp b/src/mbgl/renderer/buckets/debug_bucket.cpp
index fcdc727f4b..701a347f4c 100644
--- a/src/mbgl/renderer/buckets/debug_bucket.cpp
+++ b/src/mbgl/renderer/buckets/debug_bucket.cpp
@@ -76,6 +76,11 @@ void DebugBucket::upload(gfx::UploadPass& uploadPass) {
vertexBuffer = uploadPass.createVertexBuffer(std::move(vertices));
indexBuffer = uploadPass.createIndexBuffer(std::move(indices));
}
+ if (!texture) {
+ std::array<uint8_t, 4> data{{0, 0, 0, 0}};
+ static const PremultipliedImage emptyImage{Size(1, 1), data.data(), data.size()};
+ texture = uploadPass.createTexture(emptyImage);
+ }
}
} // namespace mbgl
diff --git a/src/mbgl/renderer/buckets/debug_bucket.hpp b/src/mbgl/renderer/buckets/debug_bucket.hpp
index 78b1cbb8ff..c256ee6717 100644
--- a/src/mbgl/renderer/buckets/debug_bucket.hpp
+++ b/src/mbgl/renderer/buckets/debug_bucket.hpp
@@ -43,6 +43,7 @@ public:
SegmentVector<DebugAttributes> tileBorderSegments;
optional<gfx::VertexBuffer<DebugLayoutVertex>> vertexBuffer;
optional<gfx::IndexBuffer> indexBuffer;
+ optional<gfx::Texture> texture;
};
} // namespace mbgl
diff --git a/src/mbgl/renderer/render_tile.cpp b/src/mbgl/renderer/render_tile.cpp
index ce5fef05b8..71e5895402 100644
--- a/src/mbgl/renderer/render_tile.cpp
+++ b/src/mbgl/renderer/render_tile.cpp
@@ -155,12 +155,13 @@ void RenderTile::finishRender(PaintParameters& parameters) const {
*debugBucket->indexBuffer,
debugBucket->segments,
program.computeAllUniformValues(DebugProgram::LayoutUniformValues{uniforms::matrix::Value(matrix),
- uniforms::color::Value(Color::white())},
+ uniforms::color::Value(Color::white()),
+ uniforms::overlay_scale::Value(1.0f)},
paintAttributeData,
properties,
parameters.state.getZoom()),
allAttributeBindings,
- DebugProgram::TextureBindings{},
+ DebugProgram::TextureBindings{textures::image::Value{debugBucket->texture->getResource()}},
"text-outline");
program.draw(
@@ -174,12 +175,13 @@ void RenderTile::finishRender(PaintParameters& parameters) const {
*debugBucket->indexBuffer,
debugBucket->segments,
program.computeAllUniformValues(DebugProgram::LayoutUniformValues{uniforms::matrix::Value(matrix),
- uniforms::color::Value(Color::black())},
+ uniforms::color::Value(Color::black()),
+ uniforms::overlay_scale::Value(1.0f)},
paintAttributeData,
properties,
parameters.state.getZoom()),
allAttributeBindings,
- DebugProgram::TextureBindings{},
+ DebugProgram::TextureBindings{textures::image::Value{debugBucket->texture->getResource()}},
"text");
}
@@ -199,13 +201,14 @@ void RenderTile::finishRender(PaintParameters& parameters) const {
*parameters.staticData.tileBorderIndexBuffer,
debugBucket->tileBorderSegments,
program.computeAllUniformValues(DebugProgram::LayoutUniformValues{uniforms::matrix::Value(matrix),
- uniforms::color::Value(Color::red())},
+ uniforms::color::Value(Color::red()),
+ uniforms::overlay_scale::Value(1.0f)},
paintAttributeData,
properties,
parameters.state.getZoom()),
program.computeAllAttributeBindings(
*parameters.staticData.tileVertexBuffer, paintAttributeData, properties),
- DebugProgram::TextureBindings{},
+ DebugProgram::TextureBindings{textures::image::Value{debugBucket->texture->getResource()}},
"border");
}
}
diff --git a/src/mbgl/renderer/sources/render_image_source.cpp b/src/mbgl/renderer/sources/render_image_source.cpp
index 30f1bbcee6..215bbb1c92 100644
--- a/src/mbgl/renderer/sources/render_image_source.cpp
+++ b/src/mbgl/renderer/sources/render_image_source.cpp
@@ -23,13 +23,19 @@ void ImageSourceRenderData::upload(gfx::UploadPass& uploadPass) const {
if (bucket && bucket->needsUpload()) {
bucket->upload(uploadPass);
}
+
+ if (!debugTexture) {
+ std::array<uint8_t, 4> data{{0, 0, 0, 0}};
+ static const PremultipliedImage emptyImage{Size(1, 1), data.data(), data.size()};
+ debugTexture = uploadPass.createTexture(emptyImage);
+ }
}
void ImageSourceRenderData::render(PaintParameters& parameters) const {
if (!bucket || !(parameters.debugOptions & MapDebugOptions::TileBorders)) {
return;
}
-
+ assert(debugTexture);
static const style::Properties<>::PossiblyEvaluated properties {};
static const DebugProgram::Binders paintAttributeData(properties, 0);
@@ -47,13 +53,14 @@ void ImageSourceRenderData::render(PaintParameters& parameters) const {
parameters.staticData.tileBorderSegments(),
programInstance.computeAllUniformValues(
DebugProgram::LayoutUniformValues{uniforms::matrix::Value(matrix),
- uniforms::color::Value(Color::red())},
+ uniforms::color::Value(Color::red()),
+ uniforms::overlay_scale::Value(1.0f)},
paintAttributeData,
properties,
parameters.state.getZoom()),
programInstance.computeAllAttributeBindings(
*parameters.staticData.tileVertexBuffer, paintAttributeData, properties),
- DebugProgram::TextureBindings{},
+ DebugProgram::TextureBindings{textures::image::Value{debugTexture->getResource()}},
"image");
}
}
diff --git a/src/mbgl/renderer/sources/render_image_source.hpp b/src/mbgl/renderer/sources/render_image_source.hpp
index da0d899624..1b3afd6ddf 100644
--- a/src/mbgl/renderer/sources/render_image_source.hpp
+++ b/src/mbgl/renderer/sources/render_image_source.hpp
@@ -26,8 +26,8 @@ private:
void render(PaintParameters&) const override;
bool hasRenderPass(RenderPass) const override { return false; }
const std::string& getName() const override { return name; }
-
std::string name;
+ mutable optional<gfx::Texture> debugTexture;
};
class RenderImageSource final : public RenderSource {