Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Synchronize StyleLayer and Bucket/Buffer state #4012

Open
anandthakker opened this issue Jan 18, 2017 · 2 comments
Open

Synchronize StyleLayer and Bucket/Buffer state #4012

anandthakker opened this issue Jan 18, 2017 · 2 comments

Comments

@anandthakker
Copy link
Contributor

The state needed by the painter_xxx modules to render tiles is split up into two places:

  • The map-wide Style / StyleLayer structure, which dictates the layers to be rendered, their types, and the layout/paint definitions that control their details.
  • The per-source Tile objects (managed by SourceCache, populated by Sources, often via Worker requests), which hold Buckets (one per StyleLayer) of buffers containing vertex positions, colors, etc.

These can get out of sync when client code mutates the Style, e.g.:

In each of these cases, we have to work around the possibility that when the Style is updated, we could have one or more render cycles where some Tiles are stale, carrying Bucket state that corresponds to the pre-updated style layers.

@jfirebaugh
Copy link
Contributor

I'm marking #3949 and #3453 as duplicates of this issue, since this issue states the problem most generally, but note that those other issues have good discussion of specific aspects of this problem.

@anandthakker
Copy link
Contributor Author

anandthakker commented Mar 30, 2018

In #3453, @ansis suggests that we should aim for solution wherein all tiles being rendered have been laid out using the same view of the style.

If want to do that -- and even if we don't -- I think #4875 will make this much more tractable. Once we have an immutable Style object, having each Tile hold a reference to the Style with which it was created will be pretty straightforward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants