diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-06-22 16:28:32 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-06-22 16:28:32 +0200 |
commit | d58ed6f9f33ddf13f9141c052116bec0833561a9 (patch) | |
tree | 3bb4d1e1af18256234f69929406b8b385728870f /src | |
parent | 3459b83736f0e4eedfb95a1394d9e4ee1523b917 (diff) | |
download | qtlocation-mapboxgl-d58ed6f9f33ddf13f9141c052116bec0833561a9.tar.gz |
[core] remove TexturePool dependency from Raster constructor
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/map.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/bucket.hpp | 3 | ||||
-rw-r--r-- | src/mbgl/renderer/circle_bucket.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/circle_bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/fill_bucket.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/fill_bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/line_bucket.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/line_bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/painter.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/renderer/painter.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/painter_raster.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/raster_bucket.cpp | 16 | ||||
-rw-r--r-- | src/mbgl/renderer/raster_bucket.hpp | 6 | ||||
-rw-r--r-- | src/mbgl/renderer/symbol_bucket.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/symbol_bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile.cpp | 3 | ||||
-rw-r--r-- | src/mbgl/tile/raster_tile.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/util/raster.cpp | 10 | ||||
-rw-r--r-- | src/mbgl/util/raster.hpp | 9 |
19 files changed, 36 insertions, 45 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index fa7bebf9a6..4529f0b99e 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -255,7 +255,7 @@ void Map::Impl::update() { void Map::Impl::render() { if (!painter) { - painter = std::make_unique<Painter>(transform.getState(), store); + painter = std::make_unique<Painter>(transform.getState(), *texturePool, store); } FrameData frameData { view.getFramebufferSize(), diff --git a/src/mbgl/renderer/bucket.hpp b/src/mbgl/renderer/bucket.hpp index 9c572113be..15aaedeff9 100644 --- a/src/mbgl/renderer/bucket.hpp +++ b/src/mbgl/renderer/bucket.hpp @@ -16,6 +16,7 @@ class UnwrappedTileID; class CollisionTile; namespace gl { +class TexturePool; class ObjectStore; } // namespace gl @@ -29,7 +30,7 @@ public: // As long as this bucket has a Prepare render pass, this function is getting called. Typically, // this only happens once when the bucket is being rendered for the first time. - virtual void upload(gl::ObjectStore&) = 0; + virtual void upload(gl::TexturePool&, gl::ObjectStore&) = 0; // Every time this bucket is getting rendered, this function is called. This happens either // once or twice (for Opaque and Transparent render passes). diff --git a/src/mbgl/renderer/circle_bucket.cpp b/src/mbgl/renderer/circle_bucket.cpp index d86fbda489..23471826b7 100644 --- a/src/mbgl/renderer/circle_bucket.cpp +++ b/src/mbgl/renderer/circle_bucket.cpp @@ -16,7 +16,7 @@ CircleBucket::~CircleBucket() { // Do not remove. header file only contains forward definitions to unique pointers. } -void CircleBucket::upload(gl::ObjectStore& store) { +void CircleBucket::upload(gl::TexturePool&, gl::ObjectStore& store) { vertexBuffer_.upload(store); elementsBuffer_.upload(store); uploaded = true; diff --git a/src/mbgl/renderer/circle_bucket.hpp b/src/mbgl/renderer/circle_bucket.hpp index 041207a6ca..51b92e07f1 100644 --- a/src/mbgl/renderer/circle_bucket.hpp +++ b/src/mbgl/renderer/circle_bucket.hpp @@ -18,7 +18,7 @@ public: CircleBucket(const MapMode); ~CircleBucket() override; - void upload(gl::ObjectStore&) override; + void upload(gl::TexturePool&, gl::ObjectStore&) override; void render(Painter&, const style::Layer&, const UnwrappedTileID&, const mat4&) override; bool hasData() const override; diff --git a/src/mbgl/renderer/fill_bucket.cpp b/src/mbgl/renderer/fill_bucket.cpp index cd69f43375..d7ff853044 100644 --- a/src/mbgl/renderer/fill_bucket.cpp +++ b/src/mbgl/renderer/fill_bucket.cpp @@ -95,7 +95,7 @@ void FillBucket::addGeometry(const GeometryCollection& geometry) { } } -void FillBucket::upload(gl::ObjectStore& store) { +void FillBucket::upload(gl::TexturePool&, gl::ObjectStore& store) { vertexBuffer.upload(store); triangleElementsBuffer.upload(store); lineElementsBuffer.upload(store); diff --git a/src/mbgl/renderer/fill_bucket.hpp b/src/mbgl/renderer/fill_bucket.hpp index 3387ab3746..2b942442f1 100644 --- a/src/mbgl/renderer/fill_bucket.hpp +++ b/src/mbgl/renderer/fill_bucket.hpp @@ -20,7 +20,7 @@ public: FillBucket(); ~FillBucket() override; - void upload(gl::ObjectStore&) override; + void upload(gl::TexturePool&, gl::ObjectStore&) override; void render(Painter&, const style::Layer&, const UnwrappedTileID&, const mat4&) override; bool hasData() const override; bool needsClipping() const override; diff --git a/src/mbgl/renderer/line_bucket.cpp b/src/mbgl/renderer/line_bucket.cpp index 611c2d685d..a87201b26a 100644 --- a/src/mbgl/renderer/line_bucket.cpp +++ b/src/mbgl/renderer/line_bucket.cpp @@ -437,7 +437,7 @@ void LineBucket::addPieSliceVertex(const GeometryCoordinate& currentVertex, } } -void LineBucket::upload(gl::ObjectStore& store) { +void LineBucket::upload(gl::TexturePool&, gl::ObjectStore& store) { vertexBuffer.upload(store); triangleElementsBuffer.upload(store); diff --git a/src/mbgl/renderer/line_bucket.hpp b/src/mbgl/renderer/line_bucket.hpp index db5e74cd3b..fcf68d3a7a 100644 --- a/src/mbgl/renderer/line_bucket.hpp +++ b/src/mbgl/renderer/line_bucket.hpp @@ -24,7 +24,7 @@ public: LineBucket(uint32_t overscaling); ~LineBucket() override; - void upload(gl::ObjectStore&) override; + void upload(gl::TexturePool&, gl::ObjectStore&) override; void render(Painter&, const style::Layer&, const UnwrappedTileID&, const mat4&) override; bool hasData() const override; bool needsClipping() const override; diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp index 56276c26c5..2596d5cd39 100644 --- a/src/mbgl/renderer/painter.cpp +++ b/src/mbgl/renderer/painter.cpp @@ -50,9 +50,10 @@ namespace mbgl { using namespace style; -Painter::Painter(const TransformState& state_, gl::ObjectStore& store_) - : state(state_), - store(store_) { +Painter::Painter(const TransformState& state_, + gl::TexturePool& texturePool_, + gl::ObjectStore& store_) + : state(state_), texturePool(texturePool_), store(store_) { gl::debugging::enable(); plainShader = std::make_unique<PlainShader>(store); @@ -128,7 +129,7 @@ void Painter::render(const Style& style, const FrameData& frame_, SpriteAtlas& a for (const auto& item : order) { if (item.bucket && item.bucket->needsUpload()) { - item.bucket->upload(store); + item.bucket->upload(texturePool, store); } } } diff --git a/src/mbgl/renderer/painter.hpp b/src/mbgl/renderer/painter.hpp index 1f511467d0..f19cfec229 100644 --- a/src/mbgl/renderer/painter.hpp +++ b/src/mbgl/renderer/painter.hpp @@ -60,6 +60,7 @@ class CollisionBoxShader; struct ClipID; namespace util { +class TexturePool; class ObjectStore; } // namespace util @@ -85,7 +86,7 @@ struct FrameData { class Painter : private util::noncopyable { public: - Painter(const TransformState&, gl::ObjectStore&); + Painter(const TransformState&, gl::TexturePool&, gl::ObjectStore&); ~Painter(); void render(const style::Style&, @@ -178,6 +179,7 @@ private: }(); const TransformState& state; + gl::TexturePool& texturePool; gl::ObjectStore& store; FrameData frame; diff --git a/src/mbgl/renderer/painter_raster.cpp b/src/mbgl/renderer/painter_raster.cpp index 783879892e..2b5b9db3e3 100644 --- a/src/mbgl/renderer/painter_raster.cpp +++ b/src/mbgl/renderer/painter_raster.cpp @@ -37,7 +37,7 @@ void Painter::renderRaster(RasterBucket& bucket, config.depthTest = GL_TRUE; config.depthMask = GL_FALSE; setDepthSublayer(0); - bucket.drawRaster(*rasterShader, tileStencilBuffer, coveringRasterArray, store); + bucket.drawRaster(*rasterShader, tileStencilBuffer, coveringRasterArray, texturePool, store); } } diff --git a/src/mbgl/renderer/raster_bucket.cpp b/src/mbgl/renderer/raster_bucket.cpp index 67202e57be..c01e76dc72 100644 --- a/src/mbgl/renderer/raster_bucket.cpp +++ b/src/mbgl/renderer/raster_bucket.cpp @@ -7,13 +7,9 @@ namespace mbgl { using namespace style; -RasterBucket::RasterBucket(gl::TexturePool& texturePool) -: raster(texturePool) { -} - -void RasterBucket::upload(gl::ObjectStore& store) { +void RasterBucket::upload(gl::TexturePool& texturePool, gl::ObjectStore& store) { if (hasData()) { - raster.upload(store); + raster.upload(texturePool, store); uploaded = true; } } @@ -29,8 +25,12 @@ void RasterBucket::setImage(PremultipliedImage image) { raster.load(std::move(image)); } -void RasterBucket::drawRaster(RasterShader& shader, StaticVertexBuffer &vertices, VertexArrayObject &array, gl::ObjectStore& store) { - raster.bind(true, store); +void RasterBucket::drawRaster(RasterShader& shader, + StaticVertexBuffer& vertices, + VertexArrayObject& array, + gl::TexturePool& texturePool, + gl::ObjectStore& store) { + raster.bind(true, texturePool, store); array.bind(shader, vertices, BUFFER_OFFSET_0, store); MBGL_CHECK_ERROR(glDrawArrays(GL_TRIANGLES, 0, (GLsizei)vertices.index())); } diff --git a/src/mbgl/renderer/raster_bucket.hpp b/src/mbgl/renderer/raster_bucket.hpp index 93331755fb..a3f6666f18 100644 --- a/src/mbgl/renderer/raster_bucket.hpp +++ b/src/mbgl/renderer/raster_bucket.hpp @@ -11,16 +11,14 @@ class VertexArrayObject; class RasterBucket : public Bucket { public: - RasterBucket(gl::TexturePool&); - - void upload(gl::ObjectStore&) override; + void upload(gl::TexturePool&, gl::ObjectStore&) override; void render(Painter&, const style::Layer&, const UnwrappedTileID&, const mat4&) override; bool hasData() const override; bool needsClipping() const override; void setImage(PremultipliedImage); - void drawRaster(RasterShader&, StaticVertexBuffer&, VertexArrayObject&, gl::ObjectStore&); + void drawRaster(RasterShader&, StaticVertexBuffer&, VertexArrayObject&, gl::TexturePool&, gl::ObjectStore&); Raster raster; }; diff --git a/src/mbgl/renderer/symbol_bucket.cpp b/src/mbgl/renderer/symbol_bucket.cpp index d853265861..c141a57a5e 100644 --- a/src/mbgl/renderer/symbol_bucket.cpp +++ b/src/mbgl/renderer/symbol_bucket.cpp @@ -73,7 +73,7 @@ SymbolBucket::~SymbolBucket() { // Do not remove. header file only contains forward definitions to unique pointers. } -void SymbolBucket::upload(gl::ObjectStore& store) { +void SymbolBucket::upload(gl::TexturePool&, gl::ObjectStore& store) { if (hasTextData()) { renderData->text.vertices.upload(store); renderData->text.triangles.upload(store); diff --git a/src/mbgl/renderer/symbol_bucket.hpp b/src/mbgl/renderer/symbol_bucket.hpp index 98b8116c26..389447c06b 100644 --- a/src/mbgl/renderer/symbol_bucket.hpp +++ b/src/mbgl/renderer/symbol_bucket.hpp @@ -69,7 +69,7 @@ public: SymbolBucket(uint32_t overscaling, float zoom, const MapMode, std::string bucketName_, std::string sourceLayerName_); ~SymbolBucket() override; - void upload(gl::ObjectStore&) override; + void upload(gl::TexturePool&, gl::ObjectStore&) override; void render(Painter&, const style::Layer&, const UnwrappedTileID&, const mat4&) override; bool hasData() const override; bool hasTextData() const; diff --git a/src/mbgl/tile/raster_tile.cpp b/src/mbgl/tile/raster_tile.cpp index f23d01a59a..a0f172a017 100644 --- a/src/mbgl/tile/raster_tile.cpp +++ b/src/mbgl/tile/raster_tile.cpp @@ -15,7 +15,6 @@ RasterTile::RasterTile(const OverscaledTileID& id_, const style::UpdateParameters& parameters, const Tileset& tileset) : Tile(id_), - texturePool(parameters.texturePool), worker(parameters.worker), loader(*this, id_, parameters, tileset) { } @@ -42,7 +41,7 @@ void RasterTile::setData(std::shared_ptr<const std::string> data, } workRequest.reset(); - workRequest = worker.parseRasterTile(std::make_unique<RasterBucket>(texturePool), data, [this] (RasterTileParseResult result) { + workRequest = worker.parseRasterTile(std::make_unique<RasterBucket>(), data, [this] (RasterTileParseResult result) { workRequest.reset(); availableData = DataAvailability::All; diff --git a/src/mbgl/tile/raster_tile.hpp b/src/mbgl/tile/raster_tile.hpp index 32231f7b03..67618a39cb 100644 --- a/src/mbgl/tile/raster_tile.hpp +++ b/src/mbgl/tile/raster_tile.hpp @@ -35,7 +35,6 @@ public: Bucket* getBucket(const style::Layer&) override; private: - gl::TexturePool& texturePool; Worker& worker; TileLoader<RasterTile> loader; diff --git a/src/mbgl/util/raster.cpp b/src/mbgl/util/raster.cpp index 3146a00513..d83bee4c3f 100644 --- a/src/mbgl/util/raster.cpp +++ b/src/mbgl/util/raster.cpp @@ -9,10 +9,6 @@ using namespace mbgl; -Raster::Raster(gl::TexturePool& texturePool_) - : texturePool(texturePool_) -{} - bool Raster::isLoaded() const { std::lock_guard<std::mutex> lock(mtx); return loaded; @@ -30,14 +26,14 @@ void Raster::load(PremultipliedImage image) { } -void Raster::bind(bool linear, gl::ObjectStore& store) { +void Raster::bind(bool linear, gl::TexturePool& texturePool, gl::ObjectStore& store) { if (!width || !height) { Log::Error(Event::OpenGL, "trying to bind texture without dimension"); return; } if (img.data && !texture) { - upload(store); + upload(texturePool, store); } else if (texture) { MBGL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, *texture)); } @@ -50,7 +46,7 @@ void Raster::bind(bool linear, gl::ObjectStore& store) { } } -void Raster::upload(gl::ObjectStore& store) { +void Raster::upload(gl::TexturePool& texturePool, gl::ObjectStore& store) { if (img.data && !texture) { texture = texturePool.acquireTexture(store); MBGL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, *texture)); diff --git a/src/mbgl/util/raster.hpp b/src/mbgl/util/raster.hpp index b539032d81..31a9853d16 100644 --- a/src/mbgl/util/raster.hpp +++ b/src/mbgl/util/raster.hpp @@ -14,16 +14,14 @@ namespace mbgl { class Raster : public std::enable_shared_from_this<Raster> { public: - Raster(gl::TexturePool&); - // load image data void load(PremultipliedImage); // bind current texture - void bind(bool linear, gl::ObjectStore&); + void bind(bool linear, gl::TexturePool&, gl::ObjectStore&); // uploads the texture if it hasn't been uploaded yet. - void upload(gl::ObjectStore&); + void upload(gl::TexturePool&, gl::ObjectStore&); // loaded status bool isLoaded() const; @@ -45,9 +43,6 @@ private: // raw pixels have been loaded bool loaded = false; - // shared texture pool - gl::TexturePool& texturePool; - // min/mag filter GLint filter = 0; |