Commit Graph
10481 Commits
Author SHA1 Message Date
ivica00andCursor 2d96ff77a8 fix(agc): drain DMA_DATA unless APS5_PIPELINE_DMA is set
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-18 14:13:08 +02:00
Yunus Shaikh ca7ea10d30 docs(environment): add the rows for the performance overlay switches 2026-10-18 05:09:14 -07:00
Yunus Shaikh 0172d28496 Merge main into feat/videoout-performance-overlay 2026-10-18 05:08:24 -07:00
Dean 0d078f75d3 Merge pull request #7089 from pushkarreddyy/fix/agc-driver-buffer-descriptor-reserved-bit
fix(libSceAgcDriver): normalize reserved bit 30 in guest buffer descriptors
2026-10-19 00:51:55 +13:00
Alex ColliniandClaude Sonnet 5.5 7b3098714e docs(agc): keep the title name out of the released-textures debt entry
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 13:42:27 +02:00
Yunus Shaikh 4d906b8c04 test(shader): count direct images when selected records reach the image limit
The selected-records limit tests only read through image tables, so
nothing showed that the estimate counts direct images and samplers too.
TableManyKeyCode can now also load T#s straight from the SRT and sample
them, with the same samplers as the table reads and optionally a third
sampler on the last one.

agc_shader_selected_records_direct_image_limit:
- 63 selected reads and 1 direct image, 64 images: the per-key split is
  kept (63 selected tables and the direct image).
- 63 selected reads and 2 direct images, 65 images: over the limit only
  because of the direct images. Heap A's reads merge into one unselected
  table beside the 2 direct images (3 images, 3 pairs), and keys 2, 33
  and 64 still bind their records.

agc_shader_selected_records_direct_pair_limit:
- 31 selected reads and 1 direct image, each with 2 samplers, 64 pairs:
  the split is kept.
- The same with a third sampler on the direct image, 65 pairs: over the
  pair limit only because of the direct sampler. The reads merge into
  one table (2 images, 5 pairs), and keys 2, 17 and 32 still bind.

With ResourceTracker.cpp as on main 9caecfd2d5, the over-limit cases fail
with "image resource limit exceeded" and "sampled image/sampler pair
limit exceeded", and the cases within the limits pass.
2026-10-18 04:39:41 -07:00
Alexej Szpevák 93ea8f2684 test(libkernel): check the queued connection count on a listening socket
The listener read event now reports one connection after the first connect, and on Linux two once a second client is waiting, before both are accepted.
2026-10-18 13:35:15 +02:00
Alexej Szpevák b40e0bfb80 fix(libkernel): report the accept queue length for a listening socket's read event
A read event on a listening socket took its data from FIONREAD, which a listening socket refuses on Linux, so kevent and sceKernelAddReadEvent reported 0 connections while saying one was ready. FreeBSD 11.4 gives a listening socket filt_solisten, which reports so_qlen, the completed connections waiting for accept. Ready now checks SO_ACCEPTCONN and on Linux reads a TCP listener's accept backlog from TCP_INFO, where tcp_get_info puts it in tcpi_unacked; with no host call for the count (Windows, macOS, a listener that is not TCP) it reports 1, the lower bound the readiness already implies.
2026-10-18 13:35:15 +02:00
Yunus Shaikh 364fb665c1 docs(shader): note that selected image-table records merge past the image and pair limits 2026-10-18 04:33:39 -07:00
Yunus Shaikh bab404e7af fix(shader): keep a shader's selected image-table records within the image and pair limits
Since #6243, each read whose record offset the CPU evaluates gets its own
selected table column, so a shader that reads one heap at many such keys
plans one image per key. Past 64 keys that is refused with "image resource
limit exceeded", or with "sampled image/sampler pair limit exceeded" when
each read is sampled twice, where the shader planned within both limits
before.

After planning the table columns, the tracker now estimates the images
and sampled pairs that collecting the program would add, keyed as
AddImage and AddSampledPair key them, from the planned column sources
and the direct handles. If either is over its limit, it plans again with
the columns of one heap unselected, the heap with the most selected
columns first, until both fit or no heap is left. Those reads then share
one keyed column, as before #6243: the union of their key domains and the
largest key. A shader within both limits plans exactly as before, from
one planning pass.

The estimate counts images exactly. A direct sampler is told apart by its
handle's words and whether the sample adjusts, before the canonicalization
collecting it applies, so the pair count can only be too high and errs
toward merging.
2026-10-18 04:33:39 -07:00
Dextroid17 c81cfce7cf docs(environment): say APS5_SRGB_SHADER_DECODE=copy samples 8 and 8_8 sRGB through the copy 2026-10-18 07:27:41 -04:00
Dextroid17 192a37d026 test(agc): force the sRGB sample copy with APS5_SRGB_SHADER_DECODE=copy 2026-10-18 07:27:15 -04:00
Dextroid17andJacmd b5502ee4a1 fix(agc): rename the near and far locals that windows.h defines
Co-authored-by: Jacmd <59657462+Jacmd@users.noreply.github.com>
2026-10-18 07:27:15 -04:00
Dextroid17 97354b7fd1 docs(debt): sRGB 8 and 8_8 textures read an RGBA8 sRGB copy 2026-10-18 07:27:15 -04:00
Dextroid17 49ad10b771 feat(agc): sample 8 and 8_8 sRGB textures through an RGBA8 sRGB copy
A device that cannot sample R8_SRGB or R8G8_SRGB had its sRGB textures
decoded in the shader, which cannot serve filtered samples: the decode must
come before the filter. The texture is now an RGBA8 UNORM image viewed as
RGBA8 sRGB, filled by a one-to-one blit of the R8 or RG8 texels (a snapshot's
upload, or a storage image's texels refreshed when its Version changes), so
the sampler decodes and then filters, and every sample, gather and load of
these images is an ordinary sRGB one. The recompiler is given the decode mask
only for formats the device cannot blit, or when APS5_SRGB_SHADER_DECODE=1
forces the shader decode. Tests run on lavapipe only.
2026-10-18 07:27:15 -04:00
Lberonio 9de7cfd9f4 docs(agc): clarify flip latch clearing condition 2026-10-18 14:26:35 +03:00
David Fontanet BujaldónandClaude Opus 5.5 c494367836 Merge boykopovar/AnyPS5 main into fix/conventions-unknown-nid-collisions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 13:17:36 +02:00
Dean 3e3e8b9050 Merge pull request #7374 from thuanquang/fix/mesh-last-provoking-vertex
fix(agc): draw geometry programs with the last provoking vertex
2026-10-19 00:13:37 +13:00
Dean 721f29c7e1 Merge pull request #7487 from DavidSamir/fix/shader-barycentric-tessellation-clip-moltenvk
fix(shader): keep clip distances in the blocks between the barycentric tessellation stages
2026-10-19 00:13:33 +13:00
Dean 7a2e4a4e7f Merge pull request #7476 from EagleBearerYS/fix/agc-settle-rewatch-live-images
fix(agc): keep a settled import compared while a storage image overlaps it
2026-10-19 00:13:29 +13:00
Dean f55ccad7c9 Merge pull request #6078 from 011010/feat/env-reference
feat(tools): add the APS5_* and ANYPS5_* environment reference and check it
2026-10-19 00:12:57 +13:00
pushkarreddyy c3c400a6f8 fix(libSceAgcDriver): normalize reserved bit 30 in guest buffer descriptors 2026-10-18 16:38:59 +05:30
Lberonio 863e3f5815 docs(agc): record why the flip event latch cannot be bounded in time 2026-10-18 13:52:37 +03:00
Dean 9f25d0bf5b Merge pull request #7175 from pushkarreddyy/feat/agc-driver-primitive-polygon
feat(libSceAgcDriver): support polygon primitive type 21
2026-10-18 23:52:22 +13:00
AlxcBTW 0d699295a9 docs(agc): say which profile lines count per window and which since start 2026-10-18 12:36:32 +02:00
AlxcBTW cb3d1d1dce fix(agc): say "cumulative" on the profile lines that count from the start 2026-10-18 12:29:55 +02:00
pushkarreddyy f07df07969 feat(libSceAgcDriver): support polygon primitive type 21 2026-10-18 15:56:57 +05:30
AlxcBTW 127ee82f02 feat(libc): dump the faulting thread's stack words in Windows crash reports
APS5_CRASH_STACK_BYTES=<n> prints n bytes of stack words from rsp after the
stack return address candidates, then eight words at every distinct stack word
that points at readable, non-executable memory outside the thread's stack.
Off when the variable is unset, empty or 0.
2026-10-18 12:20:10 +02:00
011010 99e295a7ba test(tools): register and extend the environment rule tests 2026-10-18 04:16:05 -06:00
011010 061101a3e8 fix(tools): report a row the pull request removes 2026-10-18 04:16:04 -06:00
AlxcBTW 17dd47d71e fix(agc): print the revalidate profile per 10 s window 2026-10-18 12:09:36 +02:00
Crimson cb28abeb89 fix(shader): fault on misaligned 64-bit device-memory LDS atomics 2026-10-18 12:31:11 +03:00
Dean 9caecfd2d5 Merge pull request #6881 from Scramblrrrr/codex/runtime-volume-bias-poison-main
fix(shader): poison unsupported biased volume table entries
2026-10-18 22:27:05 +13:00
Dean 09127eada2 Merge pull request #7273 from mazen320/fix/windows-junction
fix(libkernel): report Windows directory junctions
2026-10-18 22:22:54 +13:00
Dean 1e949afe2c Merge pull request #7372 from pushkarreddyy/fix/json2-parser-null-text
fix(json2): return parse error on null text or zero size
2026-10-18 22:22:50 +13:00
David debf6ee684 docs(shader): say how the barycentric tessellation stages pass clip distances 2026-10-18 13:08:53 +04:00
David f982c1c5bd test(agc): check where the barycentric tessellation stages keep clip distances 2026-10-18 13:08:53 +04:00
David 6491e12466 fix(shader): keep clip distances in the blocks between the barycentric tessellation stages
#7330 passes the vertex clip distances as separate ClipDistance arrays so
the control stage's input matches the vertex shader's output. SPIRV-Cross,
which MoltenVK uses, cannot translate a separate ClipDistance array in a
tessellation evaluation stage, so on MoltenVK every pipeline of the
barycentric tessellation route failed to compile. The control stage now
reads the separate array the vertex shader writes and passes it on inside
its per-vertex block, which the evaluation stage reads and writes.
2026-10-18 13:08:53 +04:00
Dean cb1d6e5bd6 Merge pull request #7123 from thuanquang/fix/guest-frame-chain-zero-record
fix(libkernel): end guest thread, fiber and context frame chains at a zero record
2026-10-18 22:04:31 +13:00
Dean 04b55dda2e Merge pull request #6406 from MarcZX100/codex/preserve-linux-gnu-segments-6394
fix(relinker): preserve GNU stack and RELRO headers on Linux
2026-10-18 22:04:27 +13:00
AlxcBTW 06ca6a066b fix(libScePad): smooth a slow-reporting mouse over its measured report interval 2026-10-18 11:00:03 +02:00
AlxcBTW 367d46e480 feat(libScePad): bind L2 to R and the first mouse side button 2026-10-18 11:00:02 +02:00
AlxcBTW 53af7be7ee feat(libScePad): toggle mouse capture with F7 beside the middle button 2026-10-18 11:00:02 +02:00
AlxcBTW 438e1baa3e feat(libScePad): ramp keyboard-driven triggers over TriggerRampMs 2026-10-18 11:00:01 +02:00
AlxcBTW 64a9979268 feat(libScePad): ramp keyboard sticks over KeyboardRampMs 2026-10-18 11:00:01 +02:00
AlxcBTW a0f14cdf14 feat(libScePad): tilt keyboard sticks partially while a modifier key is held 2026-10-18 11:00:01 +02:00
Maz bd0caa451b Merge upstream/main into fix/windows-junction
Keep the drive-absolute junction note and the updated setitimer debt from main.
2026-10-18 12:57:10 +04:00
Maz 7212dae71a fix(libkernel): reject Windows volume mount points in junction reads
A mounted folder uses the junction reparse tag and would otherwise be returned as a relative Volume GUID path. Only a drive path is reported, through the absolute-link text helpers.
2026-10-18 12:53:48 +04:00
Dean cdb7ed0355 Merge pull request #7350 from T3cm0/bionic/err-warn-psignal
feat(libSceLibcInternal): implement err, warn, psignal and sys_signame
2026-10-18 21:52:15 +13:00
Maz e964264d23 Merge branch fix/windows-absolute-symlink into fix/windows-junction
Keep the junction reader and try the absolute symbolic-link reader first.
2026-10-18 12:50:08 +04:00