Commit Graph
12196 Commits
Author SHA1 Message Date
Mehran c83a7531e2 fix(agc): record a multisampled target's commands on its own device 2026-10-19 01:08:37 +02:00
Adrià 03741f3cf2 Merge pull request #6163 from freshstart2066-create/feat/libc-fmaf
feat(libc): implement fmaf
2026-10-19 01:07:49 +02:00
MarcZX10 0c2260e30a fix(libSceAgc): preserve versioned register defaults layout 2026-10-18 22:56:16 +00:00
Ondra97 a64d038154 fix(libs): flush pending GPU results before file writes 2026-10-19 00:53:25 +02:00
Dean fc623324a2 Merge pull request #7664 from MarcZX10/codex/test-skip-7661
test(agc): skip unavailable shadow checks
2026-10-19 11:51:52 +13:00
Yunus Shaikh 866ad41ea1 Merge main into fix/agc-sample-location-grid-exact
Keeps MultisampleTargetOrderTarget next to #6175's MultisampleTargetView, which now also returns the target's image.
2026-10-18 15:50:54 -07:00
BIGFERRY999 6e3ae1c02e feat(libc): implement fmaf 2026-10-19 00:46:38 +02:00
Romans Pokrovskis 166e84bed1 test(audio): cover repeated legacy vibration grains 2026-10-19 01:44:21 +03:00
Adrià 384840af1b Merge pull request #6130 from ivica00/fix/rect-list-tess-coord-rounding
fix(shader): round tessellation coordinates to nearest integer in rect-list evaluation
2026-10-19 00:43:06 +02:00
Romans Pokrovskis 4b7f46d79c Merge remote-tracking branch 'origin/main' into codex/review6860-cadence-maineb1 2026-10-19 01:42:35 +03:00
Adrià eb1a15b5cc Merge pull request #6314 from eliyarson/feat/relinker-game-patches
feat(relinker): add conversion-time game patches
2026-10-19 00:37:51 +02:00
Adrià 18bd700806 Merge pull request #6291 from santhoshkumar-dev/codex/fix-pixel-exec-helper-lanes
fix(shader): preserve pixel helper lanes in EXEC copies
2026-10-19 00:37:47 +02:00
RockENZO ec5c0dcd0c fix(relinker): preserve executable exports in macOS output 2026-10-19 08:59:29 +10:30
Adrià c820102bd0 Merge pull request #6162 from freshstart2066-create/feat/libc-remquo
feat(libc): implement remquo and remquof
2026-10-19 00:28:20 +02:00
Adrià 0fd3555ad6 Merge pull request #5958 from ps54all/feat/shader-converted-image-sample
feat(shader): sample converted unorm images in the shader
2026-10-19 00:24:10 +02:00
fdfawef324andCodex ea02128b5b fix(agc): count transient copy buffers toward the recorder budget
Charge read-only GPU-copy input snapshots and depth-copy linear scratch for their requested bytes while the batch retains them. Exercise both production paths with CPU Vulkan mocks, including the budget boundary and fence-governed resource retention.

Co-Authored-By: Codex <[email protected]>
2026-10-18 18:21:23 -04:00
Adrià 8b8edc5619 Merge pull request #6315 from hypermoist/fix/libc-snprintf-s-constraints
fix(libc): check the C11 runtime constraints in snprintf_s and vsnprintf_s
2026-10-19 00:17:04 +02:00
Adrià 38a848a1b7 Merge pull request #6287 from ahmad3a4/fix/libc-append-streams-windows
fix(libc): append stream writes atomically on Windows
2026-10-19 00:16:59 +02:00
gohansharma79-svg b0a7695b57 fix(avplayer): deliver the first paused picture after audio starts 2026-10-19 03:46:40 +05:30
Adrià 6a480ea637 Merge pull request #6302 from Ondra97/codex/fix-positioned-truncate-race
fix(libkernel): serialize Windows ftruncate with file transfers
2026-10-19 00:16:07 +02:00
Adrià a3c8aced97 Merge pull request #6175 from mitul72/fix/agc-pass-hazard-inputs
fix(agc): name in-place draw inputs and multisampled targets in pass hazards
2026-10-19 00:16:02 +02:00
Dean Galvin cf4d1f4a97 Merge main into pr-4650
# Conflicts:
#	core/shader/recompiler/ShaderDiskCache.cpp
2026-10-19 11:15:57 +13:00
Adrià 590b0f3eed Merge pull request #6164 from 011010/fix/agc-shader-layer
fix(agc): lower a fragment Layer input through the viewport index layer extension
2026-10-19 00:15:02 +02:00
Yunus Shaikh d13a90d015 Merge main into fix/recompiler-once-per-pixel-sample-inputs
Resolves the shader debt file bullet by bullet: main's EmitSetAttribute entry, and this branch's PERSP_SAMPLE/LINEAR_SAMPLE and pixel-position entries.
2026-10-18 15:14:25 -07:00
Adrià 77fd2b6c5e Merge pull request #6317 from SleglJan/pr/clip-distance-full
fix(shader): leave out the all-zero position distance when guest distances fill all eight
2026-10-19 00:12:57 +02:00
MarcZX100 91be80b447 fix(agc): refresh sampled depth shadow for bound target 2026-10-18 22:11:35 +00:00
MarcZX100 5a0a00f429 fix(agc): refresh depth shadow after attachment switches 2026-10-18 22:10:48 +00:00
MarcZX100 1912045c1e fix(agc): preserve direct depth sampling as fallback 2026-10-18 22:10:41 +00:00
MarcZX100 c17f38a355 feat(agc): sample multisampled depth through a shadow image 2026-10-18 22:10:31 +00:00
BIGFERRY999 994fd66bf4 feat(libc): implement remquo and remquof 2026-10-19 00:10:02 +02:00
Adrià 8a456334f6 Merge pull request #6240 from ArjenS-LA/fix/guest-registry-weak-imports
fix(relinker): preserve weak imports in guest module registries
2026-10-19 00:06:30 +02:00
Adrià 57a9970094 Merge pull request #6311 from Ondra97/codex/fix-posix-flexible-memory-release
fix(libkernel): release flexible memory budget through munmap
2026-10-19 00:06:26 +02:00
Adrià 07d5061ada Merge pull request #6306 from MarcZX10/codex/qualify-srt-memory-flags
fix(shader): qualify SRT memory flags template
2026-10-19 00:06:20 +02:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 b4e80e8fc7 fix(libc): read /dev/random and /dev/urandom through fopen
fopen resolved the random device paths to a host file that does not
exist and failed with ENOENT, while open and sceKernelOpen already serve
them from host entropy. A read-only fopen of either path now returns a
stream whose fread fills the buffer with host entropy. setvbuf, feof,
ferror, clearerr, the stream locks and fclose work on it, fflush returns
0 as on a FreeBSD stream that is not writing, other stream functions
throw, and opening the paths for writing throws as in libkernel.

ProsperoTV (PPSA99003) reads its phone pairing code this way and showed
"Code expired or unavailable".

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 03:01:38 +05:00
Adrià 07377573f4 Merge pull request #6279 from hypermoist/fix/mesh-draw-short-of-a-primitive
fix(agc): a mesh draw shorter than one primitive draws nothing
2026-10-18 23:57:36 +02:00
Yunus Shaikh d2e2cd650d Merge main into fix/agc-sample-location-grid-exact
Keeps the multisampled target's sample-order view fields next to #6297's HTILE fields.
2026-10-18 14:56:26 -07:00
Adrià 130efc3886 Merge pull request #6152 from freshstart2066-create/feat/libc-copysign-clean
feat(libc): implement copysign and copysignf
2026-10-18 23:56:00 +02:00
Adrià 3f16b82132 Merge pull request #6297 from Gashrod1/fix/agc-undrawn-msaa-z-footprint
fix(agc): sample undrawn multisampled Z and D 64 KiB swizzle textures, and Z ones whose HTILE is cleared
2026-10-18 23:55:01 +02:00
Adrià 4d1d947662 Merge pull request #6259 from fdfawef324/codex/optional-compute-capture-stop
fix(agc): stop optional compute captures at their bounds
2026-10-18 23:54:55 +02:00
teepeanandClaude Opus 5.5 12d720f743 fix(agc): seal a pass's write-only stores at guest flushes
Queue 0 skips partial and cache flush EVENT_WRITE packets and ACQUIRE_MEM, and nothing ends the
open render pass on them, so the pass hazard tracker is all that orders two draws inside one
pass. A write-only store, a flush and a second write-only store to the same bytes stayed in one
pass with no barrier between them, although the flush orders them on the guest GPU.

At such a packet, the write-only ranges of the open pass now count as written, so a later
write-only store to them is a WriteAfterWrite and begins a new pass. The seal is queued behind
the draws in the draw pipeline (or made at once when it is idle), once per run of flushes after
a draw.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 00:48:42 +03:00
teepeanandClaude Opus 5.5 0fe9f61d01 perf(agc): draws that only store to a buffer continue one render pass
A guest buffer the recompiler classifies as only stored to (bufferWritten, not bufferRead, not
bufferAtomic), which no other allocation of the draw overlaps, is a write-only range of the draw.
It conflicts with every read and every other write of the open render pass, but not with the
write-only stores of other draws to the same range: the guest GPU leaves stores of different draws
unordered as well, since no barrier separates them. Before, such a buffer counted as both read
and written, so consecutive draws storing to it each began a new pass with two full barriers.
APS5_NO_WRITE_ONLY_PASSES=1 restores that.

Unreal Engine 4 stores virtual texture feedback from every base pass material that samples a
virtual texture into one buffer per frame: in Stray (PPSA02100) about 90 % of the pass restarts.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 00:48:34 +03:00
hypermistandClaude Opus 5.5 e9f4dbfcf5 fix(libc): check the C11 runtime constraints in snprintf_s and vsnprintf_s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 23:43:55 +02:00
Adrià Franch 135ae36712 test(libkernel): open the truncate race files by relative path
The guest VFS does not map absolute host paths on Linux, so sceKernelOpen failed there.
2026-10-18 23:42:07 +02:00
davidamsellemandClaude Opus 5 eccc81b505 test(agc): measure pipeline cache hits against the bytes a pipeline adds
vkGetPipelineCacheData is not stable in size on a driver that keeps
pipelines: RADV grows a loaded cache by 8 bytes on the first create and
shrinks it by 8 on a later hit, so an exact size match reports a hit as a
miss and agc_pipeline_cache_file fails on hardware. lavapipe keeps
nothing, so every size stays equal, the probe reads that as a device that
does not store pipelines and the test skips, which is why CI never saw
this.

Size each pipeline in an empty cache first and treat a change below half
that as a hit, and skip on a device where a pipeline adds nothing.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-18 23:40:20 +02:00
simonbronkandClaude Opus 5.5 752cca10fe fix(agc): import native multisample depth whose HTILE is not ITERATE_256
The initial import of a native multisampled depth target only proceeds
when every HTILE word proves the same clear value, so no compressed Z
planes are read from guest memory. ITERATE_256 only changes how the DB
and the texture unit walk compressed MSAA Z planes (Mesa
ac_descriptors.c: "TC-compatible MSAA HTILE requires ITERATE_256").
The HTILE footprint (Addrlib) and the HTILE clear words (Mesa
radv_get_htile_fast_clear_value) do not depend on it. The import no
longer requires it; the texture's ITERATE_256 must still match the
target's.

Unblocks PPSA27836 (Onimusha: Way of the Sword), which samples a
four-sample D32 target with pipe-aligned HTILE and ITERATE_256 off.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 23:38:21 +02:00
Ondra97 f7aeed2eb0 fix(libkernel): serialize Windows ftruncate with file transfers 2026-10-18 23:36:25 +02:00
thibautandClaude Opus 5.5 55bb2c7932 perf(shader): fold masks, shifts and field extracts through bits they do not use
The constant folder now knows which bits a value can hold (masks, merges,
shifts, field extracts, 16- and 8-bit widenings, selects) and which bits a
user reads:

- a mask that clears no bit the value can hold is dropped, and so is a
  merged part with no bit under the mask;
- And(And(x, a), m) becomes And(x, m) when m keeps no bit outside a, and a
  mask rewrite is folded again;
- a field extract, shift, mask or 16-bit truncation reads through masks
  that keep the bits it reads and through merged parts that hold none;
- a right shift of a left shift by the same amount becomes a mask;
- BitFieldUExtract(x, 0, n) is x when x has no bit at or above n;
- Or of two masked parts of one word becomes the word under the union of
  the masks (the word itself when they cover it);
- a field extract of a left shift reads the unshifted word.

These patterns come from 16-bit halves of 32-bit registers (f16 and packed
math), which the translator splits and merges per instruction.

Test: agc_constant_bit_test gets six cases (repeated, narrower and wider
masks, a mask under a merge, half extractions, halves that rejoin); all six
fail on main.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XBXM4pgkMHYEtqN1EQni2P
2026-10-18 23:33:46 +02:00
Adrià 0bc3003f89 Merge pull request #6282 from Ondra97/codex/fix-font-face-lifetime
fix(font): serialize shared FreeType face lifetime
2026-10-18 23:27:19 +02:00
Adrià defd27abb8 Merge pull request #6266 from meh7an/perf/memory-coarse-write-stamps
perf(memory): skip 4 MiB runs no write stamped since a range check
2026-10-18 23:27:14 +02:00
Adrià 5768b25925 Merge pull request #6244 from xXPBSXx/fix/pthread-destroyed-einval
fix(libkernel): return EINVAL for pthread mutex and cond operations on a destroyed object
2026-10-18 23:27:09 +02:00