Those tests are meant to check that each single sample computes the
right value during a multi-sampled rendering operation. Checking whether
the result is correct after multi-sample resolution isn't enough,
because errors at different samples belonging to the same pixel might
have cancelled out.
Instead, for each shader invocation we compute the expected result and
return the absolute value of the difference between the expected and
computed value. This way errors at different samples cannot cancel out,
but add up.
That program is only meant to be used in the specific context of the CI,
so we don't care about querying the terminal or honouring environment
variables.
The swizzle from vsir_swizzle_from_writemask() is for use with a
contiguous write mask starting at bit zero, but we need the final write
mask to match that of the original MAD instruction.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58746
This achieves two things:
- The GLSL backend no longer needs to handle this by itself. Likwise, the
MSL backend won't have to either.
- We no longer handle division by zero for DXIL UDiv and URem instructions,
which leave this undefined.
Mostly to be able to associate a version number to each tag and
get rid of all the foo<1.2.3 tags. The new system also has fixed
tag slots, rather than dealing with strings, so we don't have to
manually adjust the size of the `tags' array.
With the new system each tag can be present or not, and if it is
present it can have an associated version number (of the form
major.minor.patch). If the version is not available, it is set to
0.0.0. Each tag can be queried for existence and for comparison
with the version number.