diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index 947b7d4..f5e70b4 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -615,21 +615,22 @@
 	CAMetalLayer* mtlLayer = surface->getCAMetalLayer();
 	if ( !mtlLayer ) { return surface->getConfigurationResult(); }
 
-	const MTLPixelFormat mtlFormats[] = {
-		MTLPixelFormatBGRA8Unorm,
-		MTLPixelFormatBGRA8Unorm_sRGB,
-		MTLPixelFormatRGBA16Float,
+#define addSurfFmt(FMT) { if (_pixelFormats.isSupported(FMT)) { mtlFormats.push_back(FMT); } }
+
+	MVKSmallVector<MTLPixelFormat, 16> mtlFormats;
+	addSurfFmt(MTLPixelFormatBGRA8Unorm);
+	addSurfFmt(MTLPixelFormatBGRA8Unorm_sRGB);
+	addSurfFmt(MTLPixelFormatRGBA16Float);
 #if MVK_MACOS
-		MTLPixelFormatRGB10A2Unorm,
-		MTLPixelFormatBGR10A2Unorm,
+	addSurfFmt(MTLPixelFormatRGB10A2Unorm);
+	addSurfFmt(MTLPixelFormatBGR10A2Unorm);
 #endif
 #if MVK_IOS_OR_TVOS
-		MTLPixelFormatBGRA10_XR,
-		MTLPixelFormatBGRA10_XR_sRGB,
-		MTLPixelFormatBGR10_XR,
-		MTLPixelFormatBGR10_XR_sRGB,
+	addSurfFmt(MTLPixelFormatBGRA10_XR);
+	addSurfFmt(MTLPixelFormatBGRA10_XR_sRGB);
+	addSurfFmt(MTLPixelFormatBGR10_XR);
+	addSurfFmt(MTLPixelFormatBGR10_XR_sRGB);
 #endif
-	};
 
 	MVKSmallVector<VkColorSpaceKHR, 16> colorSpaces;
 	colorSpaces.push_back(VK_COLOR_SPACE_SRGB_NONLINEAR_KHR);
@@ -678,25 +679,18 @@
 #endif
 	}
 
-	uint mtlFmtsCnt = sizeof(mtlFormats) / sizeof(MTLPixelFormat);
-#if MVK_MACOS
-	if ( !_pixelFormats.isSupported(MTLPixelFormatBGR10A2Unorm) ) { mtlFmtsCnt--; }
-#endif
-#if MVK_IOS_OR_TVOS
-	if ( !_pixelFormats.isSupported(MTLPixelFormatBGRA10_XR) ) { mtlFmtsCnt -= 4; }
-#endif
-
-	const uint vkFmtsCnt = mtlFmtsCnt * (uint)colorSpaces.size();
+	size_t mtlFmtsCnt = mtlFormats.size();
+	size_t vkFmtsCnt = mtlFmtsCnt * colorSpaces.size();
 
 	// If properties aren't actually being requested yet, simply update the returned count
 	if ( !pSurfaceFormats ) {
-		*pCount = vkFmtsCnt;
+		*pCount = (uint32_t)vkFmtsCnt;
 		return VK_SUCCESS;
 	}
 
 	// Determine how many results we'll return, and return that number
 	VkResult result = (*pCount >= vkFmtsCnt) ? VK_SUCCESS : VK_INCOMPLETE;
-	*pCount = min(*pCount, vkFmtsCnt);
+	*pCount = min(*pCount, (uint32_t)vkFmtsCnt);
 
 	// Now populate the supplied array
 	for (uint csIdx = 0, idx = 0; idx < *pCount && csIdx < colorSpaces.size(); csIdx++) {
