Mipmap sampler in Metal compute kernel (not vertex or fragment shader)
You havent' set the mipFilter property for your samplerDescriptor.  The default value for mipFilter is notMipped which means the sampler will never access anything other than level 0. Set it to nearest or linear.