@solidtv/renderer 1.5.0-1 → 1.5.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.
- package/dist/src/core/Stage.js +2 -1
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +23 -0
- package/dist/src/core/TextureMemoryManager.js +37 -3
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.js +10 -3
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.js +68 -4
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +8 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +49 -13
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +9 -2
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/SdfTextRenderer.js +16 -3
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +16 -0
- package/dist/src/main-api/Renderer.js +2 -0
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.js +23 -7
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/Stage.ts +2 -0
- package/src/core/TextureMemoryManager.test.ts +51 -2
- package/src/core/TextureMemoryManager.ts +42 -3
- package/src/core/lib/WebGlContextWrapper.test.ts +58 -0
- package/src/core/lib/WebGlContextWrapper.ts +13 -3
- package/src/core/lib/textureCompression.test.ts +158 -0
- package/src/core/lib/textureCompression.ts +78 -4
- package/src/core/renderers/CoreRenderer.ts +1 -0
- package/src/core/renderers/webgl/WebGlRenderer.ts +58 -15
- package/src/core/renderers/webgl/internal/RendererUtils.test.ts +73 -0
- package/src/core/renderers/webgl/internal/RendererUtils.ts +9 -2
- package/src/core/text-rendering/SdfTextRenderer.test.ts +11 -10
- package/src/core/text-rendering/SdfTextRenderer.ts +17 -3
- package/src/main-api/Renderer.ts +19 -0
- package/src/utils.test.ts +57 -0
- package/src/utils.ts +24 -8
package/src/utils.ts
CHANGED
|
@@ -29,17 +29,33 @@ export function createWebGLContext(
|
|
|
29
29
|
throw new Error('Unable to create WebGL context');
|
|
30
30
|
}
|
|
31
31
|
if (contextSpy) {
|
|
32
|
-
// Proxy the GL context
|
|
33
|
-
|
|
32
|
+
// Proxy the GL context — and any extension object it hands out — so every
|
|
33
|
+
// call is counted. The renderer routes WebGL1 Vertex Array Object calls
|
|
34
|
+
// through the OES_vertex_array_object extension object; without wrapping
|
|
35
|
+
// that object its methods (bindVertexArrayOES / createVertexArrayOES /
|
|
36
|
+
// deleteVertexArrayOES) would bypass the spy entirely. On WebGL2 the same
|
|
37
|
+
// calls live on the context itself and are already captured.
|
|
38
|
+
const handler: ProxyHandler<object> = {
|
|
34
39
|
get(target, prop) {
|
|
35
|
-
const value = target
|
|
36
|
-
if (typeof value
|
|
37
|
-
|
|
38
|
-
return value.bind(target);
|
|
40
|
+
const value = (target as Record<string | symbol, unknown>)[prop];
|
|
41
|
+
if (typeof value !== 'function') {
|
|
42
|
+
return value;
|
|
39
43
|
}
|
|
40
|
-
|
|
44
|
+
contextSpy.increment(String(prop));
|
|
45
|
+
const fn = value as (...args: unknown[]) => unknown;
|
|
46
|
+
if (prop === 'getExtension') {
|
|
47
|
+
return (...args: unknown[]): unknown => {
|
|
48
|
+
const ext = fn.apply(target, args);
|
|
49
|
+
if (ext !== null && typeof ext === 'object') {
|
|
50
|
+
return new Proxy(ext, handler);
|
|
51
|
+
}
|
|
52
|
+
return ext;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return fn.bind(target);
|
|
41
56
|
},
|
|
42
|
-
}
|
|
57
|
+
};
|
|
58
|
+
return new Proxy(gl as object, handler) as unknown as WebGLRenderingContext;
|
|
43
59
|
}
|
|
44
60
|
|
|
45
61
|
return gl;
|