From 9df1a821627b1608dd3732833d7651564b2ff9aa Mon Sep 17 00:00:00 2001 From: mike-000 <49240900+mike-000@users.noreply.github.com> Date: Thu, 18 Aug 2022 22:14:49 +0100 Subject: [PATCH 1/3] clear cache when source reset clear cache if view projection changed test source reset --- src/ol/layer/WebGLTile.js | 3 + src/ol/renderer/webgl/TileLayer.js | 24 ++++++- .../webgl-data-tile-reset-source/expected.png | Bin 0 -> 9387 bytes .../webgl-data-tile-reset-source/main.js | 66 ++++++++++++++++++ 4 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 test/rendering/cases/webgl-data-tile-reset-source/expected.png create mode 100644 test/rendering/cases/webgl-data-tile-reset-source/main.js diff --git a/src/ol/layer/WebGLTile.js b/src/ol/layer/WebGLTile.js index 5aca739168..2cf948e0ed 100644 --- a/src/ol/layer/WebGLTile.js +++ b/src/ol/layer/WebGLTile.js @@ -392,6 +392,9 @@ class WebGLTileLayer extends BaseTileLayer { * @private */ handleSourceUpdate_() { + if (this.hasRenderer()) { + this.getRenderer().clearCache(); + } if (this.getSource()) { this.setStyle(this.style_); } diff --git a/src/ol/renderer/webgl/TileLayer.js b/src/ol/renderer/webgl/TileLayer.js index 5de570b2c8..ae89bd2dd1 100644 --- a/src/ol/renderer/webgl/TileLayer.js +++ b/src/ol/renderer/webgl/TileLayer.js @@ -247,6 +247,12 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer { * @type {import("../../Map.js").FrameState|null} */ this.frameState_ = null; + + /** + * @private + * @type {import("../../proj/Projection.js").default} + */ + this.projection_ = undefined; } /** @@ -299,6 +305,14 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer { * @return {boolean} Layer is ready to be rendered. */ prepareFrameInternal(frameState) { + this.projection_ = + this.projection_ === undefined + ? frameState.viewState.projection + : this.projection_; + if (frameState.viewState.projection !== this.projection_) { + this.clearCache(); + this.projection_ = frameState.viewState.projection; + } const layer = this.getLayer(); const source = layer.getRenderSource(); if (!source) { @@ -817,11 +831,15 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer { return covered; } + clearCache() { + const tileTextureCache = this.tileTextureCache_; + tileTextureCache.forEach((tileTexture) => tileTexture.dispose()); + tileTextureCache.clear(); + } + removeHelper() { if (this.helper) { - const tileTextureCache = this.tileTextureCache_; - tileTextureCache.forEach((tileTexture) => tileTexture.dispose()); - tileTextureCache.clear(); + this.clearCache(); } super.removeHelper(); diff --git a/test/rendering/cases/webgl-data-tile-reset-source/expected.png b/test/rendering/cases/webgl-data-tile-reset-source/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..890747aca61e0af1ee22501af086ff89c2c3adb6 GIT binary patch literal 9387 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 Date: Fri, 19 Aug 2022 19:45:59 +0100 Subject: [PATCH 2/3] clear cache if view projection changed --- .../webgl-tile-reset-projection/expected.png | Bin 0 -> 6821 bytes .../cases/webgl-tile-reset-projection/main.js | 35 ++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 test/rendering/cases/webgl-tile-reset-projection/expected.png create mode 100644 test/rendering/cases/webgl-tile-reset-projection/main.js diff --git a/test/rendering/cases/webgl-tile-reset-projection/expected.png b/test/rendering/cases/webgl-tile-reset-projection/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..732e9096b14fc522e5f15b27068377c63779aba5 GIT binary patch literal 6821 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 Date: Thu, 25 Aug 2022 17:23:58 +0200 Subject: [PATCH 3/3] Rework condition --- src/ol/renderer/webgl/TileLayer.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/ol/renderer/webgl/TileLayer.js b/src/ol/renderer/webgl/TileLayer.js index ae89bd2dd1..1cfffd7cb4 100644 --- a/src/ol/renderer/webgl/TileLayer.js +++ b/src/ol/renderer/webgl/TileLayer.js @@ -305,14 +305,13 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer { * @return {boolean} Layer is ready to be rendered. */ prepareFrameInternal(frameState) { - this.projection_ = - this.projection_ === undefined - ? frameState.viewState.projection - : this.projection_; - if (frameState.viewState.projection !== this.projection_) { + if (!this.projection_) { + this.projection_ = frameState.viewState.projection; + } else if (frameState.viewState.projection !== this.projection_) { this.clearCache(); this.projection_ = frameState.viewState.projection; } + const layer = this.getLayer(); const source = layer.getRenderSource(); if (!source) {