diff options
-rw-r--r-- | vulkan/libvulkan/driver.cpp | 15 | ||||
-rw-r--r-- | vulkan/tools/vkinfo.cpp | 29 |
2 files changed, 26 insertions, 18 deletions
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp index 17ccc72eb3..b02f5b4324 100644 --- a/vulkan/libvulkan/driver.cpp +++ b/vulkan/libvulkan/driver.cpp @@ -480,17 +480,20 @@ PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName) { if (hook->type == ProcHook::GLOBAL) return hook->proc; + // v0 layers expect + // + // vkGetInstanceProcAddr(VK_NULL_HANDLE, "vkCreateDevice"); + // + // to work. + if (strcmp(pName, "vkCreateDevice") == 0) + return hook->proc; + ALOGE( "Invalid use of vkGetInstanceProcAddr to query %s without an " "instance", pName); - // Some naughty layers expect - // - // vkGetInstanceProcAddr(VK_NULL_HANDLE, "vkCreateDevice"); - // - // to work. - return (strcmp(pName, "vkCreateDevice") == 0) ? hook->proc : nullptr; + return nullptr; } PFN_vkVoidFunction proc; diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp index e97e5f56c4..62d8240f92 100644 --- a/vulkan/tools/vkinfo.cpp +++ b/vulkan/tools/vkinfo.cpp @@ -162,8 +162,11 @@ void GatherGpuInfo(VkPhysicalDevice gpu, uint32_t num_extensions = 0; for (const auto& desired_ext : kDesiredExtensions) { bool available = HasExtension(info.extensions, desired_ext); - for (size_t i = 0; !available && i < info.layer_extensions.size(); i++) - available = HasExtension(info.layer_extensions[i], desired_ext); + if (options.validate) { + for (size_t i = 0; !available && i < info.layer_extensions.size(); + i++) + available = HasExtension(info.layer_extensions[i], desired_ext); + } if (available) extensions[num_extensions++] = desired_ext; } @@ -179,12 +182,11 @@ void GatherGpuInfo(VkPhysicalDevice gpu, // clang-format off const char *kValidationLayers[] = { "VK_LAYER_GOOGLE_threading", + "VK_LAYER_LUNARG_parameter_validation", "VK_LAYER_LUNARG_device_limits", - "VK_LAYER_LUNARG_draw_state", - "VK_LAYER_LUNARG_image", - "VK_LAYER_LUNARG_mem_tracker", "VK_LAYER_LUNARG_object_tracker", - "VK_LAYER_LUNARG_param_checker", + "VK_LAYER_LUNARG_image", + "VK_LAYER_LUNARG_core_validation", "VK_LAYER_LUNARG_swapchain", "VK_LAYER_GOOGLE_unique_objects" }; @@ -236,8 +238,12 @@ void GatherInfo(VulkanInfo* info, const Options& options) { uint32_t num_extensions = 0; for (const auto& desired_ext : kDesiredExtensions) { bool available = HasExtension(info->extensions, desired_ext); - for (size_t i = 0; !available && i < info->layer_extensions.size(); i++) - available = HasExtension(info->layer_extensions[i], desired_ext); + if (options.validate) { + for (size_t i = 0; !available && i < info->layer_extensions.size(); + i++) + available = + HasExtension(info->layer_extensions[i], desired_ext); + } if (available) extensions[num_extensions++] = desired_ext; } @@ -245,12 +251,11 @@ void GatherInfo(VulkanInfo* info, const Options& options) { // clang-format off const char *kValidationLayers[] = { "VK_LAYER_GOOGLE_threading", + "VK_LAYER_LUNARG_parameter_validation", "VK_LAYER_LUNARG_device_limits", - "VK_LAYER_LUNARG_draw_state", - "VK_LAYER_LUNARG_image", - "VK_LAYER_LUNARG_mem_tracker", "VK_LAYER_LUNARG_object_tracker", - "VK_LAYER_LUNARG_param_checker", + "VK_LAYER_LUNARG_image", + "VK_LAYER_LUNARG_core_validation", "VK_LAYER_LUNARG_swapchain", "VK_LAYER_GOOGLE_unique_objects" }; |