WrapMode=3 behaves the same as Clamp

This commit is contained in:
Pokechu22 2021-07-20 12:53:32 -07:00
parent b515786c8d
commit 19332575aa
2 changed files with 4 additions and 1 deletions

View File

@ -713,6 +713,8 @@ enum class WrapMode : u32
Clamp = 0,
Repeat = 1,
Mirror = 2,
// Hardware testing indicates that WrapMode set to 3 behaves the same as clamp, though this is an
// invalid value
};
template <>
struct fmt::formatter<WrapMode> : EnumFormatter<WrapMode::Mirror>

View File

@ -240,8 +240,9 @@ void SamplerState::Generate(const BPMemory& bp, u32 index)
lod_bias = SamplerCommon::AreBpTexMode0MipmapsEnabled(tm0) ? tm0.lod_bias * (256 / 32) : 0;
// Address modes
// Hardware testing indicates that wrap_mode set to 3 behaves the same as clamp.
static constexpr std::array<AddressMode, 4> address_modes = {
{AddressMode::Clamp, AddressMode::Repeat, AddressMode::MirroredRepeat, AddressMode::Repeat}};
{AddressMode::Clamp, AddressMode::Repeat, AddressMode::MirroredRepeat, AddressMode::Clamp}};
wrap_u = address_modes[u32(tm0.wrap_s.Value())];
wrap_v = address_modes[u32(tm0.wrap_t.Value())];
anisotropic_filtering = 0;