summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-06-22 16:28:32 +0200
committerKonstantin Käfer <mail@kkaefer.com>2016-06-22 16:28:32 +0200
commitd58ed6f9f33ddf13f9141c052116bec0833561a9 (patch)
tree3bb4d1e1af18256234f69929406b8b385728870f /src
parent3459b83736f0e4eedfb95a1394d9e4ee1523b917 (diff)
downloadqtlocation-mapboxgl-d58ed6f9f33ddf13f9141c052116bec0833561a9.tar.gz
[core] remove TexturePool dependency from Raster constructor
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/map/map.cpp2
-rw-r--r--src/mbgl/renderer/bucket.hpp3
-rw-r--r--src/mbgl/renderer/circle_bucket.cpp2
-rw-r--r--src/mbgl/renderer/circle_bucket.hpp2
-rw-r--r--src/mbgl/renderer/fill_bucket.cpp2
-rw-r--r--src/mbgl/renderer/fill_bucket.hpp2
-rw-r--r--src/mbgl/renderer/line_bucket.cpp2
-rw-r--r--src/mbgl/renderer/line_bucket.hpp2
-rw-r--r--src/mbgl/renderer/painter.cpp9
-rw-r--r--src/mbgl/renderer/painter.hpp4
-rw-r--r--src/mbgl/renderer/painter_raster.cpp2
-rw-r--r--src/mbgl/renderer/raster_bucket.cpp16
-rw-r--r--src/mbgl/renderer/raster_bucket.hpp6
-rw-r--r--src/mbgl/renderer/symbol_bucket.cpp2
-rw-r--r--src/mbgl/renderer/symbol_bucket.hpp2
-rw-r--r--src/mbgl/tile/raster_tile.cpp3
-rw-r--r--src/mbgl/tile/raster_tile.hpp1
-rw-r--r--src/mbgl/util/raster.cpp10
-rw-r--r--src/mbgl/util/raster.hpp9
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;