Repository navigation
fix(shader): add the ordered count of a first active lane in the upper wave64 half - #6258
Conversation
…r wave64 half The ordered count's amount was shuffled from the first half's value of the first active lane's host lane, so a wave64 program whose active lanes were all in lanes 32 to 63 added the inactive lane's value from the lower half. Read the amount through the context shuffle, which selects the half the first active guest lane lives in, as v_readfirstlane_b32 does. The GDS test now masks the ordered count to the upper part of each wave, including a wave64 whose first active lane is lane 40, prefills the result register to check that inactive lanes stay untouched, and keeps the M0 cases of the counter addressing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019hfwvntiwabeqdZ6avJssk
DISPATCH_INDIRECT accepts ORDERED_APPEND_ENBL like DISPATCH_DIRECT and still refuses ORDERED_APPEND_MODE. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019hfwvntiwabeqdZ6avJssk
|
Manual overlap review for #6901: its changes to these four files are line endings only. Its copies of |
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Manual overlap review for #5021: in |
|
Intel and AMD Windows data: this fixes the upper-half case on an Intel UHD 770. On an RX 9070 XT the case passes with and without it. Windows 11 Pro 26300, WinLibs GCC 15.2.0 r7, Release, every execution test built,
The RX 9070 XT runs 64-wide subgroups (the UHD 770 runs 32-wide), and there the new case passes without the fix too. So the UHD 770 is the device here that exercises the fixed path. Full CTest ( AI-assisted: yes (Claude Code) |
What
ds_ordered_countis emitted as a device-scope atomic add of one active lane's value. The amount was read with a 32-wide shuffle atfirst & 31, so when the first active lane of a wave64 wave sits in the upper half, the lower half's lane was added instead. The amount now comes from the wave64Shufflehelper, which reads the first active lane in either half.Tests:
agc_driver_gds_append_consumegains ordered runs whose first active lane is in the upper half, with M0 set, and checks that inactive lanes stay untouched and that waves see sorted bases;agc_wave_control_decoderecompiles the ordered code for 32-wide hosts;agc_driver_pm4covers the ordered-append modifiers on indirect dispatches (0x49accepted,0x51refused).Tested
Windows 11 (10.0.22631), RTX PRO 6000 Blackwell, NVIDIA 597.16:
agc_driver_pm4,agc_wave_control_decodeandagc_driver_gds_append_consumepass. Linux, lavapipe:agc_driver_pm4andagc_wave_control_decodepass, the GDS test skips without a device. Code Violet (PPSA26528) gets past its first ordered-append dispatch with this and reaches its title screen together with the other pull requests listed in its bring-up thread.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)