blob: 32110950fcdefde8522cf3e53c8410a2e4934e4f [file] [log] [blame]
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;
}
}
}
}