Report image layer limits for attachments in vkGetPhysicalDeviceImageFormatProperties().
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index e5c6dec..3d29b61 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -221,21 +221,25 @@
 		return VK_ERROR_FORMAT_NOT_SUPPORTED;
 	}
 
+	bool hasAttachmentUsage = mvkIsAnyFlagEnabled(usage, (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
+														  VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT |
+														  VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT |
+														  VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT));
+
     VkPhysicalDeviceLimits* pLimits = &_properties.limits;
     VkExtent3D maxExt;
-    uint32_t maxLayers;
 	uint32_t maxLevels;
+	uint32_t maxLayers = hasAttachmentUsage ? pLimits->maxFramebufferLayers : pLimits->maxImageArrayLayers;
+
 	VkSampleCountFlags sampleCounts = _metalFeatures.supportedSampleCounts;
     switch (type) {
         case VK_IMAGE_TYPE_1D:
 			// Metal does not allow 1D textures to be used as attachments
-			if (mvkIsAnyFlagEnabled(usage, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) {
-				return VK_ERROR_FORMAT_NOT_SUPPORTED;
-			}
+			if (hasAttachmentUsage) { return VK_ERROR_FORMAT_NOT_SUPPORTED; }
+
 			// Metal does not allow linear tiling on 1D textures
-			if (tiling == VK_IMAGE_TILING_LINEAR) {
-				return VK_ERROR_FORMAT_NOT_SUPPORTED;
-			}
+			if (tiling == VK_IMAGE_TILING_LINEAR) { return VK_ERROR_FORMAT_NOT_SUPPORTED; }
+
 			// Metal does not allow compressed or depth/stencil formats on 1D textures
 			if (mvkFormatTypeFromVkFormat(format) == kMVKFormatDepthStencil ||
 				mvkFormatTypeFromVkFormat(format) == kMVKFormatCompressed) {
@@ -245,7 +249,6 @@
             maxExt.height = 1;
             maxExt.depth = 1;
 			maxLevels = 1;
-            maxLayers = pLimits->maxImageArrayLayers;
             sampleCounts = VK_SAMPLE_COUNT_1_BIT;
             break;
         case VK_IMAGE_TYPE_2D:
@@ -265,16 +268,12 @@
 					return VK_ERROR_FORMAT_NOT_SUPPORTED;
 				}
 #if MVK_MACOS
-				// - On macOS, they may not be used as framebuffer attachments.
-				if (mvkIsAnyFlagEnabled(usage, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT|VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT|VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT|VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT) ) {
-					return VK_ERROR_FORMAT_NOT_SUPPORTED;
-				}
+				// - On macOS, Linear textures may not be used as framebuffer attachments.
+				if (hasAttachmentUsage) { return VK_ERROR_FORMAT_NOT_SUPPORTED; }
 #endif
-				// - They may only have one mip level.
+				// Linear textures may only have one mip level. layer & sample
 				maxLevels = 1;
-				// - They may only have one layer.
 				maxLayers = 1;
-				// - They may not be multisampled.
 				sampleCounts = VK_SAMPLE_COUNT_1_BIT;
 			} else {
 				VkFormatProperties fmtProps;
@@ -288,7 +287,6 @@
 					sampleCounts = VK_SAMPLE_COUNT_1_BIT;
 				}
 				maxLevels = mvkMipmapLevels3D(maxExt);
-				maxLayers = pLimits->maxImageArrayLayers;
 			}
             break;
         case VK_IMAGE_TYPE_3D:
@@ -320,9 +318,8 @@
             break;
         default:
 			// Metal does not allow linear tiling on anything but 2D textures
-			if (tiling == VK_IMAGE_TILING_LINEAR) {
-				return VK_ERROR_FORMAT_NOT_SUPPORTED;
-			}
+			if (tiling == VK_IMAGE_TILING_LINEAR) { return VK_ERROR_FORMAT_NOT_SUPPORTED; }
+
 			// Metal does not allow compressed or depth/stencil formats on anything but 2D textures
 			if (mvkFormatTypeFromVkFormat(format) == kMVKFormatDepthStencil ||
 				mvkFormatTypeFromVkFormat(format) == kMVKFormatCompressed) {