Neither GPUDevice.mapReadAsync() and GPUDevice.mapWriteAsync() allow you to only map part of a buffer. On an implementation which has to copy the data around, rather than actually mapping, this can cause a lot of unnecessary data having to be copied.