MCPcopy
hub / github.com/tensorflow/tfjs / releaseBuffer

Method releaseBuffer

tfjs-backend-webgpu/src/buffer_manager.ts:62–88  ·  view source on GitHub ↗
(buffer: GPUBuffer, reuse = true)

Source from the content-addressed store, hash-verified

60 }
61
62 releaseBuffer(buffer: GPUBuffer, reuse = true) {
63 if (this.freeBuffers.size === 0) {
64 return;
65 }
66
67 const size = buffer.size;
68 const usage = buffer.usage;
69
70 const key = getBufferKey(size, usage);
71 const bufferArray = this.usedBuffers.get(key);
72 const index = bufferArray.indexOf(buffer);
73 if (index < 0) {
74 throw new Error('Cannot find the buffer in buffer manager');
75 }
76 bufferArray[index] = bufferArray[bufferArray.length - 1];
77 bufferArray.pop();
78 this.numUsedBuffers--;
79 this.numBytesUsed -= size;
80
81 if (reuse) {
82 this.freeBuffers.get(key).push(buffer);
83 this.numFreeBuffers++;
84 } else {
85 buffer.destroy();
86 this.numBytesAllocated -= size;
87 }
88 }
89
90 getNumUsedBuffers(): number {
91 return this.numUsedBuffers;

Callers 4

releaseResourceMethod · 0.80
submitQueueMethod · 0.80
getBufferDataMethod · 0.80
getQueryTimeMethod · 0.80

Calls 4

getBufferKeyFunction · 0.85
getMethod · 0.45
popMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected