Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 128x 128x | import type {
CoreRenderBackendConstants,
RenderBackendConstants,
RenderBackend as RenderBackendWire,
} from '../types/RenderBackendRegistry';
/**
* Shape of `Enums.RenderBackends`. Augment {@link RenderBackendConstants} in
* your extension `.d.ts`; property types on `Enums.RenderBackends` follow that
* interface.
*/
export type RenderBackendsMap = RenderBackendConstants;
/**
* String form accepted anywhere a render backend is expected: the built-in
* `'auto' | 'gpu' | 'cpu'` values plus any backend registered via
* `registerRenderBackend()` (typed through the augmentable
* `RenderBackendRegistry` interface).
*/
export type RenderBackendValue = RenderBackendWire;
const builtInRenderBackends: CoreRenderBackendConstants = {
Auto: 'auto',
GPU: 'gpu',
CPU: 'cpu',
};
/**
* Runtime render backend constants: built-in names map to wire-type strings.
*
* Built-ins are available immediately. Extension backends are added when you
* call `registerRenderBackend({ name: 'WEBGPU', backend: 'myOrg:webgpu', ... })`.
*
* For compile-time names, augment `RenderBackendConstants` only —
* `Enums.RenderBackends` is typed from it.
*/
const RenderBackends = builtInRenderBackends as RenderBackendsMap;
export function registerRenderBackendsConstant<
Name extends keyof RenderBackendConstants,
>(name: Name, backend: RenderBackendConstants[Name]): void {
if (Object.prototype.hasOwnProperty.call(RenderBackends, name)) {
throw new Error(`Render backend constant "${String(name)}" already exists`);
}
(RenderBackends as Record<keyof RenderBackendConstants, string>)[name] =
backend;
}
export default RenderBackends;
|