Commit Graph
12196 Commits
Author SHA1 Message Date
Adrià 93eca8f7be Merge pull request #5902 from pushkarreddyy/feat/libkernel-setrlimit-nofile
feat(libkernel): allow lowering rlim_cur for RLIMIT_NOFILE in setrlimit
2026-10-16 21:54:11 +02:00
Adrià bafd3227a6 Merge pull request #5901 from KernelPanicNT/feat/libkernel-coredump-thread-context-info
feat(libkernel): answer sceCoredumpGetThreadContextInfo outside the coredump handler
2026-10-16 21:54:05 +02:00
Adrià FranchandClaude 160ba25518 test(libc): keep firstArgument parsing for the exit-order and relaunch modes
Co-Authored-By: Claude <[email protected]>
2026-10-16 21:53:08 +02:00
MarcZX100 505dc9e9f7 test(libc): verify nested exit shutdown ordering 2026-10-16 21:53:02 +02:00
MarcZX100 db3b406dd2 fix(libc): run guest finalizers before driver shutdown 2026-10-16 21:53:02 +02:00
Yunus Shaikh bde2a8f0af fix(agc): keep a build's own texture lookup records past the log bound
The lookup log dropped its oldest half at 1,024 records, so a build or full
walk with more lookups lost its own earliest records. Its resource object
then had no record for those textures, and every later Revalidate failed the
fast proof with "no record" and walked every texture.

A build (buildComplete) and a full walk now mark where their records start,
and the bound trims only records older than that mark. Lookups outside a
build keep the old bound. The [rescache] revalidate line counts the builds
and full walks that kept their records past the bound.
2026-10-16 19:52:49 +00:00
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
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à 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à 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
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
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
Adrià Franch 8c6f08bfa7 test: drop sceNetShowIfconfig from the not-implemented exports
It returns success now.
2026-10-16 20:51:10 +02:00
Kurenaiiiii f00b2ef833 feat(libSceNet): return success from ShowIfconfig and ShowNetstat 2026-10-16 20:51:06 +02:00
pushkarreddyy f5882503b6 feat(libSceWebBrowserDialog): implement sceWebBrowserDialogOpenForPredeterminedContent 2026-10-16 20:47:36 +02:00