Commit Graph
221 Commits
Author SHA1 Message Date
boykopovar 682165a929 fix(agc): restore occlusion query size argument 2026-10-21 21:56:02 +03:00
boykopovar df4d0beae6 fix(agc): restore geometry shader resource merging 2026-10-21 21:53:55 +03:00
boykopovar c311d6dc2a fix(agc): take offchip lds enable from the front shader half 2026-10-21 21:53:54 +03:00
boykopovar faebf639e9 fix(agc): restore semaphore memory clearing and errors 2026-10-21 21:53:53 +03:00
boykopovar d6966f9792 fix(agc): preserve wait packet control bits during patching 2026-10-21 21:53:52 +03:00
boykopovar 51d788e87c fix(agc): restore wait patch scalar argument widths 2026-10-21 21:53:51 +03:00
boykopovar 218be372ea fix(agc): restore protected export argument and return types 2026-10-21 21:53:25 +03:00
Adrià 5bd9912658 Merge pull request #8317 from hypermoist/feat/agc-static-buffers
feat(libSceAgc): implement static buffers and qwords
2026-10-21 15:32:19 +02:00
Adrià 275e896797 Merge pull request #7696 from MaxLikesCode/feat/agc-set-index-indirect-args
feat(libSceAgc): implement sceAgcDcbSetIndexIndirectArgs
2026-10-21 12:52:39 +02:00
xdCloudy 6fa316546c fix(libSceAgc): drop interpolant export duplicates 2026-10-21 02:53:31 +01:00
xdCloudy abc62e78f4 feat(prx): add missing libSceAgc exports 2026-10-21 02:37:09 +01:00
Adrià 84be26d93e Merge pull request #7606 from hugodearaujo/fix/agc-register-range-any-alignment
fix(libSceAgc): accept register range values at any byte address, as the console does
2026-10-20 12:55:13 +02:00
hypermistandClaude Opus 5.5 fec563d92c feat(libSceAgc): implement static buffers and qwords
sceAgcSetStaticBuffer, sceAgcGetStaticBuffer, sceAgcSetStaticQword and
sceAgcGetStaticQword read and write the six 16-byte slots at 0xfe0040000
that the driver already maps for the fetch shader table, through a new
AgcDriverStaticTable_nid_postfix accessor.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-20 22:52:52 +13:00
Adrià a018148a8f Merge pull request #6817 from NumberGuan/codex/agc-shader-helper-timeout
test(agc): bound shader helper test runtime
2026-10-20 11:14:23 +02:00
Adrià 9b34cba9ef Merge pull request #6794 from fma-rc/feat/agc-acb-set-flip
feat(libSceAgc): implement sceAgcAcbSetFlip and execute flips on compute queues
2026-10-19 20:42:20 +02:00
Tomás Ortellado 1c993d1889 test(agc): bound shader helper test runtime 2026-10-19 10:05:12 -03:00
fogydes 093d6a3d4e fix(libSceAgc): align CB memory semaphore with console oracle and document debt 2026-10-19 13:46:46 +05:30
fogydes 82d93b09a8 test(libSceAgc): drop invalid clientCode rejection check in testMemSemaphore 2026-10-19 13:41:40 +05:30
fogydes dd3798ddeb feat(libSceAgc): implement CB memory semaphore and unversioned payload address 2026-10-19 13:41:40 +05:30
Adrià bda28c62c0 Merge pull request #6653 from JJenkx/fix/agc-fusion-offchip-lds
fix(agc): retain offchip LDS enable during shader fusion
2026-10-19 10:01:33 +02:00
fogydes cf994f1f60 feat(libSceAgc): implement DCB atomic GDS operations and correct size accessor 2026-10-19 04:37:29 +02:00
fogydes c2a158415d feat(libSceAgc): implement unversioned context state operations 2026-10-19 04:13:09 +02:00
MaxandClaude Opus 5.5 5140b08d82 feat(libSceAgc): implement sceAgcDcbSetIndexIndirectArgs
Write the INDEX_ATTRIBUTES_INDIRECT packet the console's builder writes,
as measured by the prosper console oracle, with OpenAGC's signature, and
report its measured size of 16 bytes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 02:53:01 +02:00
MarcZX10 0c2260e30a fix(libSceAgc): preserve versioned register defaults layout 2026-10-18 22:56:16 +00:00
Adrià 2da2284def Merge pull request #6270 from YossiYad/fix/agc-register-defaults-pairs
fix(libSceAgc): return the console's register-defaults table and type pairs
2026-10-18 23:14:29 +02:00
Adrià 09acc80f7e Merge pull request #6145 from MarcZX10/codex/fix-agc-atomic-gds-size
fix(libSceAgc): reserve complete atomic GDS packets
2026-10-18 19:28:01 +02:00
hugodearaujo 9895d130c4 fix(libSceAgc): accept register range values at any byte address, as the console does 2026-10-18 11:59:50 -03:00
fma-rc f60a86f27a feat(libSceAgc): implement sceAgcAcbSetFlip 2026-10-17 08:02:02 +02:00
Dean 16c607a937 Merge pull request #6925 from LeandroLP23/fix/agc-shader-helpers-shutdown
test(agc): shut libc down before agc_shader_helpers returns
2026-10-17 17:29:05 +13:00
Adrià f1dded21fe Merge pull request #6004 from XairRrR/fix/agc-empty-register-list
fix(agc): write nothing for an empty register list
2026-10-17 03:10:51 +02:00
LeandroLP23andClaude Opus 5.5 050f10053c test(agc): shut libc down before agc_shader_helpers returns
On Windows, agc_shader_helpers returned from main with the driver's
threads still running. ExitProcess ends them first, then the DLLs'
static destructors run and wait on what those threads left locked:
the async log's queue mutex in Driver::stop, DeviceUseGate's condition
variable in ~Driver, and condition variables in libkernel's statics.
The test hung after printing its result in about one ctest run of
three on a Radeon 860M (#6791).

Like the other driver tests, it now runs LibcRunShutdown_nid_postfix
before returning, which stops the driver while its threads are alive.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 20:56:41 +02:00
JJenkx 522696d1ce fix(agc): retain front-half offchip LDS enable during shader fusion 2026-10-15 21:42:43 -04:00
Adrià ab88420409 Merge pull request #5845 from pushkarreddyy/feat/libSceAgc-default-cx-state-flat
feat(libSceAgc): implement sceAgcGetDefaultCxStateFlat
2026-10-15 23:00:59 +02:00
Adrià 8b99f0177c Merge pull request #5848 from wachi35676/refactor/libSceAgc-name-interpolant-mapping-10000
refactor(agc): name dbOlWdppb4o and vieBRwlh1Lw the _10000 interpolant mappings
2026-10-15 23:00:46 +02:00
Adrià Franch 6ebab0e73b test(libSceAgc): declare the invalid-argument constant, restore the register defaults version checks 2026-10-15 15:36:49 +02:00
pushkarreddyy fd90df41b6 feat(libSceAgc): implement sceAgcGetDefaultCxStateFlat 2026-10-15 15:36:43 +02:00
Yossi Yadgar 52e288ef43 test(libSceAgc): find the MRT0 colour-target defaults the way a title does
Reads the root at its byte offsets, walks the type table as key and
bank-index pairs and checks that the MRT0 key leads to the sixteen
colour-target registers: block 78 of the table sceAgcGetRegisterDefaults
returns, block 73 of version 10, and a valid block in every version from
4. Fails on the compact entries and on the version 0 legacy table.
2026-10-15 11:04:32 +03:00
Yossi Yadgar dce1573ea0 fix(libSceAgc): return the newest public register defaults from sceAgcGetRegisterDefaults
The legacy call takes no version and answered with the version 0 table.
On a console it returns the running system software's table: 128 keyed
entries over 79 context blocks on 10.x and 137 over 84 on 12.02 and 13.x,
as ps5-vulkan measured and relies on. Version 0 holds 150 entries and its
MRT0 block starts at 0x318 followed by 0x319, so PPSA99011 refused it
even with the types fixed. Return the version 13 table, which is the
137-entry one.
2026-10-15 11:03:41 +03:00
Yossi Yadgar f7750c7769 fix(libSceAgc): hand out register-default types as key and bank-index pairs
The defaults root exposed the compact 12-byte type entries, whose second
word also packs each block's register count and stride above bit 10.
Titles read the type table as 8-byte {key, index << 2 | bank} pairs, so
PS5 FSR4 Showcase (PPSA99011) found the MRT0 key at index 529482 and
refused to build its compose pass. Build the pairs once per table and
check that every index lies inside its bank.
2026-10-15 11:03:12 +03:00
XairRrR f991052cfd test(agc): an empty register list into a null buffer still throws
AI-assisted: yes
2026-10-15 02:54:50 +02:00
MarcZX100 7918cfc49a fix(libSceAgc): reserve complete atomic GDS packets 2026-10-14 23:21:34 +00:00
Dean 95945006ec Merge pull request #4629 from mugurc/fix/libcxx-portability
fix(libs): build with libc++
2026-10-15 10:46:05 +13:00
XairRrR cf914b5102 fix(agc): write nothing for an empty register list
sceAgcCbSetShRegistersDirect and the other register list writers threw on
a count of 0 although the matching size functions report 0 words for it.
PPSA05684 calls the writer with an empty list at its main menu and
terminated. An empty list now writes no packet and returns the cursor,
as its size says; a null buffer still throws.

AI-assisted: yes
2026-10-14 20:50:00 +02:00
Adrià 456ce66bb0 Merge pull request #5163 from mazen320/fix/agc-init-fallback-out-of-range
fix(agc): return 0 for out-of-range sceAgcInit without table lookup
2026-10-14 20:35:43 +02:00
Adrià 0b1304896d Merge pull request #5023 from fdfawef324/fix/agc-shader-prep-wait
fix(agc): settle registration preparations before a preparation scope locks
2026-10-14 19:53:34 +02:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 a0fc988a53 refactor(agc): name dbOlWdppb4o and vieBRwlh1Lw the _10000 interpolant mappings
The names hash to the NIDs dbOlWdppb4o and vieBRwlh1Lw that the exports
carried as sceAgcUnknownCreateInterpolantMapping and
sceAgcUnknown_vieBRwlh1Lw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 18:44:16 +05:00
Maz eb1b9eca96 fix(agc): return 0 for out-of-range sceAgcInit without table lookup
Pointer-shaped calls match the #4808 console probe (success, no writes); selecting table 13 for those values was unsupported.
2026-10-14 11:38:52 +04:00
mazen 4832bd825c fix(agc): clamp sceAgcInit versions above 13 inline 2026-10-14 11:30:49 +04:00
mazen 9d412df7b5 fix(agc): fall back out-of-range sceAgcInit versions to table 13
Pointer-shaped NID kW3GLb7QfPg calls from public homebrew succeed on console; returning an error left those titles failing init after #4835.
2026-10-14 11:30:49 +04:00
Dean 107190d11d Merge pull request #5573 from fma-rc/fix/agc-fuse-halves-scratch
fix(agc): keep fused geometry programs out of the caller's memory
2026-10-14 19:25:23 +13:00