feat(image-pipeline): add wasm simd fallback backend scaffold
This commit is contained in:
37
lib/image-pipeline/backend/wasm/wasm-backend.ts
Normal file
37
lib/image-pipeline/backend/wasm/wasm-backend.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import type {
|
||||
BackendPipelineRequest,
|
||||
BackendStepRequest,
|
||||
ImagePipelineBackend,
|
||||
} from "@/lib/image-pipeline/backend/backend-types";
|
||||
import {
|
||||
loadWasmKernelModule,
|
||||
type WasmKernelModule,
|
||||
} from "@/lib/image-pipeline/backend/wasm/wasm-loader";
|
||||
|
||||
type WasmBackendOptions = {
|
||||
loadModule?: () => WasmKernelModule;
|
||||
};
|
||||
|
||||
export function createWasmSimdBackend(options?: WasmBackendOptions): ImagePipelineBackend {
|
||||
const loadModule = options?.loadModule ?? loadWasmKernelModule;
|
||||
let kernelModule: WasmKernelModule | null = null;
|
||||
|
||||
function ensureModule(): WasmKernelModule {
|
||||
if (kernelModule) {
|
||||
return kernelModule;
|
||||
}
|
||||
|
||||
kernelModule = loadModule();
|
||||
return kernelModule;
|
||||
}
|
||||
|
||||
return {
|
||||
id: "wasm",
|
||||
runPreviewStep(request: BackendStepRequest): void {
|
||||
ensureModule().applyPreviewStep(request);
|
||||
},
|
||||
runFullPipeline(request: BackendPipelineRequest): void {
|
||||
ensureModule().applyFullPipeline(request);
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user