Commit Graph

6138 Commits

Author SHA1 Message Date
Dean d1b8565d74
Merge pull request #482 from ThisIsAkill/feat/audiopropagation-no-propagation
feat(libSceAudioPropagation): implement the no-acoustic-propagation path with recovered signatures
2026-10-05 11:43:24 +13:00
Dean a6c363a51b
Merge pull request #383 from DotDebian/test/sopk-waitcnt-counters
test(shader): cover the SOPK s_waitcnt counters and count them as decoded
2026-10-05 11:42:41 +13:00
Dean dee2727f99
Merge pull request #344 from DotDebian/feat/posix-rwlock-try-timed
feat(libkernel): implement the pthread_rwlock try and timed lock functions
2026-10-05 11:42:29 +13:00
Dean b44b308c53
Merge pull request #333 from adriadam10/feat/sopk-misc
feat(shader): implement s_cmovk_i32, s_version and s_setreg_imm32_b32
2026-10-05 11:41:47 +13:00
Dean 1db03d7e93
Merge pull request #264 from adriadam10/feat/div-scale-fmas-fixup
feat(shader): implement v_div_scale/fmas/fixup_f32 and s_denorm_mode (f32 division macro)
2026-10-05 11:41:37 +13:00
Dean 19f6e33f3e
Merge pull request #453 from SP4C3B4R-8/fix/absent-depth-stencil-plane
fix(libSceAgcDriver): skip depth and stencil tests whose plane is absent
2026-10-05 11:41:26 +13:00
Dean 6822b2abb6
Merge pull request #377 from MichonGoddijn231849/feat/color-target-slices
feat(agc): 4 KiB standard color targets and color views of one array slice
2026-10-05 11:40:45 +13:00
Dean b2558631b7
Merge pull request #332 from adriadam10/feat/buffer-atomics-float
feat(shader): implement the float and 64-bit inc/dec buffer atomics
2026-10-05 11:40:03 +13:00
Dean f83fcdbb0e
Merge pull request #321 from adriadam10/feat/buffer-atomics
feat(shader): implement buffer_atomic_inc/dec and the 64-bit integer buffer atomics
2026-10-05 11:39:22 +13:00
Phi1ow 6571ace5bd feat(errordialog): log the error code and record the silent stub
Adds the dialog to the silent-stubs list in docs/dev/TechnicalDebt.md, since it finishes without
showing anything. sceErrorDialogOpen now logs the error code and user id from the parameter
(offsets 4 and 8), like libSceMsgDialog logs its message, so an error a title would have shown
the player stays visible instead of disappearing.
2026-10-05 00:32:13 +02:00
Adrià Franch 1f5d84a619 fix(shader): return src0 when both f32 min/max sources are NaN
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 00:00:40 +02:00
Dean fc325936b5
Merge pull request #555 from Phi1ow/implement-http-request2-ssl-options
feat(http): implement sceHttpCreateRequest2, sceHttpsEnableOption, sceHttpsLoadCert and sceHttpGetLastErrno
2026-10-05 10:36:49 +13:00
Dean 44fdfecb3e
Merge pull request #554 from Phi1ow/implement-sysmodule-internal-load-unload
feat(sysmodule): implement sceSysmoduleLoadModuleInternal and sceSysmoduleUnloadModuleInternal
2026-10-05 10:34:26 +13:00
Dean d36e1924d4
Merge pull request #534 from DotDebian/feat/agc-branch-patch-setters
feat(agc): implement the sceAgcBranchPatch setters
2026-10-05 10:34:05 +13:00
Dean 2d21b3badc
Merge pull request #541 from DotDebian/fix/nanosleep-errors
fix(libkernel): report invalid nanosleep requests through errno and the sce error codes
2026-10-05 10:31:42 +13:00
Dean 1f5b5b0c57
Merge pull request #519 from Pouare514/fix/tlou-ssl
fix(libs): TLOU throwing stubs for Ssl LoadCert and GetMemoryPoolStats
2026-10-05 10:25:06 +13:00
Dean 8e5e42539a
Merge pull request #561 from adriadam10/feat/image-store-pck
feat(shader): implement image_store_pck and image_store_mip_pck
2026-10-05 10:24:50 +13:00
Dean cbb358726c
Merge pull request #557 from adriadam10/feat/image-load-pck
feat(shader): implement image_load_pck and image_load_mip_pck with signed variants
2026-10-05 10:24:35 +13:00
Dean 4befff984e
Merge pull request #548 from adriadam10/tools/progress-aliases
fix(tools): count v_fma_mix_f32 as a decoded shader instruction
2026-10-05 10:24:20 +13:00
Dean 0ea51eba27
Merge pull request #547 from adriadam10/test/flat-global-loads
test(shader): execute flat and global loads against hardware results
2026-10-05 10:24:04 +13:00
Dean c11fbe5484
Merge pull request #544 from adriadam10/test/buffer-ops
test(shader): execute the untested buffer byte/short/dwordx2/x3 loads and stores and the 32-bit integer buffer atomics
2026-10-05 10:23:49 +13:00
Dean 3403c80595
Merge pull request #543 from adriadam10/test/lds-ops
test(shader): execute the untested LDS reads, writes and integer atomics against values measured on RDNA
2026-10-05 10:23:33 +13:00
Dean c4162e306c
Merge pull request #540 from DotDebian/feat/agc-acb-dma-data-size
feat(agc): implement sceAgcAcbDmaDataGetSize
2026-10-05 10:23:18 +13:00
Dean c457e756a5
Merge pull request #538 from DotDebian/feat/ampr-command-buffer-markers
feat(ampr): implement the command buffer markers
2026-10-05 10:23:03 +13:00
Dean 6a705bc4bd
Merge pull request #536 from DotDebian/feat/font-get-resolution-dpi
feat(font): implement sceFontGetResolutionDpi
2026-10-05 10:22:47 +13:00
Dean 0f15a6c515
Merge pull request #539 from adriadam10/test/vopc-compare-table
test(shader): execute every non-f64 VOPC compare against values measured on RDNA
2026-10-05 10:21:52 +13:00
Dean 58911bf169
Merge pull request #517 from Pouare514/fix/tlou-sessionsignaling
fix(libs): TLOU runtime funcs for SessionSignaling
2026-10-05 10:21:30 +13:00
Phi1ow 1cd34c232d feat(pad): implement scePadSetAngularVelocityDeadbandState
scePadSetAngularVelocityDeadbandState was the last throwing stub in libScePad. It toggles a
dead-band filter on the controller's angular-velocity (gyro) readings; the reading path does
not apply that optional filter, so the call succeeds and does nothing, as it does in shadPS4.

Extends the existing guest_pad test with the two enable/disable calls. It fails on main (the
stub throws) and passes with the change.
2026-10-04 23:19:37 +02:00
Dean 55e915abdb
Merge pull request #527 from DotDebian/test/vop3-carry-out-add-sub
test(shader): cover the VOP3 carry-out add and subtracts and count v_sub_co_u32 as decoded
2026-10-05 10:15:36 +13:00
Dean 23f20ebc40
Merge pull request #156 from Pacuka/fix/pthread-mutex-types
fix(libkernel): default mutexes to error checking and add the adaptive type
2026-10-05 10:15:22 +13:00
Phi1ow ce6b26fadb feat(razor): implement the libSceRazorCpu CPU profiler stubs
libSceRazorCpu is the CPU-side instrumentation for the Razor capture tool. AnyPS5 does not host
that tool, so the instrumentation does nothing and succeeds, which is also what shadPS4 does:

- sceRazorCpuIsCapturing -> 0 (no capture is in progress, so titles skip their profiling paths)
- sceRazorCpuJobManagerDispatch / sceRazorCpuJobManagerJob / sceRazorCpuJobManagerSequence -> 0

These only feed the profiler; they do not affect execution. Adds a CMakeLists.txt so the library
can carry its guest test.

New test core/libs/tests/GuestRazorCpu.cpp checks the four return values; it fails on main (the
functions throw) and passes with the change.
2026-10-04 23:12:52 +02:00
Dean 76c34275b4
Merge pull request #347 from Pouare514/fix/kernel-nooverwrite-win
fix(libkernel): support NoOverwrite mappings on Windows
2026-10-05 10:11:34 +13:00
Dean ef3906eeeb
Merge pull request #302 from Pouare514/fix/tlou-runtime-funcs
fix(libs): TLOU runtime funcs for Net (getpeername, htonll/ntohll)
2026-10-05 10:11:21 +13:00
Dean 9506815f98
Merge pull request #468 from Pacuka/feat/ajm-opus
feat(ajm): decode Opus (codec 24) through FFmpeg
2026-10-05 10:11:08 +13:00
Dean 61cb722a25
Merge pull request #502 from adriadam10/fix/vop3p-pk-mad-clamp
fix(shader): VOP3P integer clamp on v_pk_mad/add/sub_{i16,u16}
2026-10-05 10:10:54 +13:00
Dean 6842123d01
Merge pull request #530 from DotDebian/feat/global-load-dword-addtid
feat(shader): implement global_load_dword_addtid
2026-10-05 10:10:42 +13:00
Dean 03243c7e12
Merge pull request #529 from DotDebian/fix/shader-decode-past-endpgm
fix(shader): keep decoding past an s_endpgm while a branch targets later code
2026-10-05 10:10:29 +13:00
Dean 8b9ba8c510
Merge pull request #520 from DotDebian/test/vop2-fused-multiply-add
test(shader): cover v_fmac_f32, v_fmamk_f32 and v_fmaak_f32 and count them as decoded
2026-10-05 10:10:16 +13:00
Dean 412665dfdb
Merge pull request #512 from QDarkRex/fix/relinker-tls-diagnostics
fix(relinker): identify unsupported Windows TLS instructions
2026-10-05 10:10:03 +13:00
Adrià Franch d1f77107bc feat(shader): implement image_atomic_fmin, fmax and fcmpswap
The three MIMG float atomics threw as unknown opcodes. They now run as a
compare-and-swap loop on the 32-bit texel with the bit-level rules the
float buffer atomics already use (NaN, signed zero and sNaN quieting as
measured on RDNA2), so no float atomic feature is needed from the driver.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 23:01:27 +02:00
Adrià Franch e9cdd9b0f3 feat(shader): implement the float and 64-bit inc/dec buffer atomics
buffer_atomic_fcmpswap, fcmpswap_x2, fmin_x2, fmax_x2, inc_x2 and
dec_x2 are compare-and-swap loops on the dword or qword. fcmpswap
compares as floats (-0 equals +0, NaN equals nothing) and fmin/fmax are
IEEE minNum/maxNum with -0 < +0, a quieted result for a signalling NaN
and the other operand for a quiet one, all with integer ops so the
driver's float controls do not matter. The existing 32-bit fmin/fmax
kept the old value whenever a NaN or two zeros were involved; it now
uses the same rule.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:56:09 +02:00
Adrià Franch e8e75a8bc5 feat(shader): implement buffer_atomic_inc/dec and the 64-bit integer buffer atomics
buffer_atomic_inc, buffer_atomic_dec, buffer_atomic_cmpswap_x2 and
buffer_atomic_{add,sub,smin,umin,smax,umax,and,xor}_x2 threw in the decoder.
The 64-bit ones use native 64-bit SPIR-V atomics like the existing
swap_x2/or_x2; inc and dec wrap at the data operand through the existing
compare-exchange helpers.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:56:09 +02:00
Adrià Franch 6dd5a61541 feat(shader): accept the dlc cache bit on MIMG
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:54:05 +02:00
Adrià Franch ef84d7bfa7 feat(shader): implement image_store_pck and image_store_mip_pck
Write the raw texel bits: dmask bit i selects texel dword i, taken from the
next data register, and every other dword of the texel is written as 0; the
descriptor swizzle is ignored (measured on RDNA2 hardware). Only formats whose
bits go through the storage view unchanged are accepted (unsigned integer
components, raw 32-bit signed integer and 32-bit float); normalized, 16-bit
float, narrow signed and 96-bit formats throw.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:46:58 +02:00
Adrià Franch bb24017c45 test(shader): execute the untested LDS reads, writes and integer atomics against values measured on RDNA
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:35:58 +02:00
Adrià Franch b02c80254e fix(shader): v_cvt_rpi/flr_i32_f32 NaN and exact round-half-up
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:35:56 +02:00
Adrià Franch cebc1e8289 fix(shader): DPP16 operands of v_pk_fmac_f16 and the relative moves
v_pk_fmac_f16 read its accumulator through the permuted destination and
wrote without the DPP write mask. v_movrels/movrelsd/movrelsd_2 dropped
the source permute, and the relative writes dropped the DPP write mask.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:35:51 +02:00
Adrià Franch 03760d937b fix(shader): s_lshlN_add SCC and s_bfe_[iu]32 fields past bit 31
s_lshl1..4_add_u32 never wrote SCC; hardware sets it when the shifted-out
bits or the add carry are non-zero. s_bfe_i32/u32 went through
OpBitField{S,U}Extract, which RADV gets wrong when the width runs past
bit 31; build the field from shifts instead.

Adds an execution test for 38 SOP2 opcodes with hardware-captured results.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:35:45 +02:00
Adrià Franch 4939e5d105 fix(tools): count v_fma_mix_f32 as a decoded shader instruction
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-04 22:35:39 +02:00
Phi1ow 7854fb6bff feat(errordialog): implement the libSceErrorDialog state machine
The six libSceErrorDialog exports were throwing stubs. They now implement the dialog's
NONE -> INITIALIZED -> RUNNING -> FINISHED state machine without a visible window, so a title
that opens an error dialog and waits for it never blocks:

- sceErrorDialogInitialize -> INITIALIZED, or 0x80ED0002 if already initialized
- sceErrorDialogOpen -> checks the state and the 16-byte parameter, then RUNNING
- sceErrorDialogUpdateStatus -> turns RUNNING into FINISHED and returns the status
- sceErrorDialogGetStatus -> returns the status
- sceErrorDialogClose -> FINISHED, or 0x80ED0005 when no dialog is running
- sceErrorDialogTerminate -> NONE, or 0x80ED0001 when not initialized

Re-opening is allowed once a previous dialog has finished. The status values and error codes
are the documented SCE error-dialog ones. Adds a CMakeLists.txt so the library can carry its
guest test.

New test core/libs/tests/GuestErrorDialog.cpp drives the whole state machine (the
not-initialized and already-initialized errors, the state and parameter checks of open,
open/update/close and re-open after finish). It fails on main (the stubs throw) and passes
with the change.
2026-10-04 22:33:43 +02:00