diff options
-rw-r--r-- | vulkan/vkjson/vkjson.cc | 132 | ||||
-rw-r--r-- | vulkan/vkjson/vkjson_instance.cc | 6 |
2 files changed, 94 insertions, 44 deletions
diff --git a/vulkan/vkjson/vkjson.cc b/vulkan/vkjson/vkjson.cc index b0b466c0a1..bfc240e4dd 100644 --- a/vulkan/vkjson/vkjson.cc +++ b/vulkan/vkjson/vkjson.cc @@ -57,9 +57,17 @@ static const double SAFE_DOUBLE_MIN = -SAFE_DOUBLE_MAX; template <typename T> struct EnumTraits; template <> struct EnumTraits<VkPhysicalDeviceType> { - static uint32_t min() { return VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE; } - static uint32_t max() { return VK_PHYSICAL_DEVICE_TYPE_END_RANGE; } - static bool exist(uint32_t e) { return e >= min() && e <= max(); } + static bool exist(uint32_t e) { + switch (e) { + case VK_PHYSICAL_DEVICE_TYPE_OTHER: + case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: + case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: + case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: + case VK_PHYSICAL_DEVICE_TYPE_CPU: + return true; + } + return false; + } }; template <> struct EnumTraits<VkFormat> { @@ -250,6 +258,40 @@ template <> struct EnumTraits<VkFormat> { case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: + case VK_FORMAT_G8B8G8R8_422_UNORM: + case VK_FORMAT_B8G8R8G8_422_UNORM: + case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM: + case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: + case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM: + case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM: + case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM: + case VK_FORMAT_R10X6_UNORM_PACK16: + case VK_FORMAT_R10X6G10X6_UNORM_2PACK16: + case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16: + case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16: + case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16: + case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16: + case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16: + case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16: + case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16: + case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16: + case VK_FORMAT_R12X4_UNORM_PACK16: + case VK_FORMAT_R12X4G12X4_UNORM_2PACK16: + case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16: + case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16: + case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16: + case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16: + case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16: + case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16: + case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16: + case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16: + case VK_FORMAT_G16B16G16R16_422_UNORM: + case VK_FORMAT_B16G16R16G16_422_UNORM: + case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM: + case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM: + case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM: + case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM: + case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM: case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG: case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG: case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG: @@ -258,40 +300,22 @@ template <> struct EnumTraits<VkFormat> { case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG: case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG: case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG: - case VK_FORMAT_G8B8G8R8_422_UNORM_KHR: - case VK_FORMAT_B8G8R8G8_422_UNORM_KHR: - case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR: - case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR: - case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR: - case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR: - case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR: - case VK_FORMAT_R10X6_UNORM_PACK16_KHR: - case VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR: - case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR: - case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR: - case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR: - case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR: - case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR: - case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR: - case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR: - case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR: - case VK_FORMAT_R12X4_UNORM_PACK16_KHR: - case VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR: - case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR: - case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR: - case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR: - case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR: - case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR: - case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR: - case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR: - case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR: - case VK_FORMAT_G16B16G16R16_422_UNORM_KHR: - case VK_FORMAT_B16G16R16G16_422_UNORM_KHR: - case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR: - case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR: - case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR: - case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR: - case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR: + case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT: + case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT: + case VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT: + case VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT: return true; } return false; @@ -300,9 +324,14 @@ template <> struct EnumTraits<VkFormat> { template <> struct EnumTraits<VkPointClippingBehavior> { - static uint32_t min() { return VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE; } - static uint32_t max() { return VK_POINT_CLIPPING_BEHAVIOR_END_RANGE; } - static bool exist(uint32_t e) { return e >= min() && e <= max(); } + static bool exist(uint32_t e) { + switch (e) { + case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES: + case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY: + return true; + } + return false; + } }; template <> @@ -336,9 +365,26 @@ struct EnumTraits<VkExternalSemaphoreHandleTypeFlagBits> { template <> struct EnumTraits<VkDriverIdKHR> { - static uint32_t min() { return VK_DRIVER_ID_BEGIN_RANGE_KHR; } - static uint32_t max() { return VK_DRIVER_ID_END_RANGE_KHR; } - static bool exist(uint32_t e) { return e >= min() && e <= max(); } + static bool exist(uint32_t e) { + switch (e) { + case VK_DRIVER_ID_AMD_PROPRIETARY: + case VK_DRIVER_ID_AMD_OPEN_SOURCE: + case VK_DRIVER_ID_MESA_RADV: + case VK_DRIVER_ID_NVIDIA_PROPRIETARY: + case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS: + case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA: + case VK_DRIVER_ID_IMAGINATION_PROPRIETARY: + case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: + case VK_DRIVER_ID_ARM_PROPRIETARY: + case VK_DRIVER_ID_GOOGLE_SWIFTSHADER: + case VK_DRIVER_ID_GGP_PROPRIETARY: + case VK_DRIVER_ID_BROADCOM_PROPRIETARY: + case VK_DRIVER_ID_MESA_LLVMPIPE: + case VK_DRIVER_ID_MOLTENVK: + return true; + } + return false; + } }; // VkSparseImageFormatProperties diff --git a/vulkan/vkjson/vkjson_instance.cc b/vulkan/vkjson/vkjson_instance.cc index 84cfe5e00b..73586d42f8 100644 --- a/vulkan/vkjson/vkjson_instance.cc +++ b/vulkan/vkjson/vkjson_instance.cc @@ -165,7 +165,9 @@ VkJsonDevice VkJsonGetDevice(VkInstance instance, VkFormatProperties format_properties = {}; for (VkFormat format = VK_FORMAT_R4G4_UNORM_PACK8; - format <= VK_FORMAT_END_RANGE; + // TODO(http://b/171403054): avoid hard-coding last value in the + // contiguous range + format <= VK_FORMAT_ASTC_12x12_SRGB_BLOCK; format = static_cast<VkFormat>(format + 1)) { vkGetPhysicalDeviceFormatProperties(physical_device, format, &format_properties); @@ -178,6 +180,8 @@ VkJsonDevice VkJsonGetDevice(VkInstance instance, if (device.properties.apiVersion >= VK_API_VERSION_1_1) { for (VkFormat format = VK_FORMAT_G8B8G8R8_422_UNORM; + // TODO(http://b/171403054): avoid hard-coding last value in the + // contiguous range format <= VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM; format = static_cast<VkFormat>(format + 1)) { vkGetPhysicalDeviceFormatProperties(physical_device, format, |