Commit Graph
12196 Commits
Author SHA1 Message Date
Adrià e0b8be9dc5 Merge pull request #6530 from milescoviello/feat/smoothing-mixed-samples
feat(agc): draw radeonsi line and polygon smoothing (SAMPLE_COVERAGE, merged mixed samples)
2026-10-19 06:06:26 +02:00
Adrià 9cc0f16f6e Merge pull request #6533 from ArjenS-LA/feat/guest-getopt-long-only
feat(libc): implement getopt_long_only
2026-10-19 06:04:23 +02:00
Adrià 3904ce6cf5 Merge pull request #6505 from keravyn-ops/fix/htile-pending-fill
perf(agc): take the HTILE words pending fills leave instead of reading them
2026-10-19 06:03:19 +02:00
Adrià d72c9e3728 Merge pull request #6527 from SandstromPL/feat/libscediscmap
feat(libSceDiscMap): report no disc bitmap from the two disc map queries
2026-10-19 06:02:18 +02:00
xXPBSXxandClaude Sonnet 5.5 ba9dbc208a test(libSceNetCtl): cover the plain callback registration in guest_sce_net
sceNetCtlRegisterCallback and sceNetCtlUnregisterCallback share the
callback table logic with the V6 pair, which guest_sce_net checks, but
the plain pair is not called by any test. The new block mirrors the V6
one (null function, null output, eight slots, the ninth refused, invalid
ids, slot reuse) with the guest-ABI IgnoreNetCtlEvent callback, and checks
that the two tables are separate.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-19 06:01:26 +02:00
MrMha c72ccac3e6 feat(pad): queue timed controller button sequences 2026-10-19 07:58:16 +04:00
Yunus Shaikh a932bcc7d6 fix(agc): take shader cache FormatVersion 41 and word the grid-reference skip as a device limitation
main took FormatVersion 40 with #6486, so this branch moves to 41. The grid-reference test's skip now reads as a device that does not keep depth at custom sample locations, the wording tools/check_skips.py accepts as a device limitation. The sample-location debt entry describes the 2x checkerboard without naming titles.
2026-10-18 20:57:10 -07:00
Yunus Shaikh 18463ff5c2 Merge main into fix/agc-sample-location-grid-exact
#4650 took request serialization version 35 for its depth remap flag, so this branch's sample order moves to 36. The serialization tests drop #4650's trailing byte from every older version they build, as main's do, along with the iteration fields and the sample order.
2026-10-18 20:56:57 -07:00
elliot 40d4cc03f5 fix(agc): move workgroup offset specialization IDs to 8241-8243
8237 and 8238 are taken by MeshLayerBase and MeshLayerCount in #6959 and 8240 by DepthRemapBase in another open PR, so buildSpecializedModule would read a mesh module's IDs as workgroup offsets once both land.
2026-10-18 22:54:44 -05:00
elliot 11a7b61d72 fix(agc): split oversized dispatches with workgroup offset specialization
A dispatch over maxComputeWorkGroupCount was split into vkCmdDispatchBase
chunks whose base reached the limit, which VUID-vkCmdDispatchBase-baseGroupX-00421
forbids, and NVIDIA refused the split outright.

Compute modules now declare WorkgroupOffset specialization constants (default 0)
that the recompiler adds to WorkgroupId and GlobalInvocationId and keeps
unmaterialized. Each chunk is recorded with vkCmdDispatch from group 0, bound to
a pipeline variant specialized with the chunk's base. The NVIDIA throw is gone;
device-memory LDS splits still throw.

Fixes #7375
2026-10-18 22:54:33 -05:00
Dean 3ddbc4accc Merge pull request #4650 from Mouad-Scriptz-0/feat/agc-depth-range-remap
feat(agc): remap a viewport depth range the device cannot express into the vertex shader
2026-10-19 16:52:31 +13:00
Dean 3fda339541 Merge pull request #7169 from Ondra97/codex/fix-command-batch-fence-failure
fix(agc): ignore failed fence creation outputs
2026-10-19 16:52:12 +13:00
Dean c815dd278b Merge pull request #7724 from karimibrahim07/fix/agc-image-table-reuse-windows
test(agc): expect one resolution for a CPU write beside an image table on Windows too
2026-10-19 16:52:05 +13:00
Kovalev Vladislav 269a59e23a fix(relinker): preserve defined RELATIVE symbols with section markers 2026-10-19 09:46:47 +06:00
Yunus Shaikh 21b14210ff Merge main into perf/agc-remember-evicting-refusals
The host-import debt entry takes #6472's budget sentence and keeps this branch's sentence on remembered refusals.
2026-10-18 20:40:45 -07:00
Nithishvelan M de95052c4a feat(libSceVrSetupDialog): export sceVrSetupDialogGetStatus
Implement sceVrSetupDialogGetStatus in libSceVrSetupDialog, returning the atomic dialog status, and add unit test coverage in GuestVrSetupDialog.
2026-10-19 09:10:42 +05:30
Yunus Shaikh 0644811579 Merge main into perf/agc-host-import-aligned-blocks
The host-import debt entry takes #6472's budget sentence and keeps this branch's sentence on remembered refusals.
2026-10-18 20:40:40 -07:00
Yunus Shaikh 3a9bc814c2 Merge main into perf/agc-host-import-blocks
importBudget keeps this branch's configuredBudget split and takes #6472's HostImportBudget for the default; the host-import debt entry takes #6472's budget sentence next to this branch's report and refusal sentences.
2026-10-18 20:38:28 -07:00
Leonardo Feitosa 0c7573e957 test(agc): check which storage images are tracked as 64 KiB blocks 2026-10-19 00:25:47 -03:00
Kovalev Vladislav 94bd3c3872 fix(agc): preserve indirect index tests alongside current main 2026-10-19 09:25:11 +06:00
Dean fd423f9b2e Merge pull request #7709 from Scramblrrrr/codex/agc-shared-log-flush-main
fix(agc): flush the shared logger from native clients
2026-10-19 16:25:06 +13:00
Dean 3259e4c3ea Merge pull request #7701 from jotitadev/fix/agc-async-log-test-skip-crash-handler
fix(tests): keep the async log test's aborting children away from the crash handler
2026-10-19 16:22:10 +13:00
Dean 8687da6c0e Merge pull request #7711 from jotitadev/fix/guest-dynamic-loader-resource-lock
test(libkernel): serialise the two dynamic loader tests that share their files
2026-10-19 16:22:06 +13:00
Dean b64c281630 Merge pull request #7712 from jotitadev/fix/audio-in-test-skip-late-silence
test(audioin): skip the silent blocks a late capture device leaves
2026-10-19 16:22:02 +13:00
billythemenace2andClaude Opus 5.5 60a2aa47d6 fix(agc): refuse mesh-path draws on a device without mesh shaders before validating them
A draw on the mesh path was validated before its pipeline checked for
mesh shader support, so on a device without VK_EXT_mesh_shader (an RDNA1
RX 5700 XT) Sackboy: A Big Adventure (PPSA01289) stopped on "subgroup
capability 61 is unsupported for shader stage 128" instead of the actual
cause. ValidateShaders now takes the device's mesh shader support and
refuses such a draw first with "device does not support mesh shaders".

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 05:19:01 +02:00
keravyn-opsandClaude Opus 5.5 8854867021 test(agc): cover the depth and stencil fast clear a recorded HTILE fill leaves
RecordedFillClearsWithoutWait now also runs with a D32_SFLOAT_S8_UINT target: a
recorded SMem 0 fill (0xf0) over the HTILE clears depth and stencil at the bind
without a GPU wait, and is stored back as expanded (0xfffff3ff). The stencil case
alone fails with APS5_NO_PENDING_HTILE_FILLS=1.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 05:16:01 +02:00
keravyn-ops fac1979549 perf(agc): take the HTILE words pending fills leave instead of reading them
A depth target's bind (storeBackClearedHtile) reads its HTILE words to find a fast clear and
stores them back expanded. When a recorded fill over the HTILE was still pending, that read
made the flush hook submit the open batch and wait for the GPU, under the GPU mutex. A title
that clears its depth targets with buffer fill kernels pays that wait at every clear.

Uniform fills now note their 32-bit word with the pending write (NotePendingWordFill; the byte
value the DCC key paths use is unchanged). When every pending write over the HTILE is such a
fill and the rest of the range already holds the same word, the bind takes the landed word
from the notes, and stores the expanded words as a GPU fill recorded behind the pending ones.
Any other pending write keeps the read. APS5_NO_PENDING_HTILE_FILLS=1 always reads.

PPSA12544 on a Radeon 780M (Windows): 1271 pending-write syncs per 10 s waited 5.5 s at the
bind, about 4.3 ms each; with this change there are none, and the scene runs at 60-61 fps
instead of 44-46.
2026-10-19 05:16:01 +02:00
Leonardo 7fdb261e67 feat(libSceVoiceQoS): implement packet and local endpoint attribute functions 2026-10-19 05:12:36 +02:00
klosixgaming-arch 0d4cbd538b fix(agc): compare a CB resolve's sample count with the rasterizer only under MSAA_ENABLE
PPSA08270 (Eternights) stopped after its story intro with "AGC graphics:
CB resolve from a target whose sample count differs from the
rasterizer's". It resolves a 4x 512x512 target into a single-sample one
with PA_SC_MODE_CNTL_0.MSAA_ENABLE off while PA_SC_AA_CONFIG still holds
2x from earlier draws. Without MSAA_ENABLE the scan converter does not
use PA_SC_AA_CONFIG's sample count, so the resolve takes its sample
count from CB0 as it already does when PA_SC_AA_CONFIG is single-sample.
2026-10-19 03:06:07 +00:00
Adrià ca13a56a58 Merge pull request #6515 from Ondra97/codex/fix-direct-remap-flexible-budget
test(libkernel): cover flexible budget after direct replacements
2026-10-19 05:02:23 +02:00
Adrià 062706c56f Merge pull request #6514 from JJenkx/test/gpu-timing-incomplete-batch
test(agc): cover incomplete GPU timing batch completion
2026-10-19 05:02:18 +02:00
Adrià ba63d412cd Merge pull request #6511 from JJenkx/fix/ssl-ps5-reader-context
feat(ssl): implement context-scoped PS5 certificate PEM reading
2026-10-19 05:01:14 +02:00
Adrià 9f8252af15 Merge pull request #6450 from fdfawef324/codex/shader-cache-runtime-sources-1015
fix(recompiler): keep standalone tests out of shader cache versions
2026-10-19 05:00:11 +02:00
Karim Ibrahim e3dd06fea6 test(agc): expect one resolution for a CPU write beside an image table on Windows too
Since #6346 a CPU write elsewhere in an image table's 64 KiB block no
longer fails the table's unchanged proof on Windows, because the proof
is answered per page there too. The Windows-only expectation of a second
resolution is stale and agc_driver_image_table_reuse fails on Windows.
Expect the Linux count on every host.
2026-10-18 22:59:54 -04:00
Adrià e488debe6d Merge pull request #6508 from fogydes/feat/agc-dcb-atomic-gds
feat(libSceAgc): implement DCB atomic GDS operations and correct size accessor
2026-10-19 04:59:06 +02:00
Dean fa0ac6d5ce Merge pull request #5926 from xXPBSXx/fix/agc-vertex-fetch-overhang
fix(libSceAgcDriver): zero the overhanging record of a vertex fetch
2026-10-19 15:56:44 +13:00
Yunus Shaikh e19cf1ac21 Merge main into fix/agc-heap-mirror-replan-unwatched
The host-import debt entry takes main's budget sentence and keeps this branch's heap-mirror sentence.
2026-10-18 19:55:25 -07:00
milescovielloandClaude Opus 5.5 41c75d2658 fix(libSceFont): say once where system fonts were looked for when a set has none
Without system font files, sceFontOpenFontSet returns
SCE_FONT_ERROR_FONT_OPEN_FAILED and logs `file=(none)` for each call.
Some titles then fail far from the cause: Astro's Playroom (PPSA01325)
lays out text with the failed set and stops on an out-of-heap or invalid
texture assertion (#7714). The first such open now prints the font set
and the directory searched to stderr, with how to supply the fonts.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 02:54:37 +00:00
Adrià c8e3fcb703 Merge pull request #6507 from karanvora2599/perf/videoout-unordered-cpu-flips
perf(videoout): don't hold a flip thread's CPU flips behind queued work
2026-10-19 04:49:51 +02:00
Adrià d23ed99f84 Merge pull request #6472 from ahir061/fix/agc-host-import-budget-half-heap
fix(agc): keep half the host heap out of the host import budget
2026-10-19 04:49:45 +02:00
milescovielloandClaude Opus 5.5 c9fe9292d8 fix(agc): draw a stencil replacement against a known stencil value as an inversion
DB_STENCILREFMASK holds a test value and a separate operation value, and
REPLACE_OP, ONES and REPLACE_TEST write a value that can differ from the
test value on bits the compare reads. Vulkan uses one reference for both,
so such a face threw. Ghost of Tsushima (PPSA02225) stops on one at its
splash screen (test value 0xff, operation value 0x40, both masks 0xff).

Some compares fix the stencil value wherever an operation runs: EQUAL on
pass and depth fail, NOTEQUAL on fail, and LEQUAL, GEQUAL, LESS or GREATER
against the largest or smallest masked value. There, if every written bit
is compared, the written bits hold the test value, so the replacement is
an INVERT whose write mask holds only the bits that differ from the value
written. The operations of a face share its write mask, so a face whose
other operations can't be drawn the same way still throws.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 02:49:19 +00:00
Jota 879b9e65c5 fix(agc): keep each descriptor set slot in one of a split pipeline library pair
With independent sets, a pipeline linked from a pre-rasterization library and a fragment shader library must not leave the same set slot VK_NULL_HANDLE in both libraries' layouts (VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681). Every pipeline with a fragment stage is split when the device has graphics pipeline libraries, and each part's layout held only the sets its own stages bind, so a fragment shader that binds nothing in set 1, or a draw where no stage binds set 0, left that slot null in both parts. A slot neither stage binds now goes to the part that owns it: set 0 to the pre-rasterization layout, set 1 to the fragment layout.
2026-10-18 23:47:16 -03:00
Jota bd89df5f5a test(agc): name the host stage in the unit shadow tests' host-write barriers
The retile and key-store helpers order the host's pattern writes before their transfer with VK_ACCESS_HOST_WRITE_BIT under VK_PIPELINE_STAGE_ALL_COMMANDS_BIT alone, which does not include the host stage (VUID-vkCmdPipelineBarrier-srcAccessMask-02815). They now name VK_PIPELINE_STAGE_HOST_BIT as UnitShadow.cpp does for the same barrier.
2026-10-19 02:45:51 +00:00
Jan ŠléglandClaude Opus 5.5 04aef899a6 fix(agc): reuse a recycled descriptor set only for a table of its own size
DescriptorCache::AllocateRewritten handed out any recycled set of the requested layout. The
variable descriptor count of an image-table binding is fixed when its set is allocated, and
PrepareDrawBindings writes the table's present elements, up to its current element count, into
the set it gets. A draw whose table had more elements than the table the recycled set was
allocated for could write descriptors past the set's allocation
(VUID-VkWriteDescriptorSet-dstArrayElement-00321).

A set from a chain pool now records the variable count it was allocated with, as a dedicated-pool
set already does, and recycled sets are kept per layout and variable count, so a rewritten draw
reuses a set only for a table of the same size.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 04:40:35 +02:00
Adrià 8a526d4495 Merge pull request #6504 from 0xRickx/feat/libsceimedialog-host-keyboard
feat(libSceImeDialog): take the dialog's text from the host keyboard
2026-10-19 04:39:46 +02:00
Yunus Shaikh 4d52a66fd3 Merge main into perf/agc-remember-evicting-refusals
Main's sameRange for a failed import now takes the import budget, as the HostImport overload does, so a recorded failure is compared against the run the budget would import again.
2026-10-18 19:39:07 -07:00
Yunus Shaikh af6f2ecab8 Merge main into perf/agc-host-import-aligned-blocks
Main's sameRange for a failed import now takes the import budget, as the HostImport overload does, so a recorded failure is compared against the run the budget would import again.
2026-10-18 19:38:07 -07:00
fogydes cf994f1f60 feat(libSceAgc): implement DCB atomic GDS operations and correct size accessor 2026-10-19 04:37:29 +02:00
Adrià ccbd40240f Merge pull request #6497 from giovanniadamo/feat/libsceregmgr
feat(libSceRegMgr): add sceRegMgrNonSysGetInt stub
2026-10-19 04:36:35 +02:00
Yunus Shaikh abf42b2214 Merge main into perf/agc-host-import-blocks
Main's sameRange for a failed import now takes this branch's import budget, as the HostImport overload does, so a recorded failure is compared against the run the budget would import again.
2026-10-18 19:36:25 -07:00