<!DOCTYPE html>
<html>
<head>
<title>
Test CPU performance of the WebGLRenderingContext.bufferSubData binding
</title>
<script src="../resources/runner.js"></script>
<script src="./resources/webgl-perf-utils.js"></script>
</head>
<body>
<canvas id="canvas" width=400 height=400></canvas>
<script>
(() => {
const canvas = document.getElementById('canvas');
const gl = canvas.getContext('webgl');
if (!gl) {
skipTest('WebGL not supported');
return;
}
const vertexBuffer = gl.createBuffer();
const data = new Float32Array([
0.0, 0.5, 0.0,
-0.5, -0.5, 0.0,
0.5, -0.5, 0.0,
]);
const dataCopy = new Float32Array([
0.0, 0.5, 0.0,
-0.5, -0.5, 0.0,
0.5, -0.5, 0.0,
]);
const sizeInBytes = data.length * data.BYTES_PER_ELEMENT;
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, sizeInBytes * 2, gl.STATIC_DRAW);
const iterations = 10000;
PerfTestRunner.measureInnerRAFTime({
description: `CPU time for ${iterations * 2} calls to WebGLRenderingContext.bufferSubData`,
warmUpCount: 10,
run() {
for (let i = 0; i < iterations; ++i) {
gl.bufferSubData(gl.ARRAY_BUFFER, 0, data);
gl.bufferSubData(gl.ARRAY_BUFFER, sizeInBytes, dataCopy);
}
}
});
})();
</script>
</body>
</html>