I tested about what happens during loading the page with several configrations like the followings on my Pixel 3a. Only [8] could succeeded to load the page. All another configrations failed to load the pages. Application was killed by lowmemorykiller during loading ImageBitmaps. From it, "Use AHardwareBuffer for layer buffer" could reduce memory usage. And there were objects that were waiting to be cycle collected. And use AHardwareBuffer for layer buffer with CompositorOGL uses less memory than WebRender. -[1] Use Webrendwe + No AHardwareBuffer use -[2] Use Webrendwe + No AHardwareBuffer use + Add calling nsJSContext::CycleCollectNow() in FromImageBitmap() -[3] Use Webrendwe + Use AHardwareBuffer for WebGL SharedSurface -[4] Use Webrendwe + Use AHardwareBuffer for WebGL SharedSurface in FromImageBitmap() -[5] Use CompositorOGL + No AHardwareBuffer use -[6] Use CompositorOGL + No AHardwareBuffer + Add calling nsJSContext::CycleCollectNow() in FromImageBitmap() -[7] Use CompositorOGL + Use AHardwareBuffer for layer buffer -[8] Use CompositorOGL + Use AHardwareBuffer for layer buffer + Add calling nsJSContext::CycleCollectNow() in FromImageBitmap() -[9] Use CompositorOGL + Use AHardwareBuffer for WebGL SharedSurface -[10] Use CompositorOGL + Use AHardwareBuffer for WebGL SharedSurface + Add calling nsJSContext::CycleCollectNow() in FromImageBitmap() -[11] Use CompositorOGL + Use AHardwareBuffer for layer buffer + Use AHardwareBuffer for WebGL SharedSurface
Bug 1639280 Comment 38 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
I tested about what happens during loading the page with several configrations like the followings on my Pixel 3a. Only [8] succeeded to load the page. All another configrations failed to load the pages. Application was killed by lowmemorykiller during loading ImageBitmaps. From it, "Use AHardwareBuffer for layer buffer" could reduce memory usage. And there were objects that were waiting to be cycle collected. And use AHardwareBuffer for layer buffer with CompositorOGL uses less memory than WebRender. -[1] Use Webrendwe + No AHardwareBuffer use -[2] Use Webrendwe + No AHardwareBuffer use + Add calling nsJSContext::CycleCollectNow() in FromImageBitmap() -[3] Use Webrendwe + Use AHardwareBuffer for WebGL SharedSurface -[4] Use Webrendwe + Use AHardwareBuffer for WebGL SharedSurface in FromImageBitmap() -[5] Use CompositorOGL + No AHardwareBuffer use -[6] Use CompositorOGL + No AHardwareBuffer + Add calling nsJSContext::CycleCollectNow() in FromImageBitmap() -[7] Use CompositorOGL + Use AHardwareBuffer for layer buffer -[8] Use CompositorOGL + Use AHardwareBuffer for layer buffer + Add calling nsJSContext::CycleCollectNow() in FromImageBitmap() -[9] Use CompositorOGL + Use AHardwareBuffer for WebGL SharedSurface -[10] Use CompositorOGL + Use AHardwareBuffer for WebGL SharedSurface + Add calling nsJSContext::CycleCollectNow() in FromImageBitmap() -[11] Use CompositorOGL + Use AHardwareBuffer for layer buffer + Use AHardwareBuffer for WebGL SharedSurface