(dev:WGPUDevPtr, buf:WGPUBufPtr)
| 51 | webgpu.wgpuCommandEncoderRelease(encoder) |
| 52 | |
| 53 | def read_buffer(dev:WGPUDevPtr, buf:WGPUBufPtr) -> memoryview: |
| 54 | size = webgpu.wgpuBufferGetSize(buf) |
| 55 | tmp_buffer = webgpu.wgpuDeviceCreateBuffer(dev, webgpu.WGPUBufferDescriptor(size=size, |
| 56 | usage=webgpu.WGPUBufferUsage_CopyDst | webgpu.WGPUBufferUsage_MapRead, mappedAtCreation=False)) |
| 57 | copy_buffer_to_buffer(dev, buf, 0, tmp_buffer, 0, size) |
| 58 | _run(webgpu.wgpuBufferMapAsync2, webgpu.WGPUBufferMapCallbackInfo2, webgpu.WGPUBufferMapCallback2, webgpu.WGPUBufferMapAsyncStatus, None, 0, |
| 59 | tmp_buffer, webgpu.WGPUMapMode_Read, 0, size) |
| 60 | void_ptr = ctypes.cast(webgpu.wgpuBufferGetConstMappedRange(tmp_buffer, 0, size), ctypes.c_void_p) |
| 61 | buf_copy = bytearray((ctypes.c_uint8 * size).from_address(void_ptr.value)) |
| 62 | webgpu.wgpuBufferUnmap(tmp_buffer) |
| 63 | webgpu.wgpuBufferDestroy(tmp_buffer) |
| 64 | return memoryview(buf_copy).cast("B") |
| 65 | |
| 66 | def pop_error(device:WGPUDevPtr) -> str: |
| 67 | return _run(webgpu.wgpuDevicePopErrorScopeF, webgpu.WGPUPopErrorScopeCallbackInfo, webgpu.WGPUPopErrorScopeCallback, None, 2, 2, device) |
no test coverage detected
searching dependent graphs…