Skip to content

chore: merge main into ps4/agc-gcn - #22

Closed
savvaniss wants to merge 3 commits into
Get-fix:ps4/agc-gcnfrom
savvaniss:merge/9431-main
Closed

savvaniss wants to merge 3 commits into
Get-fix:ps4/agc-gcnfrom
savvaniss:merge/9431-main

Conversation

@savvaniss

@savvaniss savvaniss commented Oct 25, 2026 •

Copy link
Copy Markdown

What

main (07da04f947) merged into ps4/agc-gcn (26d651d3e0), for boykopovar#9431. It is one merge commit, 4e8243ac48, with no rebase, so you can fast-forward ps4/agc-gcn to it or merge it. Two files conflicted; every other file merged automatically.

  1. Graphics/include/GuestTextureResource.hpp: the struct keeps this branch's gcnPitch, gcnPow2Pad and gcnLinearGeneral, and main's fmaskCmaskAddress (the FMASK series from feat(agc): expose expanded FMASK for tracked native owners boykopovar/AnyPS5#7948).
    • DecodeTextureResource zeroes words 6 and 7 of a PS4 T# before it reads the metadata bits.
    • So fmaskCmaskAddress stays 0 for PS4 textures.
  2. Graphics/src/DepthSurface.cpp, layeredDepthStorage: main's fix(agc): place a layered depth storage view at the guest's layer pitch boykopovar/AnyPS5#8109 removed the refusal of a layer pitch other than the depth slice size. Its LayeredDepthStorage now places layer n at n * GuestLayerOffset(1), so that refusal is gone here too.
    • This branch's Require(!geometry.levelMajor, ...) stays in front of it.
    • A level-major PS4 surface's layers are mip.tiledSize apart, not GuestLayerOffset apart, so main's new placement would be wrong for it.
    • This is the same guard as the branch's other two depth-plane sites (DepthPlaneCopy::Refresh and the sampled depth-plane slices).

Not in this merge: the Linux journal size check that oneandonlydean and ntamas94 raised on boykopovar#9431. On main, PipelineJournal.cpp now checks sizeof(State) == 840 and sizeof(ShaderStages) == 112. The merge doesn't touch them, and what the journal does with legacyVertex is still your call.

Untested after this merge: PS4 DB depth copies.

  • main's feat(agc): draw DB depth copies with a driver pixel program boykopovar/AnyPS5#8999 replaced the DB depth copy compute pass (RunDepthCopyPass) with a draw through the normal path.
  • That draw uses a driver-authored pixel program and a PS5 T# built by DepthCopySourceWords.
  • With PS4 decoding on, that program goes through the GCN decoder. Its source plane comes from decodeDepthPlane, which now holds this branch's PS4 depth decode.
  • This branch had no PS4-specific handling of DB depth copies before the merge either, and no test covers one with PS4 decoding on.

Tested

Windows 11 Pro 26300, WinLibs GCC 15.2.0, Release, AMD Radeon RX 9070 XT (driver 32.0.31041.1004), with ANYPS5_GPU=AMD, ANYPS5_REQUIRE_VULKAN=1, ANYPS5_NO_SHADER_CACHE=1 and VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, ctest -V, on main 07da04f947 and on this merge.

Tests run: 50 in total:

  • agc_driver, agc_driver_pm4, agc_driver_graphics (texture tiling, detiler, texture resource, color target layout), agc_driver_register_key, agc_driver_gcn_detile and agc_driver_pattern_buffer_fill
  • agc_driver_flip and the 16 video_out_flip_* modes
  • agc_gcn_decode, texture_format_lookup, agc_driver_resource_cache_replaced_texture and agc_depth_copy_kept_bytes
  • the 23 agc_driver_depth_* tests, among them agc_driver_depth_storage, which covers fix(agc): place a layered depth storage view at the guest's layer pitch boykopovar/AnyPS5#8109's layered storage path

Results:

passed failed
main 07da04f947 48 of 49 (agc_driver_gcn_detile is not on main) agc_driver_depth_plane_partial_store
this merge 49 of 50 agc_driver_depth_plane_partial_store

Checklist

🤖 Generated with Claude Code

Get-fix and others added 3 commits October 22, 2026 12:19
PS4 color and depth targets, PS4 graphics EOP events, and the PS4 tile
modes (1D/2D thin and display, depth with tile split, PRT, linear
general) on the AGC executor, with a GPU detiler for every mode.
Textures sampled over the padded corner of a render target are GPU block
copies, and the PS4 SDK pattern-fill compute kernel runs as a GPU fill
when it repeats one dword, so render targets and HTILE are cleared
without a CPU drain. Two-dword patterns keep running the kernel: as
fills, Limbo's clears of its 64-bit target made its gameplay advance
about half as far per frame.
Tests cover the tiling equations against addrlib formulas, the GPU
detiler for every mode and element size, and the fill ranges.
…p test

The 4 KiB display buffer alignment check now names linear and PS4
buffers, because PS4 tiled display buffers may be 4 KiB aligned too.
video_out_flip_ps4 still looked for the old text when a PS4 buffer set
is changed to the PS5 tiled layout, so it failed although the change is
still refused.
GuestTextureResource keeps this branch's gcnPitch, gcnPow2Pad and
gcnLinearGeneral and main's fmaskCmaskAddress. layeredDepthStorage drops
the layer-pitch refusal, since main's LayeredDepthStorage now places each
layer at GuestLayerOffset, and keeps this branch's refusal of level-major
PS4 surfaces, whose layers GuestLayerOffset does not place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
savvaniss added a commit to savvaniss/AnyPS5 that referenced this pull request Oct 25, 2026
Brings in main 07da04f through the boykopovar#9431 merge offered as
Get-fix#22. main replaced the DB depth copy compute pass
(RunDepthCopyPass) with a draw through the normal path, so this branch's
linear check in it goes with it: a depth copy into a GcnLinear target is
now drawn like any other draw into a linear target that is not resident.
The texture tiling test keeps both sides' includes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
savvaniss added a commit to savvaniss/AnyPS5 that referenced this pull request Oct 25, 2026
Brings in main 07da04f through the boykopovar#9431 merge offered as
Get-fix#22. No file conflicts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
savvaniss added a commit to savvaniss/AnyPS5 that referenced this pull request Oct 25, 2026
Brings in main 07da04f through the boykopovar#9431 merge offered as
Get-fix#22. The PM4 tests keep this branch's GCN DATA_SEL 4
counter test and main's new MEM_SEMAPHORE test side by side. The debt
file takes main's point-size, vertex-path point list and MEM_SEMAPHORE
entries and keeps this branch's RELEASE_MEM system counter entry, which
main did not change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
savvaniss added a commit to savvaniss/AnyPS5 that referenced this pull request Oct 25, 2026
Brings in main 07da04f through the boykopovar#9431 merge offered as
Get-fix#22. The PS4 tile mode lands in main's decodeDepthPlane,
which now holds boykopovar#9431's PS4 depth decode. The debt file keeps this
branch's PS4 depth plane entry under the guest-memory entry it extends,
followed by main's shared-memory and unmapped-plane entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@savvaniss

Copy link
Copy Markdown
Author

Closing this: boykopovar#9431 merged into boykopovar/AnyPS5 main on 29 Oct, so this merge is no longer needed. Thanks. AI-assisted: yes (Claude Code)

@savvaniss savvaniss closed this Oct 30, 2026
@savvaniss
savvaniss deleted the merge/9431-main branch October 30, 2026 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants