summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers/render_symbol_layer.cpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2018-12-13 20:29:14 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-01-11 16:43:52 +0200
commitd37918c169b2f688c96fb766fc671066c88fc1a2 (patch)
tree20cdfe0a824bf128053aab7c8ad4f69676f66f49 /src/mbgl/renderer/layers/render_symbol_layer.cpp
parent2bdab82dedf545b4272c534b067c68614d0355b7 (diff)
downloadqtlocation-mapboxgl-d37918c169b2f688c96fb766fc671066c88fc1a2.tar.gz
[core] Split layer type specific code in mbgl::Programs
Progams code for a certain layer type is encapsulted within a dedicated `<layer type>Programs` class, inherited from the generic base `LayerTypePrograms` class. `mbgl::Programs::get<layer type>Programs()` lazily initializes the layer type-specific programs code using pointer to the base class, which allows LTO to remove this code from binaries (if the corresponding `get<layer type>Programs()` method can never be invoked).
Diffstat (limited to 'src/mbgl/renderer/layers/render_symbol_layer.cpp')
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index 716b06c24d..61dcf8fa47 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -182,7 +182,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
if (bucket.sdfIcons) {
if (values.hasHalo) {
- draw(parameters.programs.symbolIconSDF,
+ draw(parameters.programs.getSymbolLayerPrograms().symbolIconSDF,
SymbolSDFIconProgram::uniformValues(false, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Halo),
bucket.icon,
bucket.iconSizeBinder,
@@ -192,7 +192,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
}
if (values.hasFill) {
- draw(parameters.programs.symbolIconSDF,
+ draw(parameters.programs.getSymbolLayerPrograms().symbolIconSDF,
SymbolSDFIconProgram::uniformValues(false, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Fill),
bucket.icon,
bucket.iconSizeBinder,
@@ -201,7 +201,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
paintPropertyValues);
}
} else {
- draw(parameters.programs.symbolIcon,
+ draw(parameters.programs.getSymbolLayerPrograms().symbolIcon,
SymbolIconProgram::uniformValues(false, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange),
bucket.icon,
bucket.iconSizeBinder,
@@ -235,7 +235,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
const Size texsize = geometryTile.glyphAtlasTexture->size;
if (values.hasHalo) {
- draw(parameters.programs.symbolGlyph,
+ draw(parameters.programs.getSymbolLayerPrograms().symbolGlyph,
SymbolSDFTextProgram::uniformValues(true, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Halo),
bucket.text,
bucket.textSizeBinder,
@@ -245,7 +245,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
}
if (values.hasFill) {
- draw(parameters.programs.symbolGlyph,
+ draw(parameters.programs.getSymbolLayerPrograms().symbolGlyph,
SymbolSDFTextProgram::uniformValues(true, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, parameters.symbolFadeChange, SymbolSDFPart::Fill),
bucket.text,
bucket.textSizeBinder,
@@ -267,7 +267,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
parameters.pixelsToGLUnits[1] / (pixelRatio * scale)
}};
- parameters.programs.collisionBox.draw(
+ parameters.programs.getSymbolLayerPrograms().collisionBox.draw(
parameters.context,
gl::Lines { 1.0f },
gl::DepthMode::disabled(),
@@ -302,7 +302,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
}};
- parameters.programs.collisionCircle.draw(
+ parameters.programs.getSymbolLayerPrograms().collisionCircle.draw(
parameters.context,
gl::Triangles(),
gl::DepthMode::disabled(),