Merge pull request #12671 from tschaub/cacheless

Configure cache on the layer instead of the source
This commit is contained in:
Tim Schaub
2021-08-28 15:01:01 -06:00
committed by GitHub
5 changed files with 48 additions and 21 deletions

View File

@@ -5,7 +5,7 @@ import WebGLHelper from '../../../../../src/ol/webgl/Helper.js';
import WebGLTileLayer from '../../../../../src/ol/layer/WebGLTile.js';
import {createCanvasContext2D} from '../../../../../src/ol/dom.js';
describe('ol.layer.Tile', function () {
describe('ol/layer/WebGLTile', function () {
/** @type {WebGLTileLayer} */
let layer;
/** @type {Map} */
@@ -120,6 +120,17 @@ describe('ol.layer.Tile', function () {
});
});
it('tries to expire the source tile cache', (done) => {
const source = layer.getSource();
const expire = sinon.spy(source, 'expireCache');
layer.updateStyleVariables({r: 1, g: 2, b: 3});
map.once('rendercomplete', () => {
expect(expire.called).to.be(true);
done();
});
});
it('throws on incorrect style configs', function () {
function incorrectStyle() {
layer.style_ = {

View File

@@ -54,6 +54,11 @@ describe('ol.renderer.webgl.TileLayer', function () {
};
});
it('maintains a cache on the renderer instead of the source', function () {
expect(tileLayer.getSource().tileCache.highWaterMark).to.be(0.1);
expect(renderer.tileTextureCache_.highWaterMark).to.be(512);
});
it('#prepareFrame()', function () {
const source = tileLayer.getSource();
tileLayer.setSource(null);
@@ -73,7 +78,7 @@ describe('ol.renderer.webgl.TileLayer', function () {
expect(rendered).to.be.a(HTMLCanvasElement);
expect(frameState.tileQueue.getCount()).to.be(1);
expect(Object.keys(frameState.wantedTiles).length).to.be(1);
expect(frameState.postRenderFunctions.length).to.be(0); // no tile expired
expect(frameState.postRenderFunctions.length).to.be(1); // clear source cache (use renderer cache)
expect(renderer.tileTextureCache_.count_).to.be(1);
});