Repository navigation
Cocoon (PPSA08766) #6651
JJenkx
started this conversation in
Game bring-up
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Independent NVIDIA validation of the image-load fix
jotitadev tested #6815 on RTX 3070 / NVIDIA 595.99.02, Ubuntu 26.04: all four focused checks passed in three runs on NVIDIA and three runs on lavapipe. The new regression covers all four formats on NVIDIA and fails without the source fix on both devices. A broader 616-test NVIDIA run had one failure also present on unchanged main (#6347), plus one skip. This adds cross-vendor test evidence to the existing Radeon oracle measurements; the reviewer did not test a title, Windows or additional hardware-oracle rows. The separate Cocoon routing refusal
VGT_SHADER_STAGES_EN=0x2135remains unresolved, and no gameplay or FPS gain is established.RADV tessellation compiler fix validated locally
Latest-main recheck: upstream advanced to
668a7ddc191a88eed025130dacecf5da1e35dedbduring this investigation (#6859/#6861 build changes). Fulllibsand the tessellation test rebuild successfully on that exact clean revision. The installed 26.2.4 driver still segfaults; the same test with the isolated patched 26.2.5 driver passes in 0.58 s with Khronos validation active and no VUID errors. Latest-main result, regression/test output. These short test durations are correctness evidence, not performance comparisons.The separate ordinary-tessellation test crash now has a small Mesa source correction. AnyPS5 remains exact clean main
82ddae75b676. The same test segfaults on installed RADV 26.2.4 and an isolated cached 26.2.3 package. A checksum-verified, assertion-enabled build of the released Mesa 26.2.5 catches corrupt SSA use lists immediately after vertex-to-tessellation-controlnir_opt_varyings.Two indirect-array shrinking paths replace an existing offset source by direct assignment, leaving its use lists inconsistent. Using
nir_src_rewritefor both offsets fixes that. The new store regression additionally reveals stale block/dominance metadata after the pass inserts its conditional; the patch invalidates that metadata at the insertion. Optimizations remain enabled.Two small, title-independent NIR regressions fail separately on unmodified Mesa (load: assertion, store: segfault), and both pass with the complete patch. All 6,203 enabled NIR tests pass; nine disabled tests are not counted. With the isolated patched driver, unchanged AnyPS5
agc_driver_tessellationpasses in 0.75 s, with Khronos validation 1.4.363.0 confirmed active and no VUID errors. Mesa disk cache, application shader cache, pipeline journal and background LTO are disabled. This is a source-build comparison, not a package upgrade or performance measurement.Patch including CPU regressions, sanitized results, build/reproduction commands. The checked Mesa main
626e78b034eestill contains the same two assignments; it was inspected, not built or tested. The fix is local, not an upstream Mesa merge, and the installed desktop driver remains unchanged.Cocoon's separate
0x2135tessellation/geometry routing refusal remains unresolved. No native game was run for this update, and no gameplay, FPS or loading improvement is claimed. The patch and regressions contain no title shaders or assets. AI-assisted: yes.RADV tessellation fixture isolated on current main
The separate ordinary-tessellation test crash is reproduced on exact clean upstream main
82ddae75b676, with a fresh full runtime/test build, bundled dependencies, GCC 16.2.1, Linux 7.2.9, RX 6650 XT and RADV Mesa 26.2.4-arch1.1.agc_driver_tessellationsegfaults with Mesa's disk cache, the application request cache, the pipeline journal and background LTO linking disabled. The Khronos validation layer 1.4.363.0 was separately confirmed loaded; it reported no validation errors before the crash.Matching driver debug symbols locate it in NIR use-list removal (
list_del→remove_use_cb→nir_opt_dce) afterradv_graphics_shaders_link_varyingsoptimizes the hull producer. A debugger-only control on the same main build returns zero fromnir_opt_varyingsonly for vertex producer → tessellation-control consumer. All unchanged tessellation fixtures then finish normally, with 50 actual intercepted calls and Mesa cache disabled. Skipping only the later hull→domain pass still crashes. This narrows the corruption to the earlier varying optimization; it is not a compiler fix or an installed runtime workaround. A warm-cache control with no intercepted calls is excluded.Reproduction details and limits, debugger control, and synthetic VS/TCS NIR. The control needs the matching RADV debug symbols configured with GDB's
set debug-file-directory, thengdb -batch -x CONTROL.gdb --args build/tests/agc_driver_tessellation_tests. Every attached shader comes from the repository's synthetic test; no title shader bytes or assets are attached. Mesa 26.2.5 is available but has not been tested here.Cocoon's
0x2135routing stop remains a separate issue. OpenAGC's reconstructed FW5.50 PrimState uses the same OR of hull and geometry state, and its fusion implementation retains the back half's special-register block. Thus these references support the current library composition; they do not justify changing it to obtain a different routing value. No new gameplay, FPS or system-library completion claim.AI-assisted: yes.
Tessellation routing follow-up
Current #6612 head
e4c4725f48d4, including #6679, has been combined locally with the stack below as003fef149b08. Its tessellation-to-geometry GPU test passes on RX 6650 XT / RADV. The initial ten-test selection passes nine; ordinary tessellation retains the baseline RADV pipeline-link segfault. After updating integration request-format fixtures, serializer, shader-memory, graphics, journal and tessellation-geometry checks pass 5/5 without skips. The integration uses request version 33 and journal format 5 to preserve both contributions' state; these integration adjustments are not part of standalone #6821.Native Cocoon now reaches #6612's more specific refusal after 18.04 seconds:
VGT_SHADER_STAGES_EN=0x2135: unsupported tessellation and geometry routing. Exit 134, temporary settings restored, no matching game window captured. Thus #6612 alone does not settle Cocoon's routing.A separate completed diagnostic run logs the library's inputs: fused GS front/back stage values
0x0/0x2030, fused HS front/back0x0/0x105;sceAgcCreatePrimStateORs the resulting0x2030and0x105into0x2135. The next investigation is the correct hull/geometry state composition versus decoder routing. These observations do not justify widening the accepted mask. Sanitized evidence. No gameplay or speedup is established.Point context defaults — #6821
The missing
PA_SU_POINT_SIZEregister is addressed by #6821, an independent commit on main82ddae75b676. The existing public libSceAgc SDK context tables consistently initialize point size to0x00080008and point limits to0xffff0000; the observed startup never wrote either register before reading them. Applying those SDK defaults to new queues and CLEAR_STATE is inferred and documented. These are not claimed to be GPU power-on reset values. PM4 coverage checks explicit writes, CLEAR_STATE and push/pop restoration.The standalone runtime build and two driver/PM4 tests pass. Native integration
eb2333c0ea55, the previous #6815 integration plus this fix, passes five focused RADV checks and gets past the missing-register refusal. It then aborts after 16.04 seconds, exit 134, atVGT_SHADER_STAGES_EN=0x2135: combined tessellation and geometry is unsupported by the reference path. Temporary kernel settings are restored. No matching game window was captured; visible menu, gameplay and performance gains remain unverified.The current next action is to evaluate existing #6612 and its #6679 dependency for that combined path. Current native startup stack: #6639/#6801, #6653, #6743, #6815 and #6821. #6821 itself has no code dependency on those other PRs. Sanitized validation evidence.
Earlier diagnostic results follow in order; their stops refer to the older source combinations.
Image-load fix — #6815
The previously reported 2D-versus-2D-MSAA image-interface refusal is addressed by #6815, standalone head
d513fb987f73on main82ddae75b676. Direct hardware measurements on RX 6650 XT (gfx1032), wave32 and wave64, show 768 DIM 2D_MSAAimage_loadrows matching ordinary 2D loads on the same non-multisampled 2D descriptor. Four formats, varying sample indices and in-range/out-of-range coordinates are covered. The compatibility mode drops the sample operand for this case; unsupported stores/atomics and other unmeasured address paths remain refused. This is RDNA2 evidence, not a console measurement.The standalone full runtime build passes. Four focused checks pass on RADV and four on lavapipe, without skips. Keeping the final regression and restoring main's materializer fails at the original interface refusal; restoring the change passes. sRGB values must match each driver's 2D control bit-for-bit and preserve the oracle's encoded 8-bit texel, rather than requiring identical cross-driver linear approximations.
Cocoon integration
b83e429e7613, the priorc283a7718396stack plus this correction and its regression, passes 7/7 focused checks and gets past the image-interface refusal. It aborts at 6.03 seconds, exit 134, on a new explicit blocker: missing context DWORD 0x280 (PA_SU_POINT_SIZE). Temporary settings are restored; no matching game window or screenshot was captured. The point-register's initial state or write propagation needs investigation; no assumed one-pixel value has been inserted. No visible menu, gameplay or speedup is established.Hardware rows, reproduction script and sanitized native/test evidence. The standalone image fix has no PR dependency; the native diagnostic stack separately carries #6639/#6801, #6653 and #6743.
Native update — current main
82ddae75b676The exact #6801 head (
6592b94273b6) now has a native Cocoon check: it aborts after 28.04 seconds on the known shader-fusion mismatch, exit 134, with temporary settings restored. No matching game window or screenshot was captured. An earlier attempt lost Xwayland before PID/window verification and is excluded from compatibility results.Integration
c283a7718396adds #6653 and #6743 to #6801/#6639 on current main. Full runtime libraries build and 25/25 focused fusion, shader, preparation and mesh checks pass on RADV without skips. With lazy preparation enabled, Cocoon reaches a different runtime blocker after 4.03 seconds: a fragment shader's 2D-MSAA image interface rejects a normal 2D descriptor (format 130). Exit 134; settings restored; no new kernel GPU fault or matching game window was observed. This is a different source combination, not a timing comparison or isolated proof for any one PR.A short diagnostic replay reproduces that failure at 4.04 seconds and captures the failing request privately. The current source decoder reads 136 shader words, four captured memory regions, and two
image_loadinstructions with 2D-MSAA dimension, at program offsets 0x40 and 0xa4. The request alone does not establish which conditional operation executes or hardware behavior for the descriptor mismatch. Hardware-oracle measurement and a matching runtime regression are next; no descriptor workaround has been applied.Sanitized native results and capture metadata. Raw request, shader bytes, memory capture and full logs remain local. No visible menu, gameplay, FPS or load-time gain is established. The earlier native history below remains separate.
Source update — 2026-10-16
Geometry point output is now submitted as draft #6801, exact head
6592b94273b675cb07028f73960e03b222d2dc1e, on maineb901bcf4e17plus unchanged #6639 and two follow-up commits. #5884 and #5872 have merged. #6801 depends on #6639 for shared point-size state and now implements register-sized and exported/clamped mesh points, replacing the earlier one-pixel prototype.Full runtime libraries build. Eight focused checks pass on RX 6650 XT / RADV 26.2.4-arch1.1 without skips, including actual wave32/wave64 point rendering at sizes 1/3/4, upper/lower export clamps, line/triangle regressions and mesh-point journal persistence. Forcing one-pixel output or removing export clamping independently fails the unchanged GPU test; restoring the code passes. Lavapipe passes seven checks and skips mesh execution because it lacks mesh shading. Exact source and sanitized validation.
The current-head native checks are described above. The native history below belongs to the older integration and prototype. No title menu, gameplay, FPS or load-time gain is established.
Existing thread
Title / content version
Cocoon (PPSA08766), 01.004.000, from
sce_sys/param.json. Unity/IL2CPP, FMOD and Resonance Audio. The executable and 22 bundled modules unwrap as readable runtime images and convert successfully.AnyPS5 commit
Main 5d9dcc4, with an experimental Linux integration. Most recent run: edb0b59, source at testing/cocoon-bringup-5d9dcc42d.
The stack contains #6476, #6610, #6341, #5905, #5884 and #6227, plus local point-output and shader-fusion changes described below. Latest testing adds #6612 at
0eeb8159b15ca088d31d231b89b3c858661fbc28, #6366 ate986ee0f7ad315cfdfdfe2025ecbe5a52c91d376, and opt-in #5872 atc8bedff055a1643cfb3f03fa19f0f7491961d3aa. It also contains opt-in draw timing instrumentation, disabled in these startup runs. This is not an unmodified-main runtime result; I have not established that every change in that stack is necessary for Cocoon.System tested
Arch Linux 7.2.9, GCC 16.2.1 Release, Ryzen 9 7950X, 128 GiB RAM, AMD Radeon RX 6650 XT 8 GiB, RADV Mesa 26.2.4-arch1.1, X11.
Furthest point / what is shown
Still no visible game frame; the previous pipeline-ABI abort is passed. The window remains black with two initial presentation completions. No logo, menu, gameplay, working input or audio quality is claimed. No FPS gain is claimed.
Blockers reached in order
On the starting Linux stack, before adding feat(agc): draw line-strip output of NGG geometry programs as mesh lines #5884, startup aborts with:
A diagnostic print identifies triangle-strip input (
VGT_PRIMITIVE_TYPE=0x6) and line-strip output (VGT_GS_OUT_PRIM_TYPE=0x1),VGT_GS_MAX_VERT_OUT=0x90,GE_MAX_OUTPUT_PER_SUBGROUP=0x4,GE_CNTL=0x4824. Adding exact feat(agc): draw line-strip output of NGG geometry programs as mesh lines #5884 heada0347cfed51bc2807d6e771072e7013f1019340agets past this refusal.The next shader state being prepared has point output: stages
0x2030, primitive0x6, output type0, max vertices0x8a, max output3,GE_CNTL=0x5c2e. The point-output follow-up is on top of feat(agc): draw line-strip output of NGG geometry programs as mesh lines #5884 and passes this refusal. Its RADV mesh regression checks actual colored points and empty triangle interiors with guest wave32 and wave64. Selecting the second packed index deliberately makes that rendering test fail; restoring the first index passes. That native prototype did not implement programmable or register-sized points; the new feat(agc): rasterize geometry points with their point size #6801 source above does, with fresh native validation pending.Shader fusion then stops at:
Front
SPI_SHADER_PGM_RSRC2_GS=0x70004, back0xab0020; the unmatched bit isOC_LDS_EN(0x40000). The fusion change in fix(agc): retain offchip LDS enable during shader fusion #6653 retains that bit when either half requests it. The standalone change on current main passesagc_shader_fusion; reverting only its merge to main's behavior makes the new regression fail, and restoration passes. Other unmatched hardware state remains rejected.After the line, point and fusion changes, the next abort was:
Tested feat(agc): draw tessellation followed by an NGG geometry stage #6612, including its follow-up fix, on the integration: Cocoon still aborts at about 29 seconds with
VGT_SHADER_STAGES_EN=0x2135: unsupported tessellation and geometry routing. Its Crimson Desert state is different. The newagc_driver_tessellation_geometryGPU test passes on this RADV device, but Cocoon has not confirmed rendering through that path.Adding fix(agc): leave a stage the title's pipeline ABI cannot prepare to its first use #6366 passes the pipeline-ABI abort by leaving the undecodable stage to its first use. This does not implement that routing; a draw needing unsupported state must still fail. On integration
6eaf33d9b929d96cb8a3b128e71a0868c0b453d3, a short startup check and a longer warm-cache run both close normally (exit 0). The longer run closes at its scheduled 571 seconds, with 921 shader-cache hits and 953 writes reported, still black with only the two initial presentation completions. It opens the first level assets. No menu or gameplay is confirmed.Added perf(agc): allow shader preparation on first use #5872 and verified
APS5_LAZY_SHADER_PREPARE=1in the native process. The latest integration closes normally at the scheduled 161 seconds, still black with two initial presentations. Its final cache report has 1,702 hits and 207 writes. It still prepares shaders during startup. The caches were populated by earlier attempts, so these runs establish neither a startup speedup nor an FPS gain.The latest combined branch passes all 21 selected prepared-shader (including ABI deferral and lazy async/sync), mesh and tessellation-geometry tests. Two test expectations needed integration adjustments: line output now reaches an invalid subgroup check, and an invalid lazy shader is deferred by #6366 at its ABI call but must still fail at dispatch and shutdown. Separately, ordinary
agc_driver_tessellationSIGSEGVs inside RADV pipeline creation both on the baseline checkout (main plus only the independent fusion fix) and on the #6612 integration. Disabling GPL does not cure the integration failure. This is not an all-tests-pass result.The point-output follow-up is now draft #6801, depending on #6639; its #5884 line-output prerequisite is merged. The new source and test scope are described above. The small fusion change is submitted independently as #6653 (main plus one commit).
How it was run
The dump's readable SELF containers were unwrapped to ELF. Only absent non-loadable note headers were normalized; loadable segments were retained. From the prepared source directory:
relinker --registry unused-filter=0 --module-dir . --module-dir Media/Modules --module-dir Media/Plugins --rpath /path/to/built/libraries eboot.elf /path/to/runtime/app.elfConverted modules were retained and assets linked into
/app0. Native environment includedAPS5_PIPELINED_DRAWS=1,APS5_HOST_IMPORT_MIB=16384,APS5_DRAW_CACHE_ENTRIES=4096, SDL X11 and the RADV ICD. The Linux udmabuf size limit was temporarily 8192 MiB and restored to 64 MiB after every attempt. Earlier native runs ended in the reported aborts (exit 134). The latest checks ended on their scheduled ordinary close (exit 0); neither ordinary close nor test/debugger exits establish gameplay.Static built-export audit: 2,766 import references, 1,104 unique import pairs: 857 implemented exports, 35 source-classified stubs, 212 bundled guest providers, zero absent exports. This does not establish which optional imports execute or their correctness.
Tests on the graphics integration:
request_serializer,agc_shader_memory,agc_driver_graphics,agc_driver_meshpass; the fusion regression also passes on main plus only its own change. No game binaries, assets, shader dumps or raw title logs are attached.AI-assisted: yes.
All reactions