|
73 | 73 | return tmp; |
74 | 74 | } |
75 | 75 |
|
76 | | - function getArgumentType(arg) { |
77 | | - if (Array.isArray(arg)) { |
78 | | - return 'Array'; |
79 | | - } else if (typeof arg == "number") { |
80 | | - return 'Number'; |
81 | | - } else if (arg instanceof GPUTexture) { |
82 | | - return 'Texture'; |
83 | | - } else { |
84 | | - return 'Unknown'; |
85 | | - } |
86 | | - } |
87 | | - |
88 | 76 | function getProgramCacheKey(args, opt, outputDim) { |
89 | 77 | var key = ''; |
90 | 78 | for (var i=0; i<args.length; i++) { |
91 | | - var argType = getArgumentType(args[i]); |
| 79 | + var argType = GPUUtils.getArgumentType(args[i]); |
92 | 80 | key += argType; |
93 | 81 | if (opt.hardcodeConstants) { |
94 | 82 | var dimensions; |
|
148 | 136 | throw "Auto dimensions only supported for kernels with only one input"; |
149 | 137 | } |
150 | 138 |
|
151 | | - var argType = getArgumentType(arguments[0]); |
| 139 | + var argType = GPUUtils.getArgumentType(arguments[0]); |
152 | 140 | if (argType == "Array") { |
153 | 141 | opt.dimensions = getDimensions(argType); |
154 | 142 | } else if (argType == "Texture") { |
|
193 | 181 |
|
194 | 182 | var paramType = []; |
195 | 183 | for (var i=0; i<paramNames.length; i++) { |
196 | | - var argType = getArgumentType(arguments[i]); |
| 184 | + var argType = GPUUtils.getArgumentType(arguments[i]); |
197 | 185 | paramType.push(argType); |
198 | 186 | if (opt.hardcodeConstants) { |
199 | 187 | if (argType == "Array" || argType == "Texture") { |
|
449 | 437 | var textureCount = 0; |
450 | 438 | for (textureCount=0; textureCount<paramNames.length; textureCount++) { |
451 | 439 | var paramDim, paramSize, texture; |
452 | | - var argType = getArgumentType(arguments[textureCount]); |
| 440 | + var argType = GPUUtils.getArgumentType(arguments[textureCount]); |
453 | 441 | if (argType == "Array") { |
454 | 442 | paramDim = getDimensions(arguments[textureCount], true); |
455 | 443 | paramSize = dimToTexSize(gpu, paramDim); |
|
558 | 546 | } |
559 | 547 | } |
560 | 548 | } |
561 | | - |
562 | | - ret.dimensions = function(dim) { |
563 | | - opt.dimensions = dim; |
564 | | - return ret; |
565 | | - }; |
566 | | - |
567 | | - ret.debug = function(flag) { |
568 | | - opt.debug = flag; |
569 | | - return ret; |
570 | | - }; |
571 | | - |
572 | | - ret.graphical = function(flag) { |
573 | | - opt.graphical = flag; |
574 | | - return ret; |
575 | | - }; |
576 | | - |
577 | | - ret.loopMaxIterations = function(max) { |
578 | | - opt.loopMaxIterations = max; |
579 | | - return ret; |
580 | | - }; |
581 | 549 |
|
582 | | - ret.constants = function(constants) { |
583 | | - opt.constants = constants; |
584 | | - return ret; |
585 | | - }; |
586 | | - |
587 | | - ret.wraparound = function(flag) { |
588 | | - console.warn("Wraparound mode is not supported and undocumented."); |
589 | | - opt.wraparound = flag; |
590 | | - return ret; |
591 | | - }; |
592 | | - |
593 | | - ret.hardcodeConstants = function(flag) { |
594 | | - opt.hardcodeConstants = flag; |
595 | | - return ret; |
596 | | - }; |
597 | | - |
598 | | - ret.outputToTexture = function(flag) { |
599 | | - opt.outputToTexture = flag; |
600 | | - return ret; |
601 | | - }; |
602 | | - |
603 | | - ret.floatTextures = function(flag) { |
604 | | - opt.floatTextures = flag; |
605 | | - return ret; |
606 | | - }; |
607 | | - |
608 | | - ret.mode = function(mode) { |
609 | | - opt.mode = mode; |
610 | | - return gpu.createKernel(kernel, opt); |
611 | | - }; |
612 | | - |
613 | | - ret.getCanvas = function() { |
614 | | - return gpu.getCanvas(); |
615 | | - }; |
616 | | - |
617 | | - return ret; |
| 550 | + return gpu.setupExecutorExtendedFunctions(ret, opt); |
618 | 551 | }; |
619 | 552 |
|
620 | 553 | })(GPU); |
0 commit comments