POINT gather (should behave like linear and follow RTE rules)
LINEAR gather
Real world behavior on D3D12 drivers:
No one exposes PointSamplingAddressNeverRoundsUp.
NVIDIA. POINT sample rounds down, but not in gather mode, then it does RTE despite sampler being POINT. Arguably non-conformant, but you can argue that at least 16.8 fixed point is vague enough that NV can pretend to have "infinite" sub-texel bits, but only when point sampling.
AMD / Intel: RTE rounding is always observed for all sampling with 8-bit precision.
Recent WARP build is basically broken. FP errors are outside allowed range, and no rounding happens.
NV / RADV passes on Vulkan. RADV uses no-trunc-coord workarounds, so we disable NeverRoundUp OPTION. This matches behavior of native drivers.
Tests edge case behavior for 4 scenarios:
Real world behavior on D3D12 drivers:
No one exposes PointSamplingAddressNeverRoundsUp.
NVIDIA. POINT sample rounds down, but not in gather mode, then it does RTE despite sampler being POINT. Arguably non-conformant, but you can argue that
at least 16.8 fixed point
is vague enough that NV can pretend to have "infinite" sub-texel bits, but only when point sampling.AMD / Intel: RTE rounding is always observed for all sampling with 8-bit precision.
Recent WARP build is basically broken. FP errors are outside allowed range, and no rounding happens.
NV / RADV passes on Vulkan. RADV uses no-trunc-coord workarounds, so we disable NeverRoundUp OPTION. This matches behavior of native drivers.
amdgpu-pro also passes.