46 MTLSamplerMinMagFilter minMagFilter = [&] {
47 switch (samplerState.
filter()) {
48 case GrSamplerState::Filter::kNearest:
return MTLSamplerMinMagFilterNearest;
49 case GrSamplerState::Filter::kLinear:
return MTLSamplerMinMagFilterLinear;
54 MTLSamplerMipFilter mipFilter = [&] {
56 case GrSamplerState::MipmapMode::kNone:
return MTLSamplerMipFilterNotMipmapped;
57 case GrSamplerState::MipmapMode::kNearest:
return MTLSamplerMipFilterNearest;
58 case GrSamplerState::MipmapMode::kLinear:
return MTLSamplerMipFilterLinear;
63 auto samplerDesc = [[MTLSamplerDescriptor alloc] init];
64 samplerDesc.rAddressMode = MTLSamplerAddressModeClampToEdge;
69 samplerDesc.magFilter = minMagFilter;
70 samplerDesc.minFilter = minMagFilter;
71 samplerDesc.mipFilter = mipFilter;
72 samplerDesc.lodMinClamp = 0.0f;
73 samplerDesc.lodMaxClamp = FLT_MAX;
75 samplerDesc.maxAnisotropy = std::min(samplerState.
maxAniso(), 16);
76 samplerDesc.normalizedCoordinates =
true;
77 if (@available(macOS 10.11, iOS 9.0, tvOS 9.0, *)) {
78 samplerDesc.compareFunction = MTLCompareFunctionNever;