Skip to content

Commit 5622b01

Browse files
feat: Read from ImageBitmap
Also fixed CPU processing of OffscreenCanvas
1 parent 8a7baba commit 5622b01

16 files changed

+124
-20
lines changed

dist/gpu-browser-core.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
*
55
* GPU Accelerated JavaScript
66
*
7-
* @version 2.12.0
8-
* @date Wed Jan 26 2022 15:33:09 GMT-0500 (Eastern Standard Time)
7+
* @version 2.13.0
8+
* @date Wed Jan 26 2022 16:24:01 GMT-0500 (Eastern Standard Time)
99
*
1010
* @license MIT
1111
* The MIT License
@@ -1614,7 +1614,9 @@ class CPUKernel extends Kernel {
16141614
const type = this.constantTypes[p];
16151615
switch (type) {
16161616
case 'HTMLCanvas':
1617+
case 'OffscreenCanvas':
16171618
case 'HTMLImage':
1619+
case 'ImageBitmap':
16181620
case 'HTMLVideo':
16191621
result.push(` const constants_${p} = this._mediaTo2DArray(this.constants.${p});\n`);
16201622
break;
@@ -1657,7 +1659,9 @@ class CPUKernel extends Kernel {
16571659
const variableName = `user_${this.argumentNames[i]}`;
16581660
switch (this.argumentTypes[i]) {
16591661
case 'HTMLCanvas':
1662+
case 'OffscreenCanvas':
16601663
case 'HTMLImage':
1664+
case 'ImageBitmap':
16611665
case 'HTMLVideo':
16621666
result.push(` ${variableName} = this._mediaTo2DArray(${variableName});\n`);
16631667
break;
@@ -3875,6 +3879,7 @@ const typeLookupMap = {
38753879
'HTMLCanvas': 'Array(4)',
38763880
'OffscreenCanvas': 'Array(4)',
38773881
'HTMLImage': 'Array(4)',
3882+
'ImageBitmap': 'Array(4)',
38783883
'HTMLVideo': 'Array(4)',
38793884
'HTMLImageArray': 'Array(4)',
38803885
'NumberTexture': 'Number',
@@ -8351,6 +8356,7 @@ class WebGLFunctionNode extends FunctionNode {
83518356
case 'HTMLCanvas':
83528357
case 'OffscreenCanvas':
83538358
case 'HTMLImage':
8359+
case 'ImageBitmap':
83548360
case 'HTMLVideo':
83558361
retArr.push(`getVec4FromSampler2D(${ markupName }, ${ markupName }Size, ${ markupName }Dim, `);
83568362
this.memberExpressionXYZ(xProperty, yProperty, zProperty, retArr);
@@ -8745,6 +8751,7 @@ const kernelValueMaps = {
87458751
'HTMLCanvas': WebGLKernelValueDynamicHTMLImage,
87468752
'OffscreenCanvas': WebGLKernelValueDynamicHTMLImage,
87478753
'HTMLImage': WebGLKernelValueDynamicHTMLImage,
8754+
'ImageBitmap': WebGLKernelValueDynamicHTMLImage,
87488755
'HTMLImageArray': false,
87498756
'HTMLVideo': WebGLKernelValueDynamicHTMLVideo,
87508757
},
@@ -8775,6 +8782,7 @@ const kernelValueMaps = {
87758782
'HTMLCanvas': WebGLKernelValueHTMLImage,
87768783
'OffscreenCanvas': WebGLKernelValueHTMLImage,
87778784
'HTMLImage': WebGLKernelValueHTMLImage,
8785+
'ImageBitmap': WebGLKernelValueHTMLImage,
87788786
'HTMLImageArray': false,
87798787
'HTMLVideo': WebGLKernelValueHTMLVideo,
87808788
}
@@ -8807,6 +8815,7 @@ const kernelValueMaps = {
88078815
'HTMLCanvas': WebGLKernelValueDynamicHTMLImage,
88088816
'OffscreenCanvas': WebGLKernelValueDynamicHTMLImage,
88098817
'HTMLImage': WebGLKernelValueDynamicHTMLImage,
8818+
'ImageBitmap': WebGLKernelValueDynamicHTMLImage,
88108819
'HTMLImageArray': false,
88118820
'HTMLVideo': WebGLKernelValueDynamicHTMLVideo,
88128821
},
@@ -8837,6 +8846,7 @@ const kernelValueMaps = {
88378846
'HTMLCanvas': WebGLKernelValueHTMLImage,
88388847
'OffscreenCanvas': WebGLKernelValueHTMLImage,
88398848
'HTMLImage': WebGLKernelValueHTMLImage,
8849+
'ImageBitmap': WebGLKernelValueHTMLImage,
88408850
'HTMLImageArray': false,
88418851
'HTMLVideo': WebGLKernelValueHTMLVideo,
88428852
}
@@ -12030,6 +12040,7 @@ const kernelValueMaps = {
1203012040
'HTMLCanvas': WebGL2KernelValueDynamicHTMLImage,
1203112041
'OffscreenCanvas': WebGL2KernelValueDynamicHTMLImage,
1203212042
'HTMLImage': WebGL2KernelValueDynamicHTMLImage,
12043+
'ImageBitmap': WebGL2KernelValueDynamicHTMLImage,
1203312044
'HTMLImageArray': WebGL2KernelValueDynamicHTMLImageArray,
1203412045
'HTMLVideo': WebGL2KernelValueDynamicHTMLVideo,
1203512046
},
@@ -12060,6 +12071,7 @@ const kernelValueMaps = {
1206012071
'HTMLCanvas': WebGL2KernelValueHTMLImage,
1206112072
'OffscreenCanvas': WebGL2KernelValueHTMLImage,
1206212073
'HTMLImage': WebGL2KernelValueHTMLImage,
12074+
'ImageBitmap': WebGL2KernelValueHTMLImage,
1206312075
'HTMLImageArray': WebGL2KernelValueHTMLImageArray,
1206412076
'HTMLVideo': WebGL2KernelValueHTMLVideo,
1206512077
}
@@ -12092,6 +12104,7 @@ const kernelValueMaps = {
1209212104
'HTMLCanvas': WebGL2KernelValueDynamicHTMLImage,
1209312105
'OffscreenCanvas': WebGL2KernelValueDynamicHTMLImage,
1209412106
'HTMLImage': WebGL2KernelValueDynamicHTMLImage,
12107+
'ImageBitmap': WebGL2KernelValueDynamicHTMLImage,
1209512108
'HTMLImageArray': WebGL2KernelValueDynamicHTMLImageArray,
1209612109
'HTMLVideo': WebGL2KernelValueDynamicHTMLVideo,
1209712110
},
@@ -12122,6 +12135,7 @@ const kernelValueMaps = {
1212212135
'HTMLCanvas': WebGL2KernelValueHTMLImage,
1212312136
'OffscreenCanvas': WebGL2KernelValueHTMLImage,
1212412137
'HTMLImage': WebGL2KernelValueHTMLImage,
12138+
'ImageBitmap': WebGL2KernelValueHTMLImage,
1212512139
'HTMLImageArray': WebGL2KernelValueHTMLImageArray,
1212612140
'HTMLVideo': WebGL2KernelValueHTMLVideo,
1212712141
}
@@ -14241,6 +14255,8 @@ const utils = {
1424114255
return 'Input';
1424214256
case OffscreenCanvas:
1424314257
return 'OffscreenCanvas';
14258+
case ImageBitmap:
14259+
return 'ImageBitmap';
1424414260
}
1424514261
switch (value.nodeName) {
1424614262
case 'IMG':

dist/gpu-browser-core.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/gpu-browser.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
*
55
* GPU Accelerated JavaScript
66
*
7-
* @version 2.12.0
8-
* @date Wed Jan 26 2022 15:33:09 GMT-0500 (Eastern Standard Time)
7+
* @version 2.13.0
8+
* @date Wed Jan 26 2022 16:24:01 GMT-0500 (Eastern Standard Time)
99
*
1010
* @license MIT
1111
* The MIT License
@@ -6067,7 +6067,9 @@ class CPUKernel extends Kernel {
60676067
const type = this.constantTypes[p];
60686068
switch (type) {
60696069
case 'HTMLCanvas':
6070+
case 'OffscreenCanvas':
60706071
case 'HTMLImage':
6072+
case 'ImageBitmap':
60716073
case 'HTMLVideo':
60726074
result.push(` const constants_${p} = this._mediaTo2DArray(this.constants.${p});\n`);
60736075
break;
@@ -6110,7 +6112,9 @@ class CPUKernel extends Kernel {
61106112
const variableName = `user_${this.argumentNames[i]}`;
61116113
switch (this.argumentTypes[i]) {
61126114
case 'HTMLCanvas':
6115+
case 'OffscreenCanvas':
61136116
case 'HTMLImage':
6117+
case 'ImageBitmap':
61146118
case 'HTMLVideo':
61156119
result.push(` ${variableName} = this._mediaTo2DArray(${variableName});\n`);
61166120
break;
@@ -8328,6 +8332,7 @@ const typeLookupMap = {
83288332
'HTMLCanvas': 'Array(4)',
83298333
'OffscreenCanvas': 'Array(4)',
83308334
'HTMLImage': 'Array(4)',
8335+
'ImageBitmap': 'Array(4)',
83318336
'HTMLVideo': 'Array(4)',
83328337
'HTMLImageArray': 'Array(4)',
83338338
'NumberTexture': 'Number',
@@ -12804,6 +12809,7 @@ class WebGLFunctionNode extends FunctionNode {
1280412809
case 'HTMLCanvas':
1280512810
case 'OffscreenCanvas':
1280612811
case 'HTMLImage':
12812+
case 'ImageBitmap':
1280712813
case 'HTMLVideo':
1280812814
retArr.push(`getVec4FromSampler2D(${ markupName }, ${ markupName }Size, ${ markupName }Dim, `);
1280912815
this.memberExpressionXYZ(xProperty, yProperty, zProperty, retArr);
@@ -13198,6 +13204,7 @@ const kernelValueMaps = {
1319813204
'HTMLCanvas': WebGLKernelValueDynamicHTMLImage,
1319913205
'OffscreenCanvas': WebGLKernelValueDynamicHTMLImage,
1320013206
'HTMLImage': WebGLKernelValueDynamicHTMLImage,
13207+
'ImageBitmap': WebGLKernelValueDynamicHTMLImage,
1320113208
'HTMLImageArray': false,
1320213209
'HTMLVideo': WebGLKernelValueDynamicHTMLVideo,
1320313210
},
@@ -13228,6 +13235,7 @@ const kernelValueMaps = {
1322813235
'HTMLCanvas': WebGLKernelValueHTMLImage,
1322913236
'OffscreenCanvas': WebGLKernelValueHTMLImage,
1323013237
'HTMLImage': WebGLKernelValueHTMLImage,
13238+
'ImageBitmap': WebGLKernelValueHTMLImage,
1323113239
'HTMLImageArray': false,
1323213240
'HTMLVideo': WebGLKernelValueHTMLVideo,
1323313241
}
@@ -13260,6 +13268,7 @@ const kernelValueMaps = {
1326013268
'HTMLCanvas': WebGLKernelValueDynamicHTMLImage,
1326113269
'OffscreenCanvas': WebGLKernelValueDynamicHTMLImage,
1326213270
'HTMLImage': WebGLKernelValueDynamicHTMLImage,
13271+
'ImageBitmap': WebGLKernelValueDynamicHTMLImage,
1326313272
'HTMLImageArray': false,
1326413273
'HTMLVideo': WebGLKernelValueDynamicHTMLVideo,
1326513274
},
@@ -13290,6 +13299,7 @@ const kernelValueMaps = {
1329013299
'HTMLCanvas': WebGLKernelValueHTMLImage,
1329113300
'OffscreenCanvas': WebGLKernelValueHTMLImage,
1329213301
'HTMLImage': WebGLKernelValueHTMLImage,
13302+
'ImageBitmap': WebGLKernelValueHTMLImage,
1329313303
'HTMLImageArray': false,
1329413304
'HTMLVideo': WebGLKernelValueHTMLVideo,
1329513305
}
@@ -16483,6 +16493,7 @@ const kernelValueMaps = {
1648316493
'HTMLCanvas': WebGL2KernelValueDynamicHTMLImage,
1648416494
'OffscreenCanvas': WebGL2KernelValueDynamicHTMLImage,
1648516495
'HTMLImage': WebGL2KernelValueDynamicHTMLImage,
16496+
'ImageBitmap': WebGL2KernelValueDynamicHTMLImage,
1648616497
'HTMLImageArray': WebGL2KernelValueDynamicHTMLImageArray,
1648716498
'HTMLVideo': WebGL2KernelValueDynamicHTMLVideo,
1648816499
},
@@ -16513,6 +16524,7 @@ const kernelValueMaps = {
1651316524
'HTMLCanvas': WebGL2KernelValueHTMLImage,
1651416525
'OffscreenCanvas': WebGL2KernelValueHTMLImage,
1651516526
'HTMLImage': WebGL2KernelValueHTMLImage,
16527+
'ImageBitmap': WebGL2KernelValueHTMLImage,
1651616528
'HTMLImageArray': WebGL2KernelValueHTMLImageArray,
1651716529
'HTMLVideo': WebGL2KernelValueHTMLVideo,
1651816530
}
@@ -16545,6 +16557,7 @@ const kernelValueMaps = {
1654516557
'HTMLCanvas': WebGL2KernelValueDynamicHTMLImage,
1654616558
'OffscreenCanvas': WebGL2KernelValueDynamicHTMLImage,
1654716559
'HTMLImage': WebGL2KernelValueDynamicHTMLImage,
16560+
'ImageBitmap': WebGL2KernelValueDynamicHTMLImage,
1654816561
'HTMLImageArray': WebGL2KernelValueDynamicHTMLImageArray,
1654916562
'HTMLVideo': WebGL2KernelValueDynamicHTMLVideo,
1655016563
},
@@ -16575,6 +16588,7 @@ const kernelValueMaps = {
1657516588
'HTMLCanvas': WebGL2KernelValueHTMLImage,
1657616589
'OffscreenCanvas': WebGL2KernelValueHTMLImage,
1657716590
'HTMLImage': WebGL2KernelValueHTMLImage,
16591+
'ImageBitmap': WebGL2KernelValueHTMLImage,
1657816592
'HTMLImageArray': WebGL2KernelValueHTMLImageArray,
1657916593
'HTMLVideo': WebGL2KernelValueHTMLVideo,
1658016594
}
@@ -18694,6 +18708,8 @@ const utils = {
1869418708
return 'Input';
1869518709
case OffscreenCanvas:
1869618710
return 'OffscreenCanvas';
18711+
case ImageBitmap:
18712+
return 'ImageBitmap';
1869718713
}
1869818714
switch (value.nodeName) {
1869918715
case 'IMG':

dist/gpu-browser.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gpu.js",
3-
"version": "2.12.0",
3+
"version": "2.13.0",
44
"description": "GPU Accelerated JavaScript",
55
"engines": {
66
"node": ">=8.0.0"

src/backend/cpu/kernel.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,9 @@ class CPUKernel extends Kernel {
266266
const type = this.constantTypes[p];
267267
switch (type) {
268268
case 'HTMLCanvas':
269+
case 'OffscreenCanvas':
269270
case 'HTMLImage':
271+
case 'ImageBitmap':
270272
case 'HTMLVideo':
271273
result.push(` const constants_${p} = this._mediaTo2DArray(this.constants.${p});\n`);
272274
break;
@@ -309,7 +311,9 @@ class CPUKernel extends Kernel {
309311
const variableName = `user_${this.argumentNames[i]}`;
310312
switch (this.argumentTypes[i]) {
311313
case 'HTMLCanvas':
314+
case 'OffscreenCanvas':
312315
case 'HTMLImage':
316+
case 'ImageBitmap':
313317
case 'HTMLVideo':
314318
result.push(` ${variableName} = this._mediaTo2DArray(${variableName});\n`);
315319
break;

src/backend/function-node.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,6 +1472,7 @@ const typeLookupMap = {
14721472
'HTMLCanvas': 'Array(4)',
14731473
'OffscreenCanvas': 'Array(4)',
14741474
'HTMLImage': 'Array(4)',
1475+
'ImageBitmap': 'Array(4)',
14751476
'HTMLVideo': 'Array(4)',
14761477
'HTMLImageArray': 'Array(4)',
14771478
'NumberTexture': 'Number',

src/backend/web-gl/function-node.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1250,6 +1250,7 @@ class WebGLFunctionNode extends FunctionNode {
12501250
case 'HTMLCanvas':
12511251
case 'OffscreenCanvas':
12521252
case 'HTMLImage':
1253+
case 'ImageBitmap':
12531254
case 'HTMLVideo':
12541255
retArr.push(`getVec4FromSampler2D(${ markupName }, ${ markupName }Size, ${ markupName }Dim, `);
12551256
this.memberExpressionXYZ(xProperty, yProperty, zProperty, retArr);
@@ -1465,7 +1466,9 @@ class WebGLFunctionNode extends FunctionNode {
14651466
}
14661467
break;
14671468
case 'HTMLCanvas':
1469+
case 'OffscreenCanvas':
14681470
case 'HTMLImage':
1471+
case 'ImageBitmap':
14691472
case 'HTMLImageArray':
14701473
case 'HTMLVideo':
14711474
case 'ArrayTexture(1)':
@@ -1584,7 +1587,9 @@ const typeMap = {
15841587
'ArrayTexture(4)': 'sampler2D',
15851588
'HTMLVideo': 'sampler2D',
15861589
'HTMLCanvas': 'sampler2D',
1590+
'OffscreenCanvas': 'sampler2D',
15871591
'HTMLImage': 'sampler2D',
1592+
'ImageBitmap': 'sampler2D',
15881593
'HTMLImageArray': 'sampler2DArray',
15891594
};
15901595

@@ -1595,4 +1600,4 @@ const operatorMap = {
15951600

15961601
module.exports = {
15971602
WebGLFunctionNode
1598-
};
1603+
};

src/backend/web-gl/kernel-value-maps.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ const kernelValueMaps = {
6868
'HTMLCanvas': WebGLKernelValueDynamicHTMLImage,
6969
'OffscreenCanvas': WebGLKernelValueDynamicHTMLImage,
7070
'HTMLImage': WebGLKernelValueDynamicHTMLImage,
71+
'ImageBitmap': WebGLKernelValueDynamicHTMLImage,
7172
'HTMLImageArray': false,
7273
'HTMLVideo': WebGLKernelValueDynamicHTMLVideo,
7374
},
@@ -98,6 +99,7 @@ const kernelValueMaps = {
9899
'HTMLCanvas': WebGLKernelValueHTMLImage,
99100
'OffscreenCanvas': WebGLKernelValueHTMLImage,
100101
'HTMLImage': WebGLKernelValueHTMLImage,
102+
'ImageBitmap': WebGLKernelValueHTMLImage,
101103
'HTMLImageArray': false,
102104
'HTMLVideo': WebGLKernelValueHTMLVideo,
103105
}
@@ -130,6 +132,7 @@ const kernelValueMaps = {
130132
'HTMLCanvas': WebGLKernelValueDynamicHTMLImage,
131133
'OffscreenCanvas': WebGLKernelValueDynamicHTMLImage,
132134
'HTMLImage': WebGLKernelValueDynamicHTMLImage,
135+
'ImageBitmap': WebGLKernelValueDynamicHTMLImage,
133136
'HTMLImageArray': false,
134137
'HTMLVideo': WebGLKernelValueDynamicHTMLVideo,
135138
},
@@ -160,6 +163,7 @@ const kernelValueMaps = {
160163
'HTMLCanvas': WebGLKernelValueHTMLImage,
161164
'OffscreenCanvas': WebGLKernelValueHTMLImage,
162165
'HTMLImage': WebGLKernelValueHTMLImage,
166+
'ImageBitmap': WebGLKernelValueHTMLImage,
163167
'HTMLImageArray': false,
164168
'HTMLVideo': WebGLKernelValueHTMLVideo,
165169
}

src/backend/web-gl2/kernel-value-maps.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ const kernelValueMaps = {
7171
'HTMLCanvas': WebGL2KernelValueDynamicHTMLImage,
7272
'OffscreenCanvas': WebGL2KernelValueDynamicHTMLImage,
7373
'HTMLImage': WebGL2KernelValueDynamicHTMLImage,
74+
'ImageBitmap': WebGL2KernelValueDynamicHTMLImage,
7475
'HTMLImageArray': WebGL2KernelValueDynamicHTMLImageArray,
7576
'HTMLVideo': WebGL2KernelValueDynamicHTMLVideo,
7677
},
@@ -101,6 +102,7 @@ const kernelValueMaps = {
101102
'HTMLCanvas': WebGL2KernelValueHTMLImage,
102103
'OffscreenCanvas': WebGL2KernelValueHTMLImage,
103104
'HTMLImage': WebGL2KernelValueHTMLImage,
105+
'ImageBitmap': WebGL2KernelValueHTMLImage,
104106
'HTMLImageArray': WebGL2KernelValueHTMLImageArray,
105107
'HTMLVideo': WebGL2KernelValueHTMLVideo,
106108
}
@@ -133,6 +135,7 @@ const kernelValueMaps = {
133135
'HTMLCanvas': WebGL2KernelValueDynamicHTMLImage,
134136
'OffscreenCanvas': WebGL2KernelValueDynamicHTMLImage,
135137
'HTMLImage': WebGL2KernelValueDynamicHTMLImage,
138+
'ImageBitmap': WebGL2KernelValueDynamicHTMLImage,
136139
'HTMLImageArray': WebGL2KernelValueDynamicHTMLImageArray,
137140
'HTMLVideo': WebGL2KernelValueDynamicHTMLVideo,
138141
},
@@ -163,6 +166,7 @@ const kernelValueMaps = {
163166
'HTMLCanvas': WebGL2KernelValueHTMLImage,
164167
'OffscreenCanvas': WebGL2KernelValueHTMLImage,
165168
'HTMLImage': WebGL2KernelValueHTMLImage,
169+
'ImageBitmap': WebGL2KernelValueHTMLImage,
166170
'HTMLImageArray': WebGL2KernelValueHTMLImageArray,
167171
'HTMLVideo': WebGL2KernelValueHTMLVideo,
168172
}

0 commit comments

Comments
 (0)