fix backend order initialization

pull/356/head
Vladimir Mandic 2021-10-03 08:12:26 -04:00
parent 04e832f512
commit 6bbbeaf452
3 changed files with 20 additions and 11 deletions

View File

@ -135,6 +135,7 @@ async function detect(input) {
} else {
log.data(' Gesture: N/A');
}
if (result && result.object && result.object.length > 0) {
for (let i = 0; i < result.object.length; i++) {
const object = result.object[i];

View File

@ -45,7 +45,7 @@ export async function check(instance, force = false) {
if (!available.includes(instance.config.backend)) {
log(`error: backend ${instance.config.backend} not found in registry`);
instance.config.backend = env.env.node ? 'tensorflow' : 'humangl';
instance.config.backend = env.env.node ? 'tensorflow' : 'webgl';
if (instance.config.debug) log(`override: setting backend ${instance.config.backend}`);
}
@ -83,9 +83,17 @@ export async function check(instance, force = false) {
log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', true);
tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', 0);
}
// @ts-ignore getGPGPUContext only exists on WebGL backend
const gl = await tf.backend().getGPGPUContext().gl;
if (instance.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
if (tf.backend().getGPGPUContext) {
const gl = await tf.backend().getGPGPUContext().gl;
if (instance.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
}
}
// handle webgpu
if (tf.getBackend() === 'humangl') {
tf.ENV.set('WEBGPU_USE_GLSL', true);
tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', false);
tf.ENV.set('WEBGL_USE_SHAPES_UNIFORMS', true);
}
// wait for ready

View File

@ -93,13 +93,6 @@ export async function register(instance): Promise<void> {
log('error: cannot set WebGL context:', err);
return;
}
const current = tf.backend().getGPGPUContext ? tf.backend().getGPGPUContext().gl : null;
if (current) {
log(`humangl webgl version:${current.getParameter(current.VERSION)} renderer:${current.getParameter(current.RENDERER)}`);
} else {
log('error: no current gl context:', current, config.gl);
return;
}
try {
const ctx = new tf.GPGPUContext(config.gl);
tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);
@ -117,6 +110,13 @@ export async function register(instance): Promise<void> {
log('error: cannot update WebGL backend registration:', err);
return;
}
const current = tf.backend().getGPGPUContext ? tf.backend().getGPGPUContext().gl : null;
if (current) {
log(`humangl webgl version:${current.getParameter(current.VERSION)} renderer:${current.getParameter(current.RENDERER)}`);
} else {
log('error: no current gl context:', current, config.gl);
return;
}
try {
tf.ENV.set('WEBGL_VERSION', 2);
} catch (err) {