[Webkit-unassigned] [Bug 271765] New: [WPE] Add a soft limit to the amount of GPU memory BitmapTexturePool can hold
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Mar 27 08:35:39 PDT 2024
https://bugs.webkit.org/show_bug.cgi?id=271765
Bug ID: 271765
Summary: [WPE] Add a soft limit to the amount of GPU memory
BitmapTexturePool can hold
Product: WebKit
Version: WebKit Nightly Build
Hardware: Unspecified
OS: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: WPE WebKit
Assignee: webkit-unassigned at lists.webkit.org
Reporter: magomez at igalia.com
CC: bugs-noreply at webkitgtk.org
As it works now, BitmapTexturePool can keep unused textures around for up to 3 seconds. This is a problem in some situations where there are a lot of allocations and releases of textures with different sizes that can't be reused. These textures stay in the pool consuming potentially a lot of GPU memory. In extreme cases these textures can consume the whole GPU memory on constrained devices.
This situation can be easily reproducible with this page for example:
<html>
<head>
<style>
#animated {
width: 100px;
height: 100px;
background-color: red;
position: relative;
animation-name: example;
animation-duration: 20s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes example {
0% {width: 100px; height: 100px;}
100% {width: 5000px; height: 5000px;}
}
</style>
</head>
<body>
<div id="animated"></div>
</body>
</html>
The div has a fast animation that makes it grow up from 100x100 to 5000x5000. Every frame of the animation requires creating a backingStore with a new size for the div, which requires allocating textures from the BitmapTexturePool for each of the tiles. These tiles have increasing sizes during the animation (for example, 20x20, then 21x21, then 22x22, until 512x512 max), so the textures used for them will also have those sizes, that can't be reused from previous steps of the animation. So with each frame of the animation we're allocating a new set of textures and keeping the old ones in the pool for 3 seconds. When running the HTML above, the pool can get to store more than 100MB of textures.
We need some mechanism inside BitmapTexturePool to try to control this extreme growth.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20240327/5f72784a/attachment-0001.htm>
More information about the webkit-unassigned
mailing list