@hyperframes/engine 0.6.24 → 0.6.25

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.
@@ -46,6 +46,13 @@ export interface WorkerSizingConfig extends Partial<Pick<EngineConfig, "concurre
46
46
  }
47
47
  export declare function calculateOptimalWorkers(totalFrames: number, requested?: number, config?: WorkerSizingConfig): number;
48
48
  export declare function distributeFrames(totalFrames: number, workerCount: number, workDir: string, rangeStart?: number): WorkerTask[];
49
+ /**
50
+ * Decide whether a parallel worker should run the per-worker SwiftShader
51
+ * assertion. Gated to worker 0 only: workers within a chunk share the same
52
+ * Chrome binary, flags, and OS/driver state, so one verification per chunk
53
+ * is sufficient. See `heygen-com/hyperframes#955`.
54
+ */
55
+ export declare function shouldVerifyWorkerGpu(workerId: number, config?: Partial<EngineConfig>): boolean;
49
56
  export declare function executeParallelCapture(serverUrl: string, workDir: string, tasks: WorkerTask[], captureOptions: CaptureOptions, createBeforeCaptureHook: () => BeforeCaptureHook | null, signal?: AbortSignal, onProgress?: (progress: ParallelProgress) => void, onFrameBuffer?: (frameIndex: number, buffer: Buffer) => Promise<void>, config?: Partial<EngineConfig>): Promise<WorkerResult[]>;
50
57
  export declare function mergeWorkerFrames(workDir: string, tasks: WorkerTask[], outputDir: string): Promise<number>;
51
58
  export declare function getSystemResources(): {
@@ -1 +1 @@
1
- {"version":3,"file":"parallelCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/parallelCoordinator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,kBAAmB,SAAQ,OAAO,CACjD,IAAI,CACF,YAAY,EACZ,aAAa,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,sBAAsB,CAChF,CACF;IACC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAuBD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,MAAM,CAuDR;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAU,GACrB,UAAU,EAAE,CAmBd;AA6FD,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,UAAU,EAAE,EACnB,cAAc,EAAE,cAAc,EAC9B,uBAAuB,EAAE,MAAM,iBAAiB,GAAG,IAAI,EACvD,MAAM,CAAC,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,EACjD,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACrE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7B,OAAO,CAAC,YAAY,EAAE,CAAC,CA2CzB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,UAAU,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED,wBAAgB,kBAAkB,IAAI;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAOA"}
1
+ {"version":3,"file":"parallelCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/parallelCoordinator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,kBAAmB,SAAQ,OAAO,CACjD,IAAI,CACF,YAAY,EACZ,aAAa,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,sBAAsB,CAChF,CACF;IACC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAuBD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,MAAM,CAuDR;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAU,GACrB,UAAU,EAAE,CAmBd;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAE/F;AAkGD,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,UAAU,EAAE,EACnB,cAAc,EAAE,cAAc,EAC9B,uBAAuB,EAAE,MAAM,iBAAiB,GAAG,IAAI,EACvD,MAAM,CAAC,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,EACjD,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACrE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7B,OAAO,CAAC,YAAY,EAAE,CAAC,CA2CzB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,UAAU,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED,wBAAgB,kBAAkB,IAAI;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAOA"}
@@ -95,6 +95,15 @@ export function distributeFrames(totalFrames, workerCount, workDir, rangeStart =
95
95
  }
96
96
  return tasks;
97
97
  }
98
+ /**
99
+ * Decide whether a parallel worker should run the per-worker SwiftShader
100
+ * assertion. Gated to worker 0 only: workers within a chunk share the same
101
+ * Chrome binary, flags, and OS/driver state, so one verification per chunk
102
+ * is sufficient. See `heygen-com/hyperframes#955`.
103
+ */
104
+ export function shouldVerifyWorkerGpu(workerId, config) {
105
+ return config?.browserGpuMode === "software" && workerId === 0;
106
+ }
98
107
  async function executeWorkerTask(task, serverUrl, captureOptions, createBeforeCaptureHook, signal, onFrameCaptured, onFrameBuffer, config) {
99
108
  const startTime = Date.now();
100
109
  let framesCaptured = 0;
@@ -104,17 +113,22 @@ async function executeWorkerTask(task, serverUrl, captureOptions, createBeforeCa
104
113
  let perf;
105
114
  try {
106
115
  session = await createCaptureSession(serverUrl, task.outputDir, captureOptions, createBeforeCaptureHook(), config);
107
- // Per-worker SwiftShader assertion: when the caller declares
108
- // `browserGpuMode: "software"`, every worker session must verify Chrome's
109
- // WebGL backend is actually SwiftShader before the first frame. Hosts
110
- // that fall back to a hardware GL backend (or silently fail to load
116
+ // Per-worker SwiftShader assertion, gated to worker 0 only.
117
+ // When `browserGpuMode: "software"` is declared, the chunk's GL backend
118
+ // must be verified as SwiftShader before the first frame — a host that
119
+ // falls back to a hardware GL backend (or silently fails to load
111
120
  // SwiftShader) would otherwise produce non-deterministic pixels and
112
- // break the distributed byte-identical-retry contract the parallel
113
- // branch wouldn't catch it via the pre-warmup probe (renderChunk now
114
- // skips that when chunkWorkerCount > 1). The canvas-based reader works
115
- // on both regular Chrome and chrome-headless-shell (which serves
116
- // `chrome://gpu` as an empty document).
117
- if (config?.browserGpuMode === "software") {
121
+ // break the distributed byte-identical-retry contract. Running this
122
+ // probe on every worker means N concurrent navigations to a WebGL
123
+ // probe page per chunk; with `chunkWorkerCount=6` × 3 chunks, that's
124
+ // 18 simultaneous CDP page-loads, which inflated c=3 worst-case wall
125
+ // by ~24s vs c=6/c=8 on the texture-launch bench. Workers in the same
126
+ // chunk share the same Chrome binary, flags, and OS/driver state, so
127
+ // worker 0's success is representative — gate it there and skip the
128
+ // rest. See `heygen-com/hyperframes#955` for the bench data and the
129
+ // pre-warmup probe interaction (which `renderChunk` already skips
130
+ // when `chunkWorkerCount > 1`).
131
+ if (shouldVerifyWorkerGpu(task.workerId, config)) {
118
132
  await assertSwiftShader(session.page, readWebGlVendorInfoFromCanvas);
119
133
  }
120
134
  await initializeSession(session);
@@ -1 +1 @@
1
- {"version":3,"file":"parallelCoordinator.js","sourceRoot":"","sources":["../../src/services/parallelCoordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parallelCoordinator.js","sourceRoot":"","sources":["../../src/services/parallelCoordinator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/engine",
3
- "version": "0.6.24",
3
+ "version": "0.6.25",
4
4
  "description": "Seekable web page to video rendering engine (Puppeteer + FFmpeg)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "linkedom": "^0.18.12",
22
22
  "puppeteer": "^24.0.0",
23
23
  "puppeteer-core": "^24.39.1",
24
- "@hyperframes/core": "^0.6.24"
24
+ "@hyperframes/core": "^0.6.25"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^25.0.10",
@@ -1,5 +1,10 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import { calculateOptimalWorkers, distributeFrames } from "./parallelCoordinator.js";
2
+ import {
3
+ calculateOptimalWorkers,
4
+ distributeFrames,
5
+ shouldVerifyWorkerGpu,
6
+ } from "./parallelCoordinator.js";
7
+ import type { EngineConfig } from "../config.js";
3
8
 
4
9
  describe("distributeFrames", () => {
5
10
  it("distributes frames evenly across workers", () => {
@@ -68,3 +73,29 @@ describe("calculateOptimalWorkers", () => {
68
73
  expect(workers).toBe(4);
69
74
  });
70
75
  });
76
+
77
+ describe("shouldVerifyWorkerGpu", () => {
78
+ const softwareConfig: Partial<EngineConfig> = { browserGpuMode: "software" };
79
+
80
+ it("returns true for worker 0 when GPU mode is software", () => {
81
+ expect(shouldVerifyWorkerGpu(0, softwareConfig)).toBe(true);
82
+ });
83
+
84
+ it("returns false for non-zero workers when GPU mode is software", () => {
85
+ expect(shouldVerifyWorkerGpu(1, softwareConfig)).toBe(false);
86
+ expect(shouldVerifyWorkerGpu(5, softwareConfig)).toBe(false);
87
+ expect(shouldVerifyWorkerGpu(17, softwareConfig)).toBe(false);
88
+ });
89
+
90
+ it("returns false for any worker when GPU mode is not software", () => {
91
+ expect(shouldVerifyWorkerGpu(0, { browserGpuMode: "hardware" } as Partial<EngineConfig>)).toBe(
92
+ false,
93
+ );
94
+ expect(shouldVerifyWorkerGpu(0, {})).toBe(false);
95
+ });
96
+
97
+ it("returns false when config is undefined", () => {
98
+ expect(shouldVerifyWorkerGpu(0, undefined)).toBe(false);
99
+ expect(shouldVerifyWorkerGpu(3, undefined)).toBe(false);
100
+ });
101
+ });
@@ -181,6 +181,16 @@ export function distributeFrames(
181
181
  return tasks;
182
182
  }
183
183
 
184
+ /**
185
+ * Decide whether a parallel worker should run the per-worker SwiftShader
186
+ * assertion. Gated to worker 0 only: workers within a chunk share the same
187
+ * Chrome binary, flags, and OS/driver state, so one verification per chunk
188
+ * is sufficient. See `heygen-com/hyperframes#955`.
189
+ */
190
+ export function shouldVerifyWorkerGpu(workerId: number, config?: Partial<EngineConfig>): boolean {
191
+ return config?.browserGpuMode === "software" && workerId === 0;
192
+ }
193
+
184
194
  async function executeWorkerTask(
185
195
  task: WorkerTask,
186
196
  serverUrl: string,
@@ -207,17 +217,22 @@ async function executeWorkerTask(
207
217
  createBeforeCaptureHook(),
208
218
  config,
209
219
  );
210
- // Per-worker SwiftShader assertion: when the caller declares
211
- // `browserGpuMode: "software"`, every worker session must verify Chrome's
212
- // WebGL backend is actually SwiftShader before the first frame. Hosts
213
- // that fall back to a hardware GL backend (or silently fail to load
220
+ // Per-worker SwiftShader assertion, gated to worker 0 only.
221
+ // When `browserGpuMode: "software"` is declared, the chunk's GL backend
222
+ // must be verified as SwiftShader before the first frame — a host that
223
+ // falls back to a hardware GL backend (or silently fails to load
214
224
  // SwiftShader) would otherwise produce non-deterministic pixels and
215
- // break the distributed byte-identical-retry contract the parallel
216
- // branch wouldn't catch it via the pre-warmup probe (renderChunk now
217
- // skips that when chunkWorkerCount > 1). The canvas-based reader works
218
- // on both regular Chrome and chrome-headless-shell (which serves
219
- // `chrome://gpu` as an empty document).
220
- if (config?.browserGpuMode === "software") {
225
+ // break the distributed byte-identical-retry contract. Running this
226
+ // probe on every worker means N concurrent navigations to a WebGL
227
+ // probe page per chunk; with `chunkWorkerCount=6` × 3 chunks, that's
228
+ // 18 simultaneous CDP page-loads, which inflated c=3 worst-case wall
229
+ // by ~24s vs c=6/c=8 on the texture-launch bench. Workers in the same
230
+ // chunk share the same Chrome binary, flags, and OS/driver state, so
231
+ // worker 0's success is representative — gate it there and skip the
232
+ // rest. See `heygen-com/hyperframes#955` for the bench data and the
233
+ // pre-warmup probe interaction (which `renderChunk` already skips
234
+ // when `chunkWorkerCount > 1`).
235
+ if (shouldVerifyWorkerGpu(task.workerId, config)) {
221
236
  await assertSwiftShader(session.page, readWebGlVendorInfoFromCanvas);
222
237
  }
223
238
  await initializeSession(session);