<!DOCTYPE html>
<html>
<head>
<title>
Test CPU performance of the WebGLRenderingContext.bufferSubData binding
</title>
<script src="../resources/runner.js"></script>
</head>
<body>
<canvas id="canvas" width=400 height=400></canvas>
<script>
const canvas = document.getElementById('canvas');
const gl = canvas.getContext('webgl');
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);
// Ensure twice the size of `data`.
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>