(buffer: GPUBuffer, reuse = true)
| 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; |
no test coverage detected