[Mesa-dev] SpvOpSelect w/ float operands
brianp at vmware.com
Tue Nov 17 17:25:05 UTC 2020
Using the Intel Vulkan driver, we've found some cases where SpvOpSelect
is returning -0.0 (negative zeros) instead of normal 0.0 depending on
I'm wondering if "SpvOpSelect x, a, b" for floats is being implemented
with something like "a*x + b*(1-x)" ? That might explain where the
negative zeros are coming from.
Our work-around is to implement selection with bitwise operations: (a &
x) | (b & ~x)
It seems to me that SpvOpSelect shouldn't interpret the bits and just
return an exact copy of the argument.
More information about the mesa-dev