MVKBuffer: Force managed storage for linear textures on shared buffers.
Shared storage on textures is disallowed on macOS.
Fixes #573.
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
index 6d6f1dc..c022e2a 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
@@ -142,7 +142,16 @@
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;
mtlTexDesc.usage = MTLTextureUsageShaderRead;
if ( mvkIsAnyFlagEnabled(_buffer->getUsage(), VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) ) {