Repository navigation
feat(agc): implement image atomics on 32_SINT and 32_FLOAT surfaces - #659
Merged
oneandonlydean merged 1 commit intoOct 5, 2026
Merged
oneandonlydean merged 1 commit into
oneandonlydean merged 1 commit into
Conversation
9 tasks done
9 tasks done
|
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.
|
The resource materializer refused every atomic image descriptor whose format was not 32_UINT. RDNA2 image atomics act on the raw dword and the numeric format only affects addressing, so 32_SINT and 32_FLOAT surfaces are now accepted with the Uint numeric class and run through the existing integer atomics and float compare-exchange loops. Other formats still throw, and the message now names the format. DescriptorBinding gains imageAtomic, carried through the shader disk cache (format version 4) and the resource content key. The driver binds those elements through a cached R32_UINT view of R32_SINT and R32_SFLOAT storage images. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Celegans12
force-pushed
the
feat/agc-image-atomics-32bit-formats
branch
from
October 5, 2026 15:51
a453de4 to
73c68c0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Recompiling a shader with an image atomic on any surface but 32_UINT throws (
atomic image descriptor uses an unsupported format).image_atomic_fmin/fmax/fcmpswap) are reused.DescriptorBindinggainsimageAtomic, stored in the shader disk cache (format version 4) and the resource content key.OpAtomicFMinEXT/OpAtomicFMaxEXTis not used: its -0/+0 and sNaN results may differ from RDNA2, and NVIDIA 610.62 lacksshaderImageFloat32AtomicMinMax.image_atomic_fmaxon a 960x540 32_FLOAT surface.ShaderResources.cpp, the disk cache size asserts andFormatVersion(to 6); whichever merges second keeps both and takes a higher version. feat(agc): multisampled color and depth targets with CB resolves #419 and GTA V: the prologue plays (testing branch of the PRs it needs) #426 add a function directly aboveStorageTexture::createView, a context-only conflict.Tested
main53dc19c: configure-DBUILD_TESTING=ON, full build,--target libs,ctest:ctest --output-on-failure)agc_driver_image_atomicsandagc_driver_image_atomics_floatrepeat every case on 32_SINT and 32_FLOAT surfaces, and the float test requires 16_16 float (format 29) to throw; onmainboth fail at the first 32_SINT case.agc_shader_disk_cacheround-tripsimageAtomic; it does not build onmain.agc_driver_recorder_testsatomicViewTests(run by hand, not part of ctest): the view is reused for each format, and 8_8_8_8 throws.agc_shader_replayof that shader's dumped request throws the message above onmain; with this change it recompiles to an R32ui image with compare-exchange loops.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)