Commit Graph
14017 Commits
Author SHA1 Message Date
Yossi Yadgar cf1c80d8ce test(libkernel): cover reservation hints with no room above them
guest_memory reserves with a hint above the guest arena and with a hint
on the arena's last page for two pages, and checks that both land inside
the arena, the second below its hint.
2026-10-14 17:41:31 +03:00
Yossi Yadgar a016b4f2bc fix(libkernel): fall back below a mapping hint with no room above it
A mapping without MAP_FIXED treated its address as the lowest place it
could go, and a hint at or above the end of the guest arena threw on the
host. FreeBSD 11.4's vm_mmap_object places such mappings with
vm_map_find_min, which takes the address as a hint only: it tries at or
above it, then again from its minimum address.

GuestArenaAllocateFromHint does the same in the arena: at or above the
hint when it lies below the arena's end and a range fits there, otherwise
from the arena's start. MapPlaced and the Windows mmap_aligned use it for
hinted mappings; GuestArenaAllocateAtOrAbove keeps its meaning for the
callers that need a range above an address.

PS5CEMU-HAR (PPSA99360) reserves its JIT range with
sceKernelReserveVirtualRange and a hint near its own code, a host address
above the arena here, and aborted with "mapping address hint is above the
guest address space arena" when launching a 3DS title.
2026-10-14 17:41:31 +03:00
ThatsLeo 878c303786 perf(agc): keep a smaller staging pool on system-memory heaps
On a device whose largest device-local heap has only host-visible memory
types (integrated GPUs), the staging pool's device tier holds system RAM:
it now retains a sixty-fourth of the heap, at least 128 MiB.
2026-10-14 16:39:54 +02:00
MarcZX100 fe917a3bcf test(shader): keep reserved image type invalid
(cherry picked from commit 9add447991162ccb5c558530b888a8b799d5a747)
2026-10-14 14:39:44 +00:00
MarcZX100 1749c98025 fix(shader): accept TYPE=0 images during materialization
(cherry picked from commit 52992026a489b809aacaa47ff490bae57f227139)
2026-10-14 14:39:44 +00:00
Adrià f3434892bc Merge pull request #5862 from MarcZX100/feat/windows-worker-thread-names
feat(windows): name presenter and queue worker threads
2026-10-14 16:39:02 +02:00
Adrià a180a81d8d Merge pull request #5860 from MarcZX100/feat/log-line-timestamps
feat(libc): add optional log timestamps
2026-10-14 16:38:29 +02:00
Nithishvelan M a6e6209a73 test(libkernel): cover valid probe in cpu temperature guest test 2026-10-14 20:08:07 +05:30
Yuri Olive 766f6de920 fix(agc): read an unnormalized sampler without a mip filter at its base level
A guest sampler with FORCE_UNNORMALIZED and a mip filter of none read a
multi-level texture and the driver refused it: an unnormalized sampler is
accepted on a view with several levels only when every use is image_sample_lz and
the S# has no minimum LOD and no LOD bias. Kena: Bridge of Spirits (PPSA01746)
binds such a sampler (implicit LOD, point filters, mip filter none, LOD bias 7)
to a 9-level texture and stopped with "guest texture sampled with unnormalized
coordinates is not a single-layer 1D or 2D view ...".

With the mip filter off the sampler reads only level 0, so the base-level path
the driver already has for unnormalized samplers is exact for it whatever its
uses, minimum LOD or bias. A sampler with a point or linear mip filter is
unchanged.

Measured on a PS5 (gfx1013) through a sampler descriptor rewritten to force
unnormalized coordinates, a 64x64 texture of four levels with a distinct marker
per level, coordinates in texel units:
- mip filter point, explicit LOD 0, 1, 2, 3: level 0, 1, 2, 3, 256 of 256 texels
  each, coordinates read in texel units of the selected level
- mip filter point, implicit LOD from a quad derivative of 8 texels: level 3
- mip filter none with LOD bias 7: explicit LOD 2, explicit LOD 3 and the implicit
  LOD of 3 each read level 0, 256 of 256 texels

Tested: Windows 11, MinGW-w64 GCC 15.2.0, Release, RTX 4070 SUPER.
agc_shader_memory_tests passes with the change and fails without it on the new
assertion; agc_driver_image_sample_unnormalized_tests, agc_shader_disk_cache_tests
and agc_driver_graphics_tests pass.
2026-10-14 11:35:50 -03:00
christopherflores9312 cece0fafc9 test(tools): cover inline NID mode conflicts 2026-10-14 07:34:11 -07:00
Nithishvelan M 305822ec73 test(libkernel): cover sceKernelIsTrinityMode and dual-null in operation mode guest test 2026-10-14 20:03:31 +05:30
Adrià 32421519a3 Merge pull request #5857 from Lorkydey/feat/oracle-result-comparison
feat(hw-oracle): compare captured results bit for bit
2026-10-14 16:29:24 +02:00
Nithishvelan M 04b673e53d test(libSceErrorDialog): cover initial status queries and uninitialized close in guest test 2026-10-14 19:58:56 +05:30
Adrià ef4d09d22a Merge pull request #5697 from gjonn/hdr-output
feat(videoout): present PQ display buffers through an HDR10 swapchain
2026-10-14 16:27:11 +02:00
Adrià 8dfaafe627 Merge pull request #5647 from pushkarreddyy/feat/ajm-resample-ratio-ramp
feat(libSceAjm): support ratio ramp in sceAjmBatchJobSetResampleParametersEx
2026-10-14 16:26:20 +02:00
Adrià 5adefa6f89 Merge pull request #5643 from Amirtheshwaran/feat/libkernel-mincore
feat(libkernel): implement mincore
2026-10-14 16:25:54 +02:00
Adrià 4469ea22f6 Merge pull request #5422 from mariusyo07/feat/ult-mutex-pool-destroy
feat(libSceUlt): implement sceUltMutexDestroy and sceUltWaitingQueueResourcePoolDestroy
2026-10-14 16:25:27 +02:00
Nawasfadili 6509ec274a feat(libc): implement wide and unlocked stream I/O 2026-10-14 14:24:37 +00:00
Nithishvelan M 8b5595c766 fix(libScePlayGoDialog): drop unused header and cover uninitialized close in guest test 2026-10-14 19:53:53 +05:30
Alexej Szpevák 18d8ab35a0 test(tools): cover the pull request template checks
Add tests for check_conventions.py's pull request checks: a filled-in
copy of the real template passes, the untouched template reports every
gap, unchecked items are named for any list marker, AI-assisted and
Depends on accept only their documented answers, template comments do
not count as answers, sections need content, and titles must follow
Conventional Commits.
2026-10-14 16:23:21 +02:00
Nixitov 4091519b04 feat(libkernel): implement rtprio_thread and the pthread concurrency controls
Morrowind imports rtprio_thread, pthread_setconcurrency and pthread_getconcurrency and stops at start-up. Report every guest thread as normal priority and accept a set without applying it; store the concurrency level as a hint. Recorded in the libkernel debt.
2026-10-14 16:23:12 +02:00
Nithishvelan M 0488345603 test(libSceVrSetupDialog): cover uninitialized close and initial status in guest test 2026-10-14 19:51:39 +05:30
Sam 7b06e75940 fix(agc): promote a held import window to its whole allocation
A 64 MiB import window held by the active recorder blocked the containing import of the same registered allocation, so an address-based build copied the whole range instead. Demon's Souls then stopped after two frames: "an address-based build copies 358 MiB of 1 registered ranges, past 64 MiB".

Allow the containing import when the recorder is active; the retired window stays alive through the hold (KeepThroughHold). Cover promotion, a sync inside the hold and release after the hold's last batch.
2026-10-14 15:19:28 +01:00
Nithishvelan M ed1ee702c9 test(libSceCdlgG2P): cover uninitialized close and initial status in guest test 2026-10-14 19:49:23 +05:30
lorkydey 48aaec50f8 fix(relinker): propagate POSIX autorun failures 2026-10-14 16:17:24 +02:00
Adrià 066b58fa17 Merge pull request #5811 from MarcZX100/codex/packed-f16-reuse-operands-4042
perf(shader): reuse packed f16 operand lanes
2026-10-14 16:16:15 +02:00
Adrià 8b2d940434 Merge pull request #5798 from jacob6769/feat/opus-celt-dec
feat(libSceOpusCeltDec): decode CELT packets with the libSceOpusDec decoder
2026-10-14 16:15:49 +02:00
Adrià 6e4669fe19 Merge pull request #5748 from AlexOfTheForest/perf/conventions
perf(tools): read checker file contents through one git cat-file process
2026-10-14 16:15:34 +02:00
Adrià da9a65d8ed Merge pull request #5698 from milescoviello/perf/import-window-zero-pages
perf(agc): copy only nonzero pages before a watched import
2026-10-14 16:15:08 +02:00
ps54allandClaude Sonnet 5.5 db69769f42 feat(libSceCesCs): convert two-byte EUC-JP characters through the CP932 table
The EUC-JP profile threw on every two-byte character. It now maps the rows
0xA1-0xFE through a 94x94 table taken from Microsoft code page 932 (JIS X 0208
plus NEC row 13 and the NEC-selected IBM rows), and encodes a code point to its
lowest cell. Unassigned cells answer UNASSIGNED_CODE, a bad trail byte
INVALID_ENCODE, and a cut pair SRC_BUFFER_END. Three-byte JIS X 0212 characters
still throw.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-14 16:10:41 +02:00
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
Gjon Gojcevic 3265cb6d79 fix(shader): keep BDA anchors exact on tables whose ranges overlap
The driver builds tables whose ranges ascend by begin but can overlap
(a per-build region read over the address space's ranges). A lookup
selects the last range beginning at or below an address, so the anchor's
range now ends at the next range's begin when that comes first, and the
driver requires only ascending begins (BdaAbi::RangesOrdered).

An anchor is also not used for a range longer than 2^62 bytes, whose
offset arithmetic could wrap with a positive immediate. Anchors are
counted per read site after adjacent loads are grouped and reads with
no used dwords are dropped, so a program does not search for one
effective read; read eligibility shares RoutesApertures.

Tests: the anchored test programs can replace the lookup path by a
sentinel, which shows which reads load directly; the anchor table has an
overlapping range; a recompiled compute program reads through an anchor
on the GPU.

AI-assisted: yes
2026-10-14 10:09:08 -04:00
Adrià 0c2fcc2af7 Merge pull request #5788 from TideOPL/perf/dma-fill-on-gpu
perf(agc): store a DMA_DATA data fill larger than 64 KiB as a buffer fill
2026-10-14 16:08:37 +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
Nithishvelan M 54f391be07 test(libSceLoginDialog): cover uninitialized close and initial status in guest test 2026-10-14 19:37:39 +05:30
Adrià Franch 7a12992d9c fix(graphics): keep the recipe path as on main
A recipe hit copies its stored layout as before; the address validation
stays on the cached and uncached non-recipe paths only.
2026-10-14 16:05:35 +02:00
TibixDev 02e58e9936 fix(graphics): bypass vertex layout cache churn
Preserve current null-descriptor and format-component semantics, keep live validation per draw, and leave empty or bypassed layouts on the value-owned path. Add differential, concurrency, and isolated timing coverage.

Written with AI assistance.
2026-10-14 16:05:35 +02:00
TibixDev 1efbb87145 test(agc): declare Vulkan headers for vertex input tests 2026-10-14 16:05:35 +02:00
TibixDev c724c69324 perf(graphics): retain immutable vertex input layouts
Cache validated layouts by shader variant and exact static shape, independently of buffer transport. Preserve per-draw address checks and share layout ownership with draw recipes.

Written with AI assistance.
2026-10-14 16:05:35 +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
MarcZX100 445db4d013 feat(windows): name presenter and queue worker threads 2026-10-14 14:02:27 +00:00
MarcZX100 2cc4999420 feat(libc): add optional log timestamps 2026-10-14 13:55:30 +00:00
simonbronkandClaude Opus 5.5 b6cde56981 feat(agc): rasterize sample locations that vary between pixels through a 2x2 grid
PA_SC_AA_SAMPLE_LOCS_PIXEL_* patterns that differ between the four pixels
of the guest's 2x2 grid threw. Pass them through VK_EXT_sample_locations
as a 2x2 sample location grid on devices whose maxSampleLocationGridSize
for the sample count allows it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 15:53:28 +02:00
lorkydey af66601f41 feat(hw-oracle): compare captured results bit for bit 2026-10-14 15:53:11 +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
tototomate123 937f235dcc fix(agc-driver): allow stale clear flags on color-only draws 2026-10-14 15:50:44 +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
KernelPanicNTandClaude Opus 5.5 1536689622 feat(libSceSystemGesture): implement sceSystemGestureGetTouchRecognizerInformation
sceSystemGestureCreateTouchRecognizer now records the gesture type and
rectangle in the title-owned recognizer buffer, and
sceSystemGestureUpdateTouchRecognizerRectangle replaces the stored
rectangle. sceSystemGestureGetTouchRecognizerInformation reports them
back with updated_time 0, since no recognizer is ever updated with
input. Recognizers that were not created by
sceSystemGestureCreateTouchRecognizer, or that have no rectangle, throw
because the console's result for them is unknown.

The guest test now passes full-size recognizer and rectangle structures
instead of an int.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:47:24 +00:00