WebGPU not supported by this browser. All test skipped
  • passes: 0
  • failures: 3
  • duration: 0.04s
  • buffer tests

    • tracks buffers

  • canvas tests

    • tracks HTMLCanvasElement ‣

      TypeError: Cannot read properties of undefined (reading 'skip')
          at testCanvas (https://greggman.github.io/webgpu-memory/test/tests/canvas-tests.js:19:12)
          at async Context.<anonymous> (https://greggman.github.io/webgpu-memory/test/tests/canvas-tests.js:107:5)
      async function() {
          const canvas1 = document.createElement('canvas');
          const canvas2 = document.createElement('canvas');
          await testCanvas(canvas1, canvas2);
        }
    • tracks OffscreenCanvas ‣

      TypeError: Cannot read properties of undefined (reading 'skip')
          at testCanvas (https://greggman.github.io/webgpu-memory/test/tests/canvas-tests.js:19:12)
          at async Context.<anonymous> (https://greggman.github.io/webgpu-memory/test/tests/canvas-tests.js:113:5)
      async function() {
          const canvas1 = new OffscreenCanvas(300, 150);
          const canvas2 = new OffscreenCanvas(300, 150);
          await testCanvas(canvas1, canvas2);
        }
    • swaps canvases when reconfigured to a different device

  • device tests

    • tracks devices separately

    • frees resources on device destroy

    • resets maxTotal ‣

      TypeError: Cannot read properties of undefined (reading 'skip')
          at Context.<anonymous> (https://greggman.github.io/webgpu-memory/test/tests/device-tests.js:208:12)
      async () => {
          const adapter1 = await navigator.gpu?.requestAdapter();
          if (!adapter1) {
            this.skip();
            return;
          }
          const device1 = await adapter1?.requestDevice();
          if (!device1) {
            this.skip();
            return;
          }
          const adapter2 = await navigator.gpu?.requestAdapter();
          const device2 = await adapter2?.requestDevice();
          if (!device2) {
            device1.destroy();
            this.skip();
            return;
          }
          const buffer1 = device1.createBuffer({
            size: 128,
            usage: GPUBufferUsage.COPY_DST,
          });
          const buffer2 = device2.createBuffer({
            size: 256,
            usage: GPUBufferUsage.COPY_DST,
          });
          {
            const info = getWebGPUMemoryUsage();
            assertEqual(info.memory.buffer, 128 + 256);
            assertEqual(info.memory.maxTotal, 128 + 256);
          }
          resetMaxTotal(device1);
          {
            const info = getWebGPUMemoryUsage();
            assertEqual(info.memory.buffer, 128 + 256);
            assertEqual(info.memory.maxTotal, 128 + 256);
          }
          buffer1.destroy();
          {
            const info = getWebGPUMemoryUsage();
            assertEqual(info.memory.buffer, 256);
            assertEqual(info.memory.maxTotal, 128 + 256);
          }
          resetMaxTotal(device1);
          {
            const info = getWebGPUMemoryUsage();
            assertEqual(info.memory.buffer, 256);
            assertEqual(info.memory.maxTotal, 128 + 256);
          }
          {
            const info = getWebGPUMemoryUsage(device1);
            assertEqual(info.memory.buffer, 0);
            assertEqual(info.memory.maxTotal, 0);
          }
          {
            const info = getWebGPUMemoryUsage(device2);
            assertEqual(info.memory.buffer, 256);
            assertEqual(info.memory.maxTotal, 256);
          }
          buffer2.destroy();
          resetMaxTotal(device2);
          {
            const info = getWebGPUMemoryUsage();
            assertEqual(info.memory.buffer, 0);
            assertEqual(info.memory.maxTotal, 128 + 256);
          }
          {
            const info = getWebGPUMemoryUsage(device2);
            assertEqual(info.memory.buffer, 0);
            assertEqual(info.memory.maxTotal, 0);
          }
          const buffer3 = device1.createBuffer({
            size: 128,
            usage: GPUBufferUsage.COPY_DST,
          });
          const buffer4 = device1.createBuffer({
            size: 256,
            usage: GPUBufferUsage.COPY_DST,
          });
          {
            const info = getWebGPUMemoryUsage();
            assertEqual(info.memory.buffer, 128 + 256);
            assertEqual(info.memory.maxTotal, 128 + 256);
          }
          buffer3.destroy();
          buffer4.destroy();
          {
            const info = getWebGPUMemoryUsage();
            assertEqual(info.memory.buffer, 0);
            assertEqual(info.memory.maxTotal, 128 + 256);
          }
          resetMaxTotal();
          {
            const info = getWebGPUMemoryUsage();
            assertEqual(info.memory.buffer, 0);
            assertEqual(info.memory.maxTotal, 0);
          }
          {
            const info = getWebGPUMemoryUsage(device1);
            assertEqual(info.memory.buffer, 0);
            assertEqual(info.memory.maxTotal, 0);
          }
          {
            const info = getWebGPUMemoryUsage(device2);
            assertEqual(info.memory.buffer, 0);
            assertEqual(info.memory.maxTotal, 0);
          }
        }