-
Notifications
You must be signed in to change notification settings - Fork 244
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
Capability computation UX #42
Comments
I really like the system that @XAMPPRocky came up with, although there's a chunk of bikeshedding left to do. The system goes something roughly like this:
This prevents issues like #468 being extremely confusing - if you accidentally use some function (in the case of #468, deep within a library) that Bikesheddy questions:
|
For declaring capabilities I was thinking more about it and I think it could be good if we attached the declaring of capabilities to entrypoint functions. That way if you use #[spirv(fragment)]
#[spirv(capabilities(kernel))]
pub fn main() {} |
Hmm, in the SPIR-V, they're part of the module, not entry point, so there's potentially weird cases. For example:
but that's a pretty esoteric weird case that's easily resolved, and I think I agree with you that declaring them on the entry point would be the way to go (it also handily solves the "what if a library does |
Design and implement what I've been calling "capability computation":
-C target-feature
temp hack.Note validation is surprisingly complex, e.g. some capabilities say "you can't opbitcast this particular type to that particular type", it's not just simple "this instruction is/isn't allowed" rules.
@Jasper-Bekkers is working on part 2 right now.The text was updated successfully, but these errors were encountered: