(mode)
| 255 | }); |
| 256 | |
| 257 | function testMixedNumberTexture(mode) { |
| 258 | const gpu = new GPU({ mode }); |
| 259 | const matrix4X4 = [ |
| 260 | [1,2,3,4], |
| 261 | [5,6,7,8], |
| 262 | [9,10,11,12], |
| 263 | [13,14,15,16], |
| 264 | ]; |
| 265 | const texture4X4 = ( |
| 266 | gpu.createKernel(function(value) { |
| 267 | return value[this.thread.y][this.thread.x]; |
| 268 | }) |
| 269 | .setOutput([4, 4]) |
| 270 | .setPrecision('single') |
| 271 | .setOptimizeFloatMemory(true) |
| 272 | .setPipeline(true) |
| 273 | )(matrix4X4); |
| 274 | |
| 275 | const matrix3X3 = [ |
| 276 | [1,2,3], |
| 277 | [4,5,6], |
| 278 | [7,8,9] |
| 279 | ]; |
| 280 | const texture3X3 = ( |
| 281 | gpu.createKernel(function(value) { |
| 282 | return value[this.thread.y][this.thread.x]; |
| 283 | }) |
| 284 | .setOutput([3, 3]) |
| 285 | .setPrecision('single') |
| 286 | .setOptimizeFloatMemory(true) |
| 287 | .setPipeline(true) |
| 288 | )(matrix3X3); |
| 289 | |
| 290 | const matrix2X2 = [ |
| 291 | [1,2], |
| 292 | [3,4] |
| 293 | ]; |
| 294 | const texture2X2 = ( |
| 295 | gpu.createKernel(function(value) { |
| 296 | return value[this.thread.y][this.thread.x]; |
| 297 | }) |
| 298 | .setOutput([2, 2]) |
| 299 | .setPrecision('single') |
| 300 | .setPipeline(true) |
| 301 | )(matrix2X2); |
| 302 | |
| 303 | const kernel = gpu.createKernel(function(texture) { |
| 304 | return texture[this.thread.y][this.thread.x]; |
| 305 | }) |
| 306 | .setDynamicArguments(true) |
| 307 | .setDynamicOutput(true) |
| 308 | .setOutput([4,4]); |
| 309 | |
| 310 | assert.deepEqual(kernel(texture4X4), [ |
| 311 | new Float32Array([1,2,3,4]), |
| 312 | new Float32Array([5,6,7,8]), |
| 313 | new Float32Array([9,10,11,12]), |
| 314 | new Float32Array([13,14,15,16]), |
no test coverage detected
searching dependent graphs…