Skip to content

Commit

Permalink
transfer symbol buffers from worker --> main thread
Browse files Browse the repository at this point in the history
  • Loading branch information
Molly Lloyd committed May 25, 2016
1 parent 3c692d3 commit 945f4ee
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
8 changes: 4 additions & 4 deletions js/data/bucket/symbol_bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ var clipLine = require('../../symbol/clip_line');
var util = require('../../util/util');
var loadGeometry = require('../load_geometry');
var CollisionFeature = require('../../symbol/collision_feature');
var SymbolInstancesArray = require('../../symbol/symbol_instances');
var SymbolQuadsArray = require('../../symbol/symbol_quads');

var shapeText = Shaping.shapeText;
var shapeIcon = Shaping.shapeIcon;
Expand All @@ -31,6 +29,8 @@ function SymbolBucket(options) {
this.showCollisionBoxes = options.showCollisionBoxes;
this.overscaling = options.overscaling;
this.collisionBoxArray = options.collisionBoxArray;
this.symbolQuadsBuffer = options.symbolQuadsBuffer;
this.symbolInstancesBuffer = options.symbolInstancesBuffer;

this.sdfIcons = options.sdfIcons;
this.iconsNeedLinear = options.iconsNeedLinear;
Expand Down Expand Up @@ -149,8 +149,8 @@ SymbolBucket.prototype.populateBuffers = function(collisionTile, stacks, icons)
this.tilePixelRatio = EXTENT / tileSize;
this.compareText = {};
this.symbolInstances = [];
this.symbolInstancesBuffer = new SymbolInstancesArray();
this.symbolQuadsBuffer = new SymbolQuadsArray();
// this.symbolInstancesBuffer = new SymbolInstancesArray();
// this.symbolQuadsBuffer = new SymbolQuadsArray();
this.iconsNeedLinear = false;

var layout = this.layer.layout;
Expand Down
12 changes: 10 additions & 2 deletions js/source/worker_tile.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ var Bucket = require('../data/bucket');
var CollisionBoxArray = require('../symbol/collision_box');
var DictionaryCoder = require('../util/dictionary_coder');
var util = require('../util/util');
var SymbolInstancesArray = require('../symbol/symbol_instances');
var SymbolQuadsArray = require('../symbol/symbol_quads');

module.exports = WorkerTile;

Expand All @@ -27,6 +29,8 @@ WorkerTile.prototype.parse = function(data, layerFamilies, actor, rawTileData, c
this.data = data;

this.collisionBoxArray = new CollisionBoxArray();
this.symbolInstancesBuffer = new SymbolInstancesArray();
this.symbolQuadsBuffer = new SymbolQuadsArray();
var collisionTile = new CollisionTile(this.angle, this.pitch, this.collisionBoxArray);
var featureIndex = new FeatureIndex(this.coord, this.overscaling, collisionTile, data.layers);
var sourceLayerCoder = new DictionaryCoder(data.layers ? Object.keys(data.layers).sort() : ['_geojsonTileLayer']);
Expand Down Expand Up @@ -61,6 +65,8 @@ WorkerTile.prototype.parse = function(data, layerFamilies, actor, rawTileData, c
overscaling: this.overscaling,
showCollisionBoxes: this.showCollisionBoxes,
collisionBoxArray: this.collisionBoxArray,
symbolQuadsBuffer: this.symbolQuadsBuffer,
symbolInstancesBuffer: this.symbolInstancesBuffer,
sourceLayerIndex: sourceLayerCoder.encode(layer.sourceLayer || '_geojsonTileLayer')
});
bucket.createFilter();
Expand Down Expand Up @@ -207,8 +213,8 @@ WorkerTile.prototype.parse = function(data, layerFamilies, actor, rawTileData, c
var featureIndex_ = featureIndex.serialize();
var collisionTile_ = collisionTile.serialize();
var collisionBoxArray = tile.collisionBoxArray.serialize();
// var symbolInstancesBuffer = tile.symbolInstancesBuffer.serialize();
// var symbolQuadsBuffer = tile.symbolQuadsBuffer.serialize();
var symbolInstancesBuffer = tile.symbolInstancesBuffer.serialize();
var symbolQuadsBuffer = tile.symbolQuadsBuffer.serialize();
var transferables = [rawTileData].concat(featureIndex_.transferables).concat(collisionTile_.transferables);

var nonEmptyBuckets = buckets.filter(isBucketEmpty);
Expand All @@ -219,6 +225,8 @@ WorkerTile.prototype.parse = function(data, layerFamilies, actor, rawTileData, c
featureIndex: featureIndex_.data,
collisionTile: collisionTile_.data,
collisionBoxArray: collisionBoxArray,
symbolInstancesBuffer: symbolInstancesBuffer,
symbolQuadsBuffer: symbolQuadsBuffer,
rawTileData: rawTileData
}, getTransferables(nonEmptyBuckets).concat(transferables));
}
Expand Down

0 comments on commit 945f4ee

Please sign in to comment.