mgpuWriteUint8 function

void mgpuWriteUint8(
  1. MGPUBuffer buffer,
  2. Uint8List inputData,
  3. int size
)

Implementation

void mgpuWriteUint8(MGPUBuffer buffer, Uint8List inputData, int size) {
  final int elementsRequested = size > 0 ? size : inputData.length;
  final int actualElements = elementsRequested <= inputData.length
      ? elementsRequested
      : inputData.length;
  final int byteSize = actualElements * Uint8List.bytesPerElement;
  final JSNumber ptr = _malloc(byteSize.toJS);
  final int startIndex = ptr.toDartInt;
  try {
    if (startIndex < 0 || startIndex + actualElements > _heapU8.length) {
      throw StateError('Uint8 write would exceed heap bounds');
    }
    _heapU8.setRange(
      startIndex,
      startIndex + actualElements,
      inputData.sublist(0, actualElements),
    );
    _mgpuWriteUint8(buffer, ptr, byteSize.toJS);
  } finally {
    _free(ptr);
  }
}