Skip to content

Commit e4430ce

Browse files
committed
Enable sampler lod bias for Xcode 26.
1 parent 48d5cfb commit e4430ce

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,11 @@
614614
portabilityFeatures->multisampleArrayImage = _metalFeatures.multisampleArrayTextures;
615615
portabilityFeatures->mutableComparisonSamplers = _metalFeatures.depthSampleCompare;
616616
portabilityFeatures->pointPolygons = false;
617+
#if MVK_XCODE_26
618+
portabilityFeatures->samplerMipLodBias = true;
619+
#else
617620
portabilityFeatures->samplerMipLodBias = getMVKConfig().useMetalPrivateAPI;
621+
#endif
618622
portabilityFeatures->separateStencilMaskRef = true;
619623
portabilityFeatures->shaderSampleRateInterpolationFunctions = _metalFeatures.pullModelInterpolation;
620624
portabilityFeatures->tessellationIsolines = false;
@@ -3185,10 +3189,7 @@
31853189

31863190
_properties.limits.maxImageDimension3D = _metalFeatures.maxTextureLayers;
31873191
_properties.limits.maxImageArrayLayers = _metalFeatures.maxTextureLayers;
3188-
// Max sum of API and shader values. Bias not publicly supported in API, but can be applied in the shader directly.
3189-
// The lack of API value is covered by VkPhysicalDevicePortabilitySubsetFeaturesKHR::samplerMipLodBias.
3190-
// Metal does not specify a limit for the shader value, so choose something reasonable.
3191-
_properties.limits.maxSamplerLodBias = 16;
3192+
_properties.limits.maxSamplerLodBias = 15.999;
31923193
_properties.limits.maxSamplerAnisotropy = 16;
31933194

31943195
_properties.limits.maxVertexInputAttributes = 31;

MoltenVK/MoltenVK/GPUObjects/MVKImage.mm

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2535,7 +2535,9 @@ static MSLSamplerYCbCrRange getSpvSamplerYcbcrRangeFromVkSamplerYcbcrRange(VkSam
25352535
mtlSampDesc.mipFilter = (pCreateInfo->unnormalizedCoordinates
25362536
? MTLSamplerMipFilterNotMipmapped
25372537
: mvkMTLSamplerMipFilterFromVkSamplerMipmapMode(pCreateInfo->mipmapMode));
2538-
#if MVK_USE_METAL_PRIVATE_API
2538+
#if MVK_XCODE_26
2539+
mtlSampDesc.lodBiasMVK = pCreateInfo->mipLodBias;
2540+
#elif MVK_USE_METAL_PRIVATE_API
25392541
if (getMVKConfig().useMetalPrivateAPI) {
25402542
mtlSampDesc.lodBiasMVK = pCreateInfo->mipLodBias;
25412543
}

MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include "MVKCommonEnvironment.h"
2222

2323

24-
#if MVK_USE_METAL_PRIVATE_API
24+
#if MVK_USE_METAL_PRIVATE_API && !MVK_XCODE_26
2525
/** Additional methods not necessarily declared in <Metal/MTLSampler.h>. */
2626
@interface MTLSamplerDescriptor ()
2727

@@ -55,14 +55,14 @@ -(void) setBorderColorMVK: (NSUInteger) color {
5555
}
5656

5757
-(float) lodBiasMVK {
58-
#if MVK_USE_METAL_PRIVATE_API
58+
#if MVK_USE_METAL_PRIVATE_API || MVK_XCODE_26
5959
if ( [self respondsToSelector: @selector(lodBias)] ) { return self.lodBias; }
6060
#endif
6161
return 0.0f;
6262
}
6363

6464
-(void) setLodBiasMVK: (float) bias {
65-
#if MVK_USE_METAL_PRIVATE_API
65+
#if MVK_USE_METAL_PRIVATE_API || MVK_XCODE_26
6666
if ( [self respondsToSelector: @selector(setLodBias:)] ) { self.lodBias = bias; }
6767
#endif
6868
}

0 commit comments

Comments
 (0)