Skip to content

Commit 2f3b68c

Browse files
committed
Fix cache files being padded with trailing 0's
buffer() was offseting the array instead of truncating the returned array.
1 parent cb5b33c commit 2f3b68c

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

src/unittests/serialization.spec.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ g.test('value').fn(t => {
209209
]) {
210210
const s = new BinaryStream(new Uint8Array(1024).buffer);
211211
serializeValue(s, value);
212-
const d = new BinaryStream(s.buffer());
212+
const d = new BinaryStream(s.buffer().buffer);
213213
const deserialized = deserializeValue(d);
214214
t.expect(
215215
objectEquals(value, deserialized),
@@ -246,7 +246,7 @@ g.test('fpinterval_f32').fn(t => {
246246
]) {
247247
const s = new BinaryStream(new Uint8Array(1024).buffer);
248248
serializeFPInterval(s, interval);
249-
const d = new BinaryStream(s.buffer());
249+
const d = new BinaryStream(s.buffer().buffer);
250250
const deserialized = deserializeFPInterval(d);
251251
t.expect(
252252
objectEquals(interval, deserialized),
@@ -282,7 +282,7 @@ g.test('fpinterval_f16').fn(t => {
282282
]) {
283283
const s = new BinaryStream(new Uint8Array(1024).buffer);
284284
serializeFPInterval(s, interval);
285-
const d = new BinaryStream(s.buffer());
285+
const d = new BinaryStream(s.buffer().buffer);
286286
const deserialized = deserializeFPInterval(d);
287287
t.expect(
288288
objectEquals(interval, deserialized),
@@ -318,7 +318,7 @@ g.test('fpinterval_abstract').fn(t => {
318318
]) {
319319
const s = new BinaryStream(new Uint8Array(1024).buffer);
320320
serializeFPInterval(s, interval);
321-
const d = new BinaryStream(s.buffer());
321+
const d = new BinaryStream(s.buffer().buffer);
322322
const deserialized = deserializeFPInterval(d);
323323
t.expect(
324324
objectEquals(interval, deserialized),
@@ -340,7 +340,7 @@ g.test('expression_expectation').fn(t => {
340340
]) {
341341
const s = new BinaryStream(new Uint8Array(1024).buffer);
342342
serializeExpectation(s, expectation);
343-
const d = new BinaryStream(s.buffer());
343+
const d = new BinaryStream(s.buffer().buffer);
344344
const deserialized = deserializeExpectation(d);
345345
t.expect(
346346
objectEquals(expectation, deserialized),
@@ -370,7 +370,7 @@ g.test('anyOf').fn(t => {
370370
]) {
371371
const s = new BinaryStream(new Uint8Array(1024).buffer);
372372
serializeComparator(s, c.comparator);
373-
const d = new BinaryStream(s.buffer());
373+
const d = new BinaryStream(s.buffer().buffer);
374374
const deserialized = deserializeComparator(d);
375375
for (const val of c.testCases) {
376376
const got = deserialized.compare(val);
@@ -398,7 +398,7 @@ g.test('skipUndefined').fn(t => {
398398
]) {
399399
const s = new BinaryStream(new Uint8Array(1024).buffer);
400400
serializeComparator(s, c.comparator);
401-
const d = new BinaryStream(s.buffer());
401+
const d = new BinaryStream(s.buffer().buffer);
402402
const deserialized = deserializeComparator(d);
403403
for (const val of c.testCases) {
404404
const got = deserialized.compare(val);

src/webgpu/shader/execution/expression/case_cache.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,13 @@ export class CaseCache implements Cacheable<Record<string, CaseList>> {
166166
*/
167167
serialize(data: Record<string, CaseList>): Uint8Array {
168168
const maxSize = 32 << 20; // 32MB - max size for a file
169-
const s = new BinaryStream(new Uint8Array(maxSize).buffer);
170-
s.writeU32(Object.keys(data).length);
169+
const stream = new BinaryStream(new ArrayBuffer(maxSize));
170+
stream.writeU32(Object.keys(data).length);
171171
for (const name in data) {
172-
s.writeString(name);
173-
s.writeArray(data[name], serializeCase);
172+
stream.writeString(name);
173+
stream.writeArray(data[name], serializeCase);
174174
}
175-
return new Uint8Array(s.buffer());
175+
return stream.buffer();
176176
}
177177

178178
/**

src/webgpu/util/binary_stream.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ export default class BinaryStream {
1919
}
2020

2121
/** buffer() returns the stream's buffer sliced to the 8-byte rounded read or write offset */
22-
buffer(): ArrayBufferLike {
23-
return new Uint8Array(this.view.buffer, align(this.offset, 8)).buffer;
22+
buffer(): Uint8Array {
23+
return new Uint8Array(this.view.buffer, 0, align(this.offset, 8));
2424
}
2525

2626
/** writeBool() writes a boolean as 255 or 0 to the buffer at the next byte offset */

0 commit comments

Comments
 (0)