KhronosGroup / KhronosGroup/SPIRV-Registry
Better define externally visible shader Storage Classes (OpTypeBool)
- Dominant language
- HTML
- Stars
- 149
- Forks
- 99
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 2
Description
tl;dr - It would be nice to have a more consistent knowledge where `OpTypeBool` are allowed
-----
in `OpTypeBool` it says
> only with non-externally visible shader [Storage Classes](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#Storage_Class): Workgroup, CrossWorkgroup, Private, Function, Input, and Output.
but other Storage Classes such as `Generic`, `CallableDataKHR`, etc would also be "non-externally visible"
Also it seems that according to `spirv-val` the `BuiltIn` decoration also matters if it is "external", but I can't find that wording anywhere in the spec
Last thing, It also says
> they must only be used with logical addressing operations, not physical
but is that suppose to just mean anything without `OpMemoryModel Logical` as the spec doesn't define any `operations` that are logical, just the model
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the OpTypeBool section of the linked SPIR-V specification and compare its Storage Class wording with Generic, CallableDataKHR, and the other cases raised here. Check spirv-val behavior around BuiltIn decorations and compare the logical-addressing statement with OpMemoryModel Logical. Done means the specification clearly defines externally visible cases, BuiltIn implications, and what logical operations means.
Written by the indexing model from the issue text.
Assessment
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100