Another week another release . There are ton of changes , so why not ?
Core
- Properly check where an input came from for digital->analog input smoothing
- cpu_patches: Work around Rosetta 2 mistranslating negated scalar compares
- file_sys: Report stable file identities in stat and fstat
- Allow file type identification for '/addcont' path
- emulator: stop clearing temporary data on boot
- Add PT_SCE_MODULE_PARAM case
- cpu_patches: Fix JIT patching at addresses outside any module
- core: Fix MemoryManager::Free unmapping past the released rang
- file_sys: don't abort when a guest path goes through a regular file
- use VMA pointers instead of copies in TryWriteBacking
- cpu_patches: Workaround Rosetta 2 crash on VMASKMOVPS/PD
- Handle ELF metadata and toolchain comments program headers
- common: reuse one high-resolution waitable timer per thread in AccurateSleep
- Don't abort when optional ELF metadata segments can't be read
- cpu_patches: Fix register clobbering in Rosetta 2 VMASKMOV workaround
- renderdoc: Add library name for macOS
- renderdoc: Add alternate path for macOS
- lru_cache: Fix early stop in ForEachItemBelow
- Avoid deadlock when Shutdown is re-entered on the same thread
- Check if elf info is initialized when shutting down
Libraries
- kernel: Implement I/O event queue APIs with Core::Net integration
- kernel: fail rmdir on non-empty directories with ENOTEMPTY
- app_content: Implement sceAppContentTemporaryDataMount
- kernel: Try lock without wait in timed mutex if deadline has passed
- usbd: Implement libSceUsbStorage HLE for virtual USB media access
- http: allowing headers with surrounding whitespace
- kernel, rtc: Fix timezone and DST calculation
- music: Implement libSceMusicPlayerService HLE
- videodec2: Drain pending frames and wrap in RAII
- usbstorage: Correct OrbisUsbStorageDeviceInfo layout and population
- app_content: Implement sceAppContentAddcontUnmount
- app_content: Implement TemporaryData mount and unmount
- np_auth rewrite
- Ajm: Auto-detect and safely parse RIFF headers for ATRAC9
- libSceVoice: stub a disconnected microphone to fix BO2 and BO3 hangs
- net: report recv_queue_length in sceNetGetSockInfo
- kernel: Register missing filesystem symbols and fix /dev/null device
- kernel: return ENOENT from mkdir when the parent does not exist
- kernel: return EBADF when writing to a file opened read-only
- kernel: return EINVAL from ftruncate for bad lengths and read-only fds
- kernel: return ENOENT from unlink when the file does not exist
- pad: Implement scePadReadExt and scePadReadStateExt
- gnmdriver: Fix remapped compute queues starting at a stale ring offset
- app_content: Load additional content from linked services (SERVICE_ID_ADDCONT_ADD_n)
- app_content: Populate add-on entitlement keys
- app_content: Fix entitlement keys and service labels
- playgo: Fix language mask UB and default install speed
- kernel: Fix self-rename deletion and host path tracking in posix_rename
- music: Implement sceMusicPlayerServiceSetUsbStorageDeviceInfo
- kernel: Implement posix_flock and sceKernelFlock
- audio3d: Fix swapped attribute ids
- audio3d: Fix swapped attribute ids (OpenAL)
- kernel: Improve Neo mode handling and implement missing APIs
- kernel: return ENOENT from open(O_CREAT) when the parent does not exist
- videodec: libSceVdecCore HLE and VideoCore server interface callbacks
- np_trophy: Fix platinum trophy never unlocking
- threads: fix stack base value in windows
- share_play: Implement sceSharePlayGetCurrentConnectionInfoA
- net: answer PS4 device discovery on UDP 987
- np_score : fixed a few inaccurancy returns and data transfers
- kernel: Fix filesystem validation and posix_select
- pad: report the DualShock 4 touchpad height (942) instead of 950
- kernel: return ENOTDIR from mkdir when the parent is a file
- save_data: deliver backup completion callbacks
- fiber: Relocate fiber stacks away from GPU tracked heap on Windows
- np_score : improved score data transfer, comparable dates and improved friends ranking
Video Core
- Garbage Collector part 2
- vk_runtime: Copy every mip level in CopyImageWithBuffer
- Support stencil-only depth targets and decouple stencil sizing
- Fix CE/DE counter synchronization in PM4 packets
- texture_cache: keep subresource data when its parent image is first created
- texture_cache: don't copy stale CPU-dirty image contents in ExpandImage
- Fix global CE task scheduling
- texture_cache: Drop GPU-modified images whose untracked edges the guest overwrote
- video_core: Handle PM4 IT_GET_LOD_STATS packet
- video_core: reset hash on image refresh
- video_core: Fix Ubscaled number format name
- vk_instance: Support RenderDoc on drivers without capture replay
- liverpool: Follow chained indirect buffers without returning
- liverpool: Advance past a packet by the size read before running it
- video_core: Compare subresource extents per dimension
- vk_rasterizer: Bound the render area of passes without attachments by the scissors
- video_core: Handle PM4 Type 2 and Rewind packets in Constant Engine
- video_core: Implement PM4 streamout buffer updates
Shader Recompiler
- Emit undefined 64-bit integers
- Preserve CFG fallthrough edges
- Stabilize phi deduplication order
- Account for singleton dimensions in LDS barrier analysis
- Exclude GetUserData from Phi folding
- Accept S_SLEEP as a scheduling hint
- Handle buffer cache invalidation instructions
- Add fast_shader_math setting to relax float rules
- info.has_derivatives.Assign now also checks for MimgModifier::CoarseDerivative
- Handle HW_ID.SE_ID reads
- Support GsOp::EmitCut in S_SENDMSG