MCPcopy Index your code
hub / github.com/tensorflow/tfjs / acquireBuffer

Method acquireBuffer

tfjs-backend-webgpu/src/buffer_manager.ts:29–60  ·  view source on GitHub ↗
(
      size: number, usage: GPUBufferUsageFlags, mappedAtCreation = false,
      reuse = true)

Source from the content-addressed store, hash-verified

27 constructor(private device: GPUDevice) {}
28
29 acquireBuffer(
30 size: number, usage: GPUBufferUsageFlags, mappedAtCreation = false,
31 reuse = true) {
32 let buffer;
33 const key = getBufferKey(size, usage);
34
35 if (reuse) {
36 if (!this.freeBuffers.has(key)) {
37 this.freeBuffers.set(key, []);
38 }
39
40 if (this.freeBuffers.get(key).length > 0) {
41 buffer = this.freeBuffers.get(key).pop();
42 this.numFreeBuffers--;
43 } else {
44 buffer = this.device.createBuffer({size, usage, mappedAtCreation});
45 this.numBytesAllocated += size;
46 }
47 } else {
48 buffer = this.device.createBuffer({size, usage, mappedAtCreation});
49 this.numBytesAllocated += size;
50 }
51
52 if (!this.usedBuffers.has(key)) {
53 this.usedBuffers.set(key, []);
54 }
55 this.usedBuffers.get(key).push(buffer);
56 this.numUsedBuffers++;
57 this.numBytesUsed += size;
58
59 return buffer;
60 }
61
62 releaseBuffer(buffer: GPUBuffer, reuse = true) {
63 if (this.freeBuffers.size === 0) {

Callers 6

getBufferDataMethod · 0.80
copyBufferMethod · 0.80
readToGPUMethod · 0.80
uploadToGPUMethod · 0.80
makeUniformsMethod · 0.80
getQueryTimeMethod · 0.80

Calls 6

getBufferKeyFunction · 0.85
hasMethod · 0.80
setMethod · 0.45
getMethod · 0.45
popMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected