mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-10 22:20:14 +00:00
fix(renderer): prevent stale SwiftShader layers
This commit is contained in:
@@ -121,6 +121,12 @@ type TestMetadata = {
|
||||
* guard; omit for the default screenshot/BeginFrame capture.
|
||||
*/
|
||||
experimentalFastCapture?: boolean;
|
||||
/**
|
||||
* Pin the browser capture path for a regression fixture. The producer's
|
||||
* software-GPU default normally prefers screenshots, so BeginFrame-only
|
||||
* compositor regressions must opt out explicitly to exercise that path.
|
||||
*/
|
||||
captureMode?: "screenshot" | "beginframe";
|
||||
/**
|
||||
* Render-time variable overrides, equivalent to `hyperframes render
|
||||
* --variables '<json>'`. Injected as `window.__hfVariables` before any
|
||||
@@ -390,6 +396,15 @@ function validateMetadata(meta: unknown): TestMetadata {
|
||||
"meta.json: 'renderConfig.experimentalFastCapture' must be a boolean (or omit for false)",
|
||||
);
|
||||
}
|
||||
if (
|
||||
rc.captureMode !== undefined &&
|
||||
rc.captureMode !== "screenshot" &&
|
||||
rc.captureMode !== "beginframe"
|
||||
) {
|
||||
throw new Error(
|
||||
"meta.json: 'renderConfig.captureMode' must be 'screenshot' or 'beginframe' (or omitted)",
|
||||
);
|
||||
}
|
||||
if (
|
||||
rc.variables !== undefined &&
|
||||
(rc.variables === null || typeof rc.variables !== "object" || Array.isArray(rc.variables))
|
||||
@@ -1037,7 +1052,12 @@ async function runTestSuite(
|
||||
// var, scoped to this suite's render so it never leaks to other suites.
|
||||
const useFast = suite.meta.renderConfig.experimentalFastCapture === true;
|
||||
const prevFast = process.env.PRODUCER_EXPERIMENTAL_FAST_CAPTURE;
|
||||
const captureMode = suite.meta.renderConfig.captureMode;
|
||||
const prevForceScreenshot = process.env.PRODUCER_FORCE_SCREENSHOT;
|
||||
if (useFast) process.env.PRODUCER_EXPERIMENTAL_FAST_CAPTURE = "true";
|
||||
if (captureMode) {
|
||||
process.env.PRODUCER_FORCE_SCREENSHOT = captureMode === "screenshot" ? "true" : "false";
|
||||
}
|
||||
try {
|
||||
const job = createRenderJob({
|
||||
fps: suite.meta.renderConfig.fps,
|
||||
@@ -1056,6 +1076,10 @@ async function runTestSuite(
|
||||
if (prevFast === undefined) delete process.env.PRODUCER_EXPERIMENTAL_FAST_CAPTURE;
|
||||
else process.env.PRODUCER_EXPERIMENTAL_FAST_CAPTURE = prevFast;
|
||||
}
|
||||
if (captureMode) {
|
||||
if (prevForceScreenshot === undefined) delete process.env.PRODUCER_FORCE_SCREENSHOT;
|
||||
else process.env.PRODUCER_FORCE_SCREENSHOT = prevForceScreenshot;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user