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

Roadmap #281

Open
kainino0x opened this issue Mar 7, 2024 · 6 comments
Open

Roadmap #281

kainino0x opened this issue Mar 7, 2024 · 6 comments
Labels
non-breaking Does not require a breaking change (that would block V1.0)

Comments

@kainino0x
Copy link
Collaborator

kainino0x commented Mar 7, 2024

The roadmap right now is basically just "get to an API-stable 1.0".

API stability probably won't officially come until we have compliant implementations in both Dawn and wgpu-native (and ideally tests). Once we have one complete implementation it'll be "probably stable".

Once we get to API stability we should have at least everything that's in the JS spec at the time of filing this issue (including things that got added after WebGPU shipped in Chrome, like rendering to a depthSlice, and the optional feature for unclippedDepth).

Eventually we expect there will be a demand for ABI stability so that libwebgpu_dawn.so and libwebgpu_wgpu.so can be interchangeable. But that will be later.


EDIT: An approximate finer breakdown:

@kainino0x kainino0x added the non-breaking Does not require a breaking change (that would block V1.0) label Mar 7, 2024
@kainino0x
Copy link
Collaborator Author

API stability probably won't officially come until we have compliant implementations in both Dawn and wgpu-native (and ideally tests). Once we have one complete implementation it'll be "probably stable".

In Dawn's case we might still have unstable additions in the header file - depends on whether we split those into another header.

The list of things that need to be done still is here:

Right now, most of these have been discussed, and we have a resolution on them, but they're not implemented. We have a lot of implementation work to do. New small things keep coming up on the design side, but the majority of the work is implementation.

@kainino0x kainino0x pinned this issue Mar 7, 2024
@kainino0x
Copy link
Collaborator Author

Posted a finer breakdown in the top comment.

@eliemichel
Copy link
Collaborator

eliemichel commented Mar 10, 2024

In Dawn's case we might still have unstable additions in the header file - depends on whether we split those into another header.

I'm not aware of all the technical choices involved here, but imho in terms of documentation an lisibility for the end user of WebGPU I think it'd be great to have one and only one webgpu.h that is always the same, and put all implementation specific extensions in a separate header (like wgpu-native does in wgpu.h).

It is quite misleading that the same header may contain different things depending on circumstances and could lead to misunderstanding from people who'd like to start by "just" using WebGPU without first spending time learning about the genesis and existence of multiple backends, etc.

BTW this makes me think we should also ideally have the webgpu.h define some variables to advertise its version, because having different version would remain the only reason to end up with 2 webgpu.h files that have different content. And if we'd like to still allow backends to customize their webgpu.h then maybe we should standardize some WEBGPU_IMPLEMENTATION macro that'd be used to write code that is robust to a switch from one implem to another one.

@kainino0x
Copy link
Collaborator Author

I'm not aware of all the technical choices involved here, but imho in terms of documentation an lisibility for the end user of WebGPU I think it'd be great to have one and only one webgpu.h that is always the same, and put all implementation specific extensions in a separate header (like wgpu-native does in wgpu.h).

Yes, I think so too. TBD though, and it if does happen, it may not happen until after this upstream header is declared stabilized. (IMO Dawn can be considered "out of spec" until we do this.)

@kainino0x
Copy link
Collaborator Author

^ discussed further in #460

@kainino0x
Copy link
Collaborator Author

kainino0x commented Dec 19, 2024

Dec 19 meeting:

  • Updates
    • KN: Very few changes to make after last few meetings because mostly closed things. However there are a few docs to write (in addition to various other docs we still need to write) and I haven't gotten to them just yet. I have gone over the open issues though and I don't think I'm likely to find any more big things to discuss. We are very nearly stable! I plan to:
      • Add docs for everything in "needs docs" to find any missing details
      • Review all of the things labeled "non-breaking" to make sure they really are
  • Discussion: Tagging a "release candidate"
    • > If any of the try-for-v1 things gets standardized very soon in W3C (TBH unlikely), should we add them even after release candidate? Adding things to structs unfortunately still commonly causes breakage.
      • (Forgot to discuss this but it's not important, can discuss it if it actually comes to pass)
    • > Should someone from wgpu do a pass over the whole header?
    • KN: What should we do in order to call something a release candidate? We also haven’t finished implementing it on our side, so probably wait until we finish an implementation to call it?
    • CF: Unlikely to find any problem just scrolling through, probably would need to start implementing.
    • KN: Dawn-side is pretty far along, but still some migrations and stuff necessary. We won’t be sure about the release candidate until we finish. We don’t need to officially tag a candidate, but we should say that this is the target?
    • CF: Doubts there will be any time to work on the implementation on wgpu side. Also not sure if @rajveermalviya is around to work on it? Probably just needs work, and shouldn’t be too big a problem, though wgpu might need some refactor to make it work.
      • Dawn will probably run into most things first if anything.
    • KN: If anyone on wgpu native side is interested in implementing, would be nice. Is there a tracking bug on wgpu native to match webgpu.h?
    • CF: Likely to exist? But probably not updated?
    • KN: Found a bug for wgpu-on-webgpu.h but didn't find one for making wgpu-native conform to webgpu.h.
  • aside: why wgpu-on-webgpu.h?
    • CF: I closed the wgpu bug about that, don't think it will happen. Would be interesting for performance comparison though.
    • (Discussion of relative performance)
      • Barrier generation
      • Dawn surprisingly fast when skipping validation. How we skip validation
      • Refcounting overhead
      • wgpu has asserts that fire if (debug build || firefox)
    • CF will be working on d3d12 sampler heap idea using bindless (contrast with the approach 11on12 and dawn use of just-in-time heap re-allocation)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
non-breaking Does not require a breaking change (that would block V1.0)
Projects
None yet
Development

No branches or pull requests

2 participants