Hello Angle team,
Trying to break down some behavior i've been experiencing using Google Maps (WebGL) on Chromium, which produces noticeable UI freezes.
To trigger this behavior :
- launch Chrome/ium with features : Vulkan,DefaultANGLEVulkan,VulkanFromANGLE
- navigate to Google Maps
- switch to "Satellite view" + 3D View / Globe view (advanced Web GL ?)
- start dragging map + release while still moving pointer
=> maps starts scrolling animation
- switch to other chromium tab before scrolling animation ends
=> when (invisible) animation ends in background, Google Maps engine is obviously doing something wrong :
- a storm of 500K to 1.5M WebGL calls is issued, probably as much as CPU can produce before some timeout
- occurs only when animation ends while visibilityState = hidden
- at the end no visible change on Maps display despite high number of GL calls issued
=> if VulkanFromANGLE is active, while (bogus?) WebGL calls are processed, the UI shows severe responsiveness issues if not total freeze for up to several seconds.
=> if VulkanFromANGLE is omitted, no such UI lag is noticeable
Interesting fact, the more CPU available, the more severe the effect is.
Regarding the described issue, it is likely some kind of bug in google maps engine.
However, it shows that navigation to a non-optimal WebGL site can affect the entire Chromium/ANGLE context.
What is your position on such matter ? Maybe some kind of "throttling" or priority inside ANGLE would help to mitigate such problem ?
Do not hesitate if more information needed or further tests required.
Regards,
Hello,
Thanks for the follow-up,
It seems you managed to reproduce the issue exactly. If you have possibility to monitor GL calls produced when animation ends, you will see very high number, much much higher compared to same operation when maps not hidden.
Tried Ozone X11 platform : same effects
i'm aware X11 + Wayland currently have disadvantage of submitting frames on main thread, which can bring UI lag under heavy navigation work.
i've opened a WIP CL to address that issue : http://crrev.com/c/7112980
But anyway here it doesn't seem to be related.
Regarding DRM drivers
However there's no lag using :
Do you still trust a CRBUG is relevant here ? If so i will open a ticket as instructed.
Btw Vulkan / DefaultANGLEVulkan not looked at for Linux, you mean it is not officially supported ?
Some further testing :
I am no expert, but i tend to believe there might be a superfluous lock/barrier/syncObj involved somewhere in ANGLE / Mesa / DRM which locks normal display operations until all queued GL/vulkan rendering work is done. Thoughts about different queues / priorities...
Btw you mentionned RADV when you reproduce similar behavior, does it mean AMD is affected the same ?