Additional changes to Vulkan 1.1 API updates
This commit includes the following:
- Make new/Vulkan 1.1 core commands be optional in codegen. Before this
change, the loader crashed when starting with a 1.0 app, and using a 1.0 ICD.
That's because the loader couldn't find "required" 1.1 entrypoints. This
change makes those entrypoints "optional" with a new annotation in the api
file.
- Changes from internal reviews, including a fix for the algorithm of
EnumeratePhysicalDeviceGroups.
Test: Run with a 1.0 app with a 1.0 driver and make sure the loader works
Change-Id: I55914b680a1601cb9f3f2cc0257091a0a34ae7f2
diff --git a/vulkan/libvulkan/api_gen.cpp b/vulkan/libvulkan/api_gen.cpp
index 7bc04a8..2aa1d5a 100644
--- a/vulkan/libvulkan/api_gen.cpp
+++ b/vulkan/libvulkan/api_gen.cpp
@@ -152,23 +152,23 @@
INIT_PROC(true, instance, CreateDevice);
INIT_PROC(true, instance, EnumerateDeviceExtensionProperties);
INIT_PROC(true, instance, GetPhysicalDeviceSparseImageFormatProperties);
- INIT_PROC(true, instance, EnumeratePhysicalDeviceGroups);
- INIT_PROC(true, instance, GetPhysicalDeviceFeatures2);
- INIT_PROC(true, instance, GetPhysicalDeviceProperties2);
- INIT_PROC(true, instance, GetPhysicalDeviceFormatProperties2);
- INIT_PROC(true, instance, GetPhysicalDeviceImageFormatProperties2);
- INIT_PROC(true, instance, GetPhysicalDeviceQueueFamilyProperties2);
- INIT_PROC(true, instance, GetPhysicalDeviceMemoryProperties2);
- INIT_PROC(true, instance, GetPhysicalDeviceSparseImageFormatProperties2);
- INIT_PROC(true, instance, GetPhysicalDeviceExternalBufferProperties);
- INIT_PROC(true, instance, GetPhysicalDeviceExternalFenceProperties);
- INIT_PROC(true, instance, GetPhysicalDeviceExternalSemaphoreProperties);
+ INIT_PROC(false, instance, EnumeratePhysicalDeviceGroups);
+ INIT_PROC(false, instance, GetPhysicalDeviceFeatures2);
+ INIT_PROC(false, instance, GetPhysicalDeviceProperties2);
+ INIT_PROC(false, instance, GetPhysicalDeviceFormatProperties2);
+ INIT_PROC(false, instance, GetPhysicalDeviceImageFormatProperties2);
+ INIT_PROC(false, instance, GetPhysicalDeviceQueueFamilyProperties2);
+ INIT_PROC(false, instance, GetPhysicalDeviceMemoryProperties2);
+ INIT_PROC(false, instance, GetPhysicalDeviceSparseImageFormatProperties2);
+ INIT_PROC(false, instance, GetPhysicalDeviceExternalBufferProperties);
+ INIT_PROC(false, instance, GetPhysicalDeviceExternalFenceProperties);
+ INIT_PROC(false, instance, GetPhysicalDeviceExternalSemaphoreProperties);
INIT_PROC_EXT(KHR_surface, true, instance, DestroySurfaceKHR);
INIT_PROC_EXT(KHR_surface, true, instance, GetPhysicalDeviceSurfaceSupportKHR);
INIT_PROC_EXT(KHR_surface, true, instance, GetPhysicalDeviceSurfaceCapabilitiesKHR);
INIT_PROC_EXT(KHR_surface, true, instance, GetPhysicalDeviceSurfaceFormatsKHR);
INIT_PROC_EXT(KHR_surface, true, instance, GetPhysicalDeviceSurfacePresentModesKHR);
- INIT_PROC_EXT(KHR_swapchain, true, instance, GetPhysicalDevicePresentRectanglesKHR);
+ INIT_PROC_EXT(KHR_swapchain, false, instance, GetPhysicalDevicePresentRectanglesKHR);
INIT_PROC_EXT(KHR_android_surface, true, instance, CreateAndroidSurfaceKHR);
// clang-format on
@@ -304,30 +304,30 @@
INIT_PROC(true, dev, CmdNextSubpass);
INIT_PROC(true, dev, CmdEndRenderPass);
INIT_PROC(true, dev, CmdExecuteCommands);
- INIT_PROC(true, dev, BindBufferMemory2);
- INIT_PROC(true, dev, BindImageMemory2);
- INIT_PROC(true, dev, GetDeviceGroupPeerMemoryFeatures);
- INIT_PROC(true, dev, CmdSetDeviceMask);
- INIT_PROC(true, dev, CmdDispatchBase);
- INIT_PROC(true, dev, GetImageMemoryRequirements2);
- INIT_PROC(true, dev, GetBufferMemoryRequirements2);
- INIT_PROC(true, dev, GetImageSparseMemoryRequirements2);
- INIT_PROC(true, dev, TrimCommandPool);
- INIT_PROC(true, dev, GetDeviceQueue2);
- INIT_PROC(true, dev, CreateSamplerYcbcrConversion);
- INIT_PROC(true, dev, DestroySamplerYcbcrConversion);
- INIT_PROC(true, dev, CreateDescriptorUpdateTemplate);
- INIT_PROC(true, dev, DestroyDescriptorUpdateTemplate);
- INIT_PROC(true, dev, UpdateDescriptorSetWithTemplate);
- INIT_PROC(true, dev, GetDescriptorSetLayoutSupport);
+ INIT_PROC(false, dev, BindBufferMemory2);
+ INIT_PROC(false, dev, BindImageMemory2);
+ INIT_PROC(false, dev, GetDeviceGroupPeerMemoryFeatures);
+ INIT_PROC(false, dev, CmdSetDeviceMask);
+ INIT_PROC(false, dev, CmdDispatchBase);
+ INIT_PROC(false, dev, GetImageMemoryRequirements2);
+ INIT_PROC(false, dev, GetBufferMemoryRequirements2);
+ INIT_PROC(false, dev, GetImageSparseMemoryRequirements2);
+ INIT_PROC(false, dev, TrimCommandPool);
+ INIT_PROC(false, dev, GetDeviceQueue2);
+ INIT_PROC(false, dev, CreateSamplerYcbcrConversion);
+ INIT_PROC(false, dev, DestroySamplerYcbcrConversion);
+ INIT_PROC(false, dev, CreateDescriptorUpdateTemplate);
+ INIT_PROC(false, dev, DestroyDescriptorUpdateTemplate);
+ INIT_PROC(false, dev, UpdateDescriptorSetWithTemplate);
+ INIT_PROC(false, dev, GetDescriptorSetLayoutSupport);
INIT_PROC_EXT(KHR_swapchain, true, dev, CreateSwapchainKHR);
INIT_PROC_EXT(KHR_swapchain, true, dev, DestroySwapchainKHR);
INIT_PROC_EXT(KHR_swapchain, true, dev, GetSwapchainImagesKHR);
INIT_PROC_EXT(KHR_swapchain, true, dev, AcquireNextImageKHR);
INIT_PROC_EXT(KHR_swapchain, true, dev, QueuePresentKHR);
- INIT_PROC_EXT(KHR_swapchain, true, dev, GetDeviceGroupPresentCapabilitiesKHR);
- INIT_PROC_EXT(KHR_swapchain, true, dev, GetDeviceGroupSurfacePresentModesKHR);
- INIT_PROC_EXT(KHR_swapchain, true, dev, AcquireNextImage2KHR);
+ INIT_PROC_EXT(KHR_swapchain, false, dev, GetDeviceGroupPresentCapabilitiesKHR);
+ INIT_PROC_EXT(KHR_swapchain, false, dev, GetDeviceGroupSurfacePresentModesKHR);
+ INIT_PROC_EXT(KHR_swapchain, false, dev, AcquireNextImage2KHR);
// clang-format on
return success;