sharpemu/tests/SharpEmu.Libs.Tests/Agc
kuba 531e35b6d5
AGC: deliver compute-queue completion events at the queue fence (#721)
sceAgcDriverSubmitAcb submissions never produced a completion interrupt.
NotifySubmittedDcbCompleted returned early for anything that was not the
graphics queue, so an ACB reaching its ordered-queue fence published
nothing. UE 4.27's dynamic-resolution GPU-timing heuristic parks the game
thread on exactly that interrupt, so the render side never advanced and
Silent Hill: The Short Message deadlocked after its first frame.

Give every queue a CompletionEventId: 0 for graphics (what it already
published) and the owner handle from sceAgcDriverSubmitAcb rdi for a
compute queue, which is the same value the guest passes to
sceAgcDriverAddEqEvent. Publish under that ident from the existing fence
point, which both PumpSubmittedQueue and ResumeSuspendedDcb already reach
only after the submission is fully parsed.

Delivery is synchronous on the ordered guest-action queue rather than on a
ThreadPool hop with a sleep. That action runs after the logical queue has
flushed and waited for its latest fence, which is the moment hardware
would raise end-of-pipe. Deferring past it can only make the interrupt
late and reorder it against registration changes.

Gating: the per-queue completion event is unconditional, because
completion interrupts do fire on real hardware and because delivery is
registration-gated -- TriggerRegisteredEvents only queues onto equeues
that registered this exact (ident, graphics filter) pair, and
sceAgcDriverAddEqEvent is the only producer of graphics registrations. A
title that never registers its ACB owner handle observes no change.
SHARPEMU_AGC_SUBMIT_COMPLETION_EVENT is left to gate only the broad
ident-ignoring fan-out (TriggerRegisteredEventsDistinct), which is a
compatibility guess rather than hardware behavior; it also stays scoped to
the graphics queue where it was measured, so enabling the flag does not
newly fan out across compute queues.
2026-07-31 12:12:43 +03:00
..
AgcCommandBufferChainTests.cs AGC: follow command-buffer branches across arena switches (#720) 2026-07-31 12:12:35 +03:00
AgcEventQueueTests.cs AGC: deliver compute-queue completion events at the queue fence (#721) 2026-07-31 12:12:43 +03:00
AgcFusedShaderTests.cs fix(gta): restore wiped GTA foundation and gameplay path (PPSA04264) (#650) 2026-07-27 01:58:55 +03:00
AgcPredicationTests.cs [VideoOut] Add Bink2 support via FFMPEG bridge (#527) 2026-07-22 21:41:41 +03:00
AgcPrimStateHullVariantTests.cs fix(gta): restore wiped GTA foundation and gameplay path (PPSA04264) (#650) 2026-07-27 01:58:55 +03:00
AgcRectListIndexHelpersTests.cs fix(gta): restore wiped GTA foundation and gameplay path (PPSA04264) (#650) 2026-07-27 01:58:55 +03:00
AgcResourceOwnerTests.cs [VideoOut] Add Bink2 support via FFMPEG bridge (#527) 2026-07-22 21:41:41 +03:00
AgcSubmitCompletionEventTests.cs AGC: deliver compute-queue completion events at the queue fence (#721) 2026-07-31 12:12:43 +03:00
AgcTextureTransportTests.cs fix(gpu): support Gen5 flat memory and 3D images (#587) 2026-07-24 15:44:58 +03:00
AgcVertexMetadataTests.cs fix(gta): restore wiped GTA foundation and gameplay path (PPSA04264) (#650) 2026-07-27 01:58:55 +03:00
AgcWaitRegMemTests.cs [VideoOut] Add Bink2 support via FFMPEG bridge (#527) 2026-07-22 21:41:41 +03:00
DetileComputeSpirvTests.cs feat(gpu): GPU compute detile for guest tiled textures (Vulkan + Metal) (#592) 2026-07-24 20:13:02 +03:00
Gen5FmaMixSpirvTests.cs Shader: lower VOP3P V_FMA_MIX_F32/LO/HI (was dropping Unity HDR shaders) (#466) 2026-07-20 14:37:40 +03:00
Gen5ScalarMemoryFallbackTests.cs [Tests] Isolate Gen5 scalar fallback test from parallel static mutation (#488) 2026-07-21 12:59:03 +03:00
Gen5ShaderAtomicDecodeTests.cs [AGC] Implement RDNA2 buffer/image/DS 32-bit atomic instructions (#222) 2026-07-16 17:28:39 +03:00
Gen5ShaderDecoderBoundaryTests.cs shader: allow larger bounded Gen5 programs (#514) 2026-07-22 14:46:15 +03:00
Gen5ShaderProgramTests.cs perf(shader): cache pixel export masks (#288) 2026-07-17 04:17:39 +03:00
Gen5SpirvAtomicTranslationTests.cs [AGC] Implement RDNA2 buffer/image/DS 32-bit atomic instructions (#222) 2026-07-16 17:28:39 +03:00
Gen5VertexInputSpirvTests.cs fix(gpu): one vertex attribute per guest stream view (#718) 2026-07-31 12:12:26 +03:00
Gen5WaveMaskSpirvTests.cs Shader: test a wave mask consumed as a per-lane predicate at the lane bit (#465) 2026-07-20 14:18:20 +03:00
GnmTilingDetileTests.cs fix(gta): restore wiped GTA foundation and gameplay path (PPSA04264) (#650) 2026-07-27 01:58:55 +03:00