Commit Graph
5229 Commits
Author SHA1 Message Date
Leonardo 4b34a6d5a7 feat(libkernel): support microsecond timeout in size-0 _umtx_op 2026-10-14 22:51:54 +02:00
Adrià 6ff02d2119 Merge pull request #5477 from LeandroLP23/fix/agc-copy-data-register-source
fix(agc): copy a shader, context or user config register to memory with COPY_DATA
2026-10-14 22:50:24 +02:00
Adrià 33001cebda Merge pull request #5466 from fdfawef324/codex/stencil-export-emulation
feat(agc): replay proven finite stencil reference exports
2026-10-14 22:49:30 +02:00
Adrià 0a9a32646e Merge pull request #5461 from eljackjoestar-cmd/codex/single-level-volume-bias
fix(shader): sample single-level volumes through biased 2D accesses
2026-10-14 22:49:08 +02:00
billythemenace2andClaude Opus 5.5 731575c802 fix(shader): flush ds_add_f32 denormals and NaNs as the hardware does
ds_add_f32 and ds_add_rtn_f32 now follow the measured hardware: both
operands are flushed to a signed zero when bit 0 of the f32 denormal field
is clear and the result when bit 1 is clear, the sum is rounded to nearest
even, a NaN data operand is stored quieted, else a NaN old value is stored
quieted, and +inf + -inf stores 0xffc00000. Measured on gfx1010 and, in
#5492, on gfx1031.

The new MemoryInfo field is stored in the shader disk cache (field count
31, minimum record 79 bytes, FormatVersion 34). The parts that depend only
on the data operand are computed once, before the CAS loop.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-14 22:48:34 +02:00
Adrià 2077b5383a Merge pull request #5456 from billythemenace2/fix/shader-2d-compare-on-1d-tsharp
fix(shader): compare through 2D image_sample_c on 1D T#s
2026-10-14 22:48:28 +02:00
notaxeltvandCursor 27b3753260 feat(libSceNpPartner001): answer sceNpHasEAAccessSubscription without an EA Access server
Co-authored-by: Cursor <[email protected]>
2026-10-14 22:48:13 +02:00
Adrià 03f49fcf2e Merge pull request #5445 from nicolasabosch/fix/agc-sample-undrawn-msaa
fix(agc): sample a multisampled texture no draw rendered to from its uniform color memory
2026-10-14 22:47:11 +02:00
Ondra97 e60dd9d5a7 fix(ajm): preserve live decoder handles across ID wrap 2026-10-14 22:45:37 +02:00
Scott SchusterandClaude Opus 5.5 98ce8af56d perf(agc): reuse draw snapshots and moved word buffers across draws that nothing wrote between
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 22:45:17 +02:00
Adrià 4e210a1064 Merge pull request #5314 from XairRrR/fix/shader-front-face-all-bits
fix(shader): honour SPI_BARYC_CNTL.FRONT_FACE_ALL_BITS for the front-face input
2026-10-14 22:43:51 +02:00
Adrià FranchandClaude 970ff0c795 fix(libkernel): keep sem_timedwait debt entry on its own line, include <algorithm>/<cctype> in the kqueue test
Co-Authored-By: Claude <[email protected]>
2026-10-14 22:43:43 +02:00
Rujul Talekar e9d367776d fix(libkernel): name the failing vnode watch in the kqueue notification error
The Windows error for a refused FindFirstChangeNotification was one string shared
by WatchParent and WatchContents, so the log could not tell which handle or path
was denied. Build it from the watcher, the path the API was given and
GetLastError instead.

Still throws: the EVFILT_VNODE attach path is vfs_kqfilter, which returns only
EINVAL, ENOMEM or 0, with EBADF from fget before it, and consults no directory
permission, so no FreeBSD errno stands for a host that refuses to notify.
2026-10-14 22:43:39 +02:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 cf780ffe7e docs(progress): the README links the history page, not its chart
The README no longer embeds history.svg; it links history.html, which the progress page also links.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 01:22:40 +05:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 895061ca62 docs(build): list the ANYPS5_BUILD_WASM flag
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 01:22:39 +05:00
Adrià FranchandClaude 5d9def64e4 docs(debt): record COPY_DATA from a register and the dispatch registers it reads
Co-Authored-By: Claude <[email protected]>
2026-10-14 22:11:52 +02:00
Adrià FranchandClaude d8e97a7697 fix(recompiler): move stencil artifacts to cache format 35
Main's flatVolumeLineCompatible change also took format 34 with another layout, so entries of either would load as the other.

Co-Authored-By: Claude <[email protected]>
2026-10-14 22:09:03 +02:00
fdfawef324andCodex 97a0a4d098 refactor(agc): separate stencil replay from its follow-up topics
Move bounded vertex folding and empty-image feedback into separate topics. Keep the replay coverage proof, stage contracts, finite-reference tests and mapped cache regressions; version the stencil layout separately as format 34.

Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:48 +02:00
fdfawef324andCodex 77521f7ad2 feat(agc): replay proven finite stencil reference exports
Preserve instance and triangle order with one dynamic-reference shader pipeline. Require bounded references, complete export coverage, replay-safe mask control and resources; refuse unsupported side effects and feedback.

Co-Authored-By: Codex <[email protected]>
2026-10-14 22:08:35 +02:00
billythemenace2andClaude Opus 5.5 c63281824f fix(agc): rasterize a multisampled target without MSAA_ENABLE at the pixel center
A draw with PA_SC_AA_CONFIG.MSAA_NUM_SAMPLES > 0 and
PA_SC_MODE_CNTL_0.MSAA_ENABLE clear threw. On GFX10 and later the bit
is what makes the rasterizer use the programmed sample locations; with
it clear the draw now keeps the target's sample count with every sample
at the pixel center. Points, lines, a depth target and
alpha-to-coverage still throw.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-14 21:00:53 +01:00
Yunus Shaikh 907fc73d14 feat(agc): mark the performance overlay PROFILED while a profile switch is on
GPU and DRIVER need APS5_PROFILE_GPU or APS5_PROFILE_DRAW, and those switches add timestamp queries to every batch and timers to every packet, which changes the timings the panel shows. A screenshot of such a run could pass for an unprofiled one, so while either switch is on the panel now starts with a PROFILED line.
2026-10-14 12:59:54 -07:00
Yunus Shaikh 8a1f298e6c fix(agc): count the last frame's pipelines in the performance overlay below 1 fps
SHADERS counted the pipelines created between the first and the last present of the last second, so below 1 fps, with one present in that second, it read 0, as FPS did before. It now counts those created during the last frame there, like the other lines. The statistics test checks DRAWS, DISPATCH and SHADERS for a present alone in its second.
2026-10-14 12:59:54 -07:00
Yunus Shaikh 5594cda62f docs: describe the performance overlay's new lines
USAGE.md explains DRAWS, SHADERS, VRAM, RAM and RES, where each number
comes from, the count and memory formats, and what counting costs while
the overlay is hidden.
2026-10-14 12:59:53 -07:00
Adrià FranchandClaude ade067251c docs(debt): move the single-level volume bias line off the end of the section
Co-Authored-By: Claude <[email protected]>
2026-10-14 21:58:28 +02:00
eljackjoestar-cmd 89777fcaa1 fix(shader): sample single-level volumes through biased 2D accesses 2026-10-14 21:58:18 +02:00
billythemenace2andClaude Opus 5.5 0851c08b60 fix(shader): compare through 2D image_sample_c on 1D T#s
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-14 21:54:00 +02:00
MarcZX100 825a26751c fix(shader): accept TYPE=0 images on current main 2026-10-14 19:53:00 +00:00
simonbronkandClaude Opus 5.5 ce074f9302 docs(debt): note the protection bits sceKernelMprotect drops
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 21:51:57 +02:00
Adrià 411e5e6d9f Merge pull request #4916 from harry-z-kang/codex/issue-2776-dependency-audit
fix(relinker): audit dependencies without imported functions
2026-10-14 21:44:04 +02:00
Adrià FranchandClaude f093cf4975 docs(debt): record sampling a multisampled texture no draw rendered to
Co-Authored-By: Claude <[email protected]>
2026-10-14 21:42:20 +02:00
David-cmrg 2dd7f2b0e3 fix(libSceSystemService): end LoadExec exit without running guest exit handlers 2026-10-14 21:41:22 +02:00
Adrià 31d951edea Merge pull request #5375 from billythemenace2/fix/shader-3d-access-on-1d-tsharp
fix(shader): read 1D T#s through 3D image_sample and image_load accesses
2026-10-14 21:40:54 +02:00
Adrià 4b11b97ebb Merge pull request #5096 from sguckiran/main
fix(libkernel): convert local time with the host time zone
2026-10-14 21:38:24 +02:00
XairRrR 8dbf06798c fix(shader): honour SPI_BARYC_CNTL.FRONT_FACE_ALL_BITS for the front-face input
The front-face VGPR was always +1.0 / -1.0, which is its form only while
FRONT_FACE_ALL_BITS is clear (current Mesa reads it with fgt 0 / fsign).
With the bit set, as Mesa 22.0 RADV programs it, a back face reads 0 and
a front face non-zero: ACO then tests it with v_cmp_lg_u32 0. Uncharted:
Legacy of Thieves Collection (PPSA05684) sets the bit and its two-sided
cloth shaders test v_cmp_lt_u32 0, so -1.0 (0xbf800000) made every back
face a front face: the insides of the menu skeleton's rags kept their
front normals and were lit white by the spot light behind them.

The pixel stage info now carries the bit (request version 26, cache and
draw keys), the decode reads SPI_BARYC_CNTL when FRONT_FACE is an active
input, and the translator turns the builtin into 0xffffffff / 0. The
exact front value is not measured (docs/dev/debt/shader.md).

AI-assisted: yes
2026-10-14 21:37:48 +02:00
Adrià 358e218a4c Merge pull request #5083 from Dripl1x/codex/secondary-loadexec
fix(libSceSystemService): pass LoadExec arguments as the whole guest argv
2026-10-14 21:37:44 +02:00
Leonardo 923d73c305 feat(libSceVoiceQoS): implement endpoints and connections 2026-10-14 21:29:01 +02:00
Adrià b6406a1715 Merge pull request #5792 from SaloQT/feat/prebuilt-shader-packs
feat(recompiler): load prebuilt shader packs before the writable cache
2026-10-14 21:26:42 +02:00
Nahid DelicandClaude Opus 5.5 3a7e82a178 fix(shader): address ordered counts by offset0 alone
On ds_ordered_count M0 holds the ordered wave ID, not a GDS address as
for ds_append: radeonsi and ACO pass the wave ID as the intrinsic's
pointer and keep the counter address in offset0. Reading M0 as the base
and size skipped the add whenever M0[15:0] was 0, so every wave got the
same range. The test now runs the ordered pass with M0 = 0 and M0 = 7.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 21:23:52 +02:00
Nahid DelicandClaude Opus 5.5 46a1cc0fc3 feat(shader): add GDS ordered counts and ordered-append dispatches
ds_ordered_count adds the first active lane's value to a GDS counter and
returns the previous value, like ds_append adds the lane count. Waves are
not serialized in launch order: each still gets its own range. Ordered
swap and multi-dword counts stay refused. DISPATCH_DIRECT and
DISPATCH_INDIRECT accept ORDERED_APPEND_ENBL (bit 3) of the initiator.
Compute shaders of MXGP 26 (PPSA30839) use both.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 21:23:52 +02:00
ThatsLeo 26f0331094 perf(shader): keep only evaluable branch conditions in resource plans
A plan copied every control-flow condition with all its operands, though one
that depends on a vector register is never evaluated. Such conditions are
dropped, and the copied values live in one arena without use lists.
2026-10-15 08:22:09 +13:00
Dean b1d07f8b12 Merge pull request #3607 from itsbo5/feat/libSceNpCommerce-dialog-open2
feat(libSceNpCommerce): implement sceNpCommerceDialogOpen2
2026-10-15 08:19:19 +13:00
Evgeniy KazarinandClaude Opus 5.5 17ded56f12 feat(libkernel): apply SO_RCVTIMEO and SO_SNDTIMEO on a guest socket
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 22:18:23 +03:00
Evgeniy KazarinandClaude Opus 5.5 7e79f36ed8 feat(libkernel): answer TCP_NODELAY, SO_NOSIGPIPE and SO_NBIO on a guest socket
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 22:17:26 +03:00
codingreapermapsandClaude Opus 5.5 f8e8aca5c1 fix(agc): accept fractional-even tessellation partitioning
VGT_TF_PARAM.PARTITIONING 3 now compiles to Vulkan's fractional-even
spacing, which radeonsi programs as PART_FRAC_EVEN. Its factors are
bounded at 64 like integer partitioning; Vulkan raises the remaining
ones to at least 2, the D3D11 range for this mode.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 21:16:21 +02:00
Dean 4c1de0c0ca Merge pull request #4706 from TripyFox/fix/3274-indirect-calls
feat(shader): link callees of calls whose target is loaded from a table
2026-10-15 08:15:26 +13:00
Adrià a050f856f1 Merge pull request #5233 from hugodearaujo/fix/user-service-lifecycle
fix(libSceUserService): report initialization the way the console does
2026-10-14 21:07:55 +02:00
Adrià b0a4753de1 Merge pull request #5230 from hugodearaujo/fix/inherit-creator-priority
fix(libkernel): give an inheriting thread its creator's priority
2026-10-14 21:07:30 +02:00
Adrià 9811e9d4b7 Merge pull request #5218 from YossiYad/fix/guest-arena-mapping-hint
fix(libkernel): fall back below a mapping hint with no room above it
2026-10-14 21:05:23 +02:00
Adrià 066442c961 Merge pull request #5143 from xXPBSXx/fix/mprotect-unmapped-einval-v2
fix(libkernel): fail sceKernelMprotect over an unmapped range with EINVAL instead of aborting
2026-10-14 21:05:05 +02:00
Adrià c70051255c Merge pull request #5077 from 0xRickx/fix/libscevideodec2-coded-size
fix(libSceVideodec2): report the coded picture size
2026-10-14 21:03:52 +02:00