chore: sync upstream (89 Commits) #12

Merged
alf merged 89 commits from chore/sync-upstream-20261027 into main 2026-10-27 20:17:48 +00:00
Owner

Upstream-Sync von upstream/main (89 Commits). Fast-Forward.

  • dd12ed8f Merge pull request #2518 from Silvertree2010/perf/export-speed
  • 94399e62 Pin movie export bytes
  • db41fa79 Skip transparent pixels and quantise while compositing
  • d8bca3cd Overlap movie encoding with rendering
  • bc4b48f6 fix(ui): dropdown menus grow back after a search with no matches (#2511)
  • 01c904b0 Merge pull request #2491 from aiongg/layout
  • cca8ce06 Merge pull request #2487 from storytold/fix/nextest-0.9.150
  • b7b75ed3 style: cargo fmt on the moved files
  • 3e38bd73 refactor(pdf): split the PostScript interpreter ps.rs into ps/*.rs
  • 5cb74259 refactor(effects): split ocio.rs into ocio/*.rs
  • 13fe6e5c refactor(effects): split sim.rs into sim/*.rs
  • 67ef9ad9 refactor(effects): split sim2.rs into sim2/*.rs
  • b05467e4 refactor(effects): split generate3.rs into generate3/*.rs
  • f5f51f8d refactor(ui-egui): move viewer frame, geometry, gestures, shapes, tools and view parts to panels/viewer/*.rs
  • 9b52c71a refactor(ui-egui): move viewer tests to panels/viewer/tests.rs
Upstream-Sync von `upstream/main` (89 Commits). Fast-Forward. - dd12ed8f Merge pull request #2518 from Silvertree2010/perf/export-speed - 94399e62 Pin movie export bytes - db41fa79 Skip transparent pixels and quantise while compositing - d8bca3cd Overlap movie encoding with rendering - bc4b48f6 fix(ui): dropdown menus grow back after a search with no matches (#2511) - 01c904b0 Merge pull request #2491 from aiongg/layout - cca8ce06 Merge pull request #2487 from storytold/fix/nextest-0.9.150 - b7b75ed3 style: cargo fmt on the moved files - 3e38bd73 refactor(pdf): split the PostScript interpreter ps.rs into ps/*.rs - 5cb74259 refactor(effects): split ocio.rs into ocio/*.rs - 13fe6e5c refactor(effects): split sim.rs into sim/*.rs - 67ef9ad9 refactor(effects): split sim2.rs into sim2/*.rs - b05467e4 refactor(effects): split generate3.rs into generate3/*.rs - f5f51f8d refactor(ui-egui): move viewer frame, geometry, gestures, shapes, tools and view parts to panels/viewer/*.rs - 9b52c71a refactor(ui-egui): move viewer tests to panels/viewer/tests.rs
alf added 89 commits 2026-10-27 20:17:47 +00:00
The WGSL grammar test scanner indexed token characters directly, so a malformed shader could panic the test instead of failing it. Checked access turns that into a reported violation.
Preserve migration regressions and fix software GPU median timeouts
Use the fixed release for GHSA-vc25-qg58-w57c.
ci: require nextest 0.9.150
refactor: shared module layout (craft-contrib#20)
* fix(ui-egui): craft_ui::ComboBox for every combo box, so open menus grow back (egui#5225)

Repins craft-libs to aiongg/craft-libs 60d60d48 (storytold main with the shared
dropdown) and bans egui::ComboBox in clippy.toml.

* fix(ui-egui): font menu under the font field is a craft_ui combo menu that grows back

The filter row is the menu's header and only the font list scrolls, so a search
that matched nothing grows the menu back when it is cleared.

* chore(deps): craft-libs 4d7b82f7 (dropdown fixes)

* chore(deps): craft-libs 92d392cf (#387 merged)

* chore(xtask): pdf-deps expects craft-libs 92d392cf
Movie exports (H.264, HEVC, AV1, ProRes, uncompressed) rendered a batch of
frames on every core, then encoded it frame by frame while the render
threads waited. Each batch now encodes on a pool shared by all exports while the
next batch renders (Cx::frames_beside). With deferred GPU readbacks, or
where no thread can be started (wasm without threads), the two still take
turns. A panicking encoder becomes an export error.

H.264 frames are converted to 4:2:0 on the render threads, per frame, instead
of on the encoder's critical path. The conversion reads 8-bit levels from a
table and rounds without a libm call; both give the same values as before
(tested against the previous formula).

Demo comp (1920x1080, 300 frames) to H.264 on a 16-thread Ryzen, export
wall time -6% (median of 7 interleaved runs); output byte-identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Much of a layer buffer is often transparent (a stroked ring, a glow-padded
text layer, a precomp canvas), yet every destination pixel sampled it
bilinearly, and 8/16 bpc comps then re-quantised the layer's whole rotated
bounding box.

- Bilinear warps skip 16x16 source tiles whose pixels (and a one-pixel
  apron) all have zero alpha: their samples are transparent and were never
  drawn.
- The fast affine warp reports the rectangle it changed and, given the
  comp's levels, quantises each pixel as it blends it, so draw_comp has
  nothing left to re-quantise for that layer. quantize_px moves to
  effectcraft-raster for this.
- quantize_rect skips runs of four all-zero (+0.0) pixels, which quantise
  to themselves.
- to_rgba8 / to_rgba8_over convert row by row instead of per 4-byte item.

Every pixel stays bit-identical: tests compare the warp against the
reference path, fused quantising against quantising after blending, and
the zero-run skip against per-pixel quantising.

With the previous commit, demo comp to H.264 (`cargo xtask bench --scenario
demo --format h264 --frames 300`, 11 interleaved runs on a 16-thread Ryzen):
wall 9.26 s -> 6.97 s median (-24.8%), 8.55 s -> 6.55 s min (-23.3%); CPU
time -23%. Output byte-identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
H.264 and ProRes exports of a 60-frame comp (several render batches, a
rotating stroked ring, a fading solid at a fractional position, a
Screen-mode shape, 8 bpc) must keep the exact bytes main wrote before the
two previous commits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merge pull request #2518 from Silvertree2010/perf/export-speed
Some checks failed
ci.yml / Merge pull request #2518 from Silvertree2010/perf/export-speed (pull_request) Failing after 0s
nix.yml / Merge pull request #2518 from Silvertree2010/perf/export-speed (pull_request) Failing after 0s
packaging-lint.yml / Merge pull request #2518 from Silvertree2010/perf/export-speed (pull_request) Failing after 0s
sonarcloud.yml / Merge pull request #2518 from Silvertree2010/perf/export-speed (pull_request) Failing after 0s
ci.yml / Merge pull request #2518 from Silvertree2010/perf/export-speed (push) Failing after 0s
nix.yml / Merge pull request #2518 from Silvertree2010/perf/export-speed (push) Failing after 0s
packaging-lint.yml / Merge pull request #2518 from Silvertree2010/perf/export-speed (push) Failing after 0s
sonarcloud.yml / Merge pull request #2518 from Silvertree2010/perf/export-speed (push) Failing after 0s
dd12ed8f9c
Export: encode while the next batch renders, skip transparent pixels when compositing
alf merged commit dd12ed8f9c into main 2026-10-27 20:17:48 +00:00
alf deleted branch chore/sync-upstream-20261027 2026-10-27 20:17:49 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/effectcraft!12
No description provided.