Texture memory requirements don't use shared storage on macOS.

MVKBuffer getMemoryRequirements() ensure texel buffers don't use shared memory.
MVKImage getMemoryRequirements() ensure textures don't use shared memory.
MVKBufferView set MTLTexture storageMode & cpuCacheMode directly from MTLBuffer.
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
index 18da46f..f56cd86 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
@@ -45,6 +45,12 @@
 	pMemoryRequirements->size = getByteCount();
 	pMemoryRequirements->alignment = _byteAlignment;
 	pMemoryRequirements->memoryTypeBits = _device->getPhysicalDevice()->getAllMemoryTypes();
+#if MVK_MACOS
+	// Textures must not use shared memory
+	if (mvkIsAnyFlagEnabled(_usage, VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)) {
+		mvkDisableFlag(pMemoryRequirements->memoryTypeBits, _device->getPhysicalDevice()->getHostCoherentMemoryTypes());
+	}
+#endif
 #if MVK_IOS
 	// Memoryless storage is not allowed for buffers
 	mvkDisableFlag(pMemoryRequirements->memoryTypeBits, _device->getPhysicalDevice()->getLazilyAllocatedMemoryTypes());
@@ -160,17 +166,9 @@
                                                                                               width: _textureSize.width
                                                                                              height: _textureSize.height
                                                                                           mipmapped: NO];
-#if MVK_MACOS
-        // Textures on Mac cannot use shared storage, so force managed.
-        if (_buffer->getMTLBuffer().storageMode == MTLStorageModeShared) {
-            mtlTexDesc.storageMode = MTLStorageModeManaged;
-        } else {
-            mtlTexDesc.storageMode = _buffer->getMTLBuffer().storageMode;
-        }
-#else
-        mtlTexDesc.storageMode = _buffer->getMTLBuffer().storageMode;
-#endif
-        mtlTexDesc.cpuCacheMode = _buffer->getMTLBuffer().cpuCacheMode;
+		id<MTLBuffer> mtlBuff = _buffer->getMTLBuffer();
+		mtlTexDesc.storageMode = mtlBuff.storageMode;
+        mtlTexDesc.cpuCacheMode = mtlBuff.cpuCacheMode;
         mtlTexDesc.usage = MTLTextureUsageShaderRead;
         if ( mvkIsAnyFlagEnabled(_buffer->getUsage(), VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) ) {
             mtlTexDesc.usage |= MTLTextureUsageShaderWrite;
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
index 3c979d7..de49bb3 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
@@ -175,9 +175,8 @@
 										   ? _device->getPhysicalDevice()->getPrivateMemoryTypes()
 										   : _device->getPhysicalDevice()->getAllMemoryTypes());
 #if MVK_MACOS
-	if (!_isLinear) {  // XXX Linear images must support host-coherent memory
-		mvkDisableFlag(pMemoryRequirements->memoryTypeBits, _device->getPhysicalDevice()->getHostCoherentMemoryTypes());
-	}
+	// Textures must not use shared memory
+	mvkDisableFlag(pMemoryRequirements->memoryTypeBits, _device->getPhysicalDevice()->getHostCoherentMemoryTypes());
 #endif
 #if MVK_IOS
 	// Only transient attachments may use memoryless storage