<!DOCTYPE html><!-- webkit-test-runner [ experimental:WebGPUEnabled=true ] -->
<meta charset=utf-8>
<title>Create a basic GPUBindGroup.</title>
<body>
<script src="js/webgpu-functions.js"></script>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
promise_test(async () => {
    const device = await getBasicDevice();

    // GPUBindGroupLayoutBindings
    // FIXME: Also test sampled texture bindings. 
    const bufferLayoutBinding = {
        binding: 1,
        visibility: GPUShaderStageBit.VERTEX,
        type: "storage-buffer"
    };

    const bindGroupLayout = device.createBindGroupLayout({ bindings: [bufferLayoutBinding] });

    const buffer = device.createBuffer({ size: 16, usage: GPUBufferUsage.STORAGE });
    const bufferBinding = { buffer: buffer, size: 16 };
    const bindGroupBinding = { binding: 1, resource: bufferBinding };

    const bindGroup = device.createBindGroup({ layout: bindGroupLayout, bindings: [bindGroupBinding]});
    assert_true(bindGroup instanceof GPUBindGroup, "GPUBindGroup successfully created.")
}, "Create a basic GPUBindGroup via GPUDevice.")
</script>
</body>