Commit Graph
7426 Commits
Author SHA1 Message Date
Yunus Shaikh e25d561b7c fix(shader): take a hull's input stride from its patch term when it reads one control point
derive() learned the LS-to-HS stride from the control-point term of hull LDS reads, or from the patch term of reads at a computed control-point index. A hull with one input control point reads it at constant offsets, so neither applies and the stride stays unknown ('the hull shader reads no LDS per control point, so the local stride is unknown'). Every hull read already has a patch term of exactly inputControlPoints * localStride, so take the stride from it for reads without a control-point term too. Resident Evil Village's quad patches have one input control point.
2026-10-13 20:09:35 -07:00
Celegans12 c1e4a0ba8b fix(shader): record BDA faults in hull programs instead of refusing them
Every hull program with a BDA access was refused with "BDA fault
termination requires a barrier-safe tessellation-control execution
protocol". The refusal predates BdaInvocationsMayStop: a program with
s_barrier no longer stops a faulting invocation; the fault is recorded,
the read returns zero and every invocation reaches the barrier. In a
hull, s_barrier is the only control barrier the backend emits after the
guest code starts, so that rule already covers it, and a hull without
one can stop an invocation without stranding a barrier.

The tessellation test draws hulls that scale their levels by a BDA read,
with and without s_barrier, and requires an unmapped read to report a
tessellation-control fault (not on llvmpipe, which runs hull loads that
the unmapped-address check skips). The contract test now accepts a hull
with s_barrier.
2026-10-14 04:59:27 +02:00
Celegans12 2eda9f893c feat(agc): rebuild the hull's relative patch index when it is used as data
Hull programs whose relative patch index (v1 bits 7:0) reached anything
but a tessellation ring or LDS address threw, because the lowering runs
every Vulkan patch as relative patch 0. The quad terrain hull 0x80002fc700
in Ghost of Yotei is one, and so is the domain 0x8068fbd900 (v7).

Such hulls and domains now take (PrimitiveID mod GE_CNTL.PRIM_GRP_SIZE)
mod VGT_LS_HS_CONFIG.NUM_PATCHES, as if hull threadgroups took NUM_PATCHES
patches at a time out of each primitive group; both stages see the same
PrimitiveID for a patch. This holds only when every instance starts a new
threadgroup, so it needs GE_CNTL.BREAK_WAVE_AT_EOI (bit 18); with the bit
clear the instances share threadgroups and such programs still throw.
PRIM_GRP_SIZE and BREAK_WAVE_AT_EOI join the tessellation configuration
(draw keys, hull and domain cache keys, request version 24). A missing
GE_CNTL throws, and so do local programs, whose relative vertex index
depends on vertex reuse that Vulkan does not expose.
2026-10-14 04:59:07 +02:00
Celegans12 866ed445b9 fix(agc): lower hull exec masks restored through phis to own lane bits
A wave64 hull program narrows EXEC with s_and_saveexec_b64 and restores it
later, so its exec words reach the lane-bit test as ANDs with the host
ballot, as loop or join phis, and through separate ballots for the two
halves. Tessellation lowering refused them as "uses a lane mask other
than its own lane's bit".

The own-lane bit of a mask pair is now rebuilt from the words' operations
(ballots, bitwise ops, selects, phis, constants); both halves must have
the same shape and ballot the same predicate. Dead hull cycles such as a
saved-exec loop are removed before the remaining-ballot check, so a mask
whose other lanes are read (s_bcnt1_i32_b64 exec) is still refused. The
words are replaced through identities and block conditions are resolved,
so a branch on a compare copied to VCC keeps its condition. Local and
domain programs keep their exec words for the half-wave matcher.

Block conditions fix and HullCompareBranch test from EagleBearerYS.
2026-10-14 04:57:58 +02:00
Dean f265cd5593 Merge pull request #5234 from AnthonyClemens/fix/agc-integer-tessellation-partitioning
fix(agc): accept integer tessellation partitioning
2026-10-14 15:55:50 +13:00
Dean 970316ae04 Merge pull request #4704 from AlxcBTW/feat/input-mouse-look
feat(input): turn mouse speed into a smooth right-stick tilt
2026-10-14 15:55:08 +13:00
Dean 486420f91a Merge pull request #4950 from MarcZX100/codex/pr-overlap-compatible-merge-base
fix(tools): use the shared merge base for overlap checks
2026-10-14 15:54:50 +13:00
Dean 60ad9ad47c Merge pull request #4951 from Ondra97/codex/fix-shared-library-import-audit
fix(tools): audit stubs from shared library sources
2026-10-14 15:54:35 +13:00
Dean fcb30fd977 Merge pull request #5219 from pushkarreddyy/feat/agc-dcb-event-write-address
feat(libSceAgc): ignore address argument on non-sample-dump events in sceAgcDcbEventWrite
2026-10-14 15:54:22 +13:00
Dean a8cb091eba Merge pull request #4955 from Ondra97/codex/fix-high-refresh-skip-policy
fix(tools): accept skips on displays without 120 Hz
2026-10-14 15:54:20 +13:00
Dean 39bf2b9e9d Merge pull request #4986 from Ondra97/codex/fix-conventions-raw-literals
fix(conventions): ignore C++ raw literal contents
2026-10-14 15:54:04 +13:00
Dean 0fb2f6c89a Merge pull request #4988 from babyhuey/feat/scenet-so-error
fix(libSceNet): report SO_ERROR from sceNetGetsockopt
2026-10-14 15:53:49 +13:00
Dean 3e4fe4ce31 Merge pull request #5596 from tibzejoker/port/pr-637-main
fix(libc): track writes to singly mapped direct memory without faults on Windows
2026-10-14 15:53:44 +13:00
Dean 0a56aaaf47 Merge pull request #5284 from MarcZX100/codex/nested-exit-5277
fix(libc): finish exit handlers after nested exit
2026-10-14 15:50:18 +13:00
Dean d1b3aa1372 Merge pull request #5195 from SandstromPL/fix/relinker-sce-code-analysis-extent
fix(relinker): keep code analysis inside the code extent of PS4 executables
2026-10-14 15:49:02 +13:00
Dean a7836b1495 Merge pull request #5094 from bubblegg/fix/savedata-save-size
fix(savedata): report a save's size as the mount that created it gave
2026-10-14 15:47:32 +13:00
Dean aa1927872f Merge pull request #5197 from AlexOfTheForest/test/relinker-cli-module-and-target-options
test(cli): cover module-dir, sce-module-path and target option errors
2026-10-14 15:46:50 +13:00
Dean 094a34c1ab Merge pull request #5158 from AaravMehta-07/codex/systemservice-contained-exec
fix(libSceSystemService): contain converted executable paths
2026-10-14 15:45:40 +13:00
Dean 94f96c8e2c Merge pull request #5255 from Nesyth/fix/libkernel-apr-read-past-eof-v2
fix(libkernel): zero-fill APR reads that reach the end of the file
2026-10-14 15:44:14 +13:00
Dean a21d73733c Merge pull request #5133 from SandstromPL/fix/savedata-search-other-title
fix(savedata): return no saves for a search with another title's ID
2026-10-14 15:41:58 +13:00
Dean a1e1b4d161 Merge pull request #5262 from NaitikJoshiPro/pr/relinker-executable-tls
feat(relinker): executable TLS relocations (TPOFF64, DTPOFF64, DTPMOD64)
2026-10-14 15:41:31 +13:00
Dean 0defec4386 Merge pull request #5199 from Zenodeon/conversion-diagnostics
fix(relinker): identify failed inputs and invalid dynamic values
2026-10-14 15:39:35 +13:00
Dean c693bd7566 Merge pull request #5190 from NumberGuan/codex/check-lsda-landing-addresses
fix(relinker): reject overflowing LSDA landing pad addresses
2026-10-14 15:39:00 +13:00
Dean 75ceccd5db Merge pull request #4615 from MiniRML/fix/nid-elf-table-layout
fix(nid): validate ELF table layouts before patching
2026-10-14 15:38:11 +13:00
Dean 622fb542d2 Merge pull request #4764 from nikowolf123/fix/conventions-test-fixtures
fix(conventions): skip library test fixtures in the export checks
2026-10-14 15:37:56 +13:00
Dean 9b6555bd47 Merge pull request #4796 from xXPBSXx/feat/socket-options-sol-socket
fix(libkernel): report SO_ERROR and the other SOL_SOCKET options like FreeBSD
2026-10-14 15:37:41 +13:00
Dean cdea950b7e Merge pull request #4825 from StefanBuc/prepare/elf-import-audit-20261012
fix(tools): validate empty ELF dynamic symbol table bounds
2026-10-14 15:37:26 +13:00
Dean 1e277eef6e Merge pull request #4930 from MarcZX100/fix/videoout-frame-dump-linear
fix(videoout): dump linear display buffers
2026-10-14 15:37:10 +13:00
Dean 91e5f60880 Merge pull request #4822 from MarcZX100/fix/fopen-native-open-errors-4814
fix(libc): return native fopen errors
2026-10-14 15:36:11 +13:00
Dean 6d032559c3 Merge pull request #4789 from PrintOrb/fix/audioout-shared-sdl-init
fix(audioout): serialize SDL audio initialization for Dark Forces
2026-10-14 15:35:56 +13:00
Dean 2ba3147ac8 Merge pull request #4844 from johnmaia/debug/skip-shader
feat(agc): skip the draws and dispatches of one shader with APS5_SKIP_SHADER
2026-10-14 15:32:04 +13:00
Dean 803cbf2f81 Merge pull request #4715 from Lorkydey/fix/agc-inactive-vertex-point-size
fix(agc): accept inactive vertex point size on non-point draws
2026-10-14 15:31:48 +13:00
Dean c5f839f651 Merge pull request #4702 from tv7/feat/gs-fast-launch
feat(agc): decode GS_FAST_LAUNCH geometry with one point per subgroup
2026-10-14 15:31:33 +13:00
Dean 0df6e295c5 Merge pull request #290 from MichonGoddijn231849/split/host-import-windows
feat(agc): host import windows, least-recent eviction under the budget
2026-10-14 15:27:19 +13:00
Dean 71c71f50b7 Merge pull request #5029 from fdfawef324/perf/agc-partially-resident-snapshot-hits
perf(agc): trust write stamps for snapshots of partially committed textures
2026-10-14 15:21:38 +13:00
pushkarreddyy fbf619ef0d feat(libSceAgc): ignore address argument on non-sample-dump events in sceAgcDcbEventWrite 2026-10-14 07:37:02 +05:30
Dean 016db923af Merge pull request #5184 from p3n1cillin/claude/sysctl-vm-overcommit
feat(libkernel): report vm.overcommit through sysctlbyname
2026-10-14 14:52:25 +13:00
AlxcBTWandClaude Opus 5.5 c29e06c693 fix(agc): a joined host import may replace imports the build in flight already holds
A join runs before any region confirms an import and a retired import lives
through the retire-hold, so refusing it for held overlaps kept the joined run
copied for the rest of the build.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 14:51:48 +13:00
Michon c871b5893d test(agc): host import windows, whole-range builds and budget refusals
agc_driver_graphics (BdaResources.cpp), each failing without its change:
- a view in the last window of a range whose first window was imported
  binds through an import of the whole range;
- an address-based build over the budget leaves the range's window in
  place (3 builds, same import);
- two uses across neighbouring cell edges share one import over 10
  rounds;
- a range mapped at the budget is refused at map time and retires
  nothing.
agc_driver_host_import_windows: windows follow their range, and
ClearHostImports drops them.
2026-10-14 14:51:48 +13:00
Michon e9249a0a47 feat(agc): host import windows, least-recent eviction under the budget
A registered range larger than 64 MiB is imported one 64 MiB window at a
time for buffer and fill accesses instead of whole, and the live imports
stay under a budget: APS5_HOST_IMPORT_MIB, else the larger of 6 GiB and
half the physical memory, at most the largest host heap less 2 GiB
(imports and type-3 mirrors share it; #167's rule). An import past the budget
retires the least recently used imports not used in the last 256
lookups.

- An access across window edges imports the cells it touches, grown to
  the union of the range's imports it overlaps, so uses across
  neighbouring edges share one import instead of replacing each other.
- An address-based build (AcquireRegistered) imports the range whole; a
  window over its first byte does not serve it.
- Every refusal (alignment, a failed run, a held import, the budget with
  what may be evicted) is decided before anything is retired.
- An import made when a range is mapped never evicts: the map observer
  holds no GPU lock.

The window size and the budget have setters for the tests.
2026-10-14 14:51:48 +13:00
Dean a98d42d08c Merge pull request #4799 from ArjenS-LA/fix/trace-summary-selection
fix(tools): match explicit trace summaries to their capture
2026-10-14 14:51:27 +13:00
Dean 52d134c028 Merge pull request #4965 from pushkarreddyy/feat/agc-cmask-skip-higher-mip
feat(libSceAgcDriver): skip CMASK decode on single-sample views with viewMip > 0
2026-10-14 14:46:19 +13:00
Dean eacadec269 Merge pull request #4861 from Tamalero/fix/agc-metadata-pass-pass-through-depth
fix(agc): accept a CB metadata pass whose depth test passes every fragment without writing
2026-10-14 14:46:14 +13:00
Dean 959d39fb2b Merge pull request #4801 from ArjenS-LA/fix/guest-posix-runpath
fix(relinker): validate Linux guest runpaths with target syntax
2026-10-14 14:45:57 +13:00
Dean 4586fdbc3b Merge pull request #4469 from arcwiser/feat/libc-signal-list
feat(libSceLibcInternal): export sys_siglist and sys_nsig
2026-10-14 14:45:41 +13:00
p3nicillinandClaude Opus 5.5 dad29cac43 feat(libkernel): report vm.overcommit through sysctlbyname
The mimalloc in PS5MC (PPSA99420) reads vm.overcommit at start-up and
stopped on the unsupported name. It reports FreeBSD's default, 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 14:44:48 +13:00
Dean dff25dd604 Merge pull request #5098 from p3n1cillin/claude/sysctl-hw-realmem
feat(libkernel): report hw.realmem through sysctl
2026-10-14 14:44:32 +13:00
Dean 5a81f6085b Merge pull request #4765 from nikowolf123/fix/conventions-template-subsections
fix(conventions): keep #### subsections inside the pull request template sections
2026-10-14 14:41:00 +13:00
Dean 1633843382 Merge pull request #4998 from ideabsassistenza/fix/debt-resolve-leading-entries
fix(debt): preserve leading entries during conflict resolution
2026-10-14 14:39:06 +13:00
Dean e5a272d7a6 Merge pull request #5359 from thuanquang/fix/output-path-directory
fix(relinker): reject a directory as the executable output path
2026-10-14 14:36:09 +13:00