-
Notifications
You must be signed in to change notification settings - Fork 475
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
Enumerant validity rules seem incorrect #2077
Comments
Finally:
Yea I made the same observation - there's a couple reasons I didn't go down that route though. 1 is that although there's a lot of overlap with other versioned parts, there are actual differences in a handful of cases that are in the minutaie. Trying to tease that out is a pain without writing them down independently first. The other more immediately practical reason is that I didn't want to have to rewrite that entire section as part of this very deliberately more targeted change. A rewrite of that section isn't off the table, it's just not a priority for now. I'll raise a PR for all of this so you can see what it looks like. |
ad 2: There is: ad 4: That would be nice, but does not technically fix it. Nothing can be "reported via ad 6: Yea ok, but still couldn't hurt to explicitly say "or" even if there are 3+ items. As it is it could be incorrectly read as "(sentence A, and sentence B), or sentence C)". ad 7: IDK, this is not OpenGL; there is no "current instance". While this case is not unclear it is about the mindset\language-style when writing a specification. I would let it go if the alternative was particularly burdensome, but this just needs "the instance parent of the physical device" ad 11: Same, except "the device implied by the dispatchable parameter" ad 12: Yea, I would be perfectly happy if it said in can return anything (except probably BTW there seems to be a Note refering to this below. But the note seem confused. It seems to me primarily a matter of whether the driver should bother filtering out outputs from non-enabled extensions or not, given the app can just ignore things it does not understand. Unlike what the Note communicates: Layers can generally act outside the spec (though should not unless it is in their contract with the user), and if driver has "hidden extensions" (whatever that means), then such implementation details should be opaque to users.
I am not really cognizant of any (so duplicating this language probably does not do its job to emphasize the diffs). What are those differences over, say, |
1
Sentence feels confusing. Probably means "any argument". Even so the sentence feels weirdly formed; it misses verbs or something and partly redundant to the next sentence, and the "of that type" seem partly redundant to the first bullet point.
2
Rules do not cover functions without dispatchable handle, such as
vkCreateInstance
. This impacts use ofVK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR
, enumerants usable in thepNext
chain, and potential new enumerants in theVkAllocationCallbacks
structure.3
The "¹" points nowhere now.
4
That is slightly incorrect. Many enumerants were added by core version 1.0, and such version cannot be queried by
vkEnumerateInstanceVersion
. There seem to be a Querying Version Support chapter, so I suggest linking to that, and improving that chapter.5
This seem incorrect for
vkCreateDevice
(something like #1540).BTW, I think functions in Vulkan are generally called "commands".
6
missing "or"
It seems insufficient, and contradictory to the Valid Usage for Newer Core Versions, which says:
7
Probably should be explicit which "the instance".
8
Should say "physical device".
This seems incompatible with Vulkan 1.0 without
VK_KHR_get_physical_device_properties2
, which only permit use of enumerants added by instance extensions. Not sure if all extensions list these as dependency. Hypothetically, there could be an extension where use of its physical-device level commands is non-essential, therefore it does not list these dependencies.9
Brittle in case there is ever an instance-level handle added.
10
same as 6
11
Should say which device, similarly to 7. Since we have not even mentioned any device earlier, there is no "the device".
12
This is slightly confusing, since enumerants are being added all the time. It is not clear which values exactly are reserved at any given time. Based on the latest publicly released spec? Or in the patch version the driver reports (if it reports it)?
Most of it feels highly repetitive, and I feel the Valid Usage for Extensions and Valid Usage for Newer Core Versions sections should do the heavy lifting here. The same rules will apply for all the other non-enum entities too.
The text was updated successfully, but these errors were encountered: