(kernelString)
| 550 | } |
| 551 | |
| 552 | _resultImmutableKernel3DLoop(kernelString) { |
| 553 | const constructorString = this._getKernelResultTypeConstructorString(); |
| 554 | return ` const outputX = _this.output[0]; |
| 555 | const outputY = _this.output[1]; |
| 556 | const outputZ = _this.output[2]; |
| 557 | const result = new Array(outputZ); |
| 558 | ${ this._mapSubKernels(subKernel => `const result_${ subKernel.name } = new Array(outputZ);\n`).join(' ') } |
| 559 | ${ this._mapSubKernels(subKernel => `let subKernelResult_${ subKernel.name };\n`).join(' ') } |
| 560 | for (let z = 0; z < outputZ; z++) { |
| 561 | this.thread.z = z; |
| 562 | const resultY = result[z] = new Array(outputY); |
| 563 | ${ this._mapSubKernels(subKernel => `const resultY_${ subKernel.name } = result_${subKernel.name}[z] = new Array(outputY);\n`).join(' ') } |
| 564 | for (let y = 0; y < outputY; y++) { |
| 565 | this.thread.y = y; |
| 566 | const resultX = resultY[y] = new ${constructorString}(outputX); |
| 567 | ${ this._mapSubKernels(subKernel => `const resultX_${ subKernel.name } = resultY_${subKernel.name}[y] = new ${constructorString}(outputX);\n`).join(' ') } |
| 568 | for (let x = 0; x < outputX; x++) { |
| 569 | this.thread.x = x; |
| 570 | ${ kernelString } |
| 571 | } |
| 572 | } |
| 573 | }`; |
| 574 | } |
| 575 | |
| 576 | _mutableKernel3DResults() { |
| 577 | const constructorString = this._getKernelResultTypeConstructorString(); |
no test coverage detected