Skip to content

Apple Silicon support for texture compression - #284

Open
rromanchuk wants to merge 2 commits into
oscarpilote:masterfrom
rromanchuk:apple-silicon
Open

Apple Silicon support for texture compression#284
rromanchuk wants to merge 2 commits into
oscarpilote:masterfrom
rromanchuk:apple-silicon

Conversation

@rromanchuk

Copy link
Copy Markdown
Contributor

Remove dependency because:

  • It has been end of life for a long time
  • Including an intel build on modern day Darwin, or requiring dynamic translation, doesn't make sense in this context

Usage:

magick -define dds:compression=dxt3 in.jpg out.dds

Flags:

DDS RW Microsoft Direct Draw Surface Use -define to specify the compression (e.g. -define dds:compression={dxt1, dxt5, none}). Other defines include dds:cluster-fit={true,false}, dds:weight-by-alpha={true,false}, dds:fast-mipmaps={true,false}, and use dds:mipmaps to set the number of mipmaps (use fromlist to use the image list).

@shred86

shred86 commented Oct 12, 2025

Copy link
Copy Markdown

Curious about pulling this PR into my forked version of Ortho4XP. Does anyone happen to know why nvcompress is used instead of DDSTool? I suspect there was a reason since it's been around since 2019.

@d41k4n

d41k4n commented Oct 12, 2025

Copy link
Copy Markdown
Collaborator

Curious about pulling this PR into my forked version of Ortho4XP. Does anyone happen to know why nvcompress is used instead of DDSTool? I suspect there was a reason since it's been around since 2019.

Maybe because it used to be faster back in the days (due to CUDA support) and accepts JPG as an input format? But that's just a guess.

@shred86

shred86 commented Oct 12, 2025

Copy link
Copy Markdown

Curious about pulling this PR into my forked version of Ortho4XP. Does anyone happen to know why nvcompress is used instead of DDSTool? I suspect there was a reason since it's been around since 2019.

Maybe because it used to be faster back in the days (due to CUDA support) and accepts JPG as an input format? But that's just a guess.

Ah, good point - looking at the readme for DDSTool, I see a note with the latest version 1.4 from 5/07/24 mentioning it can accept any format (png, tif, jpg, bmp). I wonder if prior to that it didn't accept jpg which would make sense.

As for CUDA support, also makes sense. However, someone just made a PR in my forked version to add a newer version of nvcompress for CUDA support so I'm wondering if it's broken in this older version.

Anyways, I think I may just switch to DDSTool for macOS since CUDA support is not applicable and use the newer version of nvcompress for Windows. I need to figure out if there's a way to get an updated version of nvcompress for Linux users to take advantage of CUDA.

shizumaat added a commit to shizumaat/Ortho4XP-novemberlima that referenced this pull request Jun 15, 2026
…ension

User ruling (2026-06-10): the 1.5% cap applies along the taxi CENTERLINE;
cross-axis diagonal chords are unregulated (ICAO Annex 14 / EASA
CS-ADR-DSN.D.265/.280) and inside-of-curve edges legitimately exceed the
cap.  All-pair/visibility chords had pinned high-speed exit junctions
flat (HECA oscarpilote#282 could not rise toward A4).

Built:
- _PER_AXIS_JUNCTIONS=True + the per-axis rule applied where junction
  constraints are actually built (_build_shape_constraints visibility
  path; the flag previously only touched the unused _build_edges path):
  along-axis pairs cap at the ARC between projections, cross-axis
  diagonals drop, ring-adjacent pairs survive.
- Curve-aware corridor distances: _junc_axis_arc supersedes shorter
  geodesics in _junc_geo_dist (hard bands, twist clamps, ties).
- RUNWAY-EXIT EXTENSION: chain termini at runway-touching junctions get
  a virtual HARD station at the runway contact; contact = the qualifying
  centerline's nearest runway intersection (extending ingest-cut ends
  straight) or the fan's THROAT vertex by in-junction geodesic when the
  apt.dat line cuts the corner (A4's line: 40 m in-junction where the
  fan flow runs ~190 m); value = runway edge interpolation; the virtual
  gap is recorded as a twist line source so the junction interior is
  painted; singletons survive when extended; extended singletons skip
  the anchor relax (it crushed A5 flat and left 3.9 m at the oscarpilote#284 seam).

MEASURED (HECA): junction oscarpilote#282 now carries the climb (59.4 throat ->
62.6 at A4's mouth, the user-specified behaviour); A4 7% -> 1.4%.
NOT shippable yet: A5/oscarpilote#283 unchanged (its far-mouth nodes were already
relief-crushed to 60.5 pre-corridor - different mechanism), oscarpilote#284 3.9 m,
new oscarpilote#302 3.7 m / oscarpilote#192 1.2 m, and the 05C dip regressed 107.9 -> 110.4
(virtual anchors changed the demand measurement).  Parked for tuning.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
shizumaat added a commit to shizumaat/Ortho4XP-novemberlima that referenced this pull request Jun 15, 2026
…8.7)

Diagnosed with full demand instrumentation (the 'regression' was three
separable bugs, not a design flaw):
1. THROAT fallback gated to SINGLETON exit stubs: HECA's diagonal
   runways made T4+U read tangential and the 216 m throat budget
   dissolved its runway-flex demand (05C 107.9 -> 110.4).  Multi-rect
   through-corridors keep the axis contact.
2. Virtual-blocker demands carry the CONTACT need to nearby runway
   vertices (<=60 m) instead of adding the contact->vertex leg, which
   diluted depth (109.6 -> 108.7; matches the user-validated p9
   semantics: the dip centres at the contact).
3. Route-reach bands relax to the chain's own curve-aware distance at
   stations of virtual-anchored chains (the reach graph cuts the same
   curve corners as the exit centerlines and re-clamped the climb the
   virtual granted).
4. Extended-singleton far termini try to anchor at the far junction's
   uncarved side (max, chain-feasibility-clamped) - NOT yet effective
   for A5: its entire far junction reads carved (~60.5), so the 64.4
   uncarved level lives on a different shape; next probe = map A5's
   far juncs-index to the shape that holds 64.4 and anchor against it.

State: 05C 108.7 (user ~108), 05L untouched 57.9-60.7, A4 1.1% with
oscarpilote#282 carrying the climb.  Open: A5/oscarpilote#284 3.7 m, #350 1.9 m, #317 1.6 m.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
shizumaat added a commit to shizumaat/Ortho4XP-novemberlima that referenced this pull request Jun 15, 2026
…root cause)

The oscarpilote#284/oscarpilote#232 A-complex cliff was NOT unmerged same-ref chains: the two
A chains are 1.86 km apart with apron oscarpilote#190 carrying the route between
them.  The high chain's SW terminus is an APRON MOUTH (junc=None, ring
nodes shared with the apron) anchored at the apron edge's DEM-settled
value (64.67) at station construction; nothing downstream could move it
(ties form chain-to-chain only, anchor self-consistency is intra-chain,
the freeze-veto's only escape requires a runway blocker) so it froze out
the A5-complex consensus tie (61.76, route ceiling 62.4 at the junction
side) and held the 63.3-vs-60.7 junction cliff.

Fix: in the tie freeze, when every blocking anchor is a non-hard UNTIED
terminus whose mouth opens into a free apron, project it MINIMALLY into
the tie's cap reach and accept the tie.  Projection, NOT un-anchoring:
dropping the anchor let HECA J's tail (0.33 m infeasible) fall 4.7 m to
the flat extension - a manufactured 5.3 m wall against G2's legitimate
writes in the same apron.

Measured (HECA, new apt.dat): oscarpilote#232/oscarpilote#233/oscarpilote#228 A-complex cliffs cleared,
A profile 62.5..61.8..63.4 with the tie landed, 05C 108.7 / 05L
57.9-60.7 / A4 climb / A5 flat all held.  CYXY relax never fires (10
pre-existing exit-junction viol unchanged), SPJC untouched (R1/R2
residual), suite 305p/4f = branch baseline.  Remaining: apron band-noise
residue (free apron vertices pinned at route-band floors ~0.6-1.7 m
above moved corridor writes - the p4/p7 band-pinning class, needs the
junction band_exempt treatment extended to aprons near corridor writes).

Also: chain-ends debug print (head/tail junc+mid per multi-rect chain).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

3 participants