From 753f5684f1703f1a9befc9d630d237069c4ed85a Mon Sep 17 00:00:00 2001 From: Frank Weindel <6070611+frank-weindel@users.noreply.github.com> Date: Tue, 5 Dec 2023 14:08:04 -0500 Subject: [PATCH 1/5] Perf: Pause RAF loop when there are no updates Co-authored-by: Wouter lucas van Boesschoten --- src/core/platform.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/platform.ts b/src/core/platform.ts index 76346856..43206954 100644 --- a/src/core/platform.ts +++ b/src/core/platform.ts @@ -26,6 +26,11 @@ export const startLoop = (stage: Stage) => { const runLoop = () => { stage.updateAnimations(); + if (!stage.hasSceneUpdates()) { + setTimeout(runLoop, 1000 / 60); + return; + } + stage.drawFrame(); requestAnimationFrame(runLoop); }; From 96b1692f710450cb9da56335365c7cb6f79143df Mon Sep 17 00:00:00 2001 From: Frank Weindel <6070611+frank-weindel@users.noreply.github.com> Date: Mon, 11 Dec 2023 22:39:47 -0500 Subject: [PATCH 2/5] Fix issue with not clearing buffer properly each time and not re-rendering SDF text after font load --- src/core/renderers/webgl/WebGlCoreRenderer.ts | 1 + .../font-face-types/SdfTrFontFace/SdfTrFontFace.ts | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/renderers/webgl/WebGlCoreRenderer.ts b/src/core/renderers/webgl/WebGlCoreRenderer.ts index b1fe8c4d..96d41497 100644 --- a/src/core/renderers/webgl/WebGlCoreRenderer.ts +++ b/src/core/renderers/webgl/WebGlCoreRenderer.ts @@ -179,6 +179,7 @@ export class WebGlCoreRenderer extends CoreRenderer { this.curBufferIdx = 0; this.curRenderOp = null; this.renderOps.length = 0; + this.gl.disable(this.gl.SCISSOR_TEST); this.gl.clear(this.gl.COLOR_BUFFER_BIT); } diff --git a/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts b/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts index 510feb82..5fe80aea 100644 --- a/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +++ b/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts @@ -82,10 +82,9 @@ export class SdfTrFontFace< }, ); - // TODO: Add texture loaded support - // this.texture.on('loaded', () => { - // this.checkLoaded(); - // }); + this.texture.on('loaded', () => { + this.checkLoaded(); + }); // Set this.data to the fetched data from dataUrl fetch(atlasDataUrl) @@ -120,7 +119,7 @@ export class SdfTrFontFace< private checkLoaded(): void { if (this.loaded) return; - if (/*this.texture.loaded && */ this.data) { + if (this.texture.state === 'loaded' && this.data) { (this.loaded as boolean) = true; this.emit('loaded'); } From 415081b1fb6cee046f5c970ffcff7ac6d20f8cf1 Mon Sep 17 00:00:00 2001 From: Frank Weindel <6070611+frank-weindel@users.noreply.github.com> Date: Tue, 12 Dec 2023 10:43:00 -0500 Subject: [PATCH 3/5] Allow CoreNodes to signal for a re-render without forcing an update Re-render is now requested when textures and text is loaded which was previous breaking because of the RAF pause implementation. --- src/core/CoreNode.ts | 3 + src/core/CoreTextNode.ts | 3 + src/core/Stage.ts | 49 +++++++--------- src/core/scene/Scene.ts | 120 --------------------------------------- 4 files changed, 28 insertions(+), 147 deletions(-) delete mode 100644 src/core/scene/Scene.ts diff --git a/src/core/CoreNode.ts b/src/core/CoreNode.ts index a4d5d8d8..1cff038b 100644 --- a/src/core/CoreNode.ts +++ b/src/core/CoreNode.ts @@ -217,6 +217,9 @@ export class CoreNode extends EventEmitter implements ICoreNode { } private onTextureLoaded: TextureLoadedEventHandler = (target, dimensions) => { + // Texture was loaded. In case the RAF loop has already stopped, we request + // a render to ensure the texture is rendered. + this.stage.requestRender(); this.emit('loaded', { type: 'texture', dimensions, diff --git a/src/core/CoreTextNode.ts b/src/core/CoreTextNode.ts index 06dd0a4f..519f5545 100644 --- a/src/core/CoreTextNode.ts +++ b/src/core/CoreTextNode.ts @@ -102,6 +102,9 @@ export class CoreTextNode extends CoreNode implements ICoreTextNode { } this.updateLocalTransform(); + // Incase the RAF loop has been stopped already before text was loaded, + // we request a render so it can be drawn. + this.stage.requestRender(); this.emit('loaded', { type: 'text', dimensions: { diff --git a/src/core/Stage.ts b/src/core/Stage.ts index 8fae62e5..faabe89b 100644 --- a/src/core/Stage.ts +++ b/src/core/Stage.ts @@ -16,11 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import { Scene } from './scene/Scene.js'; - import { startLoop, getTimeStamp } from './platform.js'; - import { WebGlCoreRenderer } from './renderers/webgl/WebGlCoreRenderer.js'; import { assertTruthy } from '../utils.js'; import { AnimationManager } from './animations/AnimationManager.js'; @@ -62,7 +58,7 @@ export class Stage extends EventEmitter { public readonly textRenderers: Partial; public readonly shManager: CoreShaderManager; public readonly renderer: WebGlCoreRenderer; - private scene: Scene; + public readonly root: CoreNode; /// State deltaTime = 0; @@ -70,6 +66,7 @@ export class Stage extends EventEmitter { currentFrameTime = 0; private fpsNumFrames = 0; private fpsElapsedTime = 0; + private renderRequested = false; /** * Stage constructor @@ -146,7 +143,7 @@ export class Stage extends EventEmitter { shaderProps: null, }); - this.scene = new Scene(rootNode); + this.root = rootNode; // execute platform start loop if (autoStart) { @@ -158,8 +155,8 @@ export class Stage extends EventEmitter { * Update animations */ updateAnimations() { - const { scene, animationManager } = this; - if (!scene?.root) { + const { animationManager } = this; + if (!this.root) { return; } this.lastFrameTime = this.currentFrameTime; @@ -177,33 +174,32 @@ export class Stage extends EventEmitter { * Check if the scene has updates */ hasSceneUpdates() { - const { scene } = this; - - if (!scene?.root) { - return false; - } - - return !!scene?.root?.updateType; + return !!this.root.updateType || this.renderRequested; } /** * Start a new frame draw */ drawFrame() { - const { renderer, scene } = this; + const { renderer, renderRequested } = this; // Update tree if needed - if (scene.root.updateType !== 0) { - scene.root.update(this.deltaTime); + if (this.root.updateType !== 0) { + this.root.update(this.deltaTime); } // test if we need to update the scene renderer?.reset(); - this.addQuads(scene.root); + this.addQuads(this.root); renderer?.render(); + // Reset renderRequested flag if it was set + if (renderRequested) { + this.renderRequested = false; + } + // If there's an FPS update interval, emit the FPS update event // when the specified interval has elapsed. const { fpsUpdateInterval } = this.options; @@ -240,6 +236,13 @@ export class Stage extends EventEmitter { } } + /** + * Request a render pass without forcing an update + */ + requestRender() { + this.renderRequested = true; + } + /** * Given a font name, and possible renderer override, return the best compatible text renderer. * @@ -304,12 +307,4 @@ export class Stage extends EventEmitter { // the covariant state argument in the setter method map return resolvedTextRenderer as unknown as TextRenderer; } - - //#region Properties - - get root() { - return this.scene?.root || null; - } - - //#endregion Properties } diff --git a/src/core/scene/Scene.ts b/src/core/scene/Scene.ts deleted file mode 100644 index e53b0730..00000000 --- a/src/core/scene/Scene.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* - * If not stated otherwise in this file or this component's LICENSE file the - * following copyright and licenses apply: - * - * Copyright 2023 Comcast Cable Communications Management, LLC. - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import type { CoreNode } from '../CoreNode.js'; - -export type NodeTypes = Node; - -export class Scene { - /** - * Root node of the scene - * - * @type {Node} - * @memberof Scene - */ - public root: CoreNode; - - constructor(root: CoreNode) { - this.root = root; - } - - /** - * Get all nodes of a specific type - * @param type - * @returns - */ - public getNodeByType(type: string): Node[] { - return []; - } - - /** - * Find a node by id - * @param id - * @returns - */ - public getNodeById(id: string): Node | null { - return null; - } - - /** - * Create a new node - * @param parent - * @returns - */ - // public createNode(settings: Partial = {}): NodeTypes { - // return createNode(settings); - // } - - /** - * create a new RectangleNode - * @param w - * @param h - * @param parent - * @returns - */ - // public rectangle(w: number, h: number, parent: NodeTypes | null = null) { - // // TODO: Fix this - // // return this.create(new RectangleNode(w, h), parent); - // } - - /** - * Create a new CircleNode - * @param r - * @param parent - * @returns - */ - // public circle(r: number, parent: NodeTypes | null = null) { - // // TODO: Fix this - // // return this.create(new CircleNode(r), parent); - // } - - /** - * Create a new TextNode - * @param text - * @param parent - * @returns - */ - // public text(text = '', parent: NodeTypes | null = null) { - // // TODO: Fix this - // // return this.create(new TextNode(text), parent); - // } - - /** - * Setup and attaching Node - * @param node - * @param parent - * @returns - */ - // private create(node: NodeTypes, parent: NodeTypes | null = null): NodeTypes { - // if (!parent) { - // parent = this.root; - // } - - // node.parent = parent; - // return node; - // } - - /** - * Update the scene - * @param delta - */ - public update(delta: number) { - this.root.update(delta); - } -} From c1271f58117e3ed60b90d7321366b2af4e24e01d Mon Sep 17 00:00:00 2001 From: Frank Weindel <6070611+frank-weindel@users.noreply.github.com> Date: Tue, 12 Dec 2023 11:31:18 -0500 Subject: [PATCH 4/5] VRT: Wait a frame before taking snapshots to allow RaF pause to settle --- examples/index.ts | 5 ++++- src/core/platform.ts | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/examples/index.ts b/examples/index.ts index 73113715..aded89d2 100644 --- a/examples/index.ts +++ b/examples/index.ts @@ -262,8 +262,11 @@ async function runAutomation(driverName: string, logFps: boolean) { const snapshot = (window as any).snapshot as | ((testName: string) => Promise) | undefined; + // Allow at least a frame to render for any existing RaF pause to + // resume and finish rendering the scene before taking the snapshot + await delay(17); if (snapshot) { - console.error(`Calling snapshot(${testName})`); + console.log(`Calling snapshot(${testName})`); await snapshot(testName); } else { console.error( diff --git a/src/core/platform.ts b/src/core/platform.ts index 43206954..6e30fb02 100644 --- a/src/core/platform.ts +++ b/src/core/platform.ts @@ -27,7 +27,7 @@ export const startLoop = (stage: Stage) => { stage.updateAnimations(); if (!stage.hasSceneUpdates()) { - setTimeout(runLoop, 1000 / 60); + setTimeout(runLoop, 16.666666666666668); return; } From a07aa689aa9468dd6678f20c1cb051acd8eec2ba Mon Sep 17 00:00:00 2001 From: Frank Weindel <6070611+frank-weindel@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:12:09 -0500 Subject: [PATCH 5/5] Add more delay when taking snapshots in VRT --- examples/index.ts | 6 +++--- .../chromium-ci/alpha-blending-2.png | Bin 41383 -> 78873 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/index.ts b/examples/index.ts index aded89d2..b6524b4b 100644 --- a/examples/index.ts +++ b/examples/index.ts @@ -262,9 +262,9 @@ async function runAutomation(driverName: string, logFps: boolean) { const snapshot = (window as any).snapshot as | ((testName: string) => Promise) | undefined; - // Allow at least a frame to render for any existing RaF pause to - // resume and finish rendering the scene before taking the snapshot - await delay(17); + // Allow some time for all images to load and the RaF to unpause + // and render if needed. + await delay(200); if (snapshot) { console.log(`Calling snapshot(${testName})`); await snapshot(testName); diff --git a/visual-regression/certified-snapshots/chromium-ci/alpha-blending-2.png b/visual-regression/certified-snapshots/chromium-ci/alpha-blending-2.png index 5071b4eb36910f572b37179d47a7d0d2fd67ddc4..bfb998ddeb562f5021dfe37256c48f7448a24697 100644 GIT binary patch delta 44212 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

eH|tH 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 UoJ)-{+Jc1djQUs2_Cw$P5B4#CRsaA1