You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is step 1 to make cross-source label collision detection and placement possible.
Prior discussion on this topic at #1042
Plan is for me to tackle this with support from @yhahn. Thanks x 💯 to @ansis for helping think this through.
Goal:
Let information needed to do symbol placement be transferrable as an array buffer between workers + main thread.
instead of calling placeFeatures() in symbol_bucket.js and worker_tile.js, add this new symbolInstancesStructArray aka symbolBuffer to workerTile.jshere to transfer it back to the main thread
make modifications to other files in js/source/ to make sure the transferred data is available where needed
create a process to transfer the symbol_buffer data to a new worker where it could be processed together with symbol_buffers from other sources using placeFeatures() at that time.
When that is all done, we plan on starting another quest! Thoughts on that from @yhahn:
Cross-source placement quest
Goal: get all symbol buffers for a tile to a single worker so it can manage collision for the symbol buffers all at once.
This quest is a lot more murky to me because I am not familiar with the tile pyramid and sources yet.
Use a single tile pyramid rather than a pyramid per source
Why: so that the single pyramid can determine when all workers have sent back symbolbuffers for a tile to trigger a single placement event that has all the symbolbuffer information for that tile
Sources live under the single tile pyramid and manage appropriate tile based on what the tile pyramid needs/requests (?)
Workers' handling of messages/buffers remains the same (?)
Main process needs to manage symbol layers differently from others, receiving symbol buffers and queuing work for the symbol placement worker
The text was updated successfully, but these errors were encountered:
This is step 1 to make cross-source label collision detection and placement possible.
Prior discussion on this topic at #1042
Plan is for me to tackle this with support from @yhahn. Thanks x 💯 to @ansis for helping think this through.
Goal:
Let information needed to do symbol placement be transferrable as an array buffer between workers + main thread.
To do this, we need to:
structArrayType
, we first have to convertsymbolInstance.glyphQuads
into astructArrayType
in a manner similar to thecollisionBoxArray
symbolInstances
array into astructArrayType
placeFeatures()
insymbol_bucket.js
andworker_tile.js
, add this newsymbolInstancesStructArray
akasymbolBuffer
toworkerTile.js
here to transfer it back to the main threadjs/source/
to make sure the transferred data is available where neededsymbol_buffer
data to a new worker where it could be processed together withsymbol_buffers
from other sources usingplaceFeatures()
at that time.When that is all done, we plan on starting another quest! Thoughts on that from @yhahn:
Cross-source placement quest
Goal: get all symbol buffers for a tile to a single worker so it can manage collision for the symbol buffers all at once.
This quest is a lot more murky to me because I am not familiar with the tile pyramid and sources yet.
The text was updated successfully, but these errors were encountered: