Commit Graph
12196 Commits
Author SHA1 Message Date
Evgeniy Kazarin 529dbb0480 fix(agc): preserve pipeline caches on immediate guest exit 2026-10-18 14:25:38 -04:00
Dean 61d3d3080c Merge pull request #6208 from ivica00/perf/agc-pipelined-dma
perf(agc): pipeline DMA_DATA when APS5_PIPELINE_DMA=1
2026-10-19 07:25:29 +13:00
Dean b4fda9544e Merge pull request #7573 from MarcZX10/codex/agc-sampled-cache-msaa-feature
fix(agc): honor enabled storage MSAA for placeholders
2026-10-19 07:24:53 +13:00
Dean 3dda12d1d3 Merge pull request #7562 from slick-daddy/fix/libc-pointer-formatting-7549
fix(libc): format %p the way the console's libc does
2026-10-19 07:24:48 +13:00
Dean 6c1677cb19 Merge pull request #7561 from fogydes/fix/jobmanager-wait-deadlock-and-lifecycle
fix(libSceJobManager): prevent wait deadlock on node exhaustion and clean up lifecycle
2026-10-19 07:24:43 +13:00
Dean 300437f102 Merge pull request #7296 from gjonn/fix/shader-unnormalized-sampler-null-image
fix(shader): bind an unnormalized S# normalized when it samples only null images
2026-10-19 07:24:37 +13:00
Dean 1fcd86b324 Merge pull request #7098 from jotitadev/fix/relinker-validate-tls-segment
fix(relinker): validate the PT_TLS layout when reading program headers
2026-10-19 07:24:33 +13:00
MarcZX100 0751dffcb1 fix(libkernel): match FreeBSD port-zero stream connects 2026-10-18 18:23:39 +00:00
Hussein Kadhim f571b37f5a fix(libkernel): limit the port 0 check to connect on an unconnected datagram socket 2026-10-18 18:23:39 +00:00
Hussein Kadhim b10f1310df fix(libkernel): fail connect and sendto to port 0 with EADDRNOTAVAIL 2026-10-18 18:23:38 +00:00
Adrià 023106ae4b Merge pull request #6159 from freshstart2066-create/feat/libc-ilogb
feat(libc): implement ilogb and ilogbf
2026-10-18 20:23:00 +02:00
Dean cd20b7f6f8 Merge pull request #6132 from MarcZX10/codex/open-resolved-path-diagnostics
fix(libkernel): log resolved paths for failed opens
2026-10-19 07:22:43 +13:00
Dean ff99667449 Merge pull request #6123 from MarcZX10/codex/trace-semaphore-lifecycle
feat(libkernel): trace semaphore lifecycle under sync logging
2026-10-19 07:22:39 +13:00
Dean 38ea28854c Merge pull request #7616 from MarcZX10/codex/libkernel-clock-gettime-cpu-error
fix(libkernel): return errno when Windows CPU clock queries fail
2026-10-19 07:22:36 +13:00
Dean 0ff835652a Merge pull request #6445 from Amoenus/codex/fix-msaa-surface-footprint-mainff
fix(agc): complete sampled MSAA geometry after fragment sizing
2026-10-19 07:22:32 +13:00
Dean 77b7b03b33 Merge pull request #6246 from screamm/fix/eden-compare-untracked-teardown
fix(agc): hold a guest allocation lease while a queue stores idle results
2026-10-19 07:22:28 +13:00
Dean 79896f332f Merge pull request #7137 from Lberonio/fix/agc-eop-latch-queue-mode
fix(agc): suppress the flip end-of-pipe event on queues that raise release interrupts
2026-10-19 07:22:24 +13:00
Dean e3c46940b3 Merge pull request #7527 from EagleBearerYS/fix/shader-selected-records-image-pair-limits
fix(shader): keep a shader's selected image-table records within the image and pair limits
2026-10-19 07:22:18 +13:00
Dean Galvin eeeaf7e40f Merge main into pr-6691
# Conflicts:
#	core/libs/tests/GuestNetCtl.cpp
2026-10-19 07:15:56 +13:00
MarcZX100 8e2f71263c fix(libkernel): return ENOENT for measured sysctl MIBs 2026-10-18 18:13:05 +00:00
WallisSkillandClaude Opus 5.5 ffa63e8fec fix(libSceVideoOut): rumble a DualSense from haptic audio without a sound card
AudioOut2 turns controller haptic PCM into motor rumble only when no
controller sound card plays it, which is the case for a DualSense over
Bluetooth. PadInput then dropped that rumble for every DualSense, so
titles that vibrate through haptic audio never rumbled one over
Bluetooth. A DualSense now takes it like any other controller; with a
sound card no haptic rumble is submitted, so nothing plays twice.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 01:09:43 +07:00
Adrià 5057673804 Merge pull request #6138 from fdfawef324/claude/mc-netctl-check-callback
fix(libSceNetCtl): keep the callback argument and deliver the state from sceNetCtlCheckCallback
2026-10-18 20:05:57 +02:00
Adrià Franch d5eeed0b34 fix(libc): use std::fabs overload for fabsl 2026-10-18 20:02:58 +02:00
BIGFERRY999 831ecb05f7 feat(libc): implement fabsf and fabsl 2026-10-18 20:02:41 +02:00
JJenkx eaa6d89ff9 fix(shader): follow scheduled jump table index writes 2026-10-18 14:02:37 -04:00
WallisSkillandClaude Opus 5.5 be1287b66c fix(libSceVideoOut): coalesce controller output updates
Every change of the pad output state sent a rumble, light bar and trigger
effect update to SDL, and the trigger effect was sent again even when it
had not changed. Titles that animate the light bar or drive rumble from
haptic audio change that state every frame, so at 120 Hz about 110
reports a second were queued while SDL's HIDAPI rumble thread sends at
most one per 10 ms. Different report kinds do not merge in its queue, so
the backlog grew: rumble arrived ever later, and disconnecting the
controller blocked the presenter until the queue drained.

Updates now go out at most every 30 ms with the latest state, and the
trigger effect is sent only when it changes or a controller connects.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 01:02:01 +07:00
Adrià 8d17389a73 Merge pull request #6161 from freshstart2066-create/feat/libc-fdim
feat(libc): implement fdim and fdimf
2026-10-18 20:00:19 +02:00
Eli Yarson 62d881cfaf test(relinker): drop a code comment from the game patch test 2026-10-18 14:57:13 -03:00
Eli Yarson 3b814f00c0 test(relinker): skip quote-named files on Windows and keep backslash coverage 2026-10-18 14:57:13 -03:00
Eli Yarson d39a22e071 test(relinker): make game patch tests path-separator independent 2026-10-18 14:57:13 -03:00
Eli Yarson 346b0a92ca feat(relinker): add conversion-time game patches
A per-game relinker-patches.toml (or --patches) replaces verified bytes in
the input executable and bundled modules before conversion. Entries are
checked against the expected bytes and against every in-place writer,
the ELF header range and relocation targets. An <output-stem>.patches.toml
manifest records the applied entries, and --verify-patches checks an input
or a converted output. With no patch file the output is unchanged.
2026-10-18 14:57:13 -03:00
thuanquangandClaude Opus 5.5 499e2db905 fix(shader): link a table call whose descriptor load sits before its loop
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 00:53:38 +07:00
Adrià 8625038579 Merge pull request #6150 from BasilF-dev/basil/wolverine-barrier
fix(agc): defer unrouted vertex barriers
2026-10-18 19:53:21 +02:00
Dean c3591adf97 Merge pull request #7510 from AlxcBTW/pr/crash-stack-words-v4
feat(libc): dump the faulting thread's stack words in Windows crash reports
2026-10-19 06:52:21 +13:00
AlxcBTW 33fea9e1ba Merge main into pr/profile-windows 2026-10-18 19:49:54 +02:00
Adrià c34e9d855c Merge pull request #6160 from fma-rc/feat/agc-fs-table-calls
feat(agc): link calls through the AGC FS table
2026-10-18 19:44:10 +02:00
Yunus Shaikh 8a1e737182 test(agc): run the host import lifetime tests on another settle family
agc_driver_host_import_lifetime takes the settle alias path only on a
device whose graphics family has a single queue, such as AMD's Windows
driver; elsewhere the settles share the graphics family and make no
alias. agc_driver_host_import_lifetime_other_family runs the same tests
with the settles forced onto another queue family, as
agc_import_settle_deferred_other_family does, so a device with spare
graphics queues covers that path too. It is registered on Windows and
skips where the device has no other queue family.
2026-10-18 10:41:37 -07:00
LeandroLP23 e22b41c56c fix(agc): keep a retired import with its settle batch until it is reaped
forgetSettle handed back an import's settle batch only while the batch
was still running. A batch the GPU had finished but that had not been
reaped yet still held its aliases, so retireImport released the import
at once, freeing its memory before the alias bound to it was destroyed.

Hand back any busy batch. The import then stays with its batch until
the batch is reaped or an unmap releases it, and both destroy the
aliases first. A finished batch now keeps its imports' Vulkan objects
until it is reaped (#7601).
2026-10-18 10:41:36 -07:00
Yunus Shaikh 4c475452d4 fix(agc): destroy settle aliases before an unmap releases their imports
On Windows a host import under 1 MiB is settled by a batched 4-byte
read. When the settle queue is in another queue family than the
import's, as on AMD's Windows driver with its single graphics queue,
the batch reads through an alias buffer bound to the import's memory.
Reaping the batch destroys those aliases before it drops the imports
retired while the batch held them.

An unmap that needs such an import (releaseSettleRetired) waited for
the batch and then released the import, destroying its buffer and
freeing its memory while the alias was still bound to that memory; the
alias went at the next reap. Destroy the batch's aliases first, as
reapSettleBatches and drainSettles do.
2026-10-18 10:41:36 -07:00
frankea fb020d215b feat(libSceSsl): apply the verify options, run the verify callback, add ALPN, non-blocking sockets and sceSslClose
sceSslConnect verifies the server's chain under MBEDTLS_SSL_VERIFY_OPTIONAL and returns the first failure the connection's verify options select, with the SSL_ERROR_* codes KytyPS5 lists. The initial options are all five checks, so a connection whose title never sets them fails closed: with no CA loaded it returns SSL_ERROR_UNKNOWN_CA instead of throwing. The result is final for the connection: a failure sends close_notify, later sceSslConnect calls return the same code, and sceSslRead and sceSslWrite throw. A verify callback runs once after the handshake, outside the session lock, with the connection id, that code, handles to a copy of the peer chain that the context's certificate readers accept, the chain length and the user argument; a negative return fails the connect with SSL_ERROR_APPLICATION_VERIFICATION_CALLBACK_CHECK. The ALPN list set with sceSslSetAlpn is split on commas and offered, sceSslGetAlpnSelected returns the protocol the server chose, and the minimum version floors the handshake at TLS 1.2. A socket that would block returns SSL_ERROR_WANT_POLLIN or WANT_POLLOUT from connect, read and write and the next sceSslConnect resumes the handshake; the BIO maps a reset to MBEDTLS_ERR_NET_CONN_RESET, which returns SSL_ERROR_SOCKET_CLOSED, and tells a blocking socket's expired receive timeout, which returns SSL_ERROR_READ_TIMEOUT, apart from a non-blocking would-block. sceSslClose sends close_notify once and marks the connection closed. The debt entry records the default options and the situation-to-code choices as unverified and drops the title IDs.
2026-10-18 13:37:58 -04:00
MarcZX100 e541cc9546 test(relinker): assert Windows symbolic rejection 2026-10-18 17:35:36 +00:00
thuanquangandClaude Opus 5.5 f65b4bbe91 fix(shader): test an empty exec mask in s_subvector_loop_begin with one compare
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 00:35:16 +07:00
MarcZX100 2f7eb66c65 test(relinker): keep symbolic fixture on Linux output 2026-10-18 17:34:06 +00:00
MarcZX100 86d3c085e9 fix(relinker): reject Windows DF_SYMBOLIC modules 2026-10-18 17:30:25 +00:00
Adrià Franch b8692a74f2 fix(agc): route the sRGB expand copy through AllocateImageMemory 2026-10-18 19:29:55 +02:00
Gustavo Ariel Gamarra Rojas 57fc04be01 fix(agc): place repacked and stencil copies in host memory after a refused reclaim
Repacked copies and depth stencil copies allocated device-local memory
directly and stopped the title on a refusal; they now take the same
allocation path as the other images. Device buffers choose their host
fallback type the same way, the host placement line carries the cumulative
MiB, and the debt file records that a placed image stays in host memory
for its lifetime.
2026-10-18 19:29:47 +02:00
Gustavo Ariel Gamarra Rojas cfde713e10 fix(agc): release the texture caches before placing any image in host memory
Textures, storage textures, block, depth and depth plane copies and
attachments now share one allocation path: the pool trims its idle tiers,
releases the texture caches, retries device-local memory and places the
image in host memory only when that retry is refused too. Block and depth
plane copies no longer fall back on their first refusal.
2026-10-18 19:29:47 +02:00
Gustavo Ariel Gamarra Rojas 9b2339e735 fix(agc): reclaim the buffer pool before placing an attachment in host memory
Render, depth and multisampled targets and attachment proxies that the
driver refuses device memory now go through the buffer pool's recovery:
the pool releases its idle allocations and the attachment is retried in
device-local memory. Only a second refusal places it in host memory, and
that placement is logged with the bytes reclaimed.
2026-10-18 19:29:47 +02:00
Gustavo Ariel Gamarra Rojas 79b6f79745 fix(agc): fall back to host memory for render, depth and copy images refused device memory
Depth targets, depth plane copies, multisampled and render targets, block and
depth copies and attachment proxies allocated device-local memory without the
fallback, so a full device-local heap still stopped the title at them.
2026-10-18 19:29:47 +02:00
Gustavo Ariel Gamarra Rojas ad11cb1b3e fix(agc): place device memory in host memory when the driver refuses a device-local allocation
The budget check in DeviceMemoryType trusts VK_EXT_memory_budget, which lags
behind the driver: with the device-local heap nearly full the budget can still
report room, the allocation fails with VK_ERROR_OUT_OF_DEVICE_MEMORY, and the
title stops. Device buffers (after the pool's reclaim and retry), textures and
storage textures now retry in a host memory type allowed by their requirements.
2026-10-18 19:29:47 +02:00