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
One of the things that affects GL JS rendering performance linearly and that we can track reliably is the amount of data we upload to the GPU for rendering (given the same style). Specifically, the total size of data given to bufferData calls.
There are two directions we can explore for this — fixing older regressions and finding new ways to upload less.
Fixing regressions
Looking at historical metrics of how much data we upload throughout previous GL JS version, I found 3 regressions:
Introduce an explicit "upload" step to rendering #5184 has a ~5% regression but I'm not sure why. Needs to be investigated. due to uploading line index data for fills even if it's not needed (fill-antialias is false).
Adding new savings
Some things we could explore from the top of my mind:
#5184 has a ~5% regression but I'm not sure why. Needs to be investigated.
Turns out the overhead is in fill layers with fill-antialias: false. Previously, since we uploaded buffers on render, we didn't upload line index data for outline rendering if it's not drawn. Now, since we upload buffers beforehand, line index data is uploaded regardless whether we need it or not. cc @ansis
As a result of #3061 and #3120, we upload data for zero-opacity layers, which can significantly increase the amount of unnecessarily uploaded data for some style/zoom combinations. On z11.1 Mapbox Streets v10 sample, it's a ~12% regression.
This is also something that's now hard to fix because of the coalescing of buffer uploads independently of drawing (#5184). However, it's probably not worth fixing because it's rare to have affected layers in newer, expression-based styles (which usually have feature-based rather than global zoom-based opacity set).
One of the things that affects GL JS rendering performance linearly and that we can track reliably is the amount of data we upload to the GPU for rendering (given the same style). Specifically, the total size of data given to
bufferData
calls.There are two directions we can explore for this — fixing older regressions and finding new ways to upload less.
Fixing regressions
Looking at historical metrics of how much data we upload throughout previous GL JS version, I found 3 regressions:
but I'm not sure why. Needs to be investigated.due to uploading line index data for fills even if it's not needed (fill-antialias
isfalse
).Adding new savings
Some things we could explore from the top of my mind:
cc @ansis @kkaefer
The text was updated successfully, but these errors were encountered: