(precision, mode)
| 5 | describe('internal: recycling'); |
| 6 | |
| 7 | function testImmutableKernelTextureRecycling(precision, mode) { |
| 8 | const gpu = new GPU({ mode }); |
| 9 | const kernel = gpu.createKernel(function(v) { |
| 10 | return v[0] + 1; |
| 11 | }, { |
| 12 | output: [1], |
| 13 | pipeline: true, |
| 14 | immutable: true, |
| 15 | precision, |
| 16 | }); |
| 17 | let result = kernel([0]); |
| 18 | const newTextureSpy = sinon.spy(kernel.texture.constructor.prototype, 'newTexture'); |
| 19 | for (let i = 0; i < 10; i++) { |
| 20 | let lastResult = result; |
| 21 | result = kernel(result); |
| 22 | lastResult.delete(); |
| 23 | } |
| 24 | assert.deepEqual(result.toArray(), new Float32Array([11])); |
| 25 | assert.equal(newTextureSpy.callCount, 1); |
| 26 | assert.equal(gpu.kernels.length, 2); |
| 27 | newTextureSpy.restore(); |
| 28 | gpu.destroy(); |
| 29 | } |
| 30 | |
| 31 | test('immutable single precision kernel auto', () => { |
| 32 | testImmutableKernelTextureRecycling('single') |
no test coverage detected
searching dependent graphs…