| import { assert } from '../../../../common/util/util.js'; |
| import { AllFeaturesMaxLimitsGPUTest } from '../../../gpu_test.js'; |
| |
| export class MappingTest extends AllFeaturesMaxLimitsGPUTest { |
| checkMapWrite( |
| buffer: GPUBuffer, |
| offset: number, |
| mappedContents: ArrayBuffer, |
| size: number |
| ): void { |
| this.checkMapWriteZeroed(mappedContents, size); |
| |
| const mappedView = new Uint32Array(mappedContents); |
| const expected = new Uint32Array(new ArrayBuffer(size)); |
| assert(mappedView.byteLength === size); |
| for (let i = 0; i < mappedView.length; ++i) { |
| mappedView[i] = expected[i] = i + 1; |
| } |
| buffer.unmap(); |
| |
| this.expectGPUBufferValuesEqual(buffer, expected, offset); |
| } |
| |
| checkMapWriteZeroed(arrayBuffer: ArrayBuffer, expectedSize: number): void { |
| this.expect(arrayBuffer.byteLength === expectedSize); |
| const view = new Uint8Array(arrayBuffer); |
| this.expectZero(view); |
| } |
| |
| expectZero(actual: Uint8Array): void { |
| const size = actual.byteLength; |
| for (let i = 0; i < size; ++i) { |
| if (actual[i] !== 0) { |
| this.fail(`at [${i}], expected zero, got ${actual[i]}`); |
| break; |
| } |
| } |
| } |
| } |