Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

64 bit image atomics #5537

Open
wants to merge 13 commits into
base: trunk
Choose a base branch
from
Open

64 bit image atomics #5537

wants to merge 13 commits into from

Conversation

atlv24
Copy link
Contributor

@atlv24 atlv24 commented Apr 15, 2024

Connections
Part of an incoming series of PRs needed by #5123
Others in this series: #5155 #5154 #5383
Addresses #4424
Depends on #5383
Ultimately for bevy meshlets pipeline bevyengine/bevy#10164

Description
Adds 64 bit image atomics to Vulkan, DirectX, and Metal backends. Emulates using RG32Uint on platforms where R64Uint is not available (directX, metal).

Testing
naga tests and runtime tests are included

Checklist

  • Run cargo fmt.
  • Run cargo clippy. If applicable, add:
    • --target wasm32-unknown-unknown
    • --target wasm32-unknown-emscripten
  • Run cargo xtask test to run tests.
  • Add change to CHANGELOG.md. See simple instructions inside file.

naga/src/back/msl/writer.rs Outdated Show resolved Hide resolved
naga/src/back/spv/image.rs Outdated Show resolved Hide resolved
wgpu-hal/src/metal/conv.rs Outdated Show resolved Hide resolved
naga/src/back/spv/image.rs Outdated Show resolved Hide resolved
tests/tests/image_atomics/mod.rs Show resolved Hide resolved
tests/tests/image_atomics/image_atomics.wgsl Outdated Show resolved Hide resolved
@jimblandy
Copy link
Member

@atlv24 Earlier today you asked me for a suggestion about the texture usages, and a review of the tests. I've posted those now. Is there anything else you need before breaking this up into independent commits for review?

@atlv24
Copy link
Contributor Author

atlv24 commented Oct 2, 2024

@jimblandy I've broken it into independent commits already, thanks for the feedback. I've implemented the texture usage stuff, now im working on the tests. :D

@atlv24 atlv24 force-pushed the ruint64 branch 2 times, most recently from d959757 to ace6c83 Compare October 18, 2024 16:09
Copy link
Member

@cwfitzgerald cwfitzgerald left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at the wgpu side:

What would prevent you from doing atomics on an image without the image atomics flag set?

wgpu-hal/src/dx12/adapter.rs Outdated Show resolved Hide resolved
wgpu/src/backend/webgpu/webgpu_sys/gen_GpuTextureFormat.rs Outdated Show resolved Hide resolved
@atlv24
Copy link
Contributor Author

atlv24 commented Oct 21, 2024

What would prevent you from doing atomics on an image without the image atomics flag set?

The naga validator currently only permits image atomic operations on the r64uint texture format, and only when the feature is available. No provisions were made for other texture formats yet

@cwfitzgerald
Copy link
Member

I mean the texture creation flag - I believe if you don't include the flag on texture creation it'll still you do atomics on it, as those pieces of data never touch each other.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants