mirror of
https://github.com/gpujs/gpu.js.git
synced 2026-01-18 16:04:10 +00:00
53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
(function() {
|
|
var gpu = null;
|
|
function combineKernels(mode) {
|
|
gpu = new GPU({ mode: mode });
|
|
|
|
var kernel1 = gpu.createKernel(function(a, b) {
|
|
return a[this.thread.x] + b[this.thread.x];
|
|
}, { output: [5] });
|
|
|
|
var kernel2 = gpu.createKernel(function(c, d) {
|
|
return c[this.thread.x] * d[this.thread.x];
|
|
}, { output: [5] });
|
|
|
|
return gpu.combineKernels(kernel1, kernel2, function(array1, array2, array3) {
|
|
return kernel2(kernel1(array1, array2), array3);
|
|
});
|
|
}
|
|
|
|
QUnit.test( "combineKernels (auto)", function() {
|
|
var superKernel = combineKernels(null);
|
|
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
|
|
QUnit.assert.deepValueEqual(result, [2, 8, 18, 32, 50]);
|
|
gpu.destroy();
|
|
});
|
|
|
|
QUnit.test( "combineKernels (gpu)", function() {
|
|
var superKernel = combineKernels('webgl');
|
|
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
|
|
QUnit.assert.deepValueEqual(result, [2, 8, 18, 32, 50]);
|
|
gpu.destroy();
|
|
});
|
|
|
|
QUnit.test( "combineKernels (webgl)", function() {
|
|
var superKernel = combineKernels('webgl');
|
|
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
|
|
QUnit.assert.deepValueEqual(result, [2, 8, 18, 32, 50]);
|
|
gpu.destroy();
|
|
});
|
|
|
|
QUnit.test( "combineKernels (webgl2)", function() {
|
|
var superKernel = combineKernels('webgl2');
|
|
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
|
|
QUnit.assert.deepValueEqual(result, [2, 8, 18, 32, 50]);
|
|
gpu.destroy();
|
|
});
|
|
|
|
QUnit.test( "combineKernels (cpu)", function() {
|
|
var superKernel = combineKernels('cpu');
|
|
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
|
|
QUnit.assert.deepValueEqual(result, [2, 8, 18, 32, 50]);
|
|
gpu.destroy();
|
|
});
|
|
})(); |