Repository navigation
Integrate normal X3F rendering across native clients - #157
Merged
Merged
Conversation
Vendor the pinned x3f-sys source and parallelize chroma-offset calculations, highlight repair rows, and despeckle detection while preserving reduction and repair order. Add thread-count parity regressions, real-RAW benchmarks, and CMake coverage. Verified byte-identical output with lower decode time on macOS and Windows; existing baseline test failures are documented in the validation record.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Normal X3F rendering now feeds the shared preview/export engine and all four native clients (macOS, iOS, Android and Windows). Fresh edits use
normal-v1; records without an X3F identity keep the existing legacy false-color rendering. Mode changes preserve ordinary adjustments and looks. Mac and iOS switches to normal also disable incompatible lens correction in one settings update, and normal lens tools cannot re-enable it.The renderer pins x3fuse-core and the measured DP1S response. Merrill uses the verified Neutral profile; Quattro uses the verified AsShot/SPPA subset. Unsupported camera/settings combinations fail explicitly, with an explicit legacy recovery path. No SIGMA executable or proprietary library is needed at runtime.
Preview/reference caches, per-photo batch snapshots, relative white balance, exports and CLI recipe v7 carry the same X3F identity. Normal loads use LibRaw for identification only and unpack lazily if legacy is subsequently selected. CPU pixel conversion uses the bounded executor. Merrill chroma-offset workers, final highlight-repair rows and despeckle detection run in parallel while ordered accumulation/repair preserves output pixels.
Integration for merge
Source:
282da7856ae1d3dee3f1edf9c771174fb31e5e2d.Base incorporated:
ef21231f5b47da92ee756d318be5122dc51c2e35(development, including batch-flow PR #158).Merged into
developmentas9857b4794bfa4ba26559b39fd99c67a27c4d88d7. The exact development push Hosted CI run 41061004882 also passed contracts, all four platform model jobs and the aggregate CI result; its checkout SHA was verified.validateAIInput(url, settings:)toMacCollectionExportPreparation.snapshot.bash RawLabMac/build.sh: macOS arm64 app and bundle checks passed.bash RawLabMac/tests/batch-selection-model.sh: 132 checks passed, including asynchronous cancellation/stale results, real per-photo native exports and the new X3F regressions.python3 scripts/localization/generate.py --check: all 30 catalogs byte-identical.bash RawLabMac/tests/batch-flow-ui.sh <isolated-output>plus actual native UI execution: a normal X3F completed collection preflight, automatic frozen-task launch and original-size JPEG export (1760×2640); journal confirmedper_target_frozen,normal-v1and success.31bcdb9f6c536da5f4531f1d307f5f8a931141e3, merging source282da7856ae1d3dee3f1edf9c771174fb31e5e2dinto baseef21231f5b47da92ee756d318be5122dc51c2e35. This model-only CI does not substitute for the source-bound native/UI evidence below.Earlier platform validation
Source:
165a2a3cfae800a508b402c19e5209f6f0a36193, includingdevelopment a3d6bded14f963cd8f5f44c11109c747bb978adc.Merrill performance follow-up
Source:
81d92d92be55ee581c1081213a76d20ca7a895cc. Measurements cover a complete native bridge decode of one original DP2 Merrill sample, excluding hashing/file writes.geometry_apiandgeometry_rawfailures reproduced with unchanged C++ and pristine upstream Rust. Sixteen Windows native-oracle failures also reproduced identically upstream; these are recorded baseline limitations, not a claim of a fully green cross-platform oracle suite.Lens-correction follow-up
Source:
8c53620a6e56f0a0c971e28d291a12adce185f2a.RawLabMac/tests/edit-model.shandRawLab/tests/edit-memory.shpassed, including settings/persistence, profile preservation and returning to legacy. The new lens-switch assertion failed before the fix and passed afterward.tests/x3f-workflow.shpassed native preview/export after switching a lens-enabled legacy edit.RawLab/tests/x3f-ui.sh: 3/3 executed iOS 27 simulator UI tests passed, including lens-enabled legacy → normal → Photos export → restart.Limits
DP1S remains a measured approximation; Quattro still differs visibly from SPP. Family dispatch does not establish every body/control combination. Merrill retains serial dependency stages and full-resolution development cost. Normal X3F uses the display-referred CPU path; GPU Auto falls back and Force reports unsupported.
Physical mobile devices, minimum-OS runtime coverage and normal-X3F GPU processing are not verified. Mobile/Windows native/UI suites were not repeated for the final batch integration; their previous source-bound evidence remains above. Capture EXIF may be absent when the OS cannot parse X3F. Windows input replacement while open remains unverified because LibRaw prevents deletion.
Original RAW checksums stayed unchanged. Logs, source manifests and UI screenshots are retained outside tracked source. Merge target is
development; no release or deployment is included.