mgpuWriteUint64 function
Implementation
void mgpuWriteUint64(MGPUBuffer buffer, Uint64List inputData, int size) {
final int elementsRequested = size > 0 ? size : inputData.length;
final int actualElements = elementsRequested <= inputData.length
? elementsRequested
: inputData.length;
final int byteSize = actualElements * Uint64List.bytesPerElement;
final JSNumber ptr = _malloc(byteSize.toJS);
final int startByteIndex = ptr.toDartInt;
try {
if (startByteIndex % 8 != 0) {
throw StateError('Uint64 pointer not 8-byte aligned');
}
final startElementIndex = startByteIndex ~/ Uint64List.bytesPerElement;
final heapUint64 = _heapU8.buffer.asUint64List();
if (startElementIndex + actualElements > heapUint64.length) {
throw StateError('Uint64 write would exceed heap bounds');
}
heapUint64.setRange(
startElementIndex,
startElementIndex + actualElements,
inputData.sublist(0, actualElements),
);
_mgpuWriteUint64(buffer, ptr, byteSize.toJS);
} finally {
_free(ptr);
}
}