Repository navigation
Macos port - #7201
Macos port#7201marion909 wants to merge 3 commits into
Conversation
Mach-O builds of the prx dylibs and relinked executables with export aliases, a guest image link map and dl_iterate_phdr over Mach-O images; the main thread runs presentation; XNU differences in errno, memory locking, shared memory, statvfs, rename, open, time, math, threads and sockets are answered as on Linux; host frames without DWARF unwind info are stepped through the system libunwind. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YV7XhGi2uc6xm2DZRYsyAt
Per-vertex pixel inputs from barycentrics, viewport depth clamping, rect-list culling, a separate continue block for every loop so SPIRV-Cross keeps the loop counter, HTILE fills on the CPU when the GPU does not touch them, and a list of the last draws on device loss. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YV7XhGi2uc6xm2DZRYsyAt
macOS variants for tests that probe procfs, ELF interposition of the C++ runtime and uffd write tracking; no test is skipped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YV7XhGi2uc6xm2DZRYsyAt
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Rebase handoff — rebased onto current
Verified on Linux (CachyOS, kernel 7.2.9, GCC 16.2.1, Ninja, Release, To pick it up: Head is |
On MoltenVK the rect-list control stage also sees patches whose three corners are the same point, and it reported them as invalid rectangles, so agc_driver_rect_list_indirect aborted on "rect-list requires finite nondegenerate axis-aligned positions". A rectangle whose corners coincide covers nothing, so such a patch now gets tessellation level 0 and is dropped; the levels are written after the check so an invalid rectangle is dropped too while its fault is still recorded, with the corner count and the first two corners in the fault record for diagnosis. The control stage no longer returns early on Metal, which needs every invocation to reach the end. Ported from boykopovar#7201. Co-authored-by: marion909 <103169397+marion909@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sceLibcBacktraceGetBufferSize and sceLibcBacktraceSelf threw NotImplemented outside Linux. They capture frames with backtrace() and name modules with dladdr, which macOS provides with the same behaviour, so the Linux implementation now builds there and guest_backtrace runs and passes on macOS. exception_c_cleanup, which was kept off macOS while host frames with only compact unwind info could not be stepped, also passes since that unwinding was ported from boykopovar#7201 and now runs on macOS; guest_image_anonymous stays off, as it reads /proc symlinks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@marion909 a heads-up and a question. My #11249 carries only the macOS There is one difference. #11249 copies the full 512-byte FXSAVE image from Which order would you prefer? I'm happy either way: land #11249 first and drop that file from yours, or I close #11249 if you'd rather keep it here. AI-assisted: yes (Cana) |
|
@marion909 one more file for the same merge-order question. On current I have a 9-line macOS-only version that I checked on current Would you rather keep AI-assisted: yes (Cana) |
|
@marion909 About merge order with #11437, which keeps the Linux-only parts of three AGC tests off macOS on current |
|
@marion909 a concrete case for the merge-order question. #11447 and this PR both add an Apple branch to
AI-assisted: yes (Cana) |
|
@marion909 #11554 overlaps
#11554 also throws when a point polygon mode is requested and CONTRIBUTING asks us to agree an order. I propose #11554 first, since it is small and #7201 already conflicts with |
What
macOS host support (x86_64 under Rosetta 2, Vulkan through MoltenVK). Everything platform-specific sits behind
__APPLE__or inspecifics/macos/; Linux and Windows code paths are unchanged except for the shared fixes listed at the end.Build and loading
dl_iterate_phdr/dladdr1/dlinfoover Mach-O images, process parameters and eh_frame ranges from the relinked image, one shared SDL2, the configured Vulkan loader for the display window.Kernel, libc and network semantics
nanosleep,strto*,getdirentries),mlock/munlockall, anonymousshm_openobjects,statvfs,renameover dangling links,O_CREATon directories,mktimerange,acosfrounding, thread CPU clock throughthread_info, guest thread stacks and exit destructors.sendto,shutdownafter peer shutdown,FIONREADon datagrams, AF_UNIX seqpacket pairs over datagram sockets, POLLPRI for urgent data, IPv4 literals in IPv6 lookups.std::terminategoes to the guest handler; host frames without DWARF unwind info (the prx dylibs carry only compact unwind) are stepped with the system libunwind.Graphics (MoltenVK)
VK_EXT_depth_range_unrestricted, rect-list culling of invalid rectangles.forincrement and drops the header phi updates, which hung the GPU.APS5_DUMP_DRAW_SHADERdumps all stages of draws using one shader.Tests and CI
Shared changes (all platforms)
fix(agc): portability-subset log line takes a format argument.fix(shader): the request format no longer changes with the MoltenVK barycentric mode.macos-port.yml, which publishes logs to a branch) is not part of this PR.Tested
guest_audio3d_port(a 128 ms timing check) fails on the loaded runner in some runs.tools/check_compile.pyon every change; the Linux test suite is unchanged.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch).mdfiles or images added to the repository🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01YV7XhGi2uc6xm2DZRYsyAt