diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2018-12-13 20:29:14 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-01-11 16:43:52 +0200 |
commit | d37918c169b2f688c96fb766fc671066c88fc1a2 (patch) | |
tree | 20cdfe0a824bf128053aab7c8ad4f69676f66f49 /src/mbgl/programs/fill_extrusion_program.hpp | |
parent | 2bdab82dedf545b4272c534b067c68614d0355b7 (diff) | |
download | qtlocation-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/programs/fill_extrusion_program.hpp')
-rw-r--r-- | src/mbgl/programs/fill_extrusion_program.hpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mbgl/programs/fill_extrusion_program.hpp b/src/mbgl/programs/fill_extrusion_program.hpp index 657238d4c0..4573119e70 100644 --- a/src/mbgl/programs/fill_extrusion_program.hpp +++ b/src/mbgl/programs/fill_extrusion_program.hpp @@ -2,6 +2,7 @@ #include <mbgl/programs/program.hpp> #include <mbgl/programs/attributes.hpp> +#include <mbgl/programs/extrusion_texture_program.hpp> #include <mbgl/programs/uniforms.hpp> #include <mbgl/shaders/fill_extrusion.hpp> #include <mbgl/shaders/fill_extrusion_pattern.hpp> @@ -112,4 +113,16 @@ public: using FillExtrusionLayoutVertex = FillExtrusionProgram::LayoutVertex; using FillExtrusionAttributes = FillExtrusionProgram::Attributes; + +class FillExtrusionLayerPrograms final : public LayerTypePrograms { +public: + FillExtrusionLayerPrograms(gl::Context& context, const ProgramParameters& programParameters) + : fillExtrusion(context, programParameters), + fillExtrusionPattern(context, programParameters), + extrusionTexture(context, programParameters) {} + ProgramMap<FillExtrusionProgram> fillExtrusion; + ProgramMap<FillExtrusionPatternProgram> fillExtrusionPattern; + ExtrusionTextureProgram extrusionTexture; +}; + } // namespace mbgl |