@lightningjs/renderer 2.5.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/exports/index.d.ts +1 -0
  2. package/dist/exports/index.js.map +1 -1
  3. package/dist/src/core/CoreNode.d.ts +1 -2
  4. package/dist/src/core/CoreNode.js +45 -31
  5. package/dist/src/core/CoreNode.js.map +1 -1
  6. package/dist/src/core/CoreTextNode.d.ts +1 -1
  7. package/dist/src/core/CoreTextNode.js +2 -2
  8. package/dist/src/core/CoreTextNode.js.map +1 -1
  9. package/dist/src/core/Stage.d.ts +5 -0
  10. package/dist/src/core/Stage.js +10 -2
  11. package/dist/src/core/Stage.js.map +1 -1
  12. package/dist/src/core/lib/utils.d.ts +8 -0
  13. package/dist/src/core/lib/utils.js +10 -0
  14. package/dist/src/core/lib/utils.js.map +1 -1
  15. package/dist/src/core/utils.d.ts +1 -1
  16. package/dist/src/main-api/Inspector.js +52 -36
  17. package/dist/src/main-api/Inspector.js.map +1 -1
  18. package/dist/src/main-api/Renderer.d.ts +10 -0
  19. package/dist/src/main-api/Renderer.js +2 -1
  20. package/dist/src/main-api/Renderer.js.map +1 -1
  21. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  22. package/exports/index.ts +1 -0
  23. package/package.json +1 -1
  24. package/src/core/CoreNode.ts +58 -45
  25. package/src/core/CoreTextNode.ts +2 -2
  26. package/src/core/Stage.ts +12 -2
  27. package/src/core/lib/utils.ts +19 -0
  28. package/src/main-api/Inspector.ts +61 -44
  29. package/src/main-api/Renderer.ts +13 -2
  30. package/dist/exports/core-api.d.ts +0 -74
  31. package/dist/exports/core-api.js +0 -96
  32. package/dist/exports/core-api.js.map +0 -1
  33. package/dist/exports/main-api.d.ts +0 -30
  34. package/dist/exports/main-api.js +0 -45
  35. package/dist/exports/main-api.js.map +0 -1
  36. package/dist/src/core/CoreExtension.d.ts +0 -12
  37. package/dist/src/core/CoreExtension.js +0 -29
  38. package/dist/src/core/CoreExtension.js.map +0 -1
  39. package/dist/src/main-api/ICoreDriver.d.ts +0 -24
  40. package/dist/src/main-api/ICoreDriver.js +0 -20
  41. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  42. package/dist/src/main-api/RendererMain.d.ts +0 -378
  43. package/dist/src/main-api/RendererMain.js +0 -367
  44. package/dist/src/main-api/RendererMain.js.map +0 -1
  45. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  46. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  47. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  48. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  49. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  50. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  51. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  52. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
  53. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  54. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -21
  55. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -115
  56. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  57. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -101
  58. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -425
  59. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  60. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  61. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -204
  62. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  63. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -93
  64. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -290
  65. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  66. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -40
  67. package/dist/src/render-drivers/threadx/SharedNode.js +0 -61
  68. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  69. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  70. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -203
  71. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  72. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -25
  73. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -232
  74. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  75. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -24
  76. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -113
  77. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  78. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -46
  79. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -160
  80. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  81. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  82. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  83. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  84. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  85. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  86. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  87. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  88. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -184
  89. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  90. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  91. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -109
  92. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  93. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  94. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -147
  95. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  96. package/dist/src/render-drivers/utils.d.ts +0 -12
  97. package/dist/src/render-drivers/utils.js +0 -74
  98. package/dist/src/render-drivers/utils.js.map +0 -1
  99. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,367 +0,0 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- import { ManualCountTextureUsageTracker, } from './texture-usage-trackers/ManualCountTextureUsageTracker.js';
20
- import { FinalizationRegistryTextureUsageTracker } from './texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js';
21
- import { EventEmitter } from '../common/EventEmitter.js';
22
- import { Inspector } from './Inspector.js';
23
- import { santizeCustomDataMap } from '../render-drivers/utils.js';
24
- import { isProductionEnvironment } from '../utils.js';
25
- /**
26
- * The Renderer Main API
27
- *
28
- * @remarks
29
- * This is the primary class used to configure and operate the Renderer.
30
- *
31
- * It is used to create and destroy Nodes, as well as Texture and Shader
32
- * references.
33
- *
34
- * Example:
35
- * ```ts
36
- * import { RendererMain, MainCoreDriver } from '@lightningjs/renderer';
37
- *
38
- * // Initialize the Renderer
39
- * const renderer = new RendererMain(
40
- * {
41
- * appWidth: 1920,
42
- * appHeight: 1080
43
- * },
44
- * 'app',
45
- * new MainCoreDriver(),
46
- * );
47
- * ```
48
- */
49
- export class RendererMain extends EventEmitter {
50
- root = null;
51
- driver;
52
- canvas;
53
- settings;
54
- inspector = null;
55
- nodes = new Map();
56
- nextTextureId = 1;
57
- /**
58
- * Texture Usage Tracker for Usage Based Texture Garbage Collection
59
- *
60
- * @remarks
61
- * For internal use only. DO NOT ACCESS.
62
- */
63
- textureTracker;
64
- /**
65
- * Constructs a new Renderer instance
66
- *
67
- * @param settings Renderer settings
68
- * @param target Element ID or HTMLElement to insert the canvas into
69
- * @param driver Core Driver to use
70
- */
71
- constructor(settings, target, driver) {
72
- super();
73
- const resolvedSettings = {
74
- appWidth: settings.appWidth || 1920,
75
- appHeight: settings.appHeight || 1080,
76
- txMemByteThreshold: settings.txMemByteThreshold || 124e6,
77
- boundsMargin: settings.boundsMargin || 0,
78
- deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1,
79
- devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio,
80
- clearColor: settings.clearColor ?? 0x00000000,
81
- coreExtensionModule: settings.coreExtensionModule || null,
82
- experimental_FinalizationRegistryTextureUsageTracker: settings.experimental_FinalizationRegistryTextureUsageTracker ?? false,
83
- textureCleanupOptions: settings.textureCleanupOptions || {},
84
- fpsUpdateInterval: settings.fpsUpdateInterval || 0,
85
- numImageWorkers: settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2,
86
- enableContextSpy: settings.enableContextSpy ?? false,
87
- enableInspector: settings.enableInspector ?? false,
88
- renderMode: settings.renderMode ?? 'webgl',
89
- };
90
- this.settings = resolvedSettings;
91
- const { appWidth, appHeight, deviceLogicalPixelRatio, devicePhysicalPixelRatio, enableInspector, } = resolvedSettings;
92
- const releaseCallback = (textureId) => {
93
- this.driver.releaseTexture(textureId);
94
- };
95
- const useFinalizationRegistryTracker = resolvedSettings.experimental_FinalizationRegistryTextureUsageTracker &&
96
- typeof FinalizationRegistry === 'function';
97
- this.textureTracker = useFinalizationRegistryTracker
98
- ? new FinalizationRegistryTextureUsageTracker(releaseCallback)
99
- : new ManualCountTextureUsageTracker(releaseCallback, this.settings.textureCleanupOptions);
100
- const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;
101
- const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;
102
- this.driver = driver;
103
- const canvas = document.createElement('canvas');
104
- this.canvas = canvas;
105
- canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio;
106
- canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio;
107
- canvas.style.width = `${deviceLogicalWidth}px`;
108
- canvas.style.height = `${deviceLogicalHeight}px`;
109
- let targetEl;
110
- if (typeof target === 'string') {
111
- targetEl = document.getElementById(target);
112
- }
113
- else {
114
- targetEl = target;
115
- }
116
- if (!targetEl) {
117
- throw new Error('Could not find target element');
118
- }
119
- // Hook up the driver's callbacks
120
- driver.onCreateNode = (node) => {
121
- this.nodes.set(node.id, node);
122
- };
123
- driver.onBeforeDestroyNode = (node) => {
124
- this.nodes.delete(node.id);
125
- };
126
- driver.onFpsUpdate = (fpsData) => {
127
- this.emit('fpsUpdate', fpsData);
128
- };
129
- driver.onFrameTick = (frameTickData) => {
130
- this.emit('frameTick', frameTickData);
131
- };
132
- driver.onIdle = () => {
133
- this.emit('idle');
134
- };
135
- targetEl.appendChild(canvas);
136
- if (enableInspector && !isProductionEnvironment()) {
137
- this.inspector = new Inspector(canvas, resolvedSettings);
138
- }
139
- }
140
- /**
141
- * Initialize the renderer
142
- *
143
- * @remarks
144
- * This method must be called and resolved asyncronously before any other
145
- * methods are called.
146
- */
147
- async init() {
148
- await this.driver.init(this, this.settings, this.canvas);
149
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
150
- this.root = this.driver.getRootNode();
151
- }
152
- /**
153
- * Create a new scene graph node
154
- *
155
- * @remarks
156
- * A node is the main graphical building block of the Renderer scene graph. It
157
- * can be a container for other nodes, or it can be a leaf node that renders a
158
- * solid color, gradient, image, or specific texture, using a specific shader.
159
- *
160
- * To create a text node, see {@link createTextNode}.
161
- *
162
- * See {@link INode} for more details.
163
- *
164
- * @param props
165
- * @returns
166
- */
167
- createNode(props) {
168
- if (this.inspector) {
169
- return this.inspector.createNode(this.driver, this.resolveNodeDefaults(props));
170
- }
171
- return this.driver.createNode(this.resolveNodeDefaults(props));
172
- }
173
- /**
174
- * Create a new scene graph text node
175
- *
176
- * @remarks
177
- * A text node is the second graphical building block of the Renderer scene
178
- * graph. It renders text using a specific text renderer that is automatically
179
- * chosen based on the font requested and what type of fonts are installed
180
- * into an app via a CoreExtension.
181
- *
182
- * See {@link ITextNode} for more details.
183
- *
184
- * @param props
185
- * @returns
186
- */
187
- createTextNode(props) {
188
- const fontSize = props.fontSize ?? 16;
189
- const data = {
190
- ...this.resolveNodeDefaults(props),
191
- text: props.text ?? '',
192
- textRendererOverride: props.textRendererOverride ?? null,
193
- fontSize,
194
- fontFamily: props.fontFamily ?? 'sans-serif',
195
- fontStyle: props.fontStyle ?? 'normal',
196
- fontWeight: props.fontWeight ?? 'normal',
197
- fontStretch: props.fontStretch ?? 'normal',
198
- textAlign: props.textAlign ?? 'left',
199
- contain: props.contain ?? 'none',
200
- scrollable: props.scrollable ?? false,
201
- scrollY: props.scrollY ?? 0,
202
- offsetY: props.offsetY ?? 0,
203
- letterSpacing: props.letterSpacing ?? 0,
204
- lineHeight: props.lineHeight, // `undefined` is a valid value
205
- maxLines: props.maxLines ?? 0,
206
- textBaseline: props.textBaseline ?? 'alphabetic',
207
- verticalAlign: props.verticalAlign ?? 'middle',
208
- overflowSuffix: props.overflowSuffix ?? '...',
209
- debug: props.debug ?? {},
210
- };
211
- if (this.inspector) {
212
- return this.inspector.createTextNode(this.driver, data);
213
- }
214
- return this.driver.createTextNode(data);
215
- }
216
- /**
217
- * Resolves the default property values for a Node
218
- *
219
- * @remarks
220
- * This method is used internally by the RendererMain to resolve the default
221
- * property values for a Node. It is exposed publicly so that it can be used
222
- * by Core Driver implementations.
223
- *
224
- * @param props
225
- * @returns
226
- */
227
- resolveNodeDefaults(props) {
228
- const color = props.color ?? 0xffffffff;
229
- const colorTl = props.colorTl ?? props.colorTop ?? props.colorLeft ?? color;
230
- const colorTr = props.colorTr ?? props.colorTop ?? props.colorRight ?? color;
231
- const colorBl = props.colorBl ?? props.colorBottom ?? props.colorLeft ?? color;
232
- const colorBr = props.colorBr ?? props.colorBottom ?? props.colorRight ?? color;
233
- const data = santizeCustomDataMap(props.data ?? {});
234
- return {
235
- x: props.x ?? 0,
236
- y: props.y ?? 0,
237
- width: props.width ?? 0,
238
- height: props.height ?? 0,
239
- alpha: props.alpha ?? 1,
240
- autosize: props.autosize ?? false,
241
- clipping: props.clipping ?? false,
242
- color,
243
- colorTop: props.colorTop ?? color,
244
- colorBottom: props.colorBottom ?? color,
245
- colorLeft: props.colorLeft ?? color,
246
- colorRight: props.colorRight ?? color,
247
- colorBl,
248
- colorBr,
249
- colorTl,
250
- colorTr,
251
- zIndex: props.zIndex ?? 0,
252
- zIndexLocked: props.zIndexLocked ?? 0,
253
- parent: props.parent ?? null,
254
- texture: props.texture ?? null,
255
- shader: props.shader ?? null,
256
- // Since setting the `src` will trigger a texture load, we need to set it after
257
- // we set the texture. Otherwise, problems happen.
258
- src: props.src ?? '',
259
- scale: props.scale ?? null,
260
- scaleX: props.scaleX ?? props.scale ?? 1,
261
- scaleY: props.scaleY ?? props.scale ?? 1,
262
- mount: props.mount ?? 0,
263
- mountX: props.mountX ?? props.mount ?? 0,
264
- mountY: props.mountY ?? props.mount ?? 0,
265
- pivot: props.pivot ?? 0.5,
266
- pivotX: props.pivotX ?? props.pivot ?? 0.5,
267
- pivotY: props.pivotY ?? props.pivot ?? 0.5,
268
- rotation: props.rotation ?? 0,
269
- rtt: props.rtt ?? false,
270
- data: data,
271
- };
272
- }
273
- /**
274
- * Destroy a node
275
- *
276
- * @remarks
277
- * This method destroys a node but does not destroy its children.
278
- *
279
- * @param node
280
- * @returns
281
- */
282
- destroyNode(node) {
283
- if (this.inspector) {
284
- this.inspector.destroyNode(node);
285
- }
286
- return this.driver.destroyNode(node);
287
- }
288
- /**
289
- * Create a new texture reference
290
- *
291
- * @remarks
292
- * This method creates a new reference to a texture. The texture is not
293
- * loaded until it is used on a node.
294
- *
295
- * It can be assigned to a node's `texture` property, or it can be used
296
- * when creating a SubTexture.
297
- *
298
- * @param textureType
299
- * @param props
300
- * @param options
301
- * @returns
302
- */
303
- createTexture(textureType, props, options) {
304
- const id = this.nextTextureId++;
305
- const desc = {
306
- descType: 'texture',
307
- txType: textureType,
308
- props,
309
- options: {
310
- ...options,
311
- // This ID is used to identify the texture in the CoreTextureManager's
312
- // ID Texture Map cache.
313
- id,
314
- },
315
- };
316
- this.textureTracker.registerTexture(desc);
317
- return desc;
318
- }
319
- /**
320
- * Create a new shader reference
321
- *
322
- * @remarks
323
- * This method creates a new reference to a shader. The shader is not
324
- * loaded until it is used on a Node.
325
- *
326
- * It can be assigned to a Node's `shader` property.
327
- *
328
- * @param shaderType
329
- * @param props
330
- * @returns
331
- */
332
- createShader(shaderType, props) {
333
- return {
334
- descType: 'shader',
335
- shType: shaderType,
336
- props: props,
337
- };
338
- }
339
- /**
340
- * Get a Node by its ID
341
- *
342
- * @param id
343
- * @returns
344
- */
345
- getNodeById(id) {
346
- return this.nodes.get(id) || null;
347
- }
348
- toggleFreeze() {
349
- throw new Error('Not implemented');
350
- }
351
- advanceFrame() {
352
- throw new Error('Not implemented');
353
- }
354
- /**
355
- * Re-render the current frame without advancing any running animations.
356
- *
357
- * @remarks
358
- * Any state changes will be reflected in the re-rendered frame. Useful for
359
- * debugging.
360
- *
361
- * May not do anything if the render loop is running on a separate worker.
362
- */
363
- rerender() {
364
- throw new Error('Not implemented');
365
- }
366
- }
367
- //# sourceMappingURL=RendererMain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RendererMain.js","sourceRoot":"","sources":["../../../src/main-api/RendererMain.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { TextureRef } from '../RendererMain.js';
2
- import { TextureUsageTracker } from './TextureUsageTracker.js';
3
- export declare class FinalizationRegistryTextureUsageTracker extends TextureUsageTracker {
4
- private registry;
5
- constructor(releaseCallback: (textureDescId: number) => void);
6
- registerTexture(texture: TextureRef): void;
7
- incrementTextureRefCount(): void;
8
- decrementTextureRefCount(): void;
9
- }
@@ -1,38 +0,0 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- import { assertTruthy } from '../../utils.js';
20
- import { TextureUsageTracker } from './TextureUsageTracker.js';
21
- export class FinalizationRegistryTextureUsageTracker extends TextureUsageTracker {
22
- registry;
23
- constructor(releaseCallback) {
24
- super(releaseCallback);
25
- this.registry = new FinalizationRegistry(releaseCallback);
26
- }
27
- registerTexture(texture) {
28
- assertTruthy(texture.options?.id, 'Texture must have an ID to be registered');
29
- this.registry.register(texture, texture.options?.id);
30
- }
31
- incrementTextureRefCount() {
32
- // No-op for FinalizationRegistry
33
- }
34
- decrementTextureRefCount() {
35
- // No-op for FinalizationRegistry
36
- }
37
- }
38
- //# sourceMappingURL=FinalizationRegistryTextureUsageTracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FinalizationRegistryTextureUsageTracker.js","sourceRoot":"","sources":["../../../../src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,OAAO,uCAAwC,SAAQ,mBAAmB;IACtE,QAAQ,CAA+B;IAE/C,YAAY,eAAgD;QAC1D,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC;IAEQ,eAAe,CAAC,OAAmB;QAC1C,YAAY,CACV,OAAO,CAAC,OAAO,EAAE,EAAE,EACnB,0CAA0C,CAC3C,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IACQ,wBAAwB;QAC/B,iCAAiC;IACnC,CAAC;IACQ,wBAAwB;QAC/B,iCAAiC;IACnC,CAAC;CACF"}
@@ -1,56 +0,0 @@
1
- import type { TextureRef } from '../RendererMain.js';
2
- import { TextureUsageTracker } from './TextureUsageTracker.js';
3
- interface TextureRefInfo {
4
- /**
5
- * Texture Reference ID
6
- */
7
- id: number;
8
- /**
9
- * The number of references to this texture that are currently assigned to
10
- * Nodes.
11
- */
12
- nodeRefCount: number;
13
- /**
14
- * The last time the texture reference count was updated.
15
- *
16
- * @remarks
17
- * This is used to determine when a texture is no longer referenced by any
18
- * Nodes and can be removed from the GPU.
19
- */
20
- lastUpdate: number;
21
- }
22
- export interface ManualCountTextureUsageTrackerOptions {
23
- /**
24
- * The interval at which to check if textures that are no longer referenced
25
- * by any Nodes can be released from the Core Space Texture Usage Cache.
26
- *
27
- * @remarks
28
- * Only valid when the {@link ManualCountTextureUsageTracker} is used.
29
- *
30
- * @defaultValue 10000 (10 seconds)
31
- */
32
- textureCleanupIntervalMs?: number;
33
- /**
34
- * The age at which a texture is considered to be no longer referenced by any
35
- * Nodes and can be released from the Core Space Texture Usage Cache.
36
- *
37
- * @remarks
38
- * Only valid when the {@link ManualCountTextureUsageTracker} is used.
39
- *
40
- * @defaultValue 60000 (1 minute)
41
- */
42
- textureCleanupAgeThreadholdMs?: number;
43
- }
44
- /**
45
- * Usage-based Texture Garbage Collection Registry
46
- */
47
- export declare class ManualCountTextureUsageTracker extends TextureUsageTracker {
48
- textureMap: Map<number, TextureRefInfo>;
49
- zeroReferenceTextureSet: Set<TextureRefInfo>;
50
- options: Required<ManualCountTextureUsageTrackerOptions>;
51
- constructor(releaseCallback: (textureDescId: number) => void, options: ManualCountTextureUsageTrackerOptions);
52
- registerTexture(texture: TextureRef): void;
53
- incrementTextureRefCount(texture: TextureRef): void;
54
- decrementTextureRefCount(texture: TextureRef): void;
55
- }
56
- export {};
@@ -1,101 +0,0 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- import { assertTruthy } from '../../utils.js';
20
- import { TextureUsageTracker } from './TextureUsageTracker.js';
21
- /**
22
- * Usage-based Texture Garbage Collection Registry
23
- */
24
- export class ManualCountTextureUsageTracker extends TextureUsageTracker {
25
- textureMap = new Map();
26
- zeroReferenceTextureSet = new Set();
27
- options;
28
- constructor(releaseCallback, options) {
29
- super(releaseCallback);
30
- this.options = {
31
- textureCleanupIntervalMs: options.textureCleanupIntervalMs ?? 10000,
32
- textureCleanupAgeThreadholdMs: options.textureCleanupAgeThreadholdMs ?? 60000,
33
- };
34
- // Periodically check for textures that are no longer referenced by any
35
- // Nodes and notify RendererMain to release them.
36
- setInterval(() => {
37
- const now = Date.now();
38
- const thresholdMs = this.options.textureCleanupAgeThreadholdMs;
39
- for (const textureRefInfo of this.zeroReferenceTextureSet) {
40
- if (now - textureRefInfo.lastUpdate > thresholdMs) {
41
- this.releaseCallback(textureRefInfo.id);
42
- this.textureMap.delete(textureRefInfo.id);
43
- this.zeroReferenceTextureSet.delete(textureRefInfo);
44
- }
45
- }
46
- }, this.options.textureCleanupIntervalMs);
47
- }
48
- registerTexture(texture) {
49
- const textureId = texture.options?.id;
50
- assertTruthy(textureId, 'Texture must have an id to be registered');
51
- if (!this.textureMap.has(textureId)) {
52
- const textureRefInfo = {
53
- id: textureId,
54
- nodeRefCount: 0,
55
- lastUpdate: Date.now(),
56
- };
57
- this.textureMap.set(textureId, textureRefInfo);
58
- this.zeroReferenceTextureSet.add(textureRefInfo);
59
- }
60
- }
61
- incrementTextureRefCount(texture) {
62
- const textureId = texture.options?.id;
63
- assertTruthy(textureId, 'Texture must have an id to be registered');
64
- let textureRefInfo = this.textureMap.get(textureId);
65
- if (!textureRefInfo) {
66
- // Texture has not been registered yet, so register it now.
67
- // This may happen if the TextureRef was cleaned up from the registry
68
- // but was still alive in memory and eventually re-used.
69
- this.registerTexture(texture);
70
- textureRefInfo = this.textureMap.get(textureId);
71
- }
72
- assertTruthy(textureRefInfo, 'Texture must have been registered');
73
- if (texture.txType === 'SubTexture') {
74
- // If this is a SubTexture, then increment the reference count of the
75
- // parent texture as well.
76
- this.incrementTextureRefCount(texture.props.texture);
77
- }
78
- textureRefInfo.nodeRefCount++;
79
- textureRefInfo.lastUpdate = Date.now();
80
- if (this.zeroReferenceTextureSet.has(textureRefInfo)) {
81
- this.zeroReferenceTextureSet.delete(textureRefInfo);
82
- }
83
- }
84
- decrementTextureRefCount(texture) {
85
- const textureId = texture.options?.id;
86
- assertTruthy(textureId, 'Texture must have an id to be registered');
87
- const textureRefInfo = this.textureMap.get(textureId);
88
- assertTruthy(textureRefInfo, 'Texture must have been registered');
89
- textureRefInfo.nodeRefCount--;
90
- textureRefInfo.lastUpdate = Date.now();
91
- if (textureRefInfo.nodeRefCount === 0) {
92
- this.zeroReferenceTextureSet.add(textureRefInfo);
93
- }
94
- if (texture.txType === 'SubTexture') {
95
- // If this is a SubTexture, then decrement the reference count of the
96
- // parent texture as well.
97
- this.decrementTextureRefCount(texture.props.texture);
98
- }
99
- }
100
- }
101
- //# sourceMappingURL=ManualCountTextureUsageTracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManualCountTextureUsageTracker.js","sourceRoot":"","sources":["../../../../src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import type { TextureRef } from '../RendererMain.js';
2
- /**
3
- * Texture Usage Tracker for Usage Based Texture Garbage Collection
4
- */
5
- export declare abstract class TextureUsageTracker {
6
- protected releaseCallback: (textureDescId: number) => void;
7
- constructor(releaseCallback: (textureDescId: number) => void);
8
- /**
9
- * Register a texture with the tracker.
10
- *
11
- * @param texture
12
- */
13
- abstract registerTexture(texture: TextureRef): void;
14
- /**
15
- * Increment the reference count for a texture.
16
- *
17
- * @remarks
18
- * This should be called anytime a Node sets a new texture.
19
- *
20
- * @param texture
21
- */
22
- abstract incrementTextureRefCount(texture: TextureRef): void;
23
- /**
24
- * Decrement the Node reference count for a texture.
25
- *
26
- * @remarks
27
- * This should be called anytime a Node removes a texture.
28
- *
29
- * @param texture
30
- */
31
- abstract decrementTextureRefCount(texture: TextureRef): void;
32
- }
@@ -1,28 +0,0 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- /**
20
- * Texture Usage Tracker for Usage Based Texture Garbage Collection
21
- */
22
- export class TextureUsageTracker {
23
- releaseCallback;
24
- constructor(releaseCallback) {
25
- this.releaseCallback = releaseCallback;
26
- }
27
- }
28
- //# sourceMappingURL=TextureUsageTracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextureUsageTracker.js","sourceRoot":"","sources":["../../../../src/main-api/texture-usage-trackers/TextureUsageTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;GAEG;AACH,MAAM,OAAgB,mBAAmB;IACjB;IAAtB,YAAsB,eAAgD;QAAhD,oBAAe,GAAf,eAAe,CAAiC;IAAG,CAAC;CA4B3E"}