LOGF/LOGF_COLOR always ran fmt::sprintf even when the output was discarded; at
emulator log volume the formatting alone costs frames. Add Log::IsSilent() and
short-circuit before formatting. Behavior-preserving on all platforms (it only
skips work whose result is thrown away); before init it reports non-silent so
early logs still print.
(cherry picked from commit 1749e0fc68ae4290055fb12f72c9bb4baf466190)
macOS compiles the existing POSIX/Linux code paths (KYTY_PLATFORM_LINUX)
targeting x86_64 under Rosetta 2. Adds an APPLE branch to the build:
selects Apple's ld64 linker, unsets the Ninja response-file forcing (Apple
ar has no @file support), derives the target arch from CMAKE_OSX_ARCHITECTURES
for cpuinfo/ffmpeg, and re-signs the binary post-build with JIT entitlements
(required to execute written trampolines and Rosetta-translated guest code).
All changes are guarded by if(APPLE); Windows and Linux configuration is
unchanged.
(cherry picked from commit 13be13b7573b9a687cf87531a81e4497ed3de1d5)
Map paired PS5 depth-clip state through Vulkan pipeline creation and preserve asymmetric hard failures. Prepare GPU-mapped guest ranges before kernel file reads so buffer, texture, and alias ownership remains coherent. Add focused regression coverage and update the current launch target.
# What changed
- Drop the unused VK_FORMAT_D24_UNORM_S8_UINT device check that
rejected some AMD GPUs.
- Only treat VALIDATION-type Vulkan messages as fatal, not
GENERAL-type ones.
- Restrict compute queues to the graphics queue's family.
- Force per-invocation lane mask emulation for 64-wide waves, since
RDNA's lane layout differs from GCN despite matching wave size.
# Why
On AMD Radeon GPUs the emulator failed to find a suitable device,
crashed during queue setup, or rendered corrupted output, while
NVIDIA was unaffected.
Each change removes an assumption in device selection, debug
message handling, queue selection, or shader lane-mask emulation
that happened to hold for NVIDIA but not for AMD.
# Validation
- Built on Windows with clang-cl. Note: the latest Vulkan SDK
(1.4.350) fails to build against the pinned Vulkan-Headers
submodule; used 1.4.328.1 instead, which matches it.
- Tested on a Radeon RX 9070 XT + Ryzen 7 9800X3D.
- Alex Kidd in Miracle World DX and Dreaming Sarah now boot and
render correctly (previously failed to start or rendered
corrupted).
- Not yet verified for regressions on NVIDIA hardware; testing from
someone with an NVIDIA GPU would help confirm no regression there.
# AI assistance disclosure
AI assistance was used to diagnose the root cause of each issue and
prepare the initial patch. The contributor reviewed the complete
diff and tested it on the affected AMD hardware before opening this
pull request.