a})`);
    }
}

const tfProgram = wtu.setupTransformFeedbackProgram(gl, ["vshader", "fshader"],
        ["out_data"], gl.SEPARATE_ATTRIBS,
        ["in_data"]);
wtu.glErrorShouldBe(gl, gl.NO_ERROR, "linking transform feedback shader should not set an error");
shouldBeNonNull("tfProgram");
const tf = gl.createTransformFeedback();

function copyBufferUsingTransformFeedback(src, dst) {
    gl.enableVertexAttribArray(0);
    gl.bindBuffer(gl.ARRAY_BUFFER, src);
    gl.vertexAttribIPointer(0, 1, gl.UNSIGNED_INT,