(mode)
| 4 | describe('issue #487 - pipeline dynamic arguments'); |
| 5 | |
| 6 | function testPipelineDynamicArguments(mode) { |
| 7 | const gpu = new GPU({mode: mode}); |
| 8 | |
| 9 | const kernel = gpu.createKernel(function (w) { |
| 10 | return this.thread.x + this.thread.y * w; |
| 11 | }) |
| 12 | .setPipeline(true) |
| 13 | .setDynamicOutput(true); |
| 14 | |
| 15 | const sumRow = gpu.createKernel(function (texture, w) { |
| 16 | let sum = 0; |
| 17 | for (let i = 0; i < w; i++) |
| 18 | sum = sum + texture[this.thread.x][i]; |
| 19 | return sum; |
| 20 | }) |
| 21 | .setDynamicArguments(true) |
| 22 | .setDynamicOutput(true); |
| 23 | |
| 24 | function doAThing(w, h) { |
| 25 | kernel.setOutput([w, h]); |
| 26 | let intermediate = kernel(w); |
| 27 | const array = intermediate.toArray(); |
| 28 | assert.equal(array.length, h); |
| 29 | assert.equal(array[0].length, w); |
| 30 | sumRow.setOutput([h]); |
| 31 | const result = sumRow(intermediate, w); |
| 32 | assert.equal(result.length, h); |
| 33 | assert.equal(result[0].length, undefined); |
| 34 | } |
| 35 | |
| 36 | doAThing(10, 5); |
| 37 | doAThing(3, 2); |
| 38 | gpu.destroy(); |
| 39 | } |
| 40 | |
| 41 | test('(GPU only) auto', () => { |
| 42 | testPipelineDynamicArguments(); |
no test coverage detected
searching dependent graphs…