Commit Graph

2902 Commits

Author SHA1 Message Date
Morten Holm 5333a20537 fix(agc): do not use fragment barycentric on MoltenVK
MoltenVK reports VK_KHR_fragment_shader_barycentric, but its SPIR-V to MSL step
rejects the PerVertexKHR decoration that the barycentric path uses, so every
pixel shader on that path fails to compile into a pipeline. Treat the feature
as unavailable when the driver is MoltenVK, so the no-barycentric path is used.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 17:31:20 +02:00
Adrià 4b005b229e
Merge pull request #1603 from yabanana/fix/formatting-test-registration
fix(ci): remove stale formatting test exception
2026-10-08 16:49:19 +02:00
Adrià eb2818f505
Merge pull request #1476 from awake-devel/fix/timedwait-nested-waiter
fix(libkernel): give each nested TimedWait its own waiter on Windows
2026-10-08 16:48:48 +02:00
Adrià 29e533aca0
Merge pull request #1469 from arvindfroi/refactor/coredump-stopinfo-gpu-name
refactor(libkernel): name the Jrs7UUkGOFo Coredump stub by its NID
2026-10-08 16:37:04 +02:00
Adrià 700c0babc6
Merge pull request #1468 from arvindfroi/refactor/ajm-wvorbis-names
refactor(libSceAjm.native): name the WVorbis stubs by their NIDs
2026-10-08 16:36:34 +02:00
Adrià 9f4bd71cb6
Merge pull request #1475 from awake-devel/fix/aio-windows-positioned-io
fix(libkernel): use positioned transfers for Windows AIO requests
2026-10-08 16:28:43 +02:00
Adrià 68cebaee8b
Merge pull request #1474 from popcoder565/fix/agc-queue-worker-precise-poll
fix(agc): poll for completions with a high-resolution timer on Windows
2026-10-08 16:20:23 +02:00
Adrià 9e2ffe0da4
Merge pull request #1457 from drk1rd/fix/relinker-ud1-trap
fix(relinker): decode UD1 as a trap
2026-10-08 16:17:06 +02:00
Adrià 4d03ecf4de
Merge pull request #1472 from popcoder565/fix/videoout-vblank-precise-wait
fix(videoout): pace vblanks with a high-resolution timer
2026-10-08 16:13:49 +02:00
Adrià 7a047bc171
Merge pull request #1441 from ToyuAU/fix/windows-import-watch
fix(agc): compare Windows host imports after late driver writes
2026-10-08 16:12:45 +02:00
Adrià fe9beae001
Merge pull request #1452 from mrk1987/fix/posix-mkdir-errors
fix(libkernel): return POSIX errors from mkdir
2026-10-08 16:09:37 +02:00
Adrià 050538528a
Merge pull request #1470 from oneandonlydean/up/waitmemory-race
fix(agc): guard the reported wait-timeout set against concurrent queues
2026-10-08 16:07:49 +02:00
Adrià 94d03f29fa
Merge pull request #1454 from mrk1987/fix/windows-internal-guest-libc
fix(relinker): resolve internal libc imports from guest libc
2026-10-08 16:07:33 +02:00
Adrià f7e98dad39
Merge pull request #1453 from mrk1987/fix/posix-pthread-setstack
feat(libkernel): export POSIX pthread_attr_setstack
2026-10-08 16:07:11 +02:00
Daniele Giovane 59fd202257 fix(ci): remove stale formatting test exception 2026-10-08 16:07:07 +02:00
Adrià f2f7abab71
Merge pull request #1448 from ewraj/fix/net-connect-einprogress
fix(libSceNet): report EINPROGRESS for a non-blocking connect and translate the missing socket errors
2026-10-08 16:02:31 +02:00
Adrià 3c0756ee87
Merge pull request #1467 from arvindfroi/refactor/psml-mfsr2-names
refactor(libScePsml_debug): name the Mfsr2 stubs by their NIDs
2026-10-08 16:00:30 +02:00
Adrià 0444cb1c06
Merge pull request #1461 from abderahmane-ai/feat/import-audit
feat(tools): add an import audit for converted games
2026-10-08 15:59:56 +02:00
Dean 74b5c9103b
Merge pull request #788 from Celegans12/feat/videoout-dcc-visible-keys
fix(agc): store and read DCC keys over the console's metadata extent
2026-10-09 02:59:52 +13:00
Adrià 123a3c0365
Merge pull request #1443 from camezaro-intc/feat/font-dettach-device-cache-buffer
feat(font): implement sceFontDettachDeviceCacheBuffer
2026-10-08 15:58:18 +02:00
Adrià 2b6cc18876
Merge pull request #1460 from LeandroLP23/fix/libc-setvbuf-default-size
fix(libc): give setvbuf a default buffer when the size is 0
2026-10-08 15:56:59 +02:00
Adrià 1e660dd9fe
Merge pull request #1440 from ewraj/test/agc-mesh-tests
test(agc): build the mesh tests with MinGW
2026-10-08 15:53:01 +02:00
Adrià 461fcfc7f3
Merge pull request #1436 from tototomate123/fix/hfw-offline-imports
fix(prx): add missing HFW imports with strict offline handling
2026-10-08 15:52:39 +02:00
Adrià 5fbddcdf53
Merge pull request #1435 from ewraj/fix/linux-guest-varargs
fix(libc): read every variadic argument of the Linux printf and scanf exports
2026-10-08 15:52:17 +02:00
Adrià 50490e4028
Merge pull request #1444 from ewraj/refactor/appcontent-enqueue-download
refactor(libSceAppContent): name the stub the NID database resolves
2026-10-08 15:50:29 +02:00
abderahmane-ai 9e6a6004a5 feat(tools): add an import audit for converted games
A converted game fails at launch on the first system function that no
built library exports, one function per run. tools/import_audit.py reads
the registry written by relinker --registry and classifies every imported
NID in one pass:

- implemented: a built library exports it
- stub: exported, but the whole function calls NotImplemented_nid_no_patch
- absent: no built library exports it, so the loader fails
- module: the import names a file the title ships itself

Exports are read from the built .prx files (ELF dynsym and PE export
table), the same view the loader has. Stubs come from the source tree
through tools/progress.py, and NIDs through tools/nid_names.py. The report
also lists needed libraries without a file and imports found only in a
different library than the one they name. --names adds names from an
aerolib.csv file and never downloads one; --json writes the full result
stamped with the repository commit.

The test builds ELF and PE libraries byte by byte, checks that every
reference lands in exactly one class, and pins the NID of
sceMsgDialogProgressBarSetValue (wTpfglkmv34) as an external anchor.
Registered in CTest as import_audit.
2026-10-08 15:47:46 +02:00
Adrià 63c57d2222
Merge pull request #1432 from ToyuAU/build/standalone-relinker
build(relinker): add a dependency-free conversion build mode
2026-10-08 15:43:51 +02:00
Adrià 033a46360d
Merge pull request #1424 from muhzain05/fix/relinker-jmprel-bounds
fix(relinker): bound the jump relocation table range
2026-10-08 15:39:32 +02:00
Adrià Franch fd70266372 docs: move the Windows import TechnicalDebt line to Functional
It records a behaviour gap, not a silent stub, and sat at the end of its section.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-08 15:32:46 +02:00
ToyuAU c01044eeaa fix(memory): restore write tracking for fresh private backing 2026-10-08 15:32:42 +02:00
ToyuAU 0df794548e fix(tests): configure Windows unwind for write-watch coverage 2026-10-08 15:32:42 +02:00
ToyuAU 838d02a88c fix(agc): compare Windows host imports after late driver writes 2026-10-08 15:32:42 +02:00
Adrià b3fcd6d6c0
Merge pull request #1408 from hashaam1217/fix/pin-wide-compute-subgroups
fix(agc): require the widest subgroup for compute programs wider than the device
2026-10-08 15:25:25 +02:00
Adrià 02e741060e
Merge pull request #1394 from gjonn/feat/agc-r10g11b11-float-images
feat(agc): load and store R10_G11_B11 float images
2026-10-08 15:25:08 +02:00
Celegans12 1816aea91c fix(agc): store and read DCC keys over the console's metadata extent
The console's DCC of a single-level 4-byte SW_64KB_R_X surface is
ceil(W/512) * ceil(H/512) * 4096 bytes, 49152 for 1920x1080, but the
driver stored and read one key per 256 surface bytes (34560).
PPSA26344 retiles its render DCC into the displayable copy it
registers (cs_dcc_retile_32bpp); a retile of the stale tail gives the
mixed keys PPSA12544 stops on.

DccKeyCount gives that extent. Color target and storage image key
stores cover it when the DCC is pipe-aligned (CB_COLOR_ATTRIB3 bit 30,
T# word 6 bit 19), whose CB keys reach its last meta block, and throw
where it is not writable; unaligned DCC keeps one key per 256 bytes,
as do texture and color target key reads. DisplayBufferKeys reads the
display DCC over the extent, presents only when every key agrees,
names the first differing key's pixels and checks a pending image
against those keys.
2026-10-08 15:24:43 +02:00
Adrià fd5342b6d6
Merge pull request #1425 from gjonn/fix/agc-reversed-rgba8-color-targets
fix(agc): render 8_8_8_8 and 16_16_16_16 color targets with reversed component orders
2026-10-08 15:18:26 +02:00
Adrià 588c7b7b5e
Merge pull request #1402 from gjonn/claude/sleepy-engelbart-7b6379
fix(recompiler): take point-filtered sampler copies' descriptors from their source sampler
2026-10-08 15:17:38 +02:00
Adrià 83c57cb8fe
Merge pull request #1414 from TheAggie/fix/agc-color-control-disable
fix(agc): render CB_COLOR_CONTROL mode disable as a draw without color
2026-10-08 15:16:42 +02:00
Scott Schuster 550920a1fd fix(agc): render CB_COLOR_CONTROL mode disable as a draw without color
Mode 0 of CB_COLOR_CONTROL turns color writes off, but a draw with a
written color target and this mode was skipped as unsupported. Count no
export as written when the mode is disable, so the draw renders without
a color attachment like the existing attachment-free path, and accept
the mode with any ROP3, which does not apply while writes are off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:13:08 +02:00
Adrià ede7ead473
Merge pull request #1419 from TheAggie/fix/agc-accept-tuning-fields
fix(agc): accept RB and primitive-group tuning fields
2026-10-08 15:12:33 +02:00
Adrià f4028921f8
Merge pull request #1412 from TheAggie/fix/recompiler-ngg-vertex-wave-info
fix(recompiler): give vertex-path shaders a full NGG merged wave info
2026-10-08 15:08:22 +02:00
Adrià c68c7576b9
Merge pull request #1399 from hugodearaujo/fix/rtc-parse-datetime-rfc2822-hardware
fix(rtc): parse RFC 2822, RFC 850 and asctime text like the console
2026-10-08 15:05:42 +02:00
Adrià Franch c39476459b docs: record the inferred NGG merged wave info layout in TechnicalDebt
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-08 15:05:40 +02:00
Scott Schuster 71e566fafb fix(recompiler): give vertex-path shaders a full NGG merged wave info
The vertex entry set only the vertex and instance index VGPRs, leaving
the NGG merged wave info SGPR s3 at 0. NGG shaders build EXEC from it
(s_bfe_u64 exec, -1, <count in bits 16..22>), so Mesa's NGG vertex
shaders ran with an empty EXEC and rasterized nothing.

Each host invocation on the vertex path is one vertex of a full wave:
when the user data starts at s8 or later, set s3 to the wave size as
both vertex and primitive count, with wave index 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:05:35 +02:00
Adrià Franch 61fbade375 test(agc): pin R10_G11_B11 float image edge values
Store: negative, -0, NaN (quiet and low-payload), +-Inf, overflow to the
largest finite value, truncation and small-float denormals. Load: Inf,
denormal and largest finite codes. Values measured on gfx1035.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-08 15:04:47 +02:00
Gjon Gojcevic ede33d56e2 feat(agc): load and store R10_G11_B11 float images
Format 43 packs R as a 10-bit and G and B as 11-bit unsigned floats, which
Vulkan has no format for. Keep it in an R32_UINT image like the other
packed formats without a host equivalent, and convert texels in the shader
on image loads and stores; sampling it still throws.
2026-10-08 15:04:47 +02:00
Adrià 7ad0b2976b
Merge pull request #1406 from ebarr24/codex/batch-demangle-guest-heap
fix(libc): keep guest demangle buffers on the application heap
2026-10-08 15:03:54 +02:00
Adrià fd5f63a2d0
Merge pull request #1393 from xsvm/fix/relinker-rewriter-reference-sites
fix(relinker): classify rewrite reference sites with the instruction decoder
2026-10-08 15:03:48 +02:00
Adrià 147a9855c0
Merge pull request #1404 from overlordxrz-source/fix/libkernel-small-stacksize-einval
fix(libkernel): return EINVAL for thread stack sizes below 16 KiB
2026-10-08 15:03:07 +02:00
Adrià 79d23eb76c
Merge pull request #1321 from TibixDev/pr/guest-path-case
fix(libc): resolve case differences in guest paths and mounts
2026-10-08 15:01:28 +02:00