Silence warnings: Add default cases to partial enum switches.

Fixes warnings about switch statements not handling all enum values.

Bug: b/123933266
Change-Id: I0372ebf2412452622eb99ea7bba7ebc5cedd385c
Reviewed-on: https://swiftshader-review.googlesource.com/c/25009
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Vulkan/VkImageView.cpp b/src/Vulkan/VkImageView.cpp
index 9dd1680..0f4b90b 100644
--- a/src/Vulkan/VkImageView.cpp
+++ b/src/Vulkan/VkImageView.cpp
@@ -45,6 +45,8 @@
 		case VK_IMAGE_VIEW_TYPE_1D:
 		case VK_IMAGE_VIEW_TYPE_1D_ARRAY:
 			return true;
+		default:
+			break;
 		}
 		break;
 	case VK_IMAGE_TYPE_2D:
@@ -56,6 +58,8 @@
 		case VK_IMAGE_VIEW_TYPE_CUBE:
 		case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:
 			return isCube;
+		default:
+			break;
 		}
 		break;
 	case VK_IMAGE_TYPE_3D:
@@ -63,6 +67,8 @@
 		{
 		case VK_IMAGE_VIEW_TYPE_3D:
 			return true;
+		default:
+			break;
 		}
 		break;
 	default:
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index 92b518d..b9d29bf 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -333,263 +333,273 @@
 	pFormatProperties->optimalTilingFeatures = 0; // Unsupported format
 	pFormatProperties->bufferFeatures = 0; // Unsupported format
 
-	switch(format)

-	{

-	case VK_FORMAT_B4G4R4A4_UNORM_PACK16:

-	case VK_FORMAT_R5G6B5_UNORM_PACK16:

-	case VK_FORMAT_A1R5G5B5_UNORM_PACK16:

-	case VK_FORMAT_R8_UNORM:

-	case VK_FORMAT_R8_SNORM:

-	case VK_FORMAT_R8G8_UNORM:

-	case VK_FORMAT_R8G8_SNORM:

-	case VK_FORMAT_R8G8B8A8_UNORM:

-	case VK_FORMAT_R8G8B8A8_SNORM:

-	case VK_FORMAT_R8G8B8A8_SRGB:

-	case VK_FORMAT_B8G8R8A8_UNORM:

-	case VK_FORMAT_B8G8R8A8_SRGB:

-	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_SNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_SRGB_PACK32:

-	case VK_FORMAT_A2B10G10R10_UNORM_PACK32:

-	case VK_FORMAT_R16_SFLOAT:

-	case VK_FORMAT_R16G16_SFLOAT:

-	case VK_FORMAT_R16G16B16A16_SFLOAT:

-	case VK_FORMAT_B10G11R11_UFLOAT_PACK32:

-	case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:

-		pFormatProperties->optimalTilingFeatures |=

-			VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;

-		// Fall through

-	case VK_FORMAT_R8_UINT:

-	case VK_FORMAT_R8_SINT:

-	case VK_FORMAT_R8G8_UINT:

-	case VK_FORMAT_R8G8_SINT:

-	case VK_FORMAT_R8G8B8A8_UINT:

-	case VK_FORMAT_R8G8B8A8_SINT:

-	case VK_FORMAT_A8B8G8R8_UINT_PACK32:

-	case VK_FORMAT_A8B8G8R8_SINT_PACK32:

-	case VK_FORMAT_A2B10G10R10_UINT_PACK32:

-	case VK_FORMAT_R16_UINT:

-	case VK_FORMAT_R16_SINT:

-	case VK_FORMAT_R16G16_UINT:

-	case VK_FORMAT_R16G16_SINT:

-	case VK_FORMAT_R16G16B16A16_UINT:

-	case VK_FORMAT_R16G16B16A16_SINT:

-	case VK_FORMAT_R32_UINT:

-	case VK_FORMAT_R32_SINT:

-	case VK_FORMAT_R32_SFLOAT:

-	case VK_FORMAT_R32G32_UINT:

-	case VK_FORMAT_R32G32_SINT:

-	case VK_FORMAT_R32G32_SFLOAT:

-	case VK_FORMAT_R32G32B32A32_UINT:

-	case VK_FORMAT_R32G32B32A32_SINT:

-	case VK_FORMAT_R32G32B32A32_SFLOAT:

-	case VK_FORMAT_D16_UNORM:

-	case VK_FORMAT_D32_SFLOAT:

-		pFormatProperties->optimalTilingFeatures |=

-			VK_FORMAT_FEATURE_BLIT_SRC_BIT |

-			VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |

-			VK_FORMAT_FEATURE_TRANSFER_DST_BIT;

-		// Fall through

-	case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:

-	case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:

-	case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:

-	case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:

-	case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:

-	case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:

-	case VK_FORMAT_EAC_R11_UNORM_BLOCK:

-	case VK_FORMAT_EAC_R11_SNORM_BLOCK:

-	case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:

-	case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:

-		pFormatProperties->optimalTilingFeatures |=

-			VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;

-		break;

-	}

-

-	switch(format)

-	{

-	case VK_FORMAT_R32_UINT:

-	case VK_FORMAT_R32_SINT:

-		pFormatProperties->optimalTilingFeatures |=

-			VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;

-		pFormatProperties->bufferFeatures |=

-			VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;

-		// Fall through

-	case VK_FORMAT_R8G8B8A8_UNORM:

-	case VK_FORMAT_R8G8B8A8_SNORM:

-	case VK_FORMAT_R8G8B8A8_UINT:

-	case VK_FORMAT_R8G8B8A8_SINT:

-	case VK_FORMAT_R16G16B16A16_UINT:

-	case VK_FORMAT_R16G16B16A16_SINT:

-	case VK_FORMAT_R16G16B16A16_SFLOAT:

-	case VK_FORMAT_R32_SFLOAT:

-	case VK_FORMAT_R32G32_UINT:

-	case VK_FORMAT_R32G32_SINT:

-	case VK_FORMAT_R32G32_SFLOAT:

-	case VK_FORMAT_R32G32B32A32_UINT:

-	case VK_FORMAT_R32G32B32A32_SINT:

-	case VK_FORMAT_R32G32B32A32_SFLOAT:

-		pFormatProperties->optimalTilingFeatures |=

-			VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;

-		// Fall through

-	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_SNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_UINT_PACK32:

-	case VK_FORMAT_A8B8G8R8_SINT_PACK32:

-		pFormatProperties->bufferFeatures |=

-			VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;

-		break;

-	}

-

-	switch(format)

-	{

-	case VK_FORMAT_R5G6B5_UNORM_PACK16:

-	case VK_FORMAT_A1R5G5B5_UNORM_PACK16:

-	case VK_FORMAT_R8_UNORM:

-	case VK_FORMAT_R8G8_UNORM:

-	case VK_FORMAT_R8G8B8A8_UNORM:

-	case VK_FORMAT_R8G8B8A8_SRGB:

-	case VK_FORMAT_B8G8R8A8_UNORM:

-	case VK_FORMAT_B8G8R8A8_SRGB:

-	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_SRGB_PACK32:

-	case VK_FORMAT_A2B10G10R10_UNORM_PACK32:

-	case VK_FORMAT_R16_SFLOAT:

-	case VK_FORMAT_R16G16_SFLOAT:

-	case VK_FORMAT_R16G16B16A16_SFLOAT:

-		pFormatProperties->optimalTilingFeatures |=

-			VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT;

-		// Fall through

-	case VK_FORMAT_R8_UINT:

-	case VK_FORMAT_R8_SINT:

-	case VK_FORMAT_R8G8_UINT:

-	case VK_FORMAT_R8G8_SINT:

-	case VK_FORMAT_R8G8B8A8_UINT:

-	case VK_FORMAT_R8G8B8A8_SINT:

-	case VK_FORMAT_A8B8G8R8_UINT_PACK32:

-	case VK_FORMAT_A8B8G8R8_SINT_PACK32:

-	case VK_FORMAT_A2B10G10R10_UINT_PACK32:

-	case VK_FORMAT_R16_UINT:

-	case VK_FORMAT_R16_SINT:

-	case VK_FORMAT_R16G16_UINT:

-	case VK_FORMAT_R16G16_SINT:

-	case VK_FORMAT_R16G16B16A16_UINT:

-	case VK_FORMAT_R16G16B16A16_SINT:

-	case VK_FORMAT_R32_UINT:

-	case VK_FORMAT_R32_SINT:

-	case VK_FORMAT_R32_SFLOAT:

-	case VK_FORMAT_R32G32_UINT:

-	case VK_FORMAT_R32G32_SINT:

-	case VK_FORMAT_R32G32_SFLOAT:

-	case VK_FORMAT_R32G32B32A32_UINT:

-	case VK_FORMAT_R32G32B32A32_SINT:

-	case VK_FORMAT_R32G32B32A32_SFLOAT:

-		pFormatProperties->optimalTilingFeatures |=

-			VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |

-			VK_FORMAT_FEATURE_BLIT_DST_BIT;

-		break;

-	case VK_FORMAT_D16_UNORM:

-	case VK_FORMAT_D32_SFLOAT: // Note: either VK_FORMAT_D32_SFLOAT or VK_FORMAT_X8_D24_UNORM_PACK32 must be supported

-	case VK_FORMAT_D32_SFLOAT_S8_UINT: // Note: either VK_FORMAT_D24_UNORM_S8_UINT or VK_FORMAT_D32_SFLOAT_S8_UINT must be supported

-		pFormatProperties->optimalTilingFeatures |=

-			VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT;

-		break;

-	}

-

 	switch(format)
-	{

-	case VK_FORMAT_R8_UNORM:

-	case VK_FORMAT_R8_SNORM:

-	case VK_FORMAT_R8_UINT:

-	case VK_FORMAT_R8_SINT:

-	case VK_FORMAT_R8G8_UNORM:

-	case VK_FORMAT_R8G8_SNORM:

-	case VK_FORMAT_R8G8_UINT:

-	case VK_FORMAT_R8G8_SINT:

-	case VK_FORMAT_R8G8B8A8_UNORM:

-	case VK_FORMAT_R8G8B8A8_SNORM:

-	case VK_FORMAT_R8G8B8A8_UINT:

-	case VK_FORMAT_R8G8B8A8_SINT:

-	case VK_FORMAT_B8G8R8A8_UNORM:

-	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_SNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_UINT_PACK32:

-	case VK_FORMAT_A8B8G8R8_SINT_PACK32:

-	case VK_FORMAT_A2B10G10R10_UNORM_PACK32:

-	case VK_FORMAT_R16_UNORM:

-	case VK_FORMAT_R16_SNORM:

-	case VK_FORMAT_R16_UINT:

-	case VK_FORMAT_R16_SINT:

-	case VK_FORMAT_R16_SFLOAT:

-	case VK_FORMAT_R16G16_UNORM:

-	case VK_FORMAT_R16G16_SNORM:

-	case VK_FORMAT_R16G16_UINT:

-	case VK_FORMAT_R16G16_SINT:

-	case VK_FORMAT_R16G16_SFLOAT:

-	case VK_FORMAT_R16G16B16A16_UNORM:

-	case VK_FORMAT_R16G16B16A16_SNORM:

-	case VK_FORMAT_R16G16B16A16_UINT:

-	case VK_FORMAT_R16G16B16A16_SINT:

-	case VK_FORMAT_R16G16B16A16_SFLOAT:

-	case VK_FORMAT_R32_UINT:

-	case VK_FORMAT_R32_SINT:

-	case VK_FORMAT_R32_SFLOAT:

-	case VK_FORMAT_R32G32_UINT:

-	case VK_FORMAT_R32G32_SINT:

-	case VK_FORMAT_R32G32_SFLOAT:

-	case VK_FORMAT_R32G32B32_UINT:

-	case VK_FORMAT_R32G32B32_SINT:

-	case VK_FORMAT_R32G32B32_SFLOAT:

-	case VK_FORMAT_R32G32B32A32_UINT:

-	case VK_FORMAT_R32G32B32A32_SINT:

-	case VK_FORMAT_R32G32B32A32_SFLOAT:

-		pFormatProperties->bufferFeatures |=

-			VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;

-		break;

+	{
+	case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+	case VK_FORMAT_R5G6B5_UNORM_PACK16:
+	case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+	case VK_FORMAT_R8_UNORM:
+	case VK_FORMAT_R8_SNORM:
+	case VK_FORMAT_R8G8_UNORM:
+	case VK_FORMAT_R8G8_SNORM:
+	case VK_FORMAT_R8G8B8A8_UNORM:
+	case VK_FORMAT_R8G8B8A8_SNORM:
+	case VK_FORMAT_R8G8B8A8_SRGB:
+	case VK_FORMAT_B8G8R8A8_UNORM:
+	case VK_FORMAT_B8G8R8A8_SRGB:
+	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+	case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+	case VK_FORMAT_R16_SFLOAT:
+	case VK_FORMAT_R16G16_SFLOAT:
+	case VK_FORMAT_R16G16B16A16_SFLOAT:
+	case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
+	case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
+		pFormatProperties->optimalTilingFeatures |=
+			VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
+		// Fall through
+	case VK_FORMAT_R8_UINT:
+	case VK_FORMAT_R8_SINT:
+	case VK_FORMAT_R8G8_UINT:
+	case VK_FORMAT_R8G8_SINT:
+	case VK_FORMAT_R8G8B8A8_UINT:
+	case VK_FORMAT_R8G8B8A8_SINT:
+	case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+	case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+	case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+	case VK_FORMAT_R16_UINT:
+	case VK_FORMAT_R16_SINT:
+	case VK_FORMAT_R16G16_UINT:
+	case VK_FORMAT_R16G16_SINT:
+	case VK_FORMAT_R16G16B16A16_UINT:
+	case VK_FORMAT_R16G16B16A16_SINT:
+	case VK_FORMAT_R32_UINT:
+	case VK_FORMAT_R32_SINT:
+	case VK_FORMAT_R32_SFLOAT:
+	case VK_FORMAT_R32G32_UINT:
+	case VK_FORMAT_R32G32_SINT:
+	case VK_FORMAT_R32G32_SFLOAT:
+	case VK_FORMAT_R32G32B32A32_UINT:
+	case VK_FORMAT_R32G32B32A32_SINT:
+	case VK_FORMAT_R32G32B32A32_SFLOAT:
+	case VK_FORMAT_D16_UNORM:
+	case VK_FORMAT_D32_SFLOAT:
+		pFormatProperties->optimalTilingFeatures |=
+			VK_FORMAT_FEATURE_BLIT_SRC_BIT |
+			VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
+			VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+		// Fall through
+	case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+	case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+	case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+	case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+	case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+	case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+	case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+	case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+	case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+	case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+		pFormatProperties->optimalTilingFeatures |=
+			VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
+		break;
+	default:
+		break;
 	}
-

+
 	switch(format)
-	{

-	case VK_FORMAT_R8_UNORM:

-	case VK_FORMAT_R8_SNORM:

-	case VK_FORMAT_R8_UINT:

-	case VK_FORMAT_R8_SINT:

-	case VK_FORMAT_R8G8_UNORM:

-	case VK_FORMAT_R8G8_SNORM:

-	case VK_FORMAT_R8G8_UINT:

-	case VK_FORMAT_R8G8_SINT:

-	case VK_FORMAT_R8G8B8A8_UNORM:

-	case VK_FORMAT_R8G8B8A8_SNORM:

-	case VK_FORMAT_R8G8B8A8_UINT:

-	case VK_FORMAT_R8G8B8A8_SINT:

-	case VK_FORMAT_B8G8R8A8_UNORM:

-	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_SNORM_PACK32:

-	case VK_FORMAT_A8B8G8R8_UINT_PACK32:

-	case VK_FORMAT_A8B8G8R8_SINT_PACK32:

-	case VK_FORMAT_A2B10G10R10_UNORM_PACK32:

-	case VK_FORMAT_A2B10G10R10_UINT_PACK32:

-	case VK_FORMAT_R16_UINT:

-	case VK_FORMAT_R16_SINT:

-	case VK_FORMAT_R16_SFLOAT:

-	case VK_FORMAT_R16G16_UINT:

-	case VK_FORMAT_R16G16_SINT:

-	case VK_FORMAT_R16G16_SFLOAT:

-	case VK_FORMAT_R16G16B16A16_UINT:

-	case VK_FORMAT_R16G16B16A16_SINT:

-	case VK_FORMAT_R16G16B16A16_SFLOAT:

-	case VK_FORMAT_R32_UINT:

-	case VK_FORMAT_R32_SINT:

-	case VK_FORMAT_R32_SFLOAT:

-	case VK_FORMAT_R32G32_UINT:

-	case VK_FORMAT_R32G32_SINT:

-	case VK_FORMAT_R32G32_SFLOAT:

-	case VK_FORMAT_R32G32B32A32_UINT:

-	case VK_FORMAT_R32G32B32A32_SINT:

-	case VK_FORMAT_R32G32B32A32_SFLOAT:

-	case VK_FORMAT_B10G11R11_UFLOAT_PACK32:

-		pFormatProperties->bufferFeatures |=

-			VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;

-		break;

+	{
+	case VK_FORMAT_R32_UINT:
+	case VK_FORMAT_R32_SINT:
+		pFormatProperties->optimalTilingFeatures |=
+			VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
+		pFormatProperties->bufferFeatures |=
+			VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
+		// Fall through
+	case VK_FORMAT_R8G8B8A8_UNORM:
+	case VK_FORMAT_R8G8B8A8_SNORM:
+	case VK_FORMAT_R8G8B8A8_UINT:
+	case VK_FORMAT_R8G8B8A8_SINT:
+	case VK_FORMAT_R16G16B16A16_UINT:
+	case VK_FORMAT_R16G16B16A16_SINT:
+	case VK_FORMAT_R16G16B16A16_SFLOAT:
+	case VK_FORMAT_R32_SFLOAT:
+	case VK_FORMAT_R32G32_UINT:
+	case VK_FORMAT_R32G32_SINT:
+	case VK_FORMAT_R32G32_SFLOAT:
+	case VK_FORMAT_R32G32B32A32_UINT:
+	case VK_FORMAT_R32G32B32A32_SINT:
+	case VK_FORMAT_R32G32B32A32_SFLOAT:
+		pFormatProperties->optimalTilingFeatures |=
+			VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+		// Fall through
+	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+	case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+		pFormatProperties->bufferFeatures |=
+			VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
+		break;
+	default:
+		break;
+	}
+
+	switch(format)
+	{
+	case VK_FORMAT_R5G6B5_UNORM_PACK16:
+	case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+	case VK_FORMAT_R8_UNORM:
+	case VK_FORMAT_R8G8_UNORM:
+	case VK_FORMAT_R8G8B8A8_UNORM:
+	case VK_FORMAT_R8G8B8A8_SRGB:
+	case VK_FORMAT_B8G8R8A8_UNORM:
+	case VK_FORMAT_B8G8R8A8_SRGB:
+	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+	case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+	case VK_FORMAT_R16_SFLOAT:
+	case VK_FORMAT_R16G16_SFLOAT:
+	case VK_FORMAT_R16G16B16A16_SFLOAT:
+		pFormatProperties->optimalTilingFeatures |=
+			VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT;
+		// Fall through
+	case VK_FORMAT_R8_UINT:
+	case VK_FORMAT_R8_SINT:
+	case VK_FORMAT_R8G8_UINT:
+	case VK_FORMAT_R8G8_SINT:
+	case VK_FORMAT_R8G8B8A8_UINT:
+	case VK_FORMAT_R8G8B8A8_SINT:
+	case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+	case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+	case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+	case VK_FORMAT_R16_UINT:
+	case VK_FORMAT_R16_SINT:
+	case VK_FORMAT_R16G16_UINT:
+	case VK_FORMAT_R16G16_SINT:
+	case VK_FORMAT_R16G16B16A16_UINT:
+	case VK_FORMAT_R16G16B16A16_SINT:
+	case VK_FORMAT_R32_UINT:
+	case VK_FORMAT_R32_SINT:
+	case VK_FORMAT_R32_SFLOAT:
+	case VK_FORMAT_R32G32_UINT:
+	case VK_FORMAT_R32G32_SINT:
+	case VK_FORMAT_R32G32_SFLOAT:
+	case VK_FORMAT_R32G32B32A32_UINT:
+	case VK_FORMAT_R32G32B32A32_SINT:
+	case VK_FORMAT_R32G32B32A32_SFLOAT:
+		pFormatProperties->optimalTilingFeatures |=
+			VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
+			VK_FORMAT_FEATURE_BLIT_DST_BIT;
+		break;
+	case VK_FORMAT_D16_UNORM:
+	case VK_FORMAT_D32_SFLOAT: // Note: either VK_FORMAT_D32_SFLOAT or VK_FORMAT_X8_D24_UNORM_PACK32 must be supported
+	case VK_FORMAT_D32_SFLOAT_S8_UINT: // Note: either VK_FORMAT_D24_UNORM_S8_UINT or VK_FORMAT_D32_SFLOAT_S8_UINT must be supported
+		pFormatProperties->optimalTilingFeatures |=
+			VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT;
+		break;
+	default:
+		break;
+	}
+
+	switch(format)
+	{
+	case VK_FORMAT_R8_UNORM:
+	case VK_FORMAT_R8_SNORM:
+	case VK_FORMAT_R8_UINT:
+	case VK_FORMAT_R8_SINT:
+	case VK_FORMAT_R8G8_UNORM:
+	case VK_FORMAT_R8G8_SNORM:
+	case VK_FORMAT_R8G8_UINT:
+	case VK_FORMAT_R8G8_SINT:
+	case VK_FORMAT_R8G8B8A8_UNORM:
+	case VK_FORMAT_R8G8B8A8_SNORM:
+	case VK_FORMAT_R8G8B8A8_UINT:
+	case VK_FORMAT_R8G8B8A8_SINT:
+	case VK_FORMAT_B8G8R8A8_UNORM:
+	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+	case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+	case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+	case VK_FORMAT_R16_UNORM:
+	case VK_FORMAT_R16_SNORM:
+	case VK_FORMAT_R16_UINT:
+	case VK_FORMAT_R16_SINT:
+	case VK_FORMAT_R16_SFLOAT:
+	case VK_FORMAT_R16G16_UNORM:
+	case VK_FORMAT_R16G16_SNORM:
+	case VK_FORMAT_R16G16_UINT:
+	case VK_FORMAT_R16G16_SINT:
+	case VK_FORMAT_R16G16_SFLOAT:
+	case VK_FORMAT_R16G16B16A16_UNORM:
+	case VK_FORMAT_R16G16B16A16_SNORM:
+	case VK_FORMAT_R16G16B16A16_UINT:
+	case VK_FORMAT_R16G16B16A16_SINT:
+	case VK_FORMAT_R16G16B16A16_SFLOAT:
+	case VK_FORMAT_R32_UINT:
+	case VK_FORMAT_R32_SINT:
+	case VK_FORMAT_R32_SFLOAT:
+	case VK_FORMAT_R32G32_UINT:
+	case VK_FORMAT_R32G32_SINT:
+	case VK_FORMAT_R32G32_SFLOAT:
+	case VK_FORMAT_R32G32B32_UINT:
+	case VK_FORMAT_R32G32B32_SINT:
+	case VK_FORMAT_R32G32B32_SFLOAT:
+	case VK_FORMAT_R32G32B32A32_UINT:
+	case VK_FORMAT_R32G32B32A32_SINT:
+	case VK_FORMAT_R32G32B32A32_SFLOAT:
+		pFormatProperties->bufferFeatures |=
+			VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
+		break;
+	default:
+		break;
+	}
+
+	switch(format)
+	{
+	case VK_FORMAT_R8_UNORM:
+	case VK_FORMAT_R8_SNORM:
+	case VK_FORMAT_R8_UINT:
+	case VK_FORMAT_R8_SINT:
+	case VK_FORMAT_R8G8_UNORM:
+	case VK_FORMAT_R8G8_SNORM:
+	case VK_FORMAT_R8G8_UINT:
+	case VK_FORMAT_R8G8_SINT:
+	case VK_FORMAT_R8G8B8A8_UNORM:
+	case VK_FORMAT_R8G8B8A8_SNORM:
+	case VK_FORMAT_R8G8B8A8_UINT:
+	case VK_FORMAT_R8G8B8A8_SINT:
+	case VK_FORMAT_B8G8R8A8_UNORM:
+	case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+	case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+	case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+	case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+	case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+	case VK_FORMAT_R16_UINT:
+	case VK_FORMAT_R16_SINT:
+	case VK_FORMAT_R16_SFLOAT:
+	case VK_FORMAT_R16G16_UINT:
+	case VK_FORMAT_R16G16_SINT:
+	case VK_FORMAT_R16G16_SFLOAT:
+	case VK_FORMAT_R16G16B16A16_UINT:
+	case VK_FORMAT_R16G16B16A16_SINT:
+	case VK_FORMAT_R16G16B16A16_SFLOAT:
+	case VK_FORMAT_R32_UINT:
+	case VK_FORMAT_R32_SINT:
+	case VK_FORMAT_R32_SFLOAT:
+	case VK_FORMAT_R32G32_UINT:
+	case VK_FORMAT_R32G32_SINT:
+	case VK_FORMAT_R32G32_SFLOAT:
+	case VK_FORMAT_R32G32B32A32_UINT:
+	case VK_FORMAT_R32G32B32A32_SINT:
+	case VK_FORMAT_R32G32B32A32_SFLOAT:
+	case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
+		pFormatProperties->bufferFeatures |=
+			VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;
+		break;
+	default:
+		break;
 	}
 }