mgpuReadBufferSync function
Future<void>
mgpuReadBufferSync(
- MGPUBuffer buffer,
- Float32List outputData, {
- int readElements = 0,
- int elementOffset = 0,
- int readBytes = 0,
- int byteOffset = 0,
Implementation
Future<void> mgpuReadBufferSync(
MGPUBuffer buffer,
Float32List outputData, {
int readElements = 0,
int elementOffset = 0,
int readBytes = 0,
int byteOffset = 0,
}) async {
// Determine the number of elements to read.
final int sizeToRead =
(readElements > 0)
? readElements * Float32List.bytesPerElement
: (readBytes > 0 ? readBytes : (outputData.length - elementOffset));
// If readElements is provided, calculate the effective byte offset based on element count.
final int effectiveByteOffset =
(readElements > 0)
? elementOffset * Float32List.bytesPerElement
: byteOffset;
final JSNumber ptr = _malloc(sizeToRead.toJS);
final int startIndex = ptr.toDartInt ~/ Float32List.bytesPerElement;
try {
await ccall(
"mgpuReadBufferSync".toJS,
"number".toJS,
["number", "number", "number", "number"].toJSDeep,
[buffer, ptr, sizeToRead.toJS, effectiveByteOffset.toJS].toJSDeep,
{"async": true}.toJSDeep,
).toDart;
final int elementsToRead = sizeToRead ~/ Float32List.bytesPerElement;
final output = _heapF32.sublist(startIndex, startIndex + elementsToRead);
outputData.setAll(elementOffset, output);
} finally {}
}