Commit Graph

2338 Commits

Author SHA1 Message Date
ebosido444-ai c48e01977d feat(shader): implement s_swappc_b64 fetch-shader call
Decodes SOP1 0x21 s_swappc_b64 (link pair = pc + 4) and resolves its call/return pairing through the existing s_setpc_b64 path: static call regions in GraphBuilder and the vertex-entry fetch-shader call inlined from the parsed fetch-shader plan. s_call_b64 (SOPK 0x16) and s_rfe_b64 (SOP1 0x22) throw at decode. Unmodeled cases throw; see docs/dev/TechnicalDebt.md.
2026-10-08 20:05:24 +02:00
boykopovar 239412351e
Merge pull request #639 from boykopovar/feat/no-ingame-shaders-recomp
perf(agc): baseline shader recompilation on registration
In main, baseline recompilation depends on the resource configuration and runs on the first use of each corresponding variant.

This branch prepares IR, the static interface, baseline SPIR-V, and available ABI variants during shader registration. The compiled artifact is separate from per-draw and per-dispatch data.

Before the first execution with a new resource configuration, the runtime reads descriptors, validates compatibility, prepares the binding plan, specializes existing SPIR-V by substituting constants and removing unused branches and computations, materializes invocation data, and creates the Vulkan pipeline. These results are cached.

Variants that depend on linked graphics stages are prepared when the corresponding ABI is resolved. Unregistered compute shaders undergo baseline preparation on their first dispatch, emit an error log, and cache the result.

Subsequent executions reuse prepared artifacts, specializations, and pipelines while updating invocation data and resources as needed.
2026-10-08 20:45:54 +03:00
Adrià Franch beaaa4de18 test(agc): run agc_driver_flat_store alone
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-08 19:28:29 +02:00
Adrià 17350cf5fd
Merge pull request #895 from Kikoarl/feat/s-call-b64
feat(shader): implement S_CALL_B64
2026-10-08 19:24:59 +02:00
boykopovar 7ac08cbac4 fix(shader): declare required invocation inputs and correct derivative test dimensions 2026-10-08 20:24:58 +03:00
boykopovar 8b15d88839 fix(shader): use guest wave lane for ADD_TID on narrow subgroups 2026-10-08 19:48:08 +03:00
boykopovar 199eeb1805 fix(shader): preserve structured exits during SPIR-V specialization 2026-10-08 19:19:50 +03:00
boykopovar 2767da6a8a fix(tests): check Vulkan availability before shader registration 2026-10-08 19:09:13 +03:00
boykopovar 2da24e8a62 fix(tests): keep bindless image selection within one host subgroup 2026-10-08 19:04:45 +03:00
boykopovar 6741e90a1c fix(shader): restore prepared image compatibility and update regression fixtures 2026-10-08 18:32:12 +03:00
boykopovar 0fa7114e93 fix(tests): correct raw buffer bounds in DCC many-buffer and interlock tests 2026-10-08 18:24:15 +03:00
boykopovar d0a62b7ba0 fix(tests): correct raw buffer bounds modes in image tests 2026-10-08 18:21:50 +03:00
boykopovar 381d12b3b4 fix(tests): correct buffer bounds modes in GDS LDS and scalar tests 2026-10-08 18:20:08 +03:00
boykopovar bae0aed3bf fix(driver): adapt shader preparation to updated main apis 2026-10-08 18:12:47 +03:00
boykopovar eb68ad3b02 fix(shader): preserve main buffer alignment and image formats in prepared shaders 2026-10-08 17:51:05 +03: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
boykopovar 082f371758 fix(shader): correct emulated color comparison specialization 2026-10-08 17:40:12 +03:00
boykopovar 4b5a395219 fix(shader): correct msaa sample addressing and prepared test failure cleanup 2026-10-08 17:40:10 +03:00
boykopovar 6a4c5b5ded fix(shader): support non-array image views and packed unorm runtime modes 2026-10-08 17:38:11 +03:00
boykopovar e5cd1c6079 test(font): avoid deleting an open system font on windows 2026-10-08 17:37:40 +03:00
boykopovar 1b3da3a740 test(agc): update graphics binding and bda range checks 2026-10-08 17:37:40 +03:00
boykopovar c3e6727163 fix(agc): prune expired rectangle preparation links 2026-10-08 17:37:39 +03:00
boykopovar 6acf4ee0ee test(agc): isolate shader linking and interpolant preparation checks 2026-10-08 17:37:38 +03:00
boykopovar 1f8a7e0b94 test(shader): align specialization checks with runtime abi 2026-10-08 17:37:37 +03:00
boykopovar 19ede29259 test(agc): fix mrt export index and vertex fetch abi checks 2026-10-08 17:37:36 +03:00
boykopovar 8c4e0b1524 fix(shader): propagate binding plan initialization failures outside call_once 2026-10-08 17:37:35 +03:00
boykopovar 6ac7fbc5a4 fix(agc): stop profile writer before DLL teardown 2026-10-08 17:37:34 +03:00
boykopovar 416e284a31 fix(tests): align prepared shader checks with raw compute caching 2026-10-08 17:37:33 +03:00
boykopovar 92fcdbb1f7 fix(tests): correct buffer OOB modes in image and BVH tests 2026-10-08 17:37:33 +03:00
boykopovar fa2df2e2ff fix(tests): correct buffer descriptors in memory and wave execution tests 2026-10-08 17:37:32 +03:00
boykopovar 49f36309bf fix(tests): correct buffer OOB modes in half, FMA and packed arithmetic tests 2026-10-08 17:37:31 +03:00
boykopovar 9e7aad07c8 fix(tests): correct buffer OOB modes in F32, F64 and division tests 2026-10-08 17:37:30 +03:00
boykopovar 972122bcef fix(tests): correct buffer OOB modes in VOP and SDWA tests 2026-10-08 17:37:29 +03:00
boykopovar d2c6546124 fix(tests): correct buffer OOB modes in DPP, DS, LDS and scalar tests 2026-10-08 17:37:28 +03:00
boykopovar 0cd9650100 fix(shader): initialize null pixel shader registration state 2026-10-08 17:37:27 +03:00
boykopovar 2d93308780 fix(shader): preserve main behavior in cached specialization 2026-10-08 17:37:25 +03: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
boykopovar 7fc7372274 perf(shader): cache registered state + reduce preparation transaction overhead 2026-10-08 17:37:03 +03: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
boykopovar 2441bd265d perf(log): write frame timings async to a buffered file 2026-10-08 17:29:49 +03:00
boykopovar 2ec144d4d3 perf(shader): avoid redundant resource validation + eliminate dead spirv computations 2026-10-08 17:29:48 +03:00
boykopovar 702bc73954 perf(shader): precompute binding metadata and populate only live descriptors 2026-10-08 17:29:45 +03:00
boykopovar 26dab1fb43 perf(shader): cache binding plans and deduplicate spirv materialization 2026-10-08 17:29:22 +03:00
boykopovar aad742169b perf(shader): reuse prepared state and build lookup keys once 2026-10-08 17:29:20 +03:00
boykopovar ed0b89e042 fix(shader): relocate prepared push constants across graphics stages 2026-10-08 17:29:19 +03:00
boykopovar 746bfa2a20 fix(shader): materialize prepared shaders without spirv-tools 2026-10-08 17:29:18 +03:00
boykopovar 05fa426112 perf(shader): eliminate prepared-path overhead in data, descriptors, dispatch, bda 2026-10-08 17:29:17 +03:00
boykopovar 7431e5a6e1 perf(shader): restore prepared vertex inputs + harden buffer specialization 2026-10-08 17:28:55 +03: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
boykopovar 7f56e04157 fix(shader): validate and serialize pipeline specialization constants (wip) 2026-10-08 17:28:35 +03:00