Commit Graph
14017 Commits
Author SHA1 Message Date
Yunus Shaikh f7e1f5d2e8 Merge branch 'fix/agc-sample-location-grid-fallback' into fix/agc-sample-location-grid-exact
Takes #6451's merge of main. Main's spanned-waves flag took request
serialization version 32, so the sample order moves to version 33; a
version 32 request keeps its spanned-waves flag and reads no sample order.
Multisampled color targets now gain storage usage on their first storage
binding; a target whose samples may be reordered still gets it at creation,
and the recorder's storage-usage checks expect that.
2026-10-16 12:46:37 -07:00
Yunus Shaikh d06d3eea86 Merge main into fix/agc-sample-location-grid-fallback
Main's one-sample target test expected a pattern varying between pixels
to be refused on a device without a one-sample 2x2 grid; with the grid
fallback it takes pixel (0,0)'s locations instead, so the test now
expects it to be accepted.
2026-10-16 12:45:44 -07:00
Adrià 406fd9ea9b Merge pull request #5898 from mohammad-alosta/fix/ngs2-custom-filter-type-0
fix(libSceNgs2): support custom filter type 0 in Ngs2ApplyCustomParam
2026-10-16 21:43:56 +02:00
Adrià bc9833e39b Merge pull request #5887 from leorossi2005/feat/libkernel-umtx-microsecond-timeout
feat(libkernel): support microsecond timeout in size-0 _umtx_op
2026-10-16 21:43:51 +02:00
Yunus Shaikh 3e802e45b8 fix(agc): draw sample-index and position inputs at sample 0's location
A one-sample target drawn by a multisampled rasterizer refused a pixel
shader that reads ANCILLARY with POS_X_FLOAT or POS_Y_FLOAT, because the
sample index made the host shade per sample and moved FragCoord from the
pixel centre. A shader the guest does not iterate now runs once per pixel
with sample number 0, and on this path the rasterizer keeps one sample, so
those draws are no longer refused. Resident Evil Village's (PPSA01556)
2x depth-only pass with SPI_PS_INPUT_ENA 0x2301 was one of them.
2026-10-16 12:43:16 -07:00
Adrià FranchandClaude aa00274346 docs(debt): record inferred sceAudio3dPortGetAttributesSupported list
Co-Authored-By: Claude <[email protected]>
2026-10-16 21:41:16 +02:00
MarcZX100 e910caed27 feat(libSceAudio3d): report supported port attributes 2026-10-16 21:41:16 +02:00
Yunus Shaikh bd09c49374 Merge main into fix/recompiler-once-per-pixel-sample-inputs
Main took request serialization versions 31 (output primitive size) and
32 (spanned waves), and #6683 uses 33, so the pixel iteration fields move
to version 34. A version 32 request keeps its spanned-waves flag and reads
no pixel iteration.
2026-10-16 12:41:06 -07:00
Yunus Shaikh 5f822a5008 feat(agc): keep Windows imports under 1 MiB compared with APS5_NO_DEFERRED_SETTLES
The deferred settle of small Windows imports could only be turned off
through the test hook. The variable turns it off for a run, so a title can
be compared with and without it on one build; unset, nothing changes.
2026-10-16 12:38:16 -07:00
Yunus Shaikh c7e07cae44 Merge main into perf/agc-async-settle
Main's #5905 settles Linux dma-buf imports with settleImport, which is
now built on both platforms. The batched settle of Windows imports under
1 MiB, its counters and adoptSettleDevice's batch reset stay Windows-only,
and ClearHostImports drains the batches only there.
2026-10-16 12:37:41 -07:00
Adrià b260d8d792 Merge pull request #6930 from adriadam10/ci/submodule-cache-gitdirs
ci(windows): cache only the submodule git dirs
2026-10-16 21:31:34 +02:00
Adrià FranchandClaude e5b31e0728 ci(windows): cache only the submodule git dirs
The cached tar held the 3rdparty work trees too, and its extraction fails on
the dangling symlink 3rdparty/zstd/tests/cli-tests/bin/unzstd, which Git Bash
tar can't create. Cache .git/modules alone and let git submodule update check
the work trees out from it, as a clean checkout does.

Co-Authored-By: Claude <[email protected]>
2026-10-16 21:31:16 +02:00
Adrià 1b1f8483ca Merge pull request #5849 from wachi35676/fix/nid-elf-duplicate-exports
fix(nid): reject ELF exports that patch to different symbols under one name
2026-10-16 21:24:01 +02:00
Adrià 87326a925c Merge pull request #5885 from ErenYeager1836/test/random-buffer-coverage
test(libSceRandom): cover zero-sized null buffer and single-byte read in guest test
2026-10-16 21:23:53 +02:00
Adrià 1391ea30b6 Merge pull request #5831 from ahmad3a4/fix/libkernel-append-atomic-windows
fix(libkernel): append O_APPEND writes atomically on Windows
2026-10-16 21:23:47 +02:00
Adrià 542312b5de Merge pull request #5823 from xxLnolan/feat/convert-keycode-nonus-backslash
fix(keycode): map HID non-US backslash key
2026-10-16 21:23:41 +02:00
Adrià d96e0e554c Merge pull request #5772 from DavidSamir/fix/libc-empty-guest-environment
fix(libc): start the guest environment empty instead of copying the host's
2026-10-16 21:23:35 +02:00
Adrià 4664b28976 Merge pull request #5812 from NumberGuan/codex/reject-non-executable-elf-types
fix(relinker): reject core and untyped ELF conversion inputs
2026-10-16 21:23:30 +02:00
Adrià 9158f031ca Merge pull request #5835 from AlexOfTheForest/feat/app0-zarchive
feat: read title files from a read-only app0.zar (ZArchive) layer
2026-10-16 21:23:25 +02:00
Adrià 6a6b171a26 Merge pull request #5699 from YossiYad/fix/loadexec-host-stderr
fix(libSceSystemService): give LoadExec's next executable the host standard error
2026-10-16 21:23:19 +02:00
Adrià 383cb26339 Merge pull request #5614 from JJenkx/fix/linux-guest-finalizer-arguments
fix(relinker): clear Linux guest finalizer arguments
2026-10-16 21:23:12 +02:00
Adrià 4ff1e8864d Merge pull request #5141 from 0xRickx/fix/refused-loopback-connect
fix(libkernel): refuse a loopback TCP connect at once on Windows
2026-10-16 21:23:06 +02:00
hamb3r 4bef7287e8 Merge branch 'main' into fix/shader-msaa-array-descriptor-shape 2026-10-16 22:20:43 +03:00
AhirandClaude Opus 5.5 81c67e1be3 perf(agc): log storage image and storage-viewed texture creation only with APS5_DEBUG_LOG
Wolverine re-creates about 340 storage images a second while its dynamic resolution steps; the two unconditional log lines wrote 1.17 million lines to stdout in 25 minutes and took about 11 % of queue worker 0 in a sample.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 00:49:09 +05:30
SandstromPLandClaude Opus 5.5 a3cbea1ffc test(agc): expect a one-sample draw for the single-scan case of #5907's tests
#5907 added a case to multisampleTests that clears MSAA_ENABLE on its
2x rasterizer over a one-sample color target, and expected the color
sample-count refusal. With the previous commit, that draw rasterizes
the one-sample target as one sample with the standard location, so the
case now requires that instead.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 00:48:45 +05:30
SandstromPLandClaude Opus 5.5 bb877791ac fix(agc): rasterize into one-sample targets as one sample when MSAA_ENABLE is clear
On top of #5882, a draw with PA_SC_AA_CONFIG.MSAA_NUM_SAMPLES 2 (4x),
MSAA_ENABLE clear, a one-sample color target and no depth target threw
"a color target's sample count differs from the rasterizer's", which
stops METAL GEAR SOLID: Peace Walker (PPSA18216) at its first
presentation (draw C on #5268). Without MSAA_ENABLE every sample is at
the pixel center, and a one-sample target keeps the coverage of sample
0, so the draw is now drawn as a one-sample draw.

PS_ITER_SAMPLE, ANCILLARY or SAMPLE_COVERAGE pixel inputs and a
sample-mask export throw on this path.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 00:48:30 +05:30
Romans Pokrovskis a0c51d5778 feat(agc): import uniform multisampled DCC fast clears 2026-10-16 21:13:39 +02:00
Yunus Shaikh efdba5df45 Merge branch 'perf/agc-host-import-aligned-blocks' into perf/agc-remember-evicting-refusals 2026-10-16 12:12:13 -07:00
Yunus Shaikh 18ef6b27b4 Merge branch 'perf/agc-host-import-aligned-blocks' into perf/agc-host-import-blocks 2026-10-16 12:11:57 -07:00
Yunus Shaikh 4cceec19e2 Merge main into perf/agc-host-import-aligned-blocks 2026-10-16 12:11:02 -07:00
fdfawef324andClaude Sonnet 5.5 d707066f65 test(agc): make the null-image fixture module and layout agree
The stencil null feedback fixture splices a storage image array into the
fragment module by hand. spirv-val rejects the result with "Decorate is
in an invalid layout section": the decorations were inserted in front of
the first OpTypeVoid, which the recompiler emits after its Input and
Output variables. The binding also used set 1 with the vertex-group
number of a different heap kind (the 1D array one, not the 2D image the
module declares), so the set layout the driver builds from the binding
metadata (binding / 65 picks the set) put it in set 0 while the module
declared set 1.

Insert the decorations after the existing annotations, declare the image
array type the recompiler emits for a float 2D storage heap, list the
variable in the SPIR-V 1.4 entry point interface like the recompiler
does, and number the binding as the recompiler does for the fragment
stage, in the descriptor set the target uses. When built with
ANYPS5_ENABLE_SPIRV_TOOLS the fixture validates its module against the
Vulkan 1.1 environment.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-16 15:07:46 -04:00
Adrià f474fb7768 Merge pull request #6900 from adriadam10/ci/select-tests
ci: build and run only the tests a change reaches on request
2026-10-16 21:06:09 +02:00
Adrià db7d9de5e4 Merge pull request #5405 from Pipodi/feat/spanned-wave64-compute
feat(recompiler): run single-wave wave64 compute programs at one lane per invocation on 32-lane hosts
2026-10-16 21:05:55 +02:00
Adrià 24528f4e5a Merge pull request #5907 from simonbronk/feat/mixed-sample-truncate
feat(agc): rasterize a multisampled draw into one-sample targets at sample 0's locations
2026-10-16 21:05:45 +02:00
Adrià 5d3263b942 Merge pull request #5964 from MarcZX100/codex/shader-profile-geometry-feature
fix(agc): validate geometry shader capability
2026-10-16 21:05:40 +02:00
Adrià 6fd4de2666 Merge pull request #5937 from milescoviello/fix/db-render-control-copy-sample
fix(agc): accept a copy's sample selection on a draw that copies nothing
2026-10-16 21:05:36 +02:00
Adrià daf8913128 Merge pull request #5905 from hugodearaujo/fix/agc-prewarm-mapped-dma-buf
fix(agc): settle dma-buf imports on Linux on the settle queue
2026-10-16 21:05:30 +02:00
Adrià 57865eb292 Merge pull request #5881 from codingreapermaps/feat/agc-msaa-storage-write
feat(agc): write a multisampled color target through a storage image
2026-10-16 21:05:25 +02:00
Adrià 12de4afa4f Merge pull request #6907 from adriadam10/ci/windows-caches
ci: cache the submodules, FFmpeg and configure checks of the Windows job
2026-10-16 21:05:21 +02:00
Adrià be78e9d6e1 Merge pull request #5946 from RINNECODER/contrib/check-compile-sibling-build
fix(tools): key compile commands relative to the checkout in check_compile
2026-10-16 21:05:17 +02:00
Adrià FranchandClaude 2b056a4795 ci: keep the build paths CMake recorded in select_tests.py
Co-Authored-By: Claude <[email protected]>
2026-10-16 21:02:18 +02:00
Adrià Franch 32b714c80d docs(debt): end the libSceVoice attribute 1001 line with a period 2026-10-16 21:01:35 +02:00
Alexandros Pournaras 8fe5916fd0 feat(libSceVoice): implement sceVoiceGetPortAttr 2026-10-16 21:01:32 +02:00
LeandroLP23andClaude Opus 5.5 050f10053c test(agc): shut libc down before agc_shader_helpers returns
On Windows, agc_shader_helpers returned from main with the driver's
threads still running. ExitProcess ends them first, then the DLLs'
static destructors run and wait on what those threads left locked:
the async log's queue mutex in Driver::stop, DeviceUseGate's condition
variable in ~Driver, and condition variables in libkernel's statics.
The test hung after printing its result in about one ctest run of
three on a Radeon 860M (#6791).

Like the other driver tests, it now runs LibcRunShutdown_nid_postfix
before returning, which stops the driver while its threads are alive.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 20:56:41 +02:00
Adrià FranchandClaude 825b7934e7 docs(debt): cite FreeBSD's hw.pagesize OID, note the unmeasured PS5 value
Co-Authored-By: Claude <[email protected]>
2026-10-16 20:55:50 +02:00
Nithishvelan M 76e05544a9 feat(libkernel): report hw.pagesize through sysctl and sysctlnametomib 2026-10-16 20:55:46 +02:00
Zinebyte 61fe1795fa test(relinker): avoid preinit registration overlap 2026-10-16 14:53:45 -04:00
Adrià FranchandClaude 5484500734 fix(libkernel): drop the second positioned lock in NativePositionedTransfer
Its callers (NativePositioned_nid_no_patch, the vectored transfer) already hold the
non-recursive per-descriptor lock, so locking again deadlocked every positioned transfer.

Co-Authored-By: Claude <[email protected]>
2026-10-16 20:52:19 +02:00
xXPBSXxandClaude Sonnet 5.5 f2649c3301 fix(libkernel): make close wait for a positioned transfer on the same descriptor
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-16 20:52:15 +02:00
Leonardo c4d424b946 Merge branch 'main' into feat/voiceqos-endpoints 2026-10-16 20:51:31 +02:00