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

Javelin requirements #114

Closed
kvark opened this issue Oct 8, 2019 · 3 comments
Closed

Javelin requirements #114

kvark opened this issue Oct 8, 2019 · 3 comments

Comments

@kvark
Copy link
Member

kvark commented Oct 8, 2019

Javelin is the project of gfx-rs to get the shader translation done in pure Rust, announced on the blog some time ago. We want to implement it using the Structured Representation of #5 . Here is a rough list of use cases we need rspirv to support:

  1. Load an SPIR-V module and valide that it's valid, gracefully error handling invalid modules
  2. Inspect and modify the bindings (e.g. split combined image-samplers)
  3. Inspect and modify the global variables (e.g. poor man's specialization)
  4. Analyze the uniform-ity of the control flow within any scope
  5. Perform generic optimization passes
  6. Insert bound checks on SSBO and image access
  7. Save result SPIR-V module from the modified SR
  8. Generate shaders in other languages, both textual and binary
@antiagainst
Copy link
Collaborator

Nice! Thanks for writing this down, @kvark! It is much clear this way for everyone to understand the use cases we are driving for. We can use this as a master issue for other tasks and we might want to use GitHub Projects to organize certain tasks.

@antiagainst
Copy link
Collaborator

I think as discussed previously, most of the tasks here are depending on a good structured representation and general infrastructure for analysis/transforrmation passes, execpt for 1), which right now we have a working solution. The existing parser and data representation was designed to provide good error handling (w.r.t. which word is problematic, etc.) but it completely ignores debug information (OpLine, OpNoLine, etc.) and that's something should be fixed to provide even better error reporting experience. However, I think this is something we can defer until we get the structured representation and general pass infrastructure ready and have at least one example working e2e.

@Jasper-Bekkers
Copy link
Collaborator

@kvark @antiagainst now that this development has moved to naga, can we close this?

@kvark kvark closed this as completed Aug 19, 2020
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

No branches or pull requests

3 participants