createBuffer method

  1. @override
StorageBuffer createBuffer(
  1. BufferDescriptor descriptor, {
  2. ByteData? contents,
})

A general buffer. Its host usages are realised as gpuBufferUsageOf says — a real mapping where WebGPU allows one beside the rest, a staging copy or a queue write where it does not.

Implementation

@override
StorageBuffer createBuffer(
  BufferDescriptor descriptor, {
  ByteData? contents,
}) {
  features.require(DeviceFeature.buffers, backend: _backend);
  descriptor.checkFeatures(features, backend: _backend);
  if (descriptor.lengthInBytes > limits.maxBufferSize) {
    throw ArgumentError.value(
      descriptor.lengthInBytes,
      'lengthInBytes',
      'is past maxBufferSize (${limits.maxBufferSize})',
    );
  }
  return _guard(
    'a ${descriptor.lengthInBytes}-byte buffer',
    () => webgpuCreateBuffer(_gpuDevice, descriptor, contents: contents),
  );
}