Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 1x 1x 1x 1x | import global from '../global'; import { getShouldUseSharedArrayBuffer } from '../init'; /** * A helper function that creates a new Float32Array that utilized a shared * array buffer. This allows the array to be updated simultaneously in * workers or the main thread. Depending on the system (the CPU, the OS, the Browser) * it can take a while until the change is propagated to all contexts. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer|MDN: SharedArrayBuffer} * @remarks * We use SharedArrayBuffers in our ImageCache class. It's what allows us to * stream data to build a volume. It's important to note that SharedArrayBuffer * does not work out of the box for all web browsers. In some, it is disabled * behind a flag; in others, it has been removed entirely. * * @example * Creating an array for a Volume with known dimensions: * ``` * const dimensions = [512, 512, 25]; * const scalarData = createUint8SharedArray(dimensions[0] * dimensions[1] * dimensions[2]); * ``` * * @param length - frame size * number of frames * @returns a Uint8Array with an underlying SharedArrayBuffer * @public */ function createUint8SharedArray(length: number): Uint8Array { Iif (!getShouldUseSharedArrayBuffer()) { throw new Error( 'Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated' ); } Iif (window.SharedArrayBuffer === undefined) { throw new Error( 'SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/' ); } const sharedArrayBuffer = new SharedArrayBuffer(length); return new Uint8Array(sharedArrayBuffer); } export default createUint8SharedArray; |