summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-03-07 13:08:30 +0100
committerKonstantin Käfer <mail@kkaefer.com>2019-03-12 11:03:54 +0100
commitcb64c380fbbd209cb68af60e76b7a770805353a8 (patch)
tree77b790ae49e8f5877be599a0dad2f413a98da43f
parent54847ea98698c85da156874dc84088772599ee3b (diff)
downloadqtlocation-mapboxgl-cb64c380fbbd209cb68af60e76b7a770805353a8.tar.gz
[core] add texture bindings to draw call invocations
-rw-r--r--src/mbgl/gfx/texture.hpp35
-rw-r--r--src/mbgl/gl/program.hpp6
-rw-r--r--src/mbgl/programs/collision_box_program.hpp4
-rw-r--r--src/mbgl/programs/program.hpp6
-rw-r--r--src/mbgl/programs/symbol_program.hpp6
-rw-r--r--src/mbgl/renderer/layers/render_background_layer.cpp9
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp1
-rw-r--r--src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp12
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.cpp20
-rw-r--r--src/mbgl/renderer/layers/render_heatmap_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_hillshade_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp23
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.cpp1
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp21
-rw-r--r--src/mbgl/renderer/render_tile.cpp3
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp1
-rw-r--r--src/mbgl/renderer/sources/render_image_source.cpp1
17 files changed, 127 insertions, 26 deletions
diff --git a/src/mbgl/gfx/texture.hpp b/src/mbgl/gfx/texture.hpp
index ca5ab5d5d5..bbda44a8fb 100644
--- a/src/mbgl/gfx/texture.hpp
+++ b/src/mbgl/gfx/texture.hpp
@@ -2,6 +2,8 @@
#include <mbgl/gfx/types.hpp>
#include <mbgl/util/size.hpp>
+#include <mbgl/util/type_list.hpp>
+#include <mbgl/util/indexed_tuple.hpp>
#include <memory>
@@ -29,5 +31,38 @@ public:
std::unique_ptr<const TextureResource> resource;
};
+class TextureBinding {
+public:
+ TextureBinding(const TextureResource& resource_,
+ TextureFilterType filter_ = TextureFilterType::Nearest,
+ TextureMipMapType mipmap_ = TextureMipMapType::No,
+ TextureWrapType wrapX_ = TextureWrapType::Clamp,
+ TextureWrapType wrapY_ = TextureWrapType::Clamp)
+ : resource(&resource_), filter(filter_), mipmap(mipmap_), wrapX(wrapX_), wrapY(wrapY_) {
+ }
+
+ const TextureResource* resource;
+ TextureFilterType filter;
+ TextureMipMapType mipmap;
+ TextureWrapType wrapX;
+ TextureWrapType wrapY;
+};
+
+namespace detail {
+
+template <class>
+class TextureBindings;
+
+template <class... Ts>
+class TextureBindings<TypeList<Ts...>> {
+public:
+ using Type = IndexedTuple<TypeList<Ts...>, TypeList<ExpandToType<Ts, TextureBinding>...>>;
+};
+
+} // namespace detail
+
+template <class TextureTypeList>
+using TextureBindings = typename detail::TextureBindings<TextureTypeList>::Type;
+
} // namespace gfx
} // namespace mbgl
diff --git a/src/mbgl/gl/program.hpp b/src/mbgl/gl/program.hpp
index df48dfea38..050ec6c268 100644
--- a/src/mbgl/gl/program.hpp
+++ b/src/mbgl/gl/program.hpp
@@ -20,7 +20,7 @@
namespace mbgl {
namespace gl {
-template <class P, class As, class Us>
+template <class P, class As, class Us, class TBs>
class Program {
public:
using Primitive = P;
@@ -29,6 +29,7 @@ public:
using UniformValues = typename Uniforms::Values;
using AttributeBindings = typename Attributes::Bindings;
+ using TextureBindings = TBs;
Program(Context& context, const std::string& vertexSource, const std::string& fragmentSource)
: program(
@@ -122,11 +123,14 @@ public:
const UniformValues& uniformValues,
gl::VertexArray& vertexArray,
const AttributeBindings& attributeBindings,
+ const TextureBindings& textureBindings,
const gfx::IndexBuffer& indexBuffer,
std::size_t indexOffset,
std::size_t indexLength) {
static_assert(std::is_same<Primitive, typename DrawMode::Primitive>::value, "incompatible draw mode");
+ (void)textureBindings;
+
context.setDrawMode(drawMode);
context.setDepthMode(depthMode);
context.setStencilMode(stencilMode);
diff --git a/src/mbgl/programs/collision_box_program.hpp b/src/mbgl/programs/collision_box_program.hpp
index e9b69c639b..cd7f0bfd68 100644
--- a/src/mbgl/programs/collision_box_program.hpp
+++ b/src/mbgl/programs/collision_box_program.hpp
@@ -75,6 +75,7 @@ public:
const SegmentVector<Attributes>& segments,
const Binders& paintPropertyBinders,
const typename PaintProperties::PossiblyEvaluated& currentProperties,
+ const TextureBindings& textureBindings,
float currentZoom,
const std::string& layerID) {
typename AllUniforms::Values allUniformValues = uniformValues
@@ -103,6 +104,7 @@ public:
allUniformValues,
vertexArrayIt->second,
Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
+ textureBindings,
indexBuffer,
segment.indexOffset,
segment.indexLength);
@@ -161,6 +163,7 @@ public:
const SegmentVector<Attributes>& segments,
const Binders& paintPropertyBinders,
const typename PaintProperties::PossiblyEvaluated& currentProperties,
+ const TextureBindings& textureBindings,
float currentZoom,
const std::string& layerID) {
typename AllUniforms::Values allUniformValues = uniformValues
@@ -187,6 +190,7 @@ public:
allUniformValues,
vertexArrayIt->second,
Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
+ textureBindings,
indexBuffer,
segment.indexOffset,
segment.indexLength);
diff --git a/src/mbgl/programs/program.hpp b/src/mbgl/programs/program.hpp
index 5ae918926e..e09fdb32d2 100644
--- a/src/mbgl/programs/program.hpp
+++ b/src/mbgl/programs/program.hpp
@@ -35,7 +35,9 @@ public:
using PaintUniformList = typename Binders::UniformList;
using AllUniforms = gl::Uniforms<TypeListConcat<UniformList, PaintUniformList>>;
- using ProgramType = gl::Program<Primitive, Attributes, AllUniforms>;
+ using TextureBindings = gfx::TextureBindings<TextureList>;
+
+ using ProgramType = gl::Program<Primitive, Attributes, AllUniforms, TextureBindings>;
ProgramType program;
@@ -80,6 +82,7 @@ public:
const SegmentVector<Attributes>& segments,
const typename AllUniforms::Values& allUniformValues,
const typename Attributes::Bindings& allAttributeBindings,
+ const TextureBindings& textureBindings,
const std::string& layerID) {
for (auto& segment : segments) {
auto vertexArrayIt = segment.vertexArrays.find(layerID);
@@ -98,6 +101,7 @@ public:
allUniformValues,
vertexArrayIt->second,
Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
+ textureBindings,
indexBuffer,
segment.indexOffset,
segment.indexLength);
diff --git a/src/mbgl/programs/symbol_program.hpp b/src/mbgl/programs/symbol_program.hpp
index 4dce66ad4a..9c5bd01ef8 100644
--- a/src/mbgl/programs/symbol_program.hpp
+++ b/src/mbgl/programs/symbol_program.hpp
@@ -263,7 +263,9 @@ public:
using PaintUniformList = typename Binders::UniformList;
using AllUniforms = gl::Uniforms<TypeListConcat<UniformList, SizeUniformList, PaintUniformList>>;
- using ProgramType = gl::Program<Primitive, Attributes, AllUniforms>;
+ using TextureBindings = gfx::TextureBindings<TextureList>;
+
+ using ProgramType = gl::Program<Primitive, Attributes, AllUniforms, TextureBindings>;
ProgramType program;
@@ -315,6 +317,7 @@ public:
const SegmentVector<Attributes>& segments,
const typename AllUniforms::Values& allUniformValues,
const typename Attributes::Bindings& allAttributeBindings,
+ const TextureBindings& textureBindings,
const std::string& layerID) {
for (auto& segment : segments) {
auto vertexArrayIt = segment.vertexArrays.find(layerID);
@@ -333,6 +336,7 @@ public:
allUniformValues,
vertexArrayIt->second,
Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
+ textureBindings,
indexBuffer,
segment.indexOffset,
segment.indexLength);
diff --git a/src/mbgl/renderer/layers/render_background_layer.cpp b/src/mbgl/renderer/layers/render_background_layer.cpp
index 7494e01446..61c8fa208e 100644
--- a/src/mbgl/renderer/layers/render_background_layer.cpp
+++ b/src/mbgl/renderer/layers/render_background_layer.cpp
@@ -50,7 +50,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
const Properties<>::PossiblyEvaluated properties;
const BackgroundProgram::Binders paintAttributeData(properties, 0);
- auto draw = [&](auto& program, auto&& uniformValues) {
+ auto draw = [&](auto& program, auto&& uniformValues, auto&& textureBindings) {
const auto allUniformValues = program.computeAllUniformValues(
std::move(uniformValues),
paintAttributeData,
@@ -76,6 +76,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
parameters.staticData.tileTriangleSegments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -101,7 +102,8 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
crossfade,
tileID,
parameters.state
- )
+ ),
+ BackgroundPatternProgram::TextureBindings{}
);
}
} else {
@@ -112,7 +114,8 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
uniforms::u_matrix::Value( parameters.matrixForTile(tileID) ),
uniforms::u_color::Value( evaluated.get<BackgroundColor>() ),
uniforms::u_opacity::Value( evaluated.get<BackgroundOpacity>() ),
- }
+ },
+ BackgroundProgram::TextureBindings{}
);
}
}
diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp
index aec6813823..32ee24551c 100644
--- a/src/mbgl/renderer/layers/render_circle_layer.cpp
+++ b/src/mbgl/renderer/layers/render_circle_layer.cpp
@@ -107,6 +107,7 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.segments,
allUniformValues,
allAttributeBindings,
+ CircleProgram::TextureBindings{},
getID()
);
}
diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
index d6ce18e85a..5699bc5d4a 100644
--- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
@@ -72,7 +72,8 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.context.clear(Color{ 0.0f, 0.0f, 0.0f, 0.0f }, depthClearValue, {});
auto draw = [&](auto& programInstance, const auto& tileBucket, auto&& uniformValues,
- const optional<ImagePosition>& patternPositionA, const optional<ImagePosition>& patternPositionB) {
+ const optional<ImagePosition>& patternPositionA,
+ const optional<ImagePosition>& patternPositionB, auto&& textureBindings) {
const auto& paintPropertyBinders = tileBucket.paintPropertyBinders.at(getID());
paintPropertyBinders.setPatternParameters(patternPositionA, patternPositionB, crossfade);
@@ -101,6 +102,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
tileBucket.triangleSegments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID());
};
@@ -122,7 +124,9 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.state,
parameters.evaluatedLight
),
- {}, {}
+ {},
+ {},
+ FillExtrusionProgram::TextureBindings{}
);
}
} else {
@@ -155,7 +159,8 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.evaluatedLight
),
patternPosA,
- patternPosB
+ patternPosB,
+ FillExtrusionPatternProgram::TextureBindings{}
);
}
}
@@ -202,6 +207,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.staticData.extrusionTextureSegments,
allUniformValues,
allAttributeBindings,
+ ExtrusionTextureProgram::TextureBindings{},
getID());
}
}
diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp
index 5498031c4c..798749711d 100644
--- a/src/mbgl/renderer/layers/render_fill_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_layer.cpp
@@ -73,7 +73,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
const auto& drawMode,
const auto& depthMode,
const auto& indexBuffer,
- const auto& segments) {
+ const auto& segments,
+ auto&& textureBindings) {
auto& programInstance = program.get(evaluated);
const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID());
@@ -110,6 +111,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
segments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -124,7 +126,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
? gfx::DepthMaskType::ReadWrite
: gfx::DepthMaskType::ReadOnly),
*bucket.triangleIndexBuffer,
- bucket.triangleSegments);
+ bucket.triangleSegments,
+ FillProgram::TextureBindings{});
}
if (evaluated.get<FillAntialias>() && parameters.pass == RenderPass::Translucent) {
@@ -134,7 +137,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
unevaluated.get<FillOutlineColor>().isUndefined() ? 2 : 0,
gfx::DepthMaskType::ReadOnly),
*bucket.lineIndexBuffer,
- bucket.lineSegments);
+ bucket.lineSegments,
+ FillOutlineProgram::TextureBindings{});
}
}
} else {
@@ -159,7 +163,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
const auto& drawMode,
const auto& depthMode,
const auto& indexBuffer,
- const auto& segments) {
+ const auto& segments,
+ auto&& textureBindings) {
auto& programInstance = program.get(evaluated);
const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID());
@@ -200,6 +205,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
segments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -208,14 +214,16 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
gfx::Triangles(),
parameters.depthModeForSublayer(1, gfx::DepthMaskType::ReadWrite),
*bucket.triangleIndexBuffer,
- bucket.triangleSegments);
+ bucket.triangleSegments,
+ FillProgram::TextureBindings{});
if (evaluated.get<FillAntialias>() && unevaluated.get<FillOutlineColor>().isUndefined()) {
draw(parameters.programs.getFillLayerPrograms().fillOutlinePattern,
gfx::Lines { 2.0f },
parameters.depthModeForSublayer(2, gfx::DepthMaskType::ReadOnly),
*bucket.lineIndexBuffer,
- bucket.lineSegments);
+ bucket.lineSegments,
+ FillOutlineProgram::TextureBindings{});
}
}
}
diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
index 66421874af..9dd1ee6493 100644
--- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp
+++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
@@ -128,6 +128,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.segments,
allUniformValues,
allAttributeBindings,
+ HeatmapProgram::TextureBindings{},
getID()
);
}
@@ -176,6 +177,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
parameters.staticData.extrusionTextureSegments,
allUniformValues,
allAttributeBindings,
+ HeatmapProgram::TextureBindings{},
getID()
);
}
diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
index 438d6a345f..70ff2379d4 100644
--- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp
+++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
@@ -105,6 +105,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
segments,
allUniformValues,
allAttributeBindings,
+ HillshadeProgram::TextureBindings{},
getID()
);
};
@@ -167,6 +168,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
parameters.staticData.rasterSegments,
allUniformValues,
allAttributeBindings,
+ HillshadePrepareProgram::TextureBindings{},
getID()
);
bucket.texture = std::move(view.getTexture());
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp
index b38bc490a6..9eb659f79f 100644
--- a/src/mbgl/renderer/layers/render_line_layer.cpp
+++ b/src/mbgl/renderer/layers/render_line_layer.cpp
@@ -64,7 +64,9 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
}
LineBucket& bucket = *bucket_;
- auto draw = [&] (auto& program, auto&& uniformValues, const optional<ImagePosition>& patternPositionA, const optional<ImagePosition>& patternPositionB) {
+ auto draw = [&](auto& program, auto&& uniformValues,
+ const optional<ImagePosition>& patternPositionA,
+ const optional<ImagePosition>& patternPositionB, auto&& textureBindings) {
auto& programInstance = program.get(evaluated);
const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID());
@@ -96,6 +98,7 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.segments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -118,7 +121,10 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
posA,
posB,
crossfade,
- parameters.lineAtlas.getSize().width), {}, {});
+ parameters.lineAtlas.getSize().width),
+ {},
+ {},
+ LineSDFProgram::TextureBindings{});
} else if (!unevaluated.get<LinePattern>().isUndefined()) {
const auto linePatternValue = evaluated.get<LinePattern>().constantOr(Faded<std::basic_string<char>>{ "", ""});
@@ -140,7 +146,8 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
crossfade,
parameters.pixelRatio),
*posA,
- *posB);
+ *posB,
+ LinePatternProgram::TextureBindings{});
} else if (!unevaluated.get<LineGradient>().getValue().isUndefined()) {
if (!colorRampTexture) {
colorRampTexture = parameters.context.createTexture(colorRamp);
@@ -152,14 +159,20 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
evaluated,
tile,
parameters.state,
- parameters.pixelsToGLUnits), {}, {});
+ parameters.pixelsToGLUnits),
+ {},
+ {},
+ LineGradientProgram::TextureBindings{});
} else {
draw(parameters.programs.getLineLayerPrograms().line,
LineProgram::uniformValues(
evaluated,
tile,
parameters.state,
- parameters.pixelsToGLUnits), {}, {});
+ parameters.pixelsToGLUnits),
+ {},
+ {},
+ LineProgram::TextureBindings{});
}
}
}
diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp
index 30b180173c..a9fdcc0320 100644
--- a/src/mbgl/renderer/layers/render_raster_layer.cpp
+++ b/src/mbgl/renderer/layers/render_raster_layer.cpp
@@ -119,6 +119,7 @@ void RenderRasterLayer::render(PaintParameters& parameters, RenderSource* source
segments,
allUniformValues,
allAttributeBindings,
+ RasterProgram::TextureBindings{},
getID()
);
};
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index 11eeb376ce..a5ac6ceeea 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -93,7 +93,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
const auto& symbolSizeBinder,
const SymbolPropertyValues& values_,
const auto& binders,
- const auto& paintProperties)
+ const auto& paintProperties,
+ auto&& textureBindings)
{
auto& programInstance = program.get(paintProperties);
@@ -127,6 +128,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
buffers.segments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -170,7 +172,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.iconSizeBinder,
values,
bucketPaintProperties.iconBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolSDFIconProgram::TextureBindings{});
}
if (values.hasFill) {
@@ -180,7 +183,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.iconSizeBinder,
values,
bucketPaintProperties.iconBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolSDFIconProgram::TextureBindings{});
}
} else {
draw(parameters.programs.getSymbolLayerPrograms().symbolIcon,
@@ -189,7 +193,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.iconSizeBinder,
values,
bucketPaintProperties.iconBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolIconProgram::TextureBindings{});
}
}
@@ -223,7 +228,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.textSizeBinder,
values,
bucketPaintProperties.textBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolSDFTextProgram::TextureBindings{});
}
if (values.hasFill) {
@@ -233,7 +239,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.textSizeBinder,
values,
bucketPaintProperties.textBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolSDFTextProgram::TextureBindings{});
}
}
@@ -267,6 +274,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.collisionBox.segments,
paintAttributeData,
properties,
+ CollisionBoxProgram::TextureBindings{},
parameters.state.getZoom(),
getID()
);
@@ -303,6 +311,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.collisionCircle.segments,
paintAttributeData,
properties,
+ CollisionCircleProgram::TextureBindings{},
parameters.state.getZoom(),
getID()
);
diff --git a/src/mbgl/renderer/render_tile.cpp b/src/mbgl/renderer/render_tile.cpp
index beb0a06af9..d240189d74 100644
--- a/src/mbgl/renderer/render_tile.cpp
+++ b/src/mbgl/renderer/render_tile.cpp
@@ -112,6 +112,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
parameters.state.getZoom()
),
allAttributeBindings,
+ DebugProgram::TextureBindings{},
"debug"
);
@@ -134,6 +135,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
parameters.state.getZoom()
),
allAttributeBindings,
+ DebugProgram::TextureBindings{},
"debug"
);
}
@@ -162,6 +164,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
paintAttributeData,
properties
),
+ DebugProgram::TextureBindings{},
"debug"
);
}
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 8aa3690524..d66ba1767e 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -469,6 +469,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
paintAttributeData,
properties
),
+ ClippingMaskProgram::TextureBindings{},
"clipping"
);
}
diff --git a/src/mbgl/renderer/sources/render_image_source.cpp b/src/mbgl/renderer/sources/render_image_source.cpp
index 410491d255..cc8525aa9f 100644
--- a/src/mbgl/renderer/sources/render_image_source.cpp
+++ b/src/mbgl/renderer/sources/render_image_source.cpp
@@ -84,6 +84,7 @@ void RenderImageSource::finishRender(PaintParameters& parameters) {
paintAttributeData,
properties
),
+ DebugProgram::TextureBindings{},
"image"
);
}