metal: fix clampzero wrap mode.

This commit is contained in:
Alex Szpakowski
2021-04-04 23:48:23 -03:00
parent 2ec9f88f7a
commit 6296e44425
+10 -2
View File
@@ -643,6 +643,11 @@ void Graphics::submitBlitEncoder()
} }
} }
static bool isClampOne(SamplerState::WrapMode w)
{
return w == SamplerState::WRAP_CLAMP_ONE;
}
id<MTLSamplerState> Graphics::getCachedSampler(const SamplerState &s) id<MTLSamplerState> Graphics::getCachedSampler(const SamplerState &s)
{ @autoreleasepool { { @autoreleasepool {
uint64 key = s.toKey(); uint64 key = s.toKey();
@@ -662,8 +667,11 @@ id<MTLSamplerState> Graphics::getCachedSampler(const SamplerState &s)
desc.tAddressMode = getMTLSamplerAddressMode(s.wrapV); desc.tAddressMode = getMTLSamplerAddressMode(s.wrapV);
desc.rAddressMode = getMTLSamplerAddressMode(s.wrapW); desc.rAddressMode = getMTLSamplerAddressMode(s.wrapW);
if (@available(macOS 10.12, iOS 10.14, *)) if (isClampOne(s.wrapU) || isClampOne(s.wrapV) || isClampOne(s.wrapW))
desc.borderColor = MTLSamplerBorderColorOpaqueWhite; {
if (@available(macOS 10.12, iOS 10.14, *))
desc.borderColor = MTLSamplerBorderColorOpaqueWhite;
}
desc.lodMinClamp = s.minLod; desc.lodMinClamp = s.minLod;
desc.lodMaxClamp = s.maxLod; desc.lodMaxClamp = s.maxLod;