48 lines
1.2 KiB
HTML
48 lines
1.2 KiB
HTML
<script>
|
|
function forceGC() {
|
|
try {
|
|
for (var ndx = 0; ndx < 99000; ndx++)
|
|
var numbers = new Float64Array(50 * 1024);
|
|
} catch (e) { }
|
|
}
|
|
|
|
function addContext() {
|
|
contexts.push(document.createElement("canvas").getContext("webgl"));
|
|
}
|
|
|
|
if (window.testRunner) {
|
|
testRunner.waitUntilDone();
|
|
testRunner.dumpAsText();
|
|
}
|
|
|
|
var maxNumberOfActiveContexts = 16;
|
|
var contextsToKeep = 8;
|
|
var contexts = [];
|
|
|
|
// Create the max number of active WebGL contexts.
|
|
while (contexts.length < maxNumberOfActiveContexts)
|
|
addContext();
|
|
|
|
// Now remove some of those contexts from this array so they may be garbage collected.
|
|
while (contexts.length > contextsToKeep)
|
|
contexts.shift();
|
|
|
|
setTimeout(function() {
|
|
if (window.GCController)
|
|
GCController.collect();
|
|
else
|
|
forceGC();
|
|
|
|
// Add contexts until we get to the limit then add one more. This should only
|
|
// produce a single warning that an older context will be lost.
|
|
setTimeout(function() {
|
|
while (contexts.length < maxNumberOfActiveContexts + 1)
|
|
addContext();
|
|
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
});
|
|
});
|
|
|
|
</script>
|