(precision, done, mode)
| 141 | }); |
| 142 | |
| 143 | function testImmutableTextureDelete(precision, done, mode) { |
| 144 | const gpu = new GPU({ mode }); |
| 145 | const kernel = gpu.createKernel(function() { |
| 146 | return this.thread.x; |
| 147 | }, { |
| 148 | output: [1], |
| 149 | pipeline: true, |
| 150 | immutable: true, |
| 151 | precision, |
| 152 | }); |
| 153 | const result = kernel(); |
| 154 | assert.equal(result.texture._refs, 2); |
| 155 | const clone1 = result.clone(); |
| 156 | assert.equal(result.texture._refs, 3); |
| 157 | const clone2 = result.clone(); |
| 158 | assert.equal(result.texture._refs, 4); |
| 159 | const clone3 = result.clone(); |
| 160 | assert.equal(result.texture._refs, 5); |
| 161 | const clone4 = result.clone(); |
| 162 | assert.equal(result.texture._refs, 6); |
| 163 | const clone5 = result.clone(); |
| 164 | assert.equal(result.texture._refs, 7); |
| 165 | |
| 166 | clone1.delete(); |
| 167 | assert.equal(result.texture._refs, 6); |
| 168 | clone2.delete(); |
| 169 | assert.equal(result.texture._refs, 5); |
| 170 | clone3.delete(); |
| 171 | assert.equal(result.texture._refs, 4); |
| 172 | clone4.delete(); |
| 173 | assert.equal(result.texture._refs, 3); |
| 174 | clone5.delete(); |
| 175 | assert.equal(result.texture._refs, 2); |
| 176 | result.delete(); |
| 177 | assert.equal(result.texture._refs, 1); |
| 178 | const spy = sinon.spy(kernel.kernel.context, 'deleteTexture'); |
| 179 | gpu.destroy() |
| 180 | .then(() => { |
| 181 | assert.equal(result.texture._refs, 0); |
| 182 | assert.equal(spy.callCount, 1); |
| 183 | assert.ok(spy.calledWith(result.texture)); |
| 184 | spy.restore(); |
| 185 | done(); |
| 186 | }); |
| 187 | } |
| 188 | |
| 189 | test('immutable single precision texture delete auto', t => { |
| 190 | testImmutableTextureDelete('single', t.async()); |
no test coverage detected
searching dependent graphs…