Commit Graph
12196 Commits
Author SHA1 Message Date
Dean a3dc0b52b0 Merge pull request #7337 from milescoviello/fix/test-fixture-validation
test(agc): create fixture command pools with the reset flag
2026-10-18 14:50:29 +13:00
Dean 7cdfbd2e9d Merge pull request #7152 from Bonjourcestmatt/fix/getdents-not-directory
fix(libkernel): report EINVAL for getdirentries on a non-directory
2026-10-18 14:50:26 +13:00
Dean 720f02ea89 Merge pull request #7342 from oneandonlydean/rescue/2468
fix(relinker): keep test artifacts in the build tree
2026-10-18 14:50:22 +13:00
Dean 0455317705 Merge pull request #7338 from oneandonlydean/rescue/3241
fix(libkernel): name module-relative call sites and thread ids in Linux wait traces
2026-10-18 14:50:19 +13:00
Dean ddf547fbf8 Merge pull request #7186 from simonbronk/codex/net-receive-address-guards-20261017
fix(libSceNet): guard recvfrom sender outputs before receiving
2026-10-18 14:50:15 +13:00
Dean f376eeb9ef Merge pull request #7176 from milescoviello/fix/asan-gpu-tests
fix(agc): run the AGC GPU tests in an ANYPS5_ENABLE_ASAN build
2026-10-18 14:50:11 +13:00
T3cm0andClaude Opus 5.5 26898755e5 feat(libc): implement seed48 and lcong48
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:44:32 -05:00
T3cm0andClaude Opus 5.5 f68ab450e2 feat(libc): implement wcscspn, wcstoimax, wcstoumax, strtouq, rindex and flsl
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:44:06 -05:00
T3cm0andClaude Opus 5.5 58697488a2 feat(libc): implement the uchar.h conversions, mblen and wctomb
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:43:39 -05:00
T3cm0andClaude Opus 5.5 24a999c499 feat(libc): implement long double, Bessel and integer math exports
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:43:13 -05:00
T3cm0andClaude Opus 5.5 8283831a19 feat(libc): implement mergesort
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:42:46 -05:00
T3cm0andClaude Opus 5.5 300b7ff34c feat(libSceLibcInternal): implement inet_aton, inet_addr and inet_ntoa
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:42:20 -05:00
thuanquangandClaude Opus 5.5 48b394d1ec fix(agc): keep robustBufferAccess2 off on AMD's proprietary driver
Since #4048 enabled robustBufferAccess2, AMD's Windows driver draws
nothing in agc_driver_layered_volume_draw and agc_driver_layered_volume_vertex,
and the selected loads make the high half of agc_driver_subvector_loop's
wave64 skip its loop. Until the cause is found, that driver does not get
the feature, and its loads keep their selections.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 08:42:00 +07:00
T3cm0andClaude Opus 5.5 f9b7b230fc feat(libSceLibcInternal): implement the remaining posix_spawnattr accessors
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:41:26 -05:00
T3cm0andClaude Opus 5.5 66247cef5c feat(libc): implement the sceLibcPafMspace allocation exports
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:40:58 -05:00
NikoandClaude Opus 5.5 a3067a04d4 fix(agc): clamp a remapped depth at narrower bounds instead of rescaling it
ApplyDepthRemap gives the Vulkan viewport the console's clamp bounds
clipped to [0, 1]. A zero-to-one viewport maps the shader's z/w linearly
onto [minDepth, maxDepth], so with bounds narrower than [0, 1] the remap
rescaled the depth into them instead of clamping it there; only bounds
of [0, 1] or wider (Minecraft's [-1, 1]) came out right. Scale and offset
are now divided by the clamp range and the offset moved by its minimum,
so the viewport and the depth clamp together give scale * z/w + offset
clamped to the bounds.

agc_driver_depth_range_remap_draw draws through the remap path and,
when the device has VK_EXT_depth_range_unrestricted, through the
unrestricted path, then checks the stored depth with probe draws and
that the two clip distances cut at the near and far planes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:27:48 +13:00
NikoandClaude Opus 5.5 b28e6c83de fix(agc): keep viewport depth scale and offset out of the shader cache key
Only the remap mode changes what the vertex shader compiles to. Scale and
offset are specialization constants that each materialization takes from
its own request, so they no longer split the compiled variant per depth
transform. The result memo hashes them with the snapshot instead, so one
prepared vertex shader does not hand the module specialized for one
transform to a draw with another. sameVertexInfo repeated its first
comparison without paClVsOutCntl; the repeat is dropped.

A test pins the version 27 layout (the remap fields are the last bytes
of a vertex request), a version 25 replay, truncation and trailing-data
refusal, and that scale and offset leave the cache key alone while the
mode does not. agc_depth_range_remap materializes one prepared vertex
shader with two transforms and checks that each gets its own module.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:27:48 +13:00
Mouad-Scriptz-0andClaude Fable 5.1 53212b18ac feat(agc): remap a viewport depth range the device cannot express into the vertex shader
Without VK_EXT_depth_range_unrestricted a viewport depth range outside
[0, 1] threw. Minecraft (PPSA17221) draws its world with scale 1 and
offset 0 in negative-one-to-one clip space, so its depth is the raw z/w
clamped by PA_SC_VPORT_ZMIN/ZMAX. On such a device the vertex shader now
scales clip z so z/w is the console's depth, the pipeline clamps depth at
the console's bounds, and two clip distances restore the near and far
planes that depth clamping removes. Mode, scale and offset travel as
pipeline specialization constants from the draw's vertex stage info, in
both the per-draw and the registration-module path; mesh and tessellation
draws with such a range still throw.

The console's depth clamp bounds are clipped to [0, 1]: exact for a
normalized depth target or none, and reported once for a tested or
written float depth target, where a depth below 0 is stored as 0
(Minecraft clamps its float depth target to [-1, 1]). The shader
validator accepts the remap's two extra clip distances next to the one
a program may already export.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-18 14:27:48 +13:00
Romans Pokrovskis 7f53a96a9f test(agc): check the sample reader excludes cache snapshots 2026-10-18 04:25:27 +03:00
Romans Pokrovskis 9f9478fdf0 fix(agc): hold the pipeline cache while building sample readers 2026-10-18 04:25:27 +03:00
Romans Pokrovskis 9452485ffd test(agc): skip unsupported readback sample counts 2026-10-18 04:25:27 +03:00
Romans Pokrovskis ab52b02381 feat(agc): read individual multisample image samples 2026-10-18 04:25:26 +03:00
thuanquangandClaude Opus 5.5 0563713626 fix(agc): read a 32-bit depth-bits T# over guest memory through a float view
A sampled 32_UINT or 32_SINT T# with a depth swizzle that no live depth
surface matches threw, while the 16-bit case already falls back to guest
memory through an R16_UNORM view. The 32-bit case now reads the guest
bytes through an R32_SFLOAT view, which the shader casts back to the
stored dword.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 08:25:21 +07:00
Nikhil Panchal 304798015b fix(agc): harden host import construction and mutation waits
Guard incomplete imports and preserve mutation waiter errors and progress.

Follow-up to #2575; refs #2352.
2026-10-18 14:19:49 +13:00
Dean 0bb238b4a4 Merge pull request #7336 from thuanquang/fix/trace-thread-across-modules
fix(agc): keep one trace thread pointer and recording flag across modules
2026-10-18 14:15:36 +13:00
MarcZX100 f96cdc1e7e fix(libc): mark unimplemented NID handler as non-returning 2026-10-18 01:10:16 +00:00
thibautandClaude Opus 5.5 f27ad681ee test(agc): keep the resource cache growth test short
The test now sets a base bound of 32 entries and a first shrink window
of 2 (ResourceCache::SetBase, applied at the next Clear()) and turns
dispatch recipes off, so every dispatch goes through the cache: grow,
shrink, regrow, backoff and the Clear() reset take about 1.2k
dispatches instead of about 100k.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XBXM4pgkMHYEtqN1EQni2P
2026-10-18 03:08:58 +02:00
BiladeiroSupremoandClaude Opus 5.5 859dcae2a1 fix(shader): reduce a DPP row scan read at a row's last lane over the active lanes
A row scan (DPP row_shr 1, 2, 4 and 8 over keys that hold the identity on
lanes the wave did not enter with) read with v_readlane at lane 15, 31, 47
or 63 shuffles from lanes that already left the surrounding loop, which are
inactive on the host and whose values are undefined there. The read becomes
a subgroup reduction over the active invocations of that row, per wave32
half when a wave64 host subgroup holds two waves. The saved exec mask set to
every lane (`!x || x`) also counts as every lane.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:05:35 -03:00
Dean 5229b5b829 Merge pull request #7333 from MarcZX100/codex/guest-filesystem-cleanup-retry-7331
test: retry transient Windows filesystem cleanup
2026-10-18 14:04:46 +13:00
Dean 4b2563e2ef Merge pull request #3186 from fma-rc/feat/libscejobmanager-compute
feat(libSceJobManager): implement compute sequences and compute dispatches
2026-10-18 14:04:33 +13:00
Romans Pokrovskis ba9aec5119 fix(shader): preserve clip arrays for tessellation control points 2026-10-18 01:00:55 +00:00
milescovielloandClaude Opus 5.5 563cdd6e99 test(agc): create fixture command pools with the reset flag
Seven test fixtures create their own command pool without
VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, while the driver's own
pool sets it and Recorder begins a used command buffer again without an
explicit reset. The Khronos validation layer reports
VUID-vkBeginCommandBuffer-commandBuffer-00050 in depth_storage and
partially_resident_snapshot --pending-stores for this. The fixtures now
create the pool the way VulkanDevice does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 01:00:16 +00:00
Yunus Shaikh 32f480d361 Merge main into fix/agc-heap-mirror-replan-unwatched
Main registers agc_driver_lds_lock_budget where this branch registers
its heap mirror unwatch tests. Keep both.
2026-10-17 17:59:51 -07:00
Yunus Shaikh 49788713ac Merge #6243's head into perf/shader-image-table-reuse-v3-pr
#6243's new head merges main f1af6c5915, whose #7325 adds
verifyChainedTableOffset next to the selected-record tests this
branch carries from #6243. That test reads the record words from the
snapshot's shared word list; this branch keeps the words with each
table's snapshot, so the merge reads them from the table it checks.
2026-10-17 17:57:47 -07:00
Dean ba38dccb3d Merge pull request #6537 from AnthonyClemens/fix/agc-draw-snapshot-table-sets
fix(agc): keep each set's image table writes in its own draw snapshot…
2026-10-18 13:56:51 +13:00
Dean d9dc2a8231 Merge pull request #7218 from milescoviello/perf/fold-nested-select
perf(shader): fold a select nested in a select on the same condition
2026-10-18 13:56:46 +13:00
Dean e0644fbce1 Merge pull request #7212 from milescoviello/perf/denormal-free-guarded-products
perf(shader): drop the result flush of a product behind its tiny-product check
2026-10-18 13:56:43 +13:00
Dean e99938800e Merge pull request #7323 from MontyMcK/feat/psvr2-no-headset
feat(libSceHmd2): report a console without a PS VR2 headset
2026-10-18 13:56:39 +13:00
Dean 63da333b7a Merge pull request #4048 from Mouad-Scriptz-0/perf/recompiler-select-load-guards
perf(recompiler): select guest memory loads instead of branching around them
2026-10-18 13:56:36 +13:00
thuanquangandClaude Opus 5.5 5c3d21023f fix(agc): keep one trace thread pointer and recording flag across modules
PerformanceTrace kept the recording flag and each thread's trace buffer
as inline static members, so on Windows every module that includes the
header had its own copies: agc_driver_registration_trace read an empty
pointer, and libSceVideoOut's timers never saw the trace recording. They
are now defined once in the driver.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 07:50:57 +07:00
MarcZX100 087c57ac84 test: retry transient Windows filesystem cleanup 2026-10-18 00:45:12 +00:00
milescovielloandClaude Opus 5.5 6c47f92b52 fix(shader): pass clip distances through the rect-list stages as the vertex shader writes them
The recompiled vertex shader writes gl_ClipDistance through a variable of
its own beside its position block, but the rect-list control and
evaluation stages read and wrote it as a second member of their
per-vertex block, so the stage interfaces did not match
(VUID-RuntimeSpirv-OpVariable-08746). They now take and forward the clip
distances through ClipDistance variables of their own.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 00:43:33 +00:00
Ondra97 01b1664eb4 chore: update f64 minmax fix with current main 2026-10-18 02:42:18 +02:00
MarcZX100 06379ceac7 fix(shader): match barycentric tessellation clip interfaces 2026-10-18 00:37:36 +00:00
blu 5e340fa54d fix(relinker): append the test temp directory instead of replacing the environment
set_tests_properties replaced the ASAN_OPTIONS that add_asan_test_options appends to
guest_module_args, guest_deferred_dependencies and guest_module_fini in ASan builds.
Append the TMPDIR, TEMP and TMP settings instead.
2026-10-18 13:37:21 +13:00
Ondra97 397f43d042 test(agc): respect f64 denormal preservation support 2026-10-18 02:35:26 +02:00
Yunus Shaikh 8c6765be71 Merge main into perf/shader-direct-cpu-evaluable-images
Main's #7325 adds verifyChainedTableOffset to the image table tests
where this branch adds its selected-record tests. Keep both, with
main's call after this branch's.
2026-10-17 17:32:11 -07:00
Dean f1af6c5915 Merge pull request #7325 from Cleverdee/fix/image-table-nested-addend
fix(recompiler): fold chained immediate addends of image-table record offsets
2026-10-18 13:30:46 +13:00
Ondra97 c4e9c431b5 chore: merge main into f64 minmax denormal fix 2026-10-18 02:28:30 +02:00
Dean dfd7ad6d56 Merge pull request #6058 from notaxeltv/feat/libScePlayerSelectionDialog-ppsa34015
feat(libScePlayerSelectionDialog): run common-dialog state machine without UI
2026-10-18 13:26:44 +13:00