Skip to content

js: fill worklet requests with at least one render quantum - #331

Merged
hajimehoshi merged 1 commit into
ebitengine:mainfrom
kumagi:codex/js-worklet-minimum-batch
Oct 26, 2026
Merged

hajimehoshi merged 1 commit into
ebitengine:mainfrom
kumagi:codex/js-worklet-minimum-batch

Conversation

@kumagi

@kumagi kumagi commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

What issue is this addressing?

None

What type of issue is this addressing?

bug

What this PR does | solves

With a context buffer smaller than a worklet output block, each response can be too short and the processor repeatedly returns silence while accumulating data. Send the actual output frame count with each request and grow the Go transfer buffer to cover it. Request the next batch before consuming the final block. ScriptProcessor sizing and the configured/default context sizes remain unchanged.

Validation: An actual Go JS/Wasm executable and the unchanged embedded worklet were run with browser APIs substituted in Node. For a 12-frame stereo context buffer, the base produced 1/18 and 0/18 complete steady-state blocks for 128- and 512-frame outputs; the fix produced 18/18 in both cases and sent full-quantum transfers. Native internal race tests, JS/Wasm build and vet passed. This verifies the undersized-transfer path, not real-browser scheduling, native playback or immunity to underruns.

@hajimehoshi hajimehoshi left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@hajimehoshi
hajimehoshi merged commit b240613 into ebitengine:main Oct 26, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants