Commit Graph
20967 Commits
Author SHA1 Message Date
Dean Galvin 24e47a58bb test(libkernel): include the libkernel header instead of redeclaring 17 pthread exports
GuestPthreadPosixCalls.cpp declared the exports in a local extern block;
they are declared once, in the library's public header.
2026-10-27 09:46:47 +13:00
Dean Galvin 139a99c558 Merge branch 'main' into test/libkernel-pthread-posix-calls 2026-10-27 09:46:25 +13:00
Adrià FranchandClaude Sonnet 5.5 a6eeb21482 test(agc): put agc_windowed_import_refresh on the Windows PATH list
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-26 21:44:23 +01:00
milescovielloandClaude Opus 5.5 6e78df9980 test(libSceNpUniversalDataSystem): cover initialization, the memory and storage stats and the event size and string queries
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 20:43:41 +00:00
orezraeyandClaude Opus 5.5 df2f94fcba Merge main into fix/librtc-rfc3339-precise-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 17:41:34 -03:00
Adrià e61a7c7e24 Merge pull request #9509 from 011010/fix/poll-guest-urgent
fix(libkernel): report urgent data in poll on macOS
2026-10-26 21:27:41 +01:00
Adrià c8809e82e4 Merge pull request #10449 from alvaroelpob/feat/libscelibressl-rsa-flags-size
feat(libSceLibreSsl): implement RSA_flags and RSA_size
2026-10-26 21:26:37 +01:00
Adrià cf69e44eca Merge pull request #10534 from noamroger/claude/project-thread-io5xtc
feat(libSceHttp2): store cookies in cookie boxes
2026-10-26 21:25:37 +01:00
Dean bfbc55a45b Merge pull request #11162 from orezraey/docs/libscertc-field-accessors-measured-ps5
fix(libSceRtc): drop the date field getters and setters a PS5 does not export
2026-10-27 09:23:29 +13:00
Adrià 0b921c6674 Merge pull request #10530 from maximilianfv/fix/libscessl-macos-hide-mbedtls
fix(libSceSsl): keep the bundled mbedtls symbols out of libSceSsl's exports on macOS
2026-10-26 21:22:32 +01:00
Dean 51e55a079f Merge pull request #11149 from EagleBearerYS/feat/ajm-batch-builders-done
fix(libSceAjm.native): reject a null batch buffer list with a nonzero count in sceAjmBatchJobRunSplit
2026-10-27 09:22:27 +13:00
xXPBSXx 78cb208c0c Merge main (fc7e583e6e) into fix/gettimeofday-itimer-efault 2026-10-26 21:22:08 +01:00
janzezno 4f7e51f399 perf(agc): re-check only the host imports a registry change can reach
refreshImports checked every live host import, failure and refusal
again at each guest allocation registry change. A title that maps
memory often (SuperTuxKart, ~1650 maps a second) paid a walk that grew
with the live imports: ~34 FPS with ~1.1 GiB of imports on RADV.

The import table now keeps a weak_ptr snapshot of the ranges it was
last checked against and diffs it with the new lease. Only imports
whose import window touches a changed span, and imports made since the
last refresh, are checked again. Every import is checked when the window
is 0 or the window or budget changed. SuperTuxKart's menu goes from
~34 to ~45 FPS with the same imports live.
2026-10-26 21:19:58 +01:00
xXPBSXx 6e418d3342 Merge remote-tracking branch 'upstream/main' into libm/sinh-msun 2026-10-26 21:18:09 +01:00
Dean fc7e583e6e Merge pull request #11035 from orezraey/fix/libsceaudioout-repeated-init-measured-ps5
fix(libSceAudioOut): fail a repeated sceAudioOut2Initialize and sceAudioOutInit as measured on a PS5
2026-10-27 09:16:48 +13:00
Dean 7c3d8b3bbb Merge pull request #11007 from al3ss4ndrolb/test/suggest-patches-resolved-temp-root
test(relinker): compare patch advisor output against the resolved temporary root
2026-10-27 09:15:45 +13:00
blawesom 1665fb4d20 test(agc): drop the pending-write comment conventions reject 2026-10-27 09:14:54 +13:00
xXPBSXxandClaude Sonnet 5.5 c78810a2de test(libc): cover the first sinh argument past ln(DBL_MAX)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-26 21:14:53 +01:00
Dean Galvin 55ded8c93b Merge branch 'main' into fix/agc-recorder-pending-write-proof-test 2026-10-27 09:14:44 +13:00
Dean ce6b15b234 Merge pull request #10958 from AZLisme/feat/posix-webkit-raw-addresses
feat(libScePosixForWebKit): resolve raw socket address hints
2026-10-27 09:13:12 +13:00
Dean bf85740739 Merge pull request #10916 from Cankiee/fix/overlap-markdown-paths
fix(tools): preserve backticks in overlap report paths
2026-10-27 09:10:31 +13:00
Dean d33b0ba970 Merge pull request #10909 from thuanquang/test/metadata-commit-host-regions
test(agc): expect arena host regions in metadata-commit probes to read as changed
2026-10-27 09:09:13 +13:00
Dean 43c0841507 Merge pull request #10881 from EagleBearerYS/feat/scenet-config-and-ether-calls
feat(libSceNet): implement sceNetInitParam and the loopback answer of sceNetConfigGetIfFlags
2026-10-27 09:07:50 +13:00
Dean e41170d9eb Merge pull request #10873 from spaina93/fix/progress-history-test-git-locale
test(tools): read git's unknown-ref message in the C locale in progress_history
2026-10-27 09:07:09 +13:00
Dean d934f802e4 Merge pull request #10814 from MarcZX10/marc/fix-ctime-fallback-buffer-race
fix(libc): give ctime's unrepresentable-time text a buffer per thread
2026-10-27 09:06:08 +13:00
Dean 78b08b5162 Merge pull request #10785 from Sumaiter/fix-host-import-cut-watch
test(agc): accept compared shared pages after import cuts
2026-10-27 09:05:27 +13:00
xXPBSXx dd44db30b0 Merge remote-tracking branch 'upstream/main' into libm/sinh-msun 2026-10-26 21:04:52 +01:00
xXPBSXxandClaude Sonnet 5.5 e1979dffde test(libc): cover sinh from 22 up to the overflow threshold
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-26 21:04:47 +01:00
Dean fd0da73ec5 Merge pull request #10781 from MarcZX10/marc/fix-printf-s-closed-stdout
fix(libc): fail printf_s on a closed standard output with EBADF
2026-10-27 09:04:40 +13:00
Dean da1d222d52 Merge pull request #10733 from Bram910/fix/unwrap-elf-header-metadata
fix(tools): validate inner ELF machine and header size
2026-10-27 09:03:28 +13:00
Dean a334355005 Merge pull request #10724 from Bram910/fix/trace-json-nesting
fix(tools): report excessive trace JSON nesting
2026-10-27 09:02:46 +13:00
Dean 17ecaca307 Merge pull request #10694 from kyon-eth/feat/audio3d-error-strings
feat(libSceAudio3d): implement error descriptions
2026-10-27 09:02:14 +13:00
Dean 0dbed7b5b5 Merge pull request #10560 from Bram910/fix/audit-gnu-hash-chain-walks
fix(tools): avoid repeated GNU hash chain walks
2026-10-27 09:01:01 +13:00
Dean 3fa7e3f9cc Merge pull request #10545 from Bram910/fix/file-prefix-allocation
fix(io): avoid allocating the entire file prefix limit
2026-10-27 09:00:30 +13:00
Dean 6ea31b4e3a Merge pull request #10322 from Ondra97/codex/fix-prepared-shader-stderr-handles
test(agc): retain Windows stderr for loader diagnostics
2026-10-27 08:58:27 +13:00
Dean 265c36523c Merge pull request #10175 from orezraey/fix/libc-fetestexcept-measured-ps5
fix(libc): return fetestexcept's unmasked status bits as measured on a PS5
2026-10-27 08:57:53 +13:00
Dean 544060668d Merge pull request #10164 from LeandroLP23/build/agc-execution-tests-pch
build(agc): share a precompiled header across the execution tests
2026-10-27 08:57:18 +13:00
Dean b9c30ee505 Merge pull request #8311 from mugurc/fix/libc-dwarf-unwind-macos
fix(libc): keep DWARF unwind tables in libc on macOS hosts
2026-10-27 08:53:43 +13:00
JJenkx 09c36584fc fix(shader): reuse folded bitcasts and NaN tests within blocks 2026-10-26 15:51:39 -04:00
JJenkx f2abc7e4f6 test(shader): cover folded cast and NaN reuse boundaries 2026-10-26 15:51:39 -04:00
javierUDP 5a9631df3b docs(relinker): record SHA, AVX-512 and XSAVE under Rosetta on an M5
The entry for the M5 running macOS 26.4 did not say what Rosetta does
with SHA or AVX-512, and the XSAVE entry was measured only on macOS
27.0.1. On that host sha1rnds4 and a 256-bit-wide vpaddd on zmm raise an
illegal instruction alongside RDSEED, CLWB, RDPID, ADCX and ADOX, while
XSAVE writes an XSTATE_BV of 0x7 and XGETBV returns the same x87, SSE
and AVX mask although CPUID leaf 1 still reports neither XSAVE nor
OSXSAVE.

The BMI1 and BMI2 results were compared with the Intel SDM definitions
over 200,000 random inputs each for PDEP, PEXT, BEXTR, BZHI, LZCNT and
TZCNT, so the entry can say they compute the documented result rather
than only that they avoid a fault.
2026-10-26 16:49:15 -03:00
xXPBSXx 506d69b015 Merge main (e0b13f2990) into fix/gettimeofday-itimer-efault
The only conflict is sceKernelGettimezone in Time.cpp: main now reports the host zone, so the zone is built from that into a local and copied out with the checked write.
2026-10-26 20:49:00 +01:00
Yunus Shaikh 8d3f15f0e0 Merge main into feat/appcontent-addcont-ids-and-rudp-mss-v2 2026-10-26 12:43:42 -07:00
Yunus Shaikh b2d870962b docs: describe the performance overlay's second page
USAGE.md's performance overlay section now gives F10's cycle (off, page
1, page 2, off) and ANYPS5_OVERLAY=2, a table with one row per line of
page 2 that names each source and the system it comes from, and what the
page costs: the trace totals it turns on while it shows, and the checks
and counters that run while the overlay is hidden or on page 1.
ENVIRONMENT.md's ANYPS5_OVERLAY row lists page 2.
2026-10-26 20:42:30 +01:00
Yunus Shaikh b1889783be feat(agc): fill the overlay's second page from the driver's counters
Page 2 now samples its sources once a second, in NotePresent, while it
shows; nothing of it runs while the overlay is hidden or on page 1.

- Busy share per queue worker, the top 5 phases in ms per frame and queue
  0's waits (memory, lock, GPU) come from the trace's per-thread totals.
  Showing page 2 turns recording on with buffering off, so a timed scope
  only adds to its thread's totals; leaving it turns recording off again.
  Toggle switches it under a mutex, and ANYPS5_OVERLAY=2 switches it on at
  start. An APS5_TRACE_* run keeps its own recording untouched, and page 2
  then shows these lines only while that trace records. A driver thread
  names itself when it starts (BindThread without APS5_TRACE_* stores the
  name only) and binds on its first timed scope while page 2 shows;
  unnamed threads are not bound.
- Render passes per frame: the draw path counts a begun pass in the trace
  totals while page 2's totals are on (PerformanceTrace::Count).
- Flips/s and the draw cache's hit rate come from the driver through a
  source it registers at start (the draw cache's lock is only tried); the
  pipeline store's hit rate from PipelineStoreTotals; the compile backlog
  from the shader preparation and library prebuild pools (tried locks).
- Dropped frames per second are the presents that found no free swapchain
  image; repeated ones are presents of the display buffer shown just before.
  The device passes the buffer's address, its present mode and the drops.
- Commit charge against the commit limit: GetPerformanceInfo on Windows,
  Committed_AS and CommitLimit from /proc/meminfo on Linux; page faults per
  second from PageFaultCount or getrusage.
- Host imports: their count and bytes against the budget, on devices that
  import host memory.
- CPU copies: address-based builds count the bytes they copy in a
  per-thread counter (a relaxed load and store, folded once a second) with
  the largest build of each second against the address-copy cap.
- Unimplemented-function calls: libc counts NotImplemented_nid_no_patch
  calls; refused shaders are the APS5_SKIP_REFUSED_DRAWS set's size.
- Title ID (when the title has a param.json) and present mode.

The tests cover the trace deltas, hit rates, present-mode names, the
/proc/meminfo parser and the OS reads, the per-thread copy counter's fold,
the counted unimplemented call, the trace switch with page 2 and lazy
binding without buffering, and on lavapipe the sampler end to end with a
fake driver source, its reset when page 2 is left, and the cost of a
present hidden, on page 1 and on page 2.
2026-10-26 20:42:29 +01:00
Yunus Shaikh b6d3ae0dd6 feat(agc): add a detailed second page to the performance overlay
F10 now cycles through three states: off, the existing overlay (page 1)
and a detailed page (page 2), then off again. ANYPS5_OVERLAY=2 starts on
page 2; 1 and 0 or unset keep their meaning, and any other value still
throws, now naming 0, 1 and 2. OverlayPageAfter is the cycle, the
starting page plus the F10 presses modulo 3. Toggle stores the page it
gives under a mutex and PerformanceOverlay::Page loads it, so Visible,
which every present calls, stays one load as before. Each change of
page resets the statistics, as a toggle did.

Page 2 has its own composer, ComposeOverlayDetails, a pure function of
one OverlayDetailSample. It fills a 46-column panel without the graph.
Every value is optional, and a line whose sources are all missing is
left out; a line with some missing shows only the values it has. Each
line names its unit. Names from elsewhere (threads, trace phases, the
title, the present mode) go through OverlayText, which upper-cases
them and turns characters the font has no glyph for into spaces;
phase names are cut to fit the line. Page 1 is unchanged, line for
line.

On page 2, NotePresent keeps the frame statistics and fills the sample
with the frame rate, the last frame's time, presents per second and
the pipelines created in the last second. It reads nothing else, and
it skips page 1's memory reads and packet sums. The next commit adds
the driver and system counters. NotePresent latches the page, so
Record draws the page NotePresent sampled.

Tests: ANYPS5_OVERLAY 2 and 3, 02 and -1; the cycle from each starting
page through three presses and past 2^64 presses; page 2 of a full
sample, line for line, of an empty sample, and of a sample with
missing sources; every character either composer can emit has a
glyph; page 2 laid out at 1280x720, 1920x1080, 3840x2160 and 640x360,
every line drawn, no graph, and a 60-line page shrunk to scale 3 at
3840x2160. On lavapipe, under the Khronos validation layer with no
message: page 2 drawn at 1280x720 bit for bit, and F10 through a real
overlay: page 1, page 2 drawn from its own composer, then hidden, with
the statistics reset at each change.
2026-10-26 20:42:15 +01:00
Yunus Shaikh e11fb2a288 refactor(agc): take the performance overlay panel's width from its content
The panel was fixed at OverlayMetrics::Columns, 27 columns, and always
kept rows for the frame-time graph. OverlayContent now carries its
column count and whether it has a graph, and the panel's width, height,
fit test and scale come from them. ComposeOverlay still fills 27
columns with a graph, so the existing panel is drawn as before, line
for line.

LayOutOverlay refuses a panel with no columns, a graph on a panel
narrower than its 120 frames, and frame times on a panel without a
graph.

The 5x7 font gains %, +, -, _, J, Q, Y and Z, from the same HD44780
character set as its other glyphs, and OverlayFontCharacters lists
every character it can draw.

Tests: every listed character has a glyph no wider than 5 pixels,
non-empty unless it is the space, and unlike any other; characters
outside the list are refused; a 48-column panel without a graph is
laid out and scaled at 1280x720, 1920x1080, 3840x2160 and 320x180; a
140-column panel at 3840x2160 shrinks from scale 5 to 4; a too-long
line, a 20-column graph and frame times without a graph are refused.
2026-10-26 20:42:15 +01:00
Dean Galvin 9b31471555 feat(agc): copy depth planes to and from color storage images directly where maintenance8 allows
A depth plane and the color storage image that holds or receives its texels were copied image to buffer, then buffer to image. With VK_KHR_maintenance8, which the device already enables, vkCmdCopyImage copies the depth aspect directly to and from a single-component color format of its size (D32 with R32, D16 with R16), so those copies record one image copy and two barriers in place of the staging buffer round trip and three barriers. TakeStorage keeps its discard of the new depth surface before the copy. 24-bit depth, the stencil plane and every other format pair keep the buffer path, as does APS5_NO_DIRECT_DEPTH_COPY=1. The graphics Context now carries the maintenance8 flag. No performance claim is made.
2026-10-27 08:40:41 +13:00
Dean Galvin d8fad47e29 test(shader): check the unary special results on 32 more rows
The rows cover signed zeros, the smallest and largest denormals, the
smallest normals, both infinities, quiet and signaling NaNs of both signs
with payloads, exp's overflow and underflow edges, log(1), fract's clamp,
and sin/cos inputs at whole, half and quarter cycles up to 2^24 and
beyond. Only results the special rules fix are compared, bit for bit.
2026-10-27 08:39:53 +13:00
xXPBSXx 082c72c26b Merge main (e0b13f2990) into fix/filestream-flags-race 2026-10-26 20:38:36 +01:00