Commit Graph
5577 Commits
Author SHA1 Message Date
Dean 451b72ecc6 Merge pull request #695 from tv7/feat/agc-submit-multi-dcbs
feat(libSceAgcDriver): implement sceAgcDriverSubmitMultiDcbs and sceAgcDriverAgrSubmitMultiDcbs
2026-10-06 22:26:54 +13:00
Mehran 498b53bbf5 fix(agc): release pooled buffers and image mirrors before the device 2026-10-06 12:22:26 +03:00
boykopovar e76c70f682 Merge pull request #676 from adriadam10/refactor/drop-bundled-middleware
refactor(libs): drop replacements of modules that titles ship themselves
2026-10-06 11:57:51 +03:00
MerijnandClaude Opus 5.5 d1d98a8261 fix(savedata): accept a repeated sceSaveDataInitialize3
A second sceSaveDataInitialize3 returned SAVE_DATA_ERROR_ALREADY_INITIALIZED.
PPSA12544's executable and its Unity SaveData plugin both initialize, and
the plugin raises Unity.SaveData.PS5.Core.SaveDataException on any error,
so the console must accept the second call. Initializations are now
counted; sceSaveDataTerminate ends the session at the last one and only
then checks for mounted slots.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 10:46:48 +02:00
MerijnandClaude Opus 5.5 f81425ec8e fix(audioout2): read grains at the next push and play them behind a cushion
A push mixed the ports' buffers at once and queued the mix on SDL, and
the queue level left out a 40 ms cushion that the SDL queue rarely
exceeded, so titles saw an empty queue. PPSA12544's FMOD output fills a
256-frame buffer after pushing it, reuses it two pushes later, and its
mixer thread can still be writing a buffer when the next push follows
within microseconds: a grain boundary broke about every 5 ms (an audible
crackle).

A push now records the buffers the ports point at and reads the previous
grain at the next push, 100 us after it. The mixed frames are played by
the SDL device callback, which waits for a 40 ms cushion before it plays
(again after running dry), and the queue level counts the unplayed
grains beyond that cushion. Recording the four buffers at every push
showed 27% of boundaries broken when read at the push, 59% when read two
pushes later and none when read at the next push; the title's output
went from 4-9% to none of its grain boundaries broken over 6,000 loud
grains.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 10:45:27 +02:00
MerijnandClaude Opus 5.5 ef10a36b8a fix(agc-driver): accept per-engine primitive discard in PA_SC_MODE_CNTL_1
Bit 17 of PA_SC_MODE_CNTL_1 (MULTI_SHADER_ENGINE_PRIM_DISCARD_ENABLE)
lets each shader engine drop primitives outside its screen region, a
work distribution setting with no visible effect. Draws with it set were
skipped as unsupported. PPSA12544 sets it (0x06020000, with the already
accepted EOV bits 25 and 26) on the draws that produce its presented
image, so every frame it presented was black.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 10:42:03 +02:00
Claude 897d538649 refactor(relinker): use the shared ELF constants
The relinker redefined 61 ELF constants 93 times across seven files,
38 of them already in elfpatcher's ElfConstants.hpp. Add the missing
dynamic tags, relocation types and symbol constants to that header and
remove the local copies; every value is unchanged. strict_nid_filter_tests
compiles these sources and now gets the elfpatcher include directory.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MBXJqzgohLeVAeHsn4Jpm7
2026-10-06 08:26:50 +00:00
LeandroLP23andClaude Opus 5.5 e302d5507f fix(shader): serialize locked LDS updates with a wave-uniform loop exit
Each lane left the lock loop as soon as it acquired the lock, so the
driver's compiler could sink the critical section and the release past
the loop exit; on AMD the holder then waited outside the loop for lanes
spinning on its lock, and the GPU hung until a TDR. One elected lane now
takes the lock per iteration and the loop exits once a ballot shows no
lane left.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 10:16:21 +02:00
MerijnandClaude Opus 5.5 b550545b4f fix(libkernel): keep redirected delivery off the red zone and the heap
The redirect entry's Windows x64 home area started inside the guest's
128-byte red zone, and the interrupted thread freed the delivery on the
heap, which it may have been suspended inside. The delivery is now copied
onto the target stack below the red zone, with the home area below it, and
the copy is refused when those pages are not committed.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 09:59:16 +02:00
Merijn c321404196 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/kernel-raise-exception-windows
# Conflicts:
#	core/libs/prx/libkernel/Pthread/src/Thread.cpp
#	docs/dev/TechnicalDebt.md
2026-10-06 09:59:16 +02:00
Merijn 17332edb44 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/kernel-is-stack
# Conflicts:
#	core/libs/prx/libkernel/Pthread/src/Thread.cpp
2026-10-06 09:58:27 +02:00
Merijn 44bfb9295d Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/libs-ppsa12544-plugin-exports
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-06 09:54:07 +02:00
Merijn deddb1092e Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/kernel-exception-handler-registration
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-06 09:54:05 +02:00
Merijn 4d47b3aac5 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into fix/videoout-unsupported-output-mode
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-06 09:54:03 +02:00
LeandroLP23andClaude Opus 5.5 0275abd8a8 test(agc): skip the 2D derivative cases without non-constant texel offsets
The 2D shader samples with computed texel offsets, which the recompiler
accepts only with VK_KHR_maintenance8; without it the whole test failed
before the 3D and 1D cases ran.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 09:48:06 +02:00
LeandroLP23andClaude Opus 5.5 025606ceb4 feat(font): implement sceFontGetFontResolution
Report the face's units per EM and the driver's face scale.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 09:34:56 +02:00
LeandroLP23andClaude Opus 5.5 34ba33faf7 feat(font): implement sceFontGetFontGlyphsCount and sceFontGetCharGlyphCode
Report the face's glyph count and the glyph index of a character through
the library's driver; the FreeType driver gains its glyphs_count entry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 09:23:44 +02:00
alfalfa-starandClaude Opus 5.5 5e009d75ec feat(libkernel): implement the rtld thread atexit reference count
A title's libc.prx passes the dso address of __cxa_thread_atexit to
_sceKernelRtldThreadAtexitIncrement and fails the registration when it
returns nonzero. Increment takes a reference on the loaded image that
contains the address, so it stays mapped while thread_local destructors
are pending, and Decrement releases one. An address outside every
loaded image and a Decrement without a reference throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 08:36:23 +02:00
alfalfa-starandClaude Opus 5.5 57466b6267 test(libs): keep the fixture's DT_NEEDED entries under --as-needed
Ubuntu's GCC links with --as-needed by default, and the fixture uses
nothing from libc or libstdc++, so it ended up with no DT_NEEDED entry
and the dynamic string test had no needed names to check.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 08:35:25 +02:00
Adrià FranchandClaude 0f2699eef4 feat(libkernel): Aio batch submit, wait, cancel and delete
Co-Authored-By: Claude <[email protected]>
2026-10-06 08:11:07 +02:00
Adrià FranchandClaude bc7fdff9e5 feat(libSceHttp): add sceHttpSetResponseHeaderMaxSize, sceHttpRedirectCacheFlush, sceHttpsUnloadCert
Co-Authored-By: Claude <[email protected]>
2026-10-06 08:06:17 +02:00
Adrià FranchandClaude 6dbdd927ee feat(ngs2): system sample rate, user data and lock
Co-Authored-By: Claude <[email protected]>
2026-10-06 08:02:42 +02:00
LexroidandClaude Opus 5.5 54f0e03cde feat(libSceIme): implement sceImeKeyboardGetResourceId
The resource id array is cleared and given the user. A null array returns
INVALID_ADDRESS and an invalid user INVALID_USER_ID without writing it; a
user whose keyboard is not open gets NOT_OPENED, and an open one gets
CONNECTION_FAILED, as no USB keyboard is reported through the IME, as in
shadPS4. The missing IME keyboard events are recorded in TechnicalDebt.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 08:56:44 +03:00
LexroidandClaude Opus 5.5 82488a5665 feat(libSceJson2): implement typed construction, indexed and keyed value access, InitParameter2
Value(ValueType) constructs a value of the given type. getValue(index) and
getValue(String) return the element or member, or the null-access result when
it is missing, as operator[] does. referValue(index) returns the mutable array
element, or null when the value is not an array or the index is out of range,
as referValue(String) does for members. Object::size returns the member count.

InitParameter2 is the class form of InitParameter: its constructor zeroes it,
setAllocator and setFileBufferSize record their arguments, and
Initializer::initialize(InitParameter2) succeeds as
initialize(InitParameter) does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 08:54:37 +03:00
Adrià FranchandClaude 6d2713cbdd feat(libkernel): implement sceKernelGetDirectMemoryType
Co-Authored-By: Claude <[email protected]>
2026-10-06 07:44:18 +02:00
Adrià Franch 5a031f3ef6 fix(ngs2): start UserFx2 process flags at 1 on the first call 2026-10-06 07:40:12 +02:00
Adrià FranchandClaude 52869f0112 feat(ngs2): custom submixer rack with UserFx2 modules
Co-Authored-By: Claude <[email protected]>
2026-10-06 07:40:12 +02:00
Celegans12 76ddd9b6d4 feat(agc): implement unnormalized sampler coordinates on single-level 1D and 2D views
An S# with FORCE_UNNORMALIZED threw in DecodeSamplerResource. It is now
bound through a Vulkan sampler with unnormalizedCoordinates when every
use stays where the S# and the host select the same texels.

ShaderInfoCollector records the live uses of each sampler after Apply
and dead-code elimination, and the emitter shares its explicit-LOD
predicate. Populate flags a direct S# with the bit that only explicit-LOD
image_sample without offset, comparison, derivatives or _a uses, paired
only with direct 1D or 2D images without a format conversion; anything
else throws. The driver checks the S# filters, clamps, TRUNC_COORD and
MC_COORD_TRUNC, creates the sampler with nearest mips and a zero LOD
range, and requires a single-level, single-layer 1D or 2D view of mip 0.
The shader disk cache format becomes 5.
2026-10-06 07:36:30 +02:00
Dean 481c85e7c9 Merge pull request #778 from adriadam10/feat/ngs2-sampler-filter
feat(libSceNgs2.native): sampler voice low-pass filter
2026-10-06 18:36:28 +13:00
Dean 35a54f470c Merge pull request #666 from adriadam10/feat/sdwa-ldexp-f16
feat(shader): accept every SDWA selector, clamp and omod on v_ldexp_f16
2026-10-06 18:35:46 +13:00
Dean d2b23fb135 Merge pull request #664 from adriadam10/feat/f16-ternary-clamp
fix(shader): accept clamp and omod on every f16 VOP3 result op
2026-10-06 18:35:04 +13:00
Dean aa335b85ba Merge pull request #802 from Raghav314/feat/videoout-allow-wqhd-detection
feat(libSceVideoOut): implement sceVideoOutAllowOutputResolutionWqhdDetection
2026-10-06 18:34:23 +13:00
Adrià FranchandClaude ab98cd7f4a feat(libkernel): sceKernelReadv, Writev, Preadv and Pwritev
Co-Authored-By: Claude <[email protected]>
2026-10-06 07:33:51 +02:00
Adrià FranchandClaude 3515ead91a feat(rtc): implement sceRtcFormatRFC2822 and the RFC 2822/3339 local-time formatters
Co-Authored-By: Claude <[email protected]>
2026-10-06 07:27:27 +02:00
Adrià FranchandClaude 819c045327 feat(libSceNgs2.native): sampler voice low-pass filter
Co-Authored-By: Claude <[email protected]>
2026-10-06 07:16:25 +02:00
Adrià FranchandClaude 4e5a1fe9d4 feat(rtc): parse RFC 2822 and asctime strings in sceRtcParseDateTime
Co-Authored-By: Claude <[email protected]>
2026-10-06 07:16:02 +02:00
Adrià FranchandClaude 79057e9160 refactor(libs): drop replacements of modules that titles ship themselves
Co-Authored-By: Claude <[email protected]>
2026-10-06 07:11:33 +02:00
raghav314andClaude Opus 5.5 958b856832 feat(libSceVideoOut): implement sceVideoOutAllowOutputResolutionWqhdDetection
Lets an open port report 2560x1440 output (resolution 4). The output
status here is 1080p or 2160p, so the call changes nothing it reports.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 10:10:25 +05:30
raghav314andClaude Opus 5.5 670ffb9da3 feat(libkernel): implement sceKernelGetAvailableCpumask
Returns the CPU mask threads get by default (DEFAULT_THREAD_AFFINITY,
0x1FFF), the value itself rather than an error code.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 09:41:52 +05:30
Dean 109a3281f8 Merge pull request #767 from 011010/feat/relinker-windows-tls-alu-reads
feat(relinker): support Windows guest TLS reads by ALU instructions
2026-10-06 16:35:21 +13:00
Dean 9ee9f8fc7e Merge pull request #798 from nicolasabosch/fix/agc-profile-output
fix(agc): move periodic profiling writes off GPU workers
2026-10-06 16:33:36 +13:00
Dean aff8dfb3f3 Merge pull request #797 from ThisIsAkill/fix/libc-fiopen-export
feat(libc): export std::_Fiopen as unimplemented
2026-10-06 16:32:54 +13:00
Dean 4ee77fc5ac Merge pull request #796 from CnRJay/feat/appcontent-addcont-mount
feat(libSceAppContent): answer add-content mounts without installed content
2026-10-06 16:32:12 +13:00
Dean 746d3c6897 Merge pull request #794 from CnRJay/feat/ime-closed-panel
feat(libSceIme): report the closed IME panel
2026-10-06 16:31:30 +13:00
Dean 0db5bfcf36 Merge pull request #792 from CnRJay/feat/libkernel-sendmsg-recvmsg
feat(libkernel): implement sendmsg and recvmsg
2026-10-06 16:31:19 +13:00
Dean dee8fa1855 Merge pull request #791 from CnRJay/feat/agc-driver-resource-queries
feat(libSceAgcDriver): answer the resource registration queries
2026-10-06 16:30:38 +13:00
Dean faf985ea11 Merge pull request #790 from CnRJay/feat/image-msaa-load
feat(shader): implement image_msaa_load
2026-10-06 16:29:56 +13:00
Dean 77a8bf3370 Merge pull request #789 from Celegans12/feat/voiceqos-init-app-type
feat(voiceqos): accept app type 0x10000000 in sceVoiceQoSInit
2026-10-06 16:29:14 +13:00
Dean cf139f3e4c Merge pull request #751 from Celegans12/feat/shader-sdwa-vmov-byte-preserve
feat(shader): accept every SDWA selector on v_mov_b32
2026-10-06 16:28:32 +13:00
Dean 331775b3e7 Merge pull request #685 from nicolasabosch/feat/agc-raw-compute-programs
feat(agc): support version initialization and raw compute programs
2026-10-06 16:27:51 +13:00