KhronosGroup / KhronosGroup/SPIRV-Registry

Better define externally visible shader Storage Classes (OpTypeBool)

Open
#161 1 comment 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.