When passing a StorageBuffer pointer to a function, spirv-val says:
“StorageBuffer pointer operand 5[%foo] requires a variable pointers capability”
When passing a Uniform pointer to a function, spirv-val says:
“Invalid storage class for pointer operand 5[%foo]”
Where does it say a Uniform pointer is a variable pointer? I’m passing it from the OpVariable declaration.
- Workgroup (if the VariablePointers capability is declared)
I don’t see anything about Uniform pointers not being Logical. I don’t really see why I shouldn’t be able to pass a StorageBuffer pointer either. How am I supposed to make member functions that take arguments (including “this”) from different storage classes without having these pointers? I’m mean, I’m not involving any of the Variable pointer instructions listed in 2.2.2.