Commit Graph
2349 Commits
Author SHA1 Message Date
Adrià 69e7138acc Merge pull request #5808 from Ondra97/codex/feat-configurable-trace-capacity
feat(agc): configure trace event buffers
2026-10-14 16:10:27 +02:00
Adrià 8488fa7274 Merge pull request #5749 from OleksandrS23/feat/macos-file-event
feat(libkernel): EVFILT_VNODE on macOS through the host kqueue
2026-10-14 16:08:18 +02:00
Adrià eb59c7642e Merge pull request #5666 from Kurenaiiiii/feat/libkernel-sigsuspend
feat(libkernel): implement sigsuspend on the pending-signal set
2026-10-14 16:04:55 +02:00
Adrià bb7e47a889 Merge pull request #5634 from klosixgaming-arch/feat/json2-pair-iterator
feat(libSceJson2): implement Object::Pair, Array::iterator copies and notifyError
2026-10-14 16:04:09 +02:00
Adrià 1e8252dc0d Merge pull request #5515 from ps54all/feat/libscecescs-eucjp
feat(libSceCesCs): convert EUC-JP (CP51932) strings through a profile context
2026-10-14 16:03:36 +02:00
Adrià 28b6f19879 Merge pull request #5779 from mrfelek/pr/depth-storage-slice-view-v3
feat(agc): storage image access to depth planes through a 2D array view from a later slice
2026-10-14 15:51:11 +02:00
Adrià f3a826ba5c Merge pull request #5673 from ps54all/feat/agc-ps-iter-sample
feat(agc): run the pixel program per sample for PS_ITER_SAMPLE
2026-10-14 15:48:57 +02:00
Adrià f9cc924fe6 Merge pull request #5180 from semirkabir/feat/shader-mode-rounding-tracking
feat(shader): track MODE rounding changes through the control flow graph
2026-10-14 15:47:15 +02:00
Adrià 990c554af3 Merge pull request #5771 from simonbronk/feat/http2-websocket-ping-timeout
feat(libSceHttp2): export sceHttp2WebSocketSetPingTimeout
2026-10-14 15:43:12 +02:00
Semir Kabir f662afe533 feat(shader): track MODE rounding changes through the control flow graph 2026-10-14 15:07:24 +02:00
Adrià 937cd6cab2 Merge pull request #5539 from JJenkx/feat/videoout-eop-flips
feat(videoout): present reserved flips from tagged GPU completion
2026-10-14 15:04:12 +02:00
Adrià 45d99dac82 Merge pull request #5563 from karimibrahim07/feat/libc-fegetenv
feat(libc): implement fegetenv
2026-10-14 14:59:26 +02:00
Adrià beb7e94048 Merge pull request #5453 from overlordxrz-source/feat/agc-device-fault
feat(agc): report device losses with VK_EXT_device_fault and dispatch checkpoints
2026-10-14 14:58:14 +02:00
Adrià 131171e772 Merge pull request #4840 from Lorkydey/feat/shader-fragment-user-data-tail
feat(shader): link raw fragment epilogs through user data
2026-10-14 14:56:34 +02:00
ps54allandClaude Sonnet 5.5 af7ca4af50 feat(agc): run the pixel program per sample for PS_ITER_SAMPLE
PA_SC_MODE_CNTL_1 bit 16 (PS_ITER_SAMPLE) was rejected with the other scan
control bits. On a multisampled draw it now enables Vulkan sample shading with
a minimum rate of 1.0, and the draw throws when the device lacks
sampleRateShading. On a single-sample draw the bit has no effect and is
dropped. The flag is part of the pipeline, pipeline library and draw register
keys.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 14:53:42 +02:00
Adrià 7181fe94d6 Merge pull request #5616 from JJenkx/feat/vp9-picture-info
feat(videodec2): implement VP9 picture metadata
2026-10-14 14:53:32 +02:00
Adrià 1b55ee4ab3 Merge pull request #5610 from Dripl1x/codex/feat-libkernel-fixed-anonymous-mmap
feat(libkernel): support fixed anonymous mmap
2026-10-14 14:52:53 +02:00
Adrià 24f58e534a Merge pull request #5605 from babyhuey/feat/libkernel-soc-power
feat(libkernel): export sceKernelGetSocPowerConsumption
2026-10-14 14:51:36 +02:00
Adrià 8bbed135fa Merge pull request #5592 from JJenkx/feat/videoout-buffer-labels
feat(videoout): expose buffer labels and release replaced frames
2026-10-14 14:50:50 +02:00
Adrià 4e0cb18d1e Merge pull request #5545 from Nixitov/feat/setpriority
feat(libkernel): implement setpriority
2026-10-14 14:46:16 +02:00
Adrià 3bbfc60bb7 Merge pull request #5448 from joelfernandes23/fix/pad-audio-rumble-20261013
feat(pad): bridge controller audio haptics to motor rumble
2026-10-14 14:43:54 +02:00
Adrià 85f240e3c3 Merge pull request #5438 from milchgeldkassierer/fix/json-value-set-null-access-callback
feat(libSceJson2): implement Value::setNullAccessCallBack
2026-10-14 14:43:12 +02:00
Adrià b52356acca Merge pull request #5307 from MarcZX100/codex/ajm-m4aac-3410
feat(libSceAjm.native): implement M4AAC decoding
2026-10-14 14:42:25 +02:00
Adrià a628765e58 Merge pull request #5053 from YossiYad/feat/libkernel-mmap-regular-files
feat(libkernel): map regular files with mmap on Linux
2026-10-14 14:41:32 +02:00
Adrià FranchandClaude 353094a254 Revert "Merge pull request #5089 from fdfawef324/feat/recompiler-waterfall-descriptors"
agc_driver_waterfall_images fails on main since fd438f663: its compute shader
runs an LOD query with a local size of 8x1, and the module gets
DerivativeGroupQuadsKHR, which SPIR-V validation rejects unless both
dimensions are even (VUID-StandaloneSpirv-DerivativeGroupQuadsKHR-10151).

This reverts commit fd438f663, reversing changes made to 51031742e.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-14 14:38:28 +02:00
ps54allandClaude Opus 5.5 61e10efbd6 feat(libSceCesCs): convert EUC-JP (CP51932) strings through a profile context
sceCesUcsProfileInitEucJpCp51932 returns a profile for EUC-JP, and
sceCesMbcsUcsContextInit now keeps the profile in the context. The
multibyte string conversions (UTF-8, UCS-2, their length queries) and
sceCesEucJpToUcs2 convert ASCII and the JIS X 0201 half-width katakana
for that profile, and every character for the existing CP1252/CP1251
profiles. Two- and three-byte JIS X 0208/0212 characters throw, since
their mapping table is not present.

Metal Gear Solid 4 Master Collection (PPSA18194) imports the set in its
game executable, which fails to load without it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:32:42 +02:00
Adrià 9a3e2ac4da Merge pull request #5187 from p3n1cillin/claude/getrlimit-nofile
feat(libkernel): report RLIMIT_NOFILE through getrlimit
2026-10-14 14:27:42 +02:00
JJenkx 8c0c449173 feat(videoout): present reserved flips from tagged GPU completion
Rebased onto main as one commit (conflicts in debt notes, Presentation.cpp includes and Submission.cpp helpers).
2026-10-14 14:22:36 +02:00
Adrià 2aad306825 Merge pull request #5546 from alexpournaras/feat/ces-profile-cp1250
feat(libSceCesCs): declare sceCesRefersUcsProfileCp1250
2026-10-14 14:22:07 +02:00
Adrià 956269ad1a Merge pull request #5470 from p3n1cillin/claude/ngs2-custom-sampler-state
feat(ngs2): report custom sampler voice state
2026-10-14 14:20:02 +02:00
Adrià 1015c55ee8 Merge pull request #5324 from lubaxe/feat/agc-store-pending-at-label
feat(agc): store pending storage-image results before each GPU label with APS5_STORE_AT_LABEL
2026-10-14 14:18:57 +02:00
Adrià e736e5bdb1 Merge pull request #5156 from pushkarreddyy/feat/agc-sampler-secondary-lod-bias
feat(libSceAgcDriver): support secondary LOD bias and relax unnormalized coordinate filters
2026-10-14 14:13:05 +02:00
Adrià cd65bfafe2 Merge pull request #5249 from SleglJan/perf/sparse-run-import
perf(agc): bind a sparse descriptor heap's committed run in place from its import
2026-10-14 14:05:10 +02:00
Adrià Franch 32a11a57d1 docs(libc): move the fegetenv debt line off the end of its section 2026-10-14 14:02:31 +02:00
Karim IbrahimandClaude Opus 5.5 34cf0e223f test(libc): cover fegetenv with a null environment and pending x87 flags
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:02:31 +02:00
Karim IbrahimandClaude Opus 5.5 74b93adb6c feat(libc): implement fegetenv
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:02:31 +02:00
Adrià fd438f663d Merge pull request #5089 from fdfawef324/feat/recompiler-waterfall-descriptors
feat(recompiler): plan waterfall loops over per-lane T#s as non-uniform tables
2026-10-14 14:01:42 +02:00
Adrià 2e9ef83a5f Merge pull request #5042 from LeandroLP23/docs/progress-history-counts
feat(tools): plot counts in the progress history chart
2026-10-14 14:00:37 +02:00
Adrià e9a985db1a Merge pull request #4969 from fdfawef324/feat/agc-pm4-capture-replay
feat(agc): capture submissions and replay their decode and wait releases offline
2026-10-14 13:59:22 +02:00
Adrià 781b33d3ca Merge pull request #4821 from Lorkydey/feat/shader-vertex-user-data-tail
feat(shader): link raw vertex prologs through user-data tails
2026-10-14 13:57:10 +02:00
Ondra97 1effd67b70 feat(agc): configure trace event buffers 2026-10-14 13:53:57 +02:00
1402c6c1d8 feat(agc): report device losses with VK_EXT_device_fault and dispatch checkpoints
A device that supports VK_EXT_device_fault reports, on the first
VK_ERROR_DEVICE_LOST a check sees, the fault description, the faulting
addresses (invalid reads and writes, or the instruction pointers of waves
still running when the device hung) and the vendor fault codes.
APS5_GPU_CHECKPOINTS=1 records a VK_NV_device_diagnostic_checkpoints
marker with the program address before each guest dispatch and prints the
last markers the GPU reached, which names the dispatch that hung. Without
either extension nothing changes.

Test: agc_device_fault drives the report through mock
vkGetDeviceFaultInfoEXT and vkGetQueueCheckpointDataNV entry points.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: overlordxrz-source <overlordxrz-source@users.noreply.github.com>
2026-10-14 13:50:52 +02:00
Adrià FranchandClaude 7956950906 docs: record the haptic-to-rumble approximation in TechnicalDebt
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-14 13:45:10 +02:00
Adrià Franch 188de5b17f fix(libSceJson2): drop setNullAccessCallBack from the not-implemented export test and debt line 2026-10-14 13:44:02 +02:00
Sasha PapoandClaude Opus 5.5 d756f525fc feat(agc): store pending storage-image results before each GPU label with APS5_STORE_AT_LABEL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:40:18 +02:00
pushkarreddyy e1d402c6ca feat(libSceAgcDriver): support secondary LOD bias and relax unnormalized coordinate filters 2026-10-14 17:07:46 +05:30
DavidandClaude Fable 5.1 7cc6baf118 feat(libSceAjm.native): implement the M4AAC decoder
Ghost of Yotei (PPSA26344, v1.008, eboot 0x2e1cfc) creates an M4AAC
instance (codec 2) and calls sceAjmBatchJobControl with flags
0x200000006000 (RESET | INITIALIZE | SIDEBAND_GAPLESS_DECODE), 8 bytes of
gapless decode plus 8 bytes of M4AAC initialize parameters and an 8-byte
result (#884); INITIALIZE for M4AAC threw on main.

- INITIALIZE (control and sceAjmBatchJobInitialize) reads the 8-byte
  {config type (1 ADTS, 2 raw), sampling frequency index} block of
  shadPS4 ajm_aac.h at 443f0224; an invalid type or a raw index above 11
  returns the invalid parameter result. Raw input is configured from the
  instance channels (0 is stereo) as in shadPS4 ajm_aac.cpp.
- RUN decodes ADTS frames (length from the header) and raw access units
  (the whole input, as fdk-aac's raw transport) with FFmpeg's AAC decoder
  into the instance's S16, S32 or float PCM, with the framework's gapless,
  resampling, stream, format and multiple-frames sidebands.
- Without ENABLE_NONDELAY_OUTPUT the first two frames after
  initialization or reset produce no output, as in shadPS4. A decoder
  error returns CODEC_ERROR | FATAL. The codec info is {heaac, reserved};
  the format reports the last frame's bitrate with fdk-aac's formula.
- Throws for what the sources do not settle: ADTS resynchronization,
  profiles other than AAC LC, several raw data blocks per frame, channel
  configurations other than 1, 2 and 6, more channels than the instance,
  HE-AAC without ENABLE_SBR_DECODE, raw input with RUN_MULTIPLE_FRAMES or
  several access units, a frame longer than the reserved room, and
  unknown codec flags.

guest_ajm decodes an embedded 5-frame stereo ADTS fixture (two chirps,
encoded by FFmpeg 6.1.1's aac encoder at 64 kbit/s) frame by frame, in
one multiple-frames run, as float, as raw access units and with gapless
trimming, and checks sample counts, format, codec info, the delay frames,
RESET, partial input, missing room and the correlation of each channel
with its input chirp at the 1024-sample encoder delay; plus the
INITIALIZE validation results and the refusals.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 13:32:37 +02:00
fdfawef324andClaude Opus 5.5 bdb0a3f59f fix(recompiler): bind no record of empty per-lane tables and compare bound modes only
A per-lane table V# with num_records 0, a null V# included, threw at dispatch
on its stride (0 is less than the record offset plus 32) although no lane can
hold a record, also when no lane enters the waterfall. With no records every
OOB_SELECT puts each load out of range (the GFX10 table in Mesa's
ac_descriptors.c), so such a table now binds no record and every lane that
runs the access reads zeros; the swizzle, ADD_TID, OOB_SELECT and stride
checks apply only to a V# with records.

The implicit-derivative mode check compared every bound record with record 0,
whose mode is 0 when it is null, so a table with a null record 0 and bound
records of one other mode was refused. Only bound records are compared now.
Lanes whose record is null or outside the table take the zero path under
record 0's mode, so their quad neighbours' derivatives can still be undefined;
the debt entry records this and the 16-record limit of the whole table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:24:53 +02:00
fdfawef324andClaude Opus 5.5 8bca46fb06 fix(recompiler): refuse per-lane waterfall tables over masked T#s or mixed modes
A lane whose IDXEN load was skipped keeps the T# VGPRs it had before, and a
waterfall that reaches it uses that value as its T#. The fold refused only a
value that was itself a uniform descriptor or a table read, so a default T#
copied into the VGPRs under EXEC, or merged by a phi, was accepted and those
lanes read zeros. The skipped lanes' values are now followed through the masked
selects and phis that all eight dwords share, and the fold is refused when an
arm is a descriptor or a table read.

Every lane of a per-lane table runs the access with its own record, and the
runtime image mode picks the SPIR-V path per lane, so lanes of one quad whose
records need different modes take different paths around an implicit-derivative
sample or LOD query, where derivatives are undefined. Such a table now throws
at dispatch; accesses of one table share the check, so they keep one table.

The test also covers v_readfirstlane and v_cmpx_eq_u64 waterfalls and refuses
loops that compare seven T# dwords, run the image instruction after EXEC is
restored, or store.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:24:53 +02:00
fdfawef324andClaude Opus 5.5 f234476b21 feat(recompiler): plan waterfall loops over per-lane T#s as non-uniform tables
A waterfall loop (s_ff1 or v_readfirstlane picks a lane, v_readlane copies
its T# to SGPRs, v_cmpx_eq keeps the lanes whose T# VGPRs match, the image
instruction runs, the matched lanes leave the loop) reads the T# from VGPRs,
which no descriptor source evaluates, so planning failed with "GetImageResource
dword 0 is not a valid runtime value".

When every T# dword of an image read, sample, gather or query comes from
v_readlane_b32 or v_readfirstlane_b32 and the EXEC its results are written
under implies that each of them equals the lane's own VGPR, the access takes
each lane's own T#. A T# that each lane loaded with buffer_load_dword* (IDXEN)
from one evaluable V# becomes a bindless image table keyed by the lane's
index, addressed by the V# stride, and its slot is decorated NonUniform.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:24:53 +02:00