You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The purpose of OpCopyLogical is to convert between layout OpTypeStructs (eg for Uniform and StorageBuffer storage classes) and non-layout OpTypeStructs (eg for Function and Private storage classes). Since OpTypeBool isn't a layout type, layouts need to store these as uint8_t and OpINotEqual to get a bool back out. This should be a supported operation of OpCopyLogical, because without it, it won't actually perform layout<->non-layout conversions in a general way.
The text was updated successfully, but these errors were encountered:
But, it is not formalized in SPIR-V what the physical representation of a Boolean is. E.g., Vulkan uses 32-bit int for storage buffers. I think something needs to remain abstracted here. Or, possibly parameterized, to avoid resorting to member-wise copy when boolean conversions are involved.
OpCopyLogical should do bool<->any integral type. Both types involved in the conversion are explicit, so there's no chance of the operator favoring one boolean representation over another.
The purpose of OpCopyLogical is to convert between layout OpTypeStructs (eg for Uniform and StorageBuffer storage classes) and non-layout OpTypeStructs (eg for Function and Private storage classes). Since OpTypeBool isn't a layout type, layouts need to store these as uint8_t and OpINotEqual to get a bool back out. This should be a supported operation of OpCopyLogical, because without it, it won't actually perform layout<->non-layout conversions in a general way.
The text was updated successfully, but these errors were encountered: