Repository navigation
Description
Reproduction
The new pending-producer fixture passes 3/3 fresh executions on each physical GPU, but Khronos validation reports two errors per process, 12 total:
VUID-vkCmdWaitEvents-srcStageMask-01158
VUID-vkSetEvent-event-09543
Main production: 7a36de66b91217fb00fe6751343506ab01e677b3. Tested control f1a91a8656 differs only in the unrelated OversizedDispatch.cpp regression; this fixture and every production file are identical to main. Fixture blob: d1cc6ec8e0f2acedfeb224f24e3370184cbfeb40.
After a full default and explicit relinker/library/selected-target build with BUILD_TESTING=ON:
$env:ANYPS5_REQUIRE_VULKAN = '1'
$env:ANYPS5_NO_SHADER_CACHE = '1'
$env:ANYPS5_GPU = 'NVIDIA GeForce RTX 5080'
$env:VK_INSTANCE_LAYERS = 'VK_LAYER_KHRONOS_validation'
$env:VK_LAYER_PATH = '<VulkanSDK>/Bin'
ctest --test-dir build -V -j1 --no-tests=error --repeat until-fail:3 --timeout 30 -R '^agc_driver_indirect_arguments_pending_producer$'Repeat with ANYPS5_GPU=AMD Radeon(TM) Graphics. Other inherited APS5_*, ANYPS5_* and VK_* overrides were cleared; the pipeline journal was disabled. Driver caches were uncontrolled.
| Actual GPU | Driver | Behavioral passes | Validation errors |
|---|---|---|---|
| NVIDIA GeForce RTX 5080, 10de:2c02 | 610.62 / 32.0.16.1062 | 3/3 | 6 |
| AMD Radeon(TM) Graphics, 1002:13c0 | 32.0.21036.18 | 3/3 | 6 |
Windows 11 Enterprise 26200, WinLibs GCC 15.2 r7, Release, Khronos 1.4.363 confirmed loaded on each device. No warnings, whole-test skips, timeouts or watchdog releases. Each process still reports pending producer CPU fallback: cpuReason 2.
Cause and scope
ProducerSubmissionGate::Record submits a wait for an unsignaled event with HOST_BIT. Its worker subsequently calls vkSetEvent after observing the later producer submission. Khronos rejects both the event's unsignaled state at submission and the host signal while the wait is pending.
The official vkSetEvent specification requires host signaling before submitting the waiting command buffer; 09543 forbids signaling an event with a pending command-buffer wait. The vkCmdWaitEvents rules describe the corresponding source-stage restriction (01158).
This concerns the test gate introduced in merged #6786, not a demonstrated defect in its production FinishLeaseWork correction or a Sonic/title stop. A replacement gate should preserve the deterministic pending real label, deferred/unsubmitted leased producer, cpuReason == 2, fresh-argument/readback checks and failing watchdog control. Signaling before submission merely to remove the VUIDs would remove the gate's intended condition.
Full logs retained. NVIDIA SHA256: 578baeefe4f8f6eeee7bcfc37fbc982ad21ac7f6c20ecec3ee163465c6af365f; AMD: 58b8183f47204ea4ca8761ce2cd6acb117167ece28f2d7d58cbfb685e5b47520. Searched both exact VUIDs, the fixture name and pending-producer/event reports; no matching open issue/PR found. No implementation proposed or console/performance claim. AI-assisted validation/report: Codex.
Activity