Commit Graph
20967 Commits
Author SHA1 Message Date
Dean 10e9f55947 Merge pull request #10059 from xTRACKGOD/fix/select-tests-unbuilt-executables
fix(tools): skip unselected executables in fresh builds
2026-10-24 01:51:54 +13:00
Swag a015208694 Merge upstream/main into feat/libressl-error-queue
Co-Authored-By: Claude Opus 5.5 <[email protected]>

# Conflicts:
#	docs/dev/debt/libSceLibreSsl.md
2026-10-23 08:51:42 -04:00
winstrexandClaude Opus 5.5 008e3276b7 docs(agc): describe where QueuePresent runs and record the single-queue fallback
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 09:50:40 -03:00
winstrexandClaude Opus 5.5 b6eb916a82 perf(agc): present on a queue of its own outside the GPU mutex
vkQueuePresentKHR blocks the presenter for a frame's pacing on some
drivers (about 6 ms per present on NVIDIA in FIFO mode), and it ran under
GuestMemory::GpuMutex because the main queue needs external
synchronization with the recorder's submits. When the presentation
family has a free queue, the device now takes it as a presentation queue
guarded by its own mutex, and the presenter hands the image to it after
releasing the GPU mutex. WaitIdle takes that mutex around
vkDeviceWaitIdle. Without a free queue the present stays on the main
queue under the GPU mutex as before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 09:50:31 -03:00
HQasperandClaude Opus 5.5 eb9491b194 feat(libSceLibreSsl): implement RAND and the CRYPTO allocator functions
RAND_add, RAND_bytes, RAND_status, RAND_load_file, RAND_file_name,
CRYPTO_malloc, CRYPTO_free and CRYPTO_set_mem_functions threw. They now
behave as in LibreSSL 2.6.5 through 3.4.3, where these functions did not
change: RAND_bytes fills the buffer from host entropy and returns 1,
RAND_add ignores its input, RAND_status returns 1, RAND_load_file returns
123456 for -1 and the requested count otherwise, RAND_file_name copies
"/dev/urandom" with strlcpy semantics, CRYPTO_malloc and CRYPTO_free use
the guest heap, and CRYPTO_set_mem_functions refuses with 0.

CRYPTO_malloc of zero or a negative size throws because later LibreSSL
versions take a size_t and call malloc instead of returning null.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-23 12:49:06 +00:00
Dean d5f5cd8db4 Merge pull request #10054 from veosett/codex/check-skips-report-root
fix(ci): reject non-JUnit skip reports
2026-10-24 01:47:45 +13:00
Dean e15b894d53 Merge pull request #10006 from xXPBSXx/fix/tools-progress-unwritable-output
fix(tools): report an output directory that progress.py cannot write
2026-10-24 01:47:23 +13:00
muausandClaude Fable 5 1e79db706f fix(relinker): rebind a preloaded CRT's standard streams to the startup log
A DLL that a global injector (Windhawk, antivirus hooks) loads into
every process can pull msvcrt.dll or ucrtbase.dll in before the entry
stub runs. That CRT then initializes in a GUI process without standard
handles and pins stdout and stderr to _file = -2, so after the stub
redirects the standard handles to anyps5.log, every write from a module
linked against that runtime is discarded as a successful no-op.

After SetCurrentDirectoryW the stub now asks each runtime that is
already loaded, through its own __iob_func or __acrt_iob_func and
_wfreopen, to reopen the streams whose standard handle the stub
redirected, onto the same log in append mode. A runtime that is not
loaded, a stream that kept its own handle and a failed log creation are
left alone, and a runtime that first loads with a module keeps binding
the redirected handles at its CRT init as before.

The test starts the converted executable suspended, loads the module's
runtime into it before the first instruction runs, and expects both
probes in anyps5.log, which reproduces the injector on a clean machine.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-10-23 17:46:47 +05:00
Dean 9bb054dbd5 Merge pull request #9955 from THEGABOALE/fix/env-reference-multiline
fix(tools): detect multiline environment variable reads
2026-10-24 01:45:31 +13:00
Dean 0825fee797 Merge pull request #10052 from maximilianfv/fix/libscenet-macos-udp-shutdown
fix(libSceNet): wake a receive on an unbound datagram socket at shutdown on macOS
2026-10-24 01:45:04 +13:00
orezraeyandClaude Opus 5.5 1237c499cc docs(libkernel): record what the local time conversions write on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 09:44:51 -03:00
orezraeyandClaude Opus 5.5 88b73efe3e docs(libSceRtc): record sceRtcGetDosTime and sceRtcSetDosTime as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 09:44:40 -03:00
Dean 7497288ff2 Merge pull request #8993 from simonbronk/feat/libSceCesCs-mbc-sjis-code
feat(libSceCesCs): implement generic MBCS character, Shift-JIS code and JIS X 0213 helpers
2026-10-24 01:44:40 +13:00
Dean fa3dc7f347 Merge pull request #10057 from ntamas94/fix/ps4-jpegenc-encode-size
fix(libSceJpegEnc): return the JPEG size from sceJpegEncEncode
2026-10-24 01:44:19 +13:00
Dean 1fc30716fa Merge pull request #10024 from ags-arnab/feat/ngs2-matrix-module-info
feat(libSceNgs2): implement sceNgs2VoiceGetMatrixInfo and sceNgs2CustomRackGetModuleInfo
2026-10-24 01:43:41 +13:00
Dean Galvin 7ec9ce9132 fix(agc): clamp an exported pixel depth to the viewport depth range
The DB clamps a pixel shader's exported depth to PA_SC_VPORT_ZMIN_0 and
ZMAX_0 unless DB_RENDER_OVERRIDE.DISABLE_VIEWPORT_CLAMP is set. Vulkan only
clamps with depthClamp, which also drops clipping, so the exported value
reached the depth attachment unclamped.

The pixel stage info now carries the two bounds when the shader exports
depth (0 and 1 otherwise), and the exported value is NClamped to them
before it is stored to gl_FragDepth. With
DISABLE_VIEWPORT_CLAMP the value is stored as exported; non-finite or
inverted bounds are rejected. DB_RENDER_OVERRIDE joins the draw key
registers. The bounds
are part of the recompile cache key (only for depth-exporting shaders, so
other keys do not change), the draw key and its register check, and
recompile requests (serialization version 47).

Tests: the pixel stage decode reads the bounds, passes the disable flag through
and rejects bad bounds, and leaves a draw without depth export at 0 and 1; a
recompiled depth export stores the NClamped value, and its bounds survive
serialization and key the cache.

Request version 47: main is at 44 (#8612) and open PRs also claim 44 to 46 (#8564, #7888, #9193 and the #9020, #9335, #9748 stack). Whichever of these lands second renumbers.
2026-10-24 01:38:01 +13:00
orezraeyandClaude Opus 5.5 9fc8d159bd fix(libkernel_sys): answer every pathconf name as the console's UFS mount does
Measured in a payload process on a PS5 (firmware 13.60) through libkernel_sys.sprx's pathconf: /system_data gives 65536 for the allocation, transfer and hole sizes, 16384 for the transfer alignment, 3 for _PC_ACL_PATH_MAX and 0 for the ACL and MAC flags, and EINVAL for _PC_MAX_CANON, _PC_MAX_INPUT, _PC_VDISABLE and _PC_ASYNC_IO, which used to throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 09:37:36 -03:00
Dean 7e9af675eb Merge pull request #10065 from atharvjairath/feat/libressl-x509-error-strings
feat(libressl): implement certificate verification error strings
2026-10-24 01:34:18 +13:00
Adrià 6b2d6af510 Merge pull request #8612 from imellag/perf/shader-fused-exact-arithmetic-moltenvk
perf(shader): emit exact f32 add, subtract and multiply as fma on MoltenVK
2026-10-23 14:30:16 +02:00
Adrià b7b97e9fe0 Merge pull request #7968 from saarthakpant/perf/agc-indexed-copy-kernel
perf(agc): replace the indexed 16-byte copy kernel with a buffer copy
2026-10-23 14:30:11 +02:00
Dean 7c9d3a005e Merge pull request #8990 from voidlakhan/fix/savedata-null-argument-parameter-error
fix(savedata): validate backup and event result arguments
2026-10-24 01:29:00 +13:00
Giuseppe Magliano 12ca5c16f0 test(agc): skip the forced-watch shadow tests where imports report pages written
agc_driver_bda_reads_shadowed_results, its per-build form and
agc_unit_shadow_completion_store force host imports to stay watched on
non-Windows hosts. On RADV, importing watched host memory and reading it
from the GPU both report the pages written, which is why the driver
compares those imports instead of watching them. Under the forced watch
those reports read as CPU stores: every shadowed unit is stale-dropped
before the address-based publish, and the tests fail on every run.

Both tests now run the import probe and skip, like agc_unit_shadow and
agc_shadowed_key_stores already do there, when the import or a GPU read
reports pages written. Devices whose imports stay clean until a GPU
write, such as lavapipe, still run them.
2026-10-23 14:28:39 +02:00
Maz 6224ab70b9 feat(libc): export the wide codecvt facet vtable as data
Console title libc.prx (PPSA26344) and libSceLibcInternal export H-TDszhsYuY as STT_OBJECT st_size 104; titles that resolve it as data need thirteen zeroed uintptr_t slots.
2026-10-23 16:26:44 +04:00
Dean e84c529d6d Merge pull request #9695 from xdCloudy/feat/ps5-ipmi-pending-89-round1
feat(libSceIpmi): declare 49 PS5 pending exports
2026-10-24 01:24:33 +13:00
Adrià f2a4fb1e6d Merge pull request #8336 from saarthakpant/perf/agc-discrete-written-shadow
perf(agc): stage written buffer elements up to 8 MiB on discrete GPUs
2026-10-23 14:19:33 +02:00
Dean Galvin 135b9d2552 Merge main into feat/np-cusa03312-imports 2026-10-24 01:18:07 +13:00
LeandroLP23andClaude Opus 5.5 5b2955b9cf ci(build): let a running main build finish before the next push's build starts
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 14:17:45 +02:00
Dean ba1b117cec Merge pull request #10022 from pipe1os/feat/common-dialog-facebook-gamecustomdata
feat: run the common-dialog state machine in the Facebook and game custom data dialogs
2026-10-24 01:15:31 +13:00
hypermistandClaude Opus 5.5 e820df8c9d feat(libSceSpSysCallWrapper): forward sceSpGetPid and sceSpSelect
Both are exported by firmware 13.60 libSceSpSysCallWrapper.sprx as a single
jmp to the getpid and select stubs. Forward them and trim the debt entry to
sceSpPthreadMutexattrSetprioceiling.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 01:15:24 +13:00
hypermistandClaude Opus 5.5 695c88aaf1 feat(libSceHttpCache): cache responses with the firmware's freshness and revalidation rules
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 01:15:19 +13:00
Dean 3f5662c325 Merge pull request #9887 from MarrasFederico/feat/np-utility-offline
feat(libSceNpUtility): model the lookup and word filter requests offline
2026-10-24 01:15:07 +13:00
Dean c577d48675 Merge pull request #9886 from MarrasFederico/feat/np-signaling-offline
feat(libSceNpSignaling): model contexts and connections offline
2026-10-24 01:14:45 +13:00
Dean 8abd9bfb18 Merge pull request #9878 from ntamas94/fix/pad-special-port-handle
fix(libScePad): open the special port with a handle that reads as disconnected
2026-10-24 01:14:23 +13:00
Dean da46482789 Merge pull request #9872 from MarcZX10/test/net-resolver-family-coverage
test(net): preserve resolver address-family coverage
2026-10-24 01:13:52 +13:00
Dean 4862c68ed6 Merge pull request #8558 from Filip722/feat/freetype-kerning
feat(libSceFreeType): implement FT_Get_Kerning
2026-10-24 01:13:21 +13:00
orezraey 567b164839 Merge branch 'fix/libscecescs-mbcs-strings-measured-ps5' into fix/libscecescs-jis-encode-measured-ps5 2026-10-23 09:09:26 -03:00
hypermistandClaude Opus 5.5 6ae116d767 docs(libSceSpSysCallWrapper): say firmware 13.60 exports sceSpGetPid and sceSpSelect
The earlier entry said the firmware does not export them. It does: each
is a single jump to libScePosix's getpid and select.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013XFS3FUfBtqCVfwmBrRQ6q
2026-10-24 01:08:47 +13:00
orezraey 00b45d43de Merge branch 'fix/libscecescs-eucjp-measured-ps5' into fix/libscecescs-mbcs-strings-measured-ps5 2026-10-23 09:08:30 -03:00
orezraey ab5ab9a3c5 Merge branch 'fix/libscecescs-scalar-measured-ps5' into fix/libscecescs-mbcs-strings-measured-ps5
# Conflicts:
#	core/libs/prx/libSceCesCs/Export.cpp
2026-10-23 09:08:30 -03:00
jablkowy12 229620dfc1 feat(tools): optionally require tests in skip reports 2026-10-23 14:07:33 +02:00
hypermistandClaude Opus 5.5 1e0f85fb0d docs(libSceLibcInternal): cite firmware 13.60, not 12.00, for the decrypted modules
The firmware version comes from the SDK 0x13600007 recorded in each module's module-param segment.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013XFS3FUfBtqCVfwmBrRQ6q
2026-10-24 01:07:25 +13:00
orezraey e04647b318 Merge remote-tracking branch 'origin/main' into fix/libscecescs-eucjp-measured-ps5 2026-10-23 09:07:12 -03:00
hypermistandClaude Opus 5.5 bcaaf39241 docs(libSceNpCommon): cite firmware 13.60, not 12.00, for the decrypted modules
The firmware version comes from the SDK 0x13600007 recorded in each module's module-param segment.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013XFS3FUfBtqCVfwmBrRQ6q
2026-10-24 01:06:42 +13:00
hypermistandClaude Opus 5.5 916312403c docs(libScePsml): cite firmware 13.60, not 12.00, for the decrypted modules
The firmware version comes from the SDK 0x13600007 recorded in each module's module-param segment.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013XFS3FUfBtqCVfwmBrRQ6q
2026-10-24 01:06:01 +13:00
hypermistandClaude Opus 5.5 1153d177b6 docs(libSceSpSysCallWrapper): cite firmware 13.60, not 12.00, for the decrypted modules
The firmware version comes from the SDK 0x13600007 recorded in each module's module-param segment.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013XFS3FUfBtqCVfwmBrRQ6q
2026-10-24 01:05:38 +13:00
hypermistandClaude Opus 5.5 e48a2f3103 docs(libSceFont): cite firmware 13.60, not 12.00, for the decrypted modules
The firmware version comes from the SDK 0x13600007 recorded in each module's module-param segment.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013XFS3FUfBtqCVfwmBrRQ6q
2026-10-24 01:05:19 +13:00
orezraey b41fdbce97 Merge remote-tracking branch 'origin/main' into fix/libscecescs-scalar-measured-ps5
# Conflicts:
#	docs/dev/debt/libSceCesCs.md
2026-10-23 09:05:18 -03:00
hypermistandClaude Opus 5.5 3e2b46d886 docs(libSceOpusDec): cite firmware 13.60, not 12.00, for the decrypted modules
The firmware version comes from the SDK 0x13600007 recorded in each module's module-param segment.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013XFS3FUfBtqCVfwmBrRQ6q
2026-10-24 01:04:59 +13:00
Jan ŠléglandClaude Opus 5.5 84ac63232c perf(agc): take captureValidation's records in one pass over the lookup log
captureValidation gave each texture of a build its last lookup record by scanning the thread's lookup
log backwards once per texture. A build keeps all of its own records in the log, so a build over a
large image table read on average half of a log at least as long as the table for every texture: about
1.1 million record reads per capture for a 1,500-texture table. LastRecordIndices sorts the build's
objects once and walks the log backwards once, stopping when every object has its record: the same
records, in O((textures + records) log textures). Its scratch vectors are released like the log's
when a large build has grown them past the log's bound.

A graphics test compares LastRecordIndices with the backward scan over repeated records and objects,
absent and null objects, a 1,500-texture table over its own records, over records looked up twice and
over a log missing its first records, and random logs of up to 2,048 records.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 14:04:05 +02:00
Swag 235612ab83 Merge upstream/main into feat/libressl-error-queue
Co-Authored-By: Claude Opus 5.5 <[email protected]>

# Conflicts:
#	core/libs/prx/libSceLibreSsl/CMakeLists.txt
#	docs/dev/debt/libSceLibreSsl.md
2026-10-23 08:03:05 -04:00