<!-- webkit-test-runner [ enableMetalDebugDevice=true ] -->
<script src="../../../resources/js-test-pre.js"></script>
<script>
async function run() {
    let adapter = await navigator.gpu.requestAdapter();
    let device = await adapter.requestDevice({ requiredFeatures: ['texture-compression-astc'] });
    let texture = device.createTexture({
        size: { width: 64, height: 4 },
        format: 'astc-4x4-unorm-srgb',
        usage: GPUTextureUsage.COPY_DST
    });
    device.queue.writeTexture({texture : texture}, new Uint8Array(136), {}, { width: 16, height: 4 });
    await device.queue.onSubmittedWorkDone();
    debug('Pass')
    globalThis.testRunner?.notifyDone();
}
testRunner?.dumpAsText();
testRunner?.waitUntilDone();

run();
</script>

