Skip to content

Commit e778dc1

Browse files
fix: Eliminate need for using decode inside fragment shader
fix: Auto float handling fix: this.texSize from early setting in validateSettings fix: Add compiledFragmentShader and compiledVertexShader as props in kernel feat: Add setOptimizeFloatMemory in kernel.js fix: Add some typings fix: Simplify how dimToTexSize gets dimensions fix: Simplify createKernelMap tests fix: Add utils tests fix: Simplify issue 267 tests fix: Alter issue 279 tests, and add TODO 1 Broken test left
1 parent d068ba2 commit e778dc1

20 files changed

+2369
-1583
lines changed

bin/gpu-browser-core.js

Lines changed: 444 additions & 245 deletions
Large diffs are not rendered by default.

bin/gpu-browser-core.min.js

Lines changed: 445 additions & 246 deletions
Large diffs are not rendered by default.

bin/gpu-browser.js

Lines changed: 444 additions & 245 deletions
Large diffs are not rendered by default.

bin/gpu-browser.min.js

Lines changed: 445 additions & 246 deletions
Large diffs are not rendered by default.

src/backend/function-builder.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ class FunctionBuilder {
119119
plugins,
120120
constants,
121121
constantTypes,
122+
optimizeFloatMemory,
123+
floatOutput,
122124
lookupReturnType,
123125
lookupArgumentType,
124126
lookupFunctionArgumentTypes,

src/backend/gl-kernel.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,8 @@ class GLKernel extends Kernel {
279279
this.fixIntegerDivisionAccuracy = null;
280280
this.translatedSource = null;
281281
this.renderStrategy = null;
282+
this.compiledFragmentShader = null;
283+
this.compiledVertexShader = null;
282284

283285
this.optimizeFloatMemory = null;
284286
}
@@ -578,6 +580,7 @@ class GLKernel extends Kernel {
578580
});
579581
}
580582
readPackedPixelsToUint8Array() {
583+
if (this.floatOutput) throw new Error('Requires this.floatOutput to be false');
581584
const {
582585
texSize,
583586
context: gl
@@ -590,7 +593,7 @@ class GLKernel extends Kernel {
590593
return new Float32Array(this.readPackedPixelsToUint8Array().buffer);
591594
}
592595
readFloatPixelsToFloat32Array() {
593-
if (!this.floatOutput) throw new Error('Requires this.floutOutput');
596+
if (!this.floatOutput) throw new Error('Requires this.floatOutput to be true');
594597
const {
595598
texSize,
596599
context: gl
@@ -602,7 +605,7 @@ class GLKernel extends Kernel {
602605
return result;
603606
}
604607
readMemoryOptimizedFloatPixelsToFloat32Array() {
605-
if (!this.floatOutput) throw new Error('Requires this.floutOutput');
608+
if (!this.floatOutput) throw new Error('Requires this.floatOutput to be true');
606609
const {
607610
texSize,
608611
context: gl
@@ -834,6 +837,12 @@ class GLKernel extends Kernel {
834837
}
835838
return zResults;
836839
}
840+
getArgumentTextureSize() {
841+
842+
}
843+
getOutputTextureSize() {
844+
845+
}
837846
}
838847

839848
const renderStrategy = Object.freeze({

src/backend/kernel.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,16 @@ class Kernel {
261261
}
262262
}
263263

264+
/**
265+
*
266+
* @param flag
267+
* @returns {Kernel}
268+
*/
269+
setOptimizeFloatMemory(flag) {
270+
this.optimizeFloatMemory = flag;
271+
return this;
272+
}
273+
264274
/**
265275
* @desc Set output dimensions of the kernel function
266276
* @param {Array|Object} output - The output array to set the kernel output size to

src/backend/web-gl/fragment-shader.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ float get(sampler2D tex, ivec2 texSize, ivec3 texDim, int bitRatio, int z, int y
119119
int w = texSize.x;
120120
vec2 st = vec2(float(integerMod(index, w)), float(index / w)) + 0.5;
121121
vec4 texel = texture2D(tex, st / vec2(texSize));
122-
return decode(texel, x, bitRatio);
122+
return decode32(texel);
123123
}
124124
125125
float getMemoryOptimized(sampler2D tex, ivec2 texSize, ivec3 texDim, int bitRatio, int z, int y, int x) {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,11 @@ class WebGLFunctionNode extends FunctionNode {
163163
case 'Array(4)':
164164
case 'Array(3)':
165165
case 'Array(2)':
166+
case 'Input':
166167
this.astGeneric(ast.argument, result);
167168
break;
168169
default:
169-
throw this.astErrorOutput(`Unhandled returnType ${ this.returnType }`, ast);
170+
throw this.astErrorOutput(`unhandled return type ${this.returnType}`, ast);
170171
}
171172

172173
if (this.isRootKernel) {
@@ -919,7 +920,7 @@ class WebGLFunctionNode extends FunctionNode {
919920
case 'Array3D':
920921
case 'Array4D':
921922
case 'Input':
922-
if (this.optimizeFloatMemory) {
923+
if (this.floatOutput) {
923924
retArr.push(`getMemoryOptimized(${markupName}, ${markupName}Size, ${markupName}Dim, ${markupName}BitRatio, `);
924925
this.memberExpressionXYZ(xProperty, yProperty, zProperty, retArr);
925926
retArr.push(')');

src/backend/web-gl/kernel-string.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ function webGLKernelString(gpuKernel, name) {
3737
getVariableType: ${ removeNoise(utils.getVariableType.toString()) },
3838
getDimensions: ${ removeNoise(utils.getDimensions.toString()) },
3939
dimToTexSize: ${ removeNoise(utils.dimToTexSize.toString()) },
40+
closestSquareDimensions: ${ removeNoise(utils.closestSquareDimensions.toString()) },
41+
getMemoryOptimizedFloatTextureSize: ${ removeNoise(utils.getMemoryOptimizedFloatTextureSize.toString()) },
42+
roundTo: ${ removeNoise(utils.roundTo.toString()) },
4043
flattenTo: ${ removeNoise(utils.flattenTo.toString()) },
4144
flatten2dArrayTo: ${ removeNoise(utils.flatten2dArrayTo.toString()) },
4245
flatten3dArrayTo: ${ removeNoise(utils.flatten3dArrayTo.toString()) },

0 commit comments

Comments
 (0)