Commit Graph
4075 Commits
Author SHA1 Message Date
AlxcBTW bc8587a6fe fix(libc): end the process without detach routines in _Exit on Windows
On Windows std::_Exit ends in ExitProcess, which still runs every module's
DLL_PROCESS_DETACH and TLS callbacks after the other threads are gone. A
static destructor that joins a worker then waits forever: a title that calls
_Exit while libSceVideoOut's flip queue runs (ps5-opengl's retirement
fail-stop) stays alive in FlipQueue's destructor. _Exit and libkernel's _exit
now terminate the process with TerminateProcess, as _exit ends a POSIX
process: no atexit handlers, stream flushes or module destructors.
2026-10-10 21:20:29 +13:00
Adrià f6af6d11d3 Merge pull request #2123 from LuisBiceps/feat/libkernel-waitpid-no-children
feat(libkernel): report no child processes from waitpid
2026-10-10 10:18:56 +02:00
Adrià 7c33f29c69 Merge pull request #2085 from orbz22/fix/agc-denormal-clear-colors
perf(agc): fill-clear small-float denormal patterns on devices whose clears keep them
2026-10-10 10:16:09 +02:00
Adrià ddcb251a97 Merge pull request #2092 from authurtabo-byte/fix/agc-color-compare-forms
fix(agc): accept additional color comparison image forms
2026-10-10 10:13:30 +02:00
Adrià 4eff3bc293 Merge pull request #1913 from gunerky/codex/tls-test-groups
test(relinker): split TLS coverage into bounded CTest groups
2026-10-10 10:13:07 +02:00
Adrià eab888e02f Merge pull request #2573 from oneandonlydean/fix/carry-2241
fix(agc): zero-fill a vertex fetch past the record count
2026-10-10 10:13:05 +02:00
Adrià 3539d1ce0b Merge pull request #1959 from Raghav314/fix/recompiler-formatted-buffer-once
fix(recompiler): emit a formatted buffer access through one function per resource
2026-10-10 10:11:19 +02:00
Adrià Franch 8de5e70477 docs(technicaldebt): shorten the waitpid entry
Requested by @oneandonlydean in review.
2026-10-10 10:11:04 +02:00
LuisBiceps c059cc733f refactor(libkernel): move waitpid and its TechnicalDebt entry away from lines open pull requests change
waitpid now sits between exit and _exit, and its TechnicalDebt entry follows the packed horizontal gathers entry, so the open system and getuid pull requests and the thread cancellation test pull request no longer touch the same lines.
2026-10-10 10:11:04 +02:00
LuisBiceps ac6852ec26 test(libkernel): check every waitpid option set on every pid, with and without a status
Unknown options are now checked for every pid, with 0x80 and 0x80000040 added, and so are valid combinations such as WNOHANG | WUNTRACED. Each call is repeated with a null status. The TechnicalDebt entry cites kern_wait, which adds WEXITED and WTRAPPED, and lists pdfork.
2026-10-10 10:11:04 +02:00
LuisBiceps 918bc0a49c feat(libkernel): report no child processes from waitpid
waitpid returns -1 with ECHILD, or EINVAL for an option FreeBSD does not know, and leaves the status unwritten: AnyPS5 runs the title as one process and exports nothing that creates a child. VLC PPSA85300 stops on main at this import.
2026-10-10 10:11:04 +02:00
Raihan Abdul MajidandClaude Opus 5.5 bafca2ffda perf(agc): fill-clear small-float denormal patterns on devices whose clears keep them
FillClearColor refused half and B10G11R11 patterns with a denormal code,
since an implementation may flush them in a clear, so such fills over a
resident image took the CPU path: PPSA01325 fast-clears its 3840x2160
R16G16_SFLOAT target 0x515390000 with a denormal half every frame, a
33 MiB guest write and re-upload (about 85 ms).

ClearKeepsDenormals probes the device once per format: a 1x1 image
cleared with denormal codes (half 0x0001, 0x83ff, 0x0200, 0x8001;
11/10-bit 0x001) and read back. When the bits survive, FillClear takes
the refused pattern again with SmallFloat decoding denormals exactly.
NaNs, float32 denormals and the SNORM minimum stay refused.

agc_driver_recorder_tests clears an R16G16_SFLOAT resident image with a
normal, a denormal and a NaN pattern: the denormal is cleared exactly
when the probe says the device keeps it, and the NaN is refused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UTjpbMX7BUFMZZaxJE98zV
2026-10-10 10:10:51 +02:00
Adrià faf6a11701 Merge pull request #1917 from TheAggie/feat/agc-radv-gfx10-packets
feat(agc): accept the GFX10 packet forms RADV emits
2026-10-10 10:09:36 +02:00
authurtabo-byteandCopilot App af635e22eb build(agc): include RDNA decoder headers
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-10 01:08:04 -07:00
authurtabo-byteandCopilot App 42bc9426d3 test(agc): correct bilinear comparison reference
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-10 01:08:04 -07:00
authurtabo-byteandCopilot App a76b0dc461 fix(agc): reject unsupported color comparison forms
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-10 01:08:04 -07:00
authurtabo-byte e50bd2f824 fix(agc): retain anisotropic compare rejection and test sRGB forms 2026-10-10 01:08:03 -07:00
authurtabo-byte f7ca33cb9d fix(agc): accept additional color comparison image forms 2026-10-10 01:08:03 -07:00
gunerky 6767bc7a35 docs(relinker): keep test investigation in PR description 2026-10-10 10:07:33 +02:00
gunerky 047a25820a docs(relinker): record unresolved TLS test delays 2026-10-10 10:07:33 +02:00
gunerky b2ff4f4b02 test(relinker): split TLS coverage into bounded CTest groups 2026-10-10 10:07:33 +02:00
Adrià 2c4828a63d Merge pull request #2072 from STUPIDCONTEM/fix/srt-signed-comparison
fix(shader): evaluate signed comparisons in SRT expressions
2026-10-10 10:07:30 +02:00
Adrià 5560b54d69 Merge pull request #2071 from STUPIDCONTEM/fix/linked-shader-stage-abi
fix(agc): prepare combined shader layouts when linking
2026-10-10 10:06:56 +02:00
Adrià d185c31678 Merge pull request #2348 from Pipodi/fix/1d-storage-through-2d-stores
fix(shader): write 1D storage images through 2D image stores
2026-10-10 10:06:36 +02:00
Dean ac75a96dd7 Merge pull request #1908 from TheAggie/fix/libkernel-sched-other-priority
fix(libkernel): accept SCHED_OTHER in sched_get_priority_max/min
2026-10-10 21:05:56 +13:00
Dean 4faa14ef6a Merge pull request #1783 from babyhuey/feat/libc-wide-ctype
feat(libc): implement the C locale wide character class functions
2026-10-10 21:05:48 +13:00
Dean 64c13bc98d Merge pull request #2032 from Aryansh1520/fix/audioout2-drop-haptics-without-pad
fix(audioout): drop vibration ports when no pad audio device is open
2026-10-10 21:05:41 +13:00
Adrià 89a1fb4ea8 Merge pull request #2190 from obojeoboje/fix/test-registration-command-only
fix(tools): ignore test names when checking executable registration
2026-10-10 10:02:58 +02:00
Adrià 0bc8313a25 Merge pull request #2177 from MarcZX100/codex/fix-color-compare-negative-wrap
fix(shader): normalize negative color comparison wrap indices
2026-10-10 10:02:56 +02:00
Adrià 933b3ca5b1 Merge pull request #2595 from oneandonlydean/revert/1629
revert(agc): undo #1629's sceAgcDcbResetQueue packet sequence
2026-10-10 10:02:22 +02:00
Adrià d4b5cd6131 Merge pull request #2230 from QRMOE/fix/libkernel-pthread-rename-limit
fix(libkernel): reject overlong POSIX thread names
2026-10-10 10:01:28 +02:00
Adrià 700d5a64c8 Merge pull request #2312 from SleglJan/feat/shader-lds-float-atomics
fix(shader): LDS float atomics quiet signalling NaNs and flush denormals as the hardware does
2026-10-10 10:00:51 +02:00
Adrià af1a8edfe1 Merge pull request #2583 from gjonn/perf/async-registration-prepare
perf(agc): prepare registered shaders in the background
2026-10-10 10:00:11 +02:00
Adrià 034dd75f85 Merge pull request #2204 from XairRrR/feat/videoout-deferred-flip-buffer
feat(libs): resolve command-buffer flip buffers when the GPU reaches the flip
2026-10-10 09:59:35 +02:00
danzaio 5e3268969b fix(agc): zero-fill a vertex fetch past the record count
A strided vertex fetch whose index is at or past the descriptor's num_records threw and aborted the title. PPSA01325 draws its fullscreen composite as a 4-vertex strip over a 3-record buffer, so the fourth vertex past the records stopped presentation.

Hardware returns (0, 0, 0, 0) for such a fetch with OOB_SELECT 0 and 1, measured on RDNA2 gfx1036 with tools/hw-oracle in #2241. VertexBufferReadSize now spans the whole fetch, and the staging copy reads the record bytes then zero-fills from num_records * stride onward. Each such fetch gets its own copy, outside the shared copies of its sibling attributes, the host-import in-place path and the draw-snapshot cache. OOB_SELECT 2 and 3 keep throwing past num_records, since each needs its own rule. Recorded in docs/dev/TechnicalDebt.md.
2026-10-10 20:58:25 +13:00
Adrià Franch f6d97ad3d2 test(agc): drop the 1D-T# image_load refusal that main now accepts
eb06284c7 made a read-only 2D image_load through a 1D T# valid, so the
test no longer pins a refusal. The TechnicalDebt line now says storage
loads still throw.
2026-10-10 09:57:16 +02:00
Dean Galvin ea62569836 revert(agc): undo #1629's sceAgcDcbResetQueue packet sequence
#1629 makes sceAgcDcbResetQueue throw 'unsupported op bit 0x40' (and for
0x200/0x400). Dreaming Sarah and Astro Bot call it with op bit 0x40 at
start-up, so both abort before the first frame. Main with only #1629
reverted runs Dreaming Sarah normally again (59.9/59.9 fps, no skipped
draws, no flashes).
2026-10-10 20:57:15 +13:00
Adrià Franch c77a6f14f3 fix(shader): keep both image mode blocks after rebase 2026-10-10 09:55:37 +02:00
Alex ColliniandClaude Opus 5.5 6c4660b73c fix(shader): ignore y in 2D stores through a 1D storage image
Measured on RDNA2 (gfx1035) in review: image_store with DIM 2D through a
1D T# writes texel x for every y, including y = 0xffffffff. The T# type
decides the addressing and DIM only how many address VGPRs are read. The
store no longer drops y != 0.

The test now pins the second store at y = 1 with dmask 0x5: texel x holds
its components 0 and 2, components 1 and 3 are 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:55:37 +02:00
Alex ColliniandClaude Opus 5.5 14d9b13cd8 fix(shader): write 1D storage images through 2D image stores
A compute program of PPSA26344 writes a 1D storage image with image_store
DIM 2D, and no runtime image mode matched its T#. A write-only 2D storage
access now also gets a 1D mode. A store through it is dropped when y is not
0, as a one-texel-high image bounds it; this mirrors the measured 3D loads
through 2D T#s of #2023 and is listed in TechnicalDebt as unmeasured.

Loads, atomics and image_store_mip through such a pair still throw.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:55:37 +02:00
Привалов Александр Владимирович e419096bff fix(tools): ignore test names when checking executable registration 2026-10-10 09:54:44 +02:00
XairRrR c9fe124c10 feat(libs): resolve command-buffer flip buffers when the GPU reaches the flip
A flip packet names a buffer index; the buffer was looked up when the
command buffer was submitted, so a title that registers its buffers
after submitting the first frame failed with "flip buffer is not
registered". The buffer is now resolved when the GPU reaches the flip,
as the hardware does. A flip whose buffer is still unregistered then
presents black and completes (see TechnicalDebt).

Uncharted: Legacy of Thieves Collection (PPSA05684) submits its first flip before registering its buffers and stopped with "flip buffer is not registered".
2026-10-10 09:54:29 +02:00
Adrià a29bae31af Merge pull request #2572 from oneandonlydean/fix/carry-2237
fix(shader): read 2D image accesses through 1D T#s as measured
2026-10-10 09:54:13 +02:00
QRMOE b8f04c6773 build(libkernel): register thread-name regression
AI-assisted: yes. Final code passed the complete Windows build, eight focused runtime tests and four deliberate-fault checks.
2026-10-10 09:54:11 +02:00
QRMOE 022e6be86a fix(libkernel): reject overlong POSIX thread names
AI-assisted: yes. Match the firmware 13.60 probe in PR #1798: names of 32 bytes or more return guest ENAMETOOLONG=63 and preserve the prior name. The complete final change passed a full Windows build and eight focused runtime tests.
2026-10-10 09:53:55 +02:00
QRMOE 872775c703 test(libkernel): cover POSIX thread-name limits
AI-assisted: yes. Validated with the final library change on Windows; full build and eight focused runtime tests pass. Expected rename behavior comes from the public firmware 13.60 probe in PR #1798.
2026-10-10 09:53:54 +02:00
Adrià FranchandClaude ac03a5b718 docs(architecture): describe background shader preparation at registration
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-10 09:52:20 +02:00
Gjon Gojcevic 6db5c13696 perf(agc): prepare registered shaders in the background 2026-10-10 09:52:20 +02:00
Adrià 2944cc3266 Merge pull request #2304 from HamidRezaLS/perf/relinker-cfg-zero-copy
perf(relinker): single-pass CFG instruction decoding and zero-copy text span
2026-10-10 09:51:58 +02:00
Adrià a828da9c53 Merge pull request #2305 from TheAggie/perf/shader-wide-bda-stores
perf(shader): store multi-dword global writes with one BDA lookup
2026-10-10 09:51:20 +02:00