Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upReduce the amount of extra work needed for hit testing #2807
Comments
|
That seems reasonable to me. I thought it would be complicated to extract the bits of the render process that hit-testing needs, but if it's straightforward then that would be a nice optimization. And just to be explicit, we we need to ensure that this "slimmed down render" at the very least does the sampling (currently here, applies those messages (which are going to be |
This path just updates the clip scroll tree and hit-tester, without doing all the extra render work needed for a full frame render. When we do an async scene swap, we can use this instead of doing a full render to get the hit-test information in sync with Gecko. Fixes servo#2807
|
I wrote a patch for this and on the firefox talos perf tests it improved perf by a bit on displaylist_mutate but regressed tresize a bunch, so I need to look into it a bit more. |
This path just updates the clip scroll tree and hit-tester, without doing all the extra render work needed for a full frame render. When we do an async scene swap, we can use this instead of doing a full render to get the hit-test information in sync with Gecko. Fixes servo#2807
This path just updates the clip scroll tree and hit-tester, without doing all the extra render work needed for a full frame render. When we do an async scene swap, we can use this instead of doing a full render to get the hit-test information in sync with Gecko. Fixes servo#2807
This path just updates the clip scroll tree and hit-tester, without doing all the extra render work needed for a full frame render. When we do an async scene swap, we can use this instead of doing a full render to get the hit-test information in sync with Gecko. Fixes servo#2807
This path just updates the clip scroll tree and hit-tester, without doing all the extra render work needed for a full frame render. When we do an async scene swap, we can use this instead of doing a full render to get the hit-test information in sync with Gecko. Fixes servo#2807
This path just updates the clip scroll tree and hit-tester, without doing all the extra render work needed for a full frame render. When we do an async scene swap, we can use this instead of doing a full render to get the hit-test information in sync with Gecko. Fixes servo#2807
|
Do we know why? |
|
When I investigated it previously I came to the conclusion that the first render happens before the vsync and makes the second render (post-vsync) cheaper. Visualization is in https://bugzilla.mozilla.org/show_bug.cgi?id=1478566#c9 I'm not sure if the same thing is still happening now; I can check to see if it is. |
This path just updates the clip scroll tree and hit-tester, without doing all the extra render work needed for a full frame render. When we do an async scene swap, we can use this instead of doing a full render to get the hit-test information in sync with Gecko. Fixes servo#2807
|
I looked at it again today and found a number of different issues. But the important one was bug 1479075. I'll do another talos run with the fix for that. |
|
Try push: https://treeherder.mozilla.org/#/jobs?repo=try&revision=393c31424b29530c20aa39d655541c787f4b6cef The regressions are all from bug 1479075 so that's good. |
This path just updates the clip scroll tree and hit-tester, without doing all the extra render work needed for a full frame render. When we do an async scene swap, we can use this instead of doing a full render to get the hit-test information in sync with Gecko. Fixes servo#2807
|
Fixed by #3092 |
#2797 enabled rendering on async scene rebuilds. AFAIK, hit-testing should only need the results of
build_layer_screen_rects_and_cull_layersfunction, and don't actually care about the batches and render task graph. Thus, we can save a few cycles here.cc @staktrace @nical @gw3583