Skip to content

Commit 0ce4a6a

Browse files
committed
Revert "Create an internal buffer for each external buffer"
This reverts commit 80b53bc.
1 parent 80b53bc commit 0ce4a6a

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

js/web/lib/wasm/jsep/webgpu/gpu-data-manager.ts

+12-15
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class GpuDataManagerImpl implements GpuDataManager {
143143
private freeUniformBuffers: Map<number, GPUBuffer[]>;
144144

145145
// The external buffers registered users for IO Binding.
146-
private externalBuffers: Map<GPUBuffer, [GpuDataId, GpuDataId]>;
146+
private externalBuffers: Map<GPUBuffer, GpuDataId>;
147147

148148
// The pendingBuffers for capture graph.
149149
// a SessionID -> GPUBuffer[] mapping.
@@ -219,41 +219,38 @@ class GpuDataManagerImpl implements GpuDataManager {
219219
}
220220

221221
registerExternalBuffer(buffer: GPUBuffer, originalSize: number, previousBuffer?: GPUBuffer): number {
222+
let id: number|undefined;
222223
if (previousBuffer) {
223-
const ids = this.externalBuffers.get(previousBuffer);
224-
if (ids === undefined) {
224+
id = this.externalBuffers.get(previousBuffer);
225+
if (id === undefined) {
225226
throw new Error('previous buffer is not registered');
226227
}
227228
if (buffer === previousBuffer) {
228229
LOG_DEBUG(
229230
'verbose',
230231
() => `[WebGPU] GpuDataManager.registerExternalBuffer(size=${originalSize}) => id=${
231-
ids[0]}, buffer is the same, skip.`);
232-
return ids[1];
232+
id}, buffer is the same, skip.`);
233+
return id;
233234
}
234235
this.externalBuffers.delete(previousBuffer);
236+
} else {
237+
id = createNewGpuDataId();
235238
}
236239

237-
const id = createNewGpuDataId();
238240
this.storageCache.set(id, {gpuData: {id, type: GpuDataType.default, buffer}, originalSize});
241+
this.externalBuffers.set(buffer, id);
239242
LOG_DEBUG(
240243
'verbose',
241244
() => `[WebGPU] GpuDataManager.registerExternalBuffer(size=${originalSize}) => id=${id}, registered.`);
242-
243-
// copy the externl data to an internal gpu buffer.
244-
const internalGpuData = this.create(originalSize);
245-
const internalId = internalGpuData.id;
246-
this.memcpy(id, internalId);
247-
this.externalBuffers.set(buffer, [id, internalId]);
248-
return internalId;
245+
return id;
249246
}
250247

251248
unregisterExternalBuffer(buffer: GPUBuffer): void {
252249
const id = this.externalBuffers.get(buffer);
253250
if (id !== undefined) {
254-
this.storageCache.delete(id[0]);
251+
this.storageCache.delete(id);
255252
this.externalBuffers.delete(buffer);
256-
LOG_DEBUG('verbose', () => `[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${id[0]}`);
253+
LOG_DEBUG('verbose', () => `[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${id}`);
257254
}
258255
}
259256

0 commit comments

Comments
 (0)