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/api/vulkan.api b/vulkan/api/vulkan.api
index 1cb02c4..2bbe5e6 100644
--- a/vulkan/api/vulkan.api
+++ b/vulkan/api/vulkan.api
@@ -37,7 +37,7 @@
define VK_MAX_DESCRIPTION_SIZE 256
define VK_MAX_MEMORY_TYPES 32
define VK_MAX_MEMORY_HEAPS 16 /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types.
-//@version 1.1
+@vulkan1_1
define VK_MAX_DEVICE_GROUP_SIZE 32
define VK_LUID_SIZE 8
define VK_QUEUE_FAMILY_EXTERNAL -2
@@ -491,7 +491,7 @@
@nonDispatchHandle type u64 VkRenderPass
@nonDispatchHandle type u64 VkPipelineCache
-//@version 1.1
+@vulkan1_1
@nonDispatchHandle type u64 VkSamplerYcbcrConversion
@nonDispatchHandle type u64 VkDescriptorUpdateTemplate
@@ -536,7 +536,7 @@
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations
VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
- //@version 1.1
+ //@vulkan1_1
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
@@ -1023,7 +1023,7 @@
VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
- //@version 1.1
+ //@vulkan1_1
VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
@@ -1158,7 +1158,7 @@
VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
- //@version 1.1
+ //@vulkan1_1
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
@@ -1554,7 +1554,7 @@
VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
- //@version 1.1
+ //@vulkan1_1
VK_ERROR_OUT_OF_POOL_MEMORY = 0xC4642878, // -1000069000
VK_ERROR_INVALID_EXTERNAL_HANDLE = 0xC4641CBD, // -1000072003
@@ -1630,7 +1630,7 @@
VK_OBJECT_TYPE_FRAMEBUFFER = 24,
VK_OBJECT_TYPE_COMMAND_POOL = 25,
- //@version 1.1
+ //@vulkan1_1
VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
@@ -1662,7 +1662,7 @@
}
-//@version 1.1 enums
+//@vulkan1_1 enums
enum VkPointClippingBehavior {
VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
@@ -1711,7 +1711,6 @@
@extension("VK_KHR_surface") // 1
enum VkColorSpaceKHR {
- VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0x00000000,
//@extension("VK_EXT_swapchain_colorspace") // 105
@@ -1923,7 +1922,7 @@
VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
- //@version 1.1
+ //@vulkan1_1
VK_QUEUE_PROTECTED_BIT = 0x00000010,
}
@@ -1936,7 +1935,7 @@
VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
- //@version 1.1
+ //@vulkan1_1
VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
}
@@ -1945,7 +1944,7 @@
bitfield VkMemoryHeapFlagBits {
VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
- //@version 1.1
+ //@vulkan1_1
VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
//@extension("VK_KHR_device_group_creation") // 71
@@ -2002,7 +2001,7 @@
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
- //@version 1.1
+ //@vulkan1_1
VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
}
@@ -2053,14 +2052,14 @@
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, /// Allows creating image views with cube type from the created image
- //@version 1.1
- VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
- VK_IMAGE_CREATE_BIND_SFR_BIT = 0x00000040,
+ //@vulkan1_1
VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
+ VK_IMAGE_CREATE_BIND_SFR_BIT = 0x00000040,
VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
- VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
+ VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
+ VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
//@extension("VK_KHR_maintenance1") // 70
VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
@@ -2068,9 +2067,6 @@
//@extension("VK_KHR_device_group") // 61
VK_IMAGE_CREATE_BIND_SFR_BIT_KHR = 0x00000040,
- //@extension("VK_EXT_sample_locations") // 144
- VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
-
//@extension("VK_KHR_maintenance2") // 118
VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 0x00000080,
VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 0x00000100,
@@ -2080,6 +2076,9 @@
//@extension("VK_KHR_bind_memory2") // 158
VK_IMAGE_CREATE_ALIAS_BIT_KHR = 0x00000400,
+
+ //@extension("VK_EXT_sample_locations") // 144
+ VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
}
/// Image view creation flags
@@ -2094,7 +2093,7 @@
VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
- //@version 1.1
+ //@vulkan1_1
VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010,
@@ -2140,7 +2139,7 @@
VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800, /// Format can be used as the destination image of blits with vkCommandBlitImage
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
- //@version 1.1
+ //@vulkan1_1
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
@@ -2233,7 +2232,7 @@
VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
- //@version 1.1
+ //@vulkan1_1
VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
@@ -2304,7 +2303,7 @@
VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
- //@version 1.1
+ //@vulkan1_1
VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
}
@@ -2349,7 +2348,7 @@
/// Device queue creation flags
type VkFlags VkDeviceQueueCreateFlags
-//@version 1.1
+@vulkan1_1
bitfield VkDeviceQueueCreateFlagBits {
VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
}
@@ -2451,7 +2450,7 @@
bitfield VkDependencyFlagBits {
VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
- //@version 1.1
+ //@vulkan1_1
VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
@@ -2471,7 +2470,7 @@
VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
}
-//@version 1.1 flags
+//@vulkan1_1 flags
/// Subgroup feature flags
type VkFlags VkSubgroupFeatureFlags
@@ -2603,15 +2602,15 @@
type VkFlags VkSwapchainCreateFlagsKHR
@extension("VK_KHR_swapchain") // 2
bitfield VkSwapchainCreateFlagBitsKHR {
- //@version 1.1
+ //@vulkan1_1
VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHR = 0x00000001,
VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
type VkFlags VkDeviceGroupPresentModeFlagsKHR
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
bitfield VkDeviceGroupPresentModeFlagBitsKHR {
VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
@@ -3994,7 +3993,7 @@
u32 z
}
-//@version 1.1 structures
+//@vulkan1_1 structures
class VkPhysicalDeviceSubgroupProperties {
VkStructureType sType
@@ -4535,7 +4534,7 @@
VkResult* pResults
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
class VkImageSwapchainCreateInfoKHR {
VkStructureType sType
@@ -4543,7 +4542,7 @@
VkSwapchainKHR swapchain
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
class VkBindImageMemorySwapchainInfoKHR {
VkStructureType sType
@@ -4552,7 +4551,7 @@
u32 imageIndex
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
class VkAcquireNextImageInfoKHR {
VkStructureType sType
@@ -4564,7 +4563,7 @@
u32 deviceMask
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
class VkDeviceGroupPresentCapabilitiesKHR {
VkStructureType sType
@@ -4573,7 +4572,7 @@
VkDeviceGroupPresentModeFlagsKHR modes
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
class VkDeviceGroupPresentInfoKHR {
VkStructureType sType
@@ -4583,7 +4582,7 @@
VkDeviceGroupPresentModeFlagBitsKHR mode
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
class VkDeviceGroupSwapchainCreateInfoKHR {
VkStructureType sType
@@ -8259,13 +8258,15 @@
}
}
-//@version 1.1 functions
+//@vulkan1_1 functions
+@vulkan1_1
cmd VkResult vkEnumerateInstanceVersion(
u32* pApiVersion) {
return ?
}
+@vulkan1_1
cmd VkResult vkBindBufferMemory2(
VkDevice device,
u32 bindInfoCount,
@@ -8273,6 +8274,7 @@
return ?
}
+@vulkan1_1
cmd VkResult vkBindImageMemory2(
VkDevice device,
u32 bindInfoCount,
@@ -8280,6 +8282,7 @@
return ?
}
+@vulkan1_1
cmd void vkGetDeviceGroupPeerMemoryFeatures(
VkDevice device,
u32 heapIndex,
@@ -8288,11 +8291,13 @@
VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
}
+@vulkan1_1
cmd void vkCmdSetDeviceMask(
VkCommandBuffer commandBuffer,
u32 deviceMask) {
}
+@vulkan1_1
cmd void vkCmdDispatchBase(
VkCommandBuffer commandBuffer,
u32 baseGroupX,
@@ -8304,6 +8309,7 @@
}
@threadSafety("system")
+@vulkan1_1
cmd VkResult vkEnumeratePhysicalDeviceGroups(
VkInstance instance,
u32* pPhysicalDeviceGroupCount,
@@ -8325,18 +8331,21 @@
return ?
}
+@vulkan1_1
cmd void vkGetImageMemoryRequirements2(
VkDevice device,
const VkImageMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
}
+@vulkan1_1
cmd void vkGetBufferMemoryRequirements2(
VkDevice device,
const VkBufferMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
}
+@vulkan1_1
cmd void vkGetImageSparseMemoryRequirements2(
VkDevice device,
const VkImageSparseMemoryRequirementsInfo2* pInfo,
@@ -8344,22 +8353,26 @@
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceFeatures2(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2* pFeatures) {
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceProperties2(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceProperties2* pProperties) {
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceFormatProperties2(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkFormatProperties2* pFormatProperties) {
}
+@vulkan1_1
cmd VkResult vkGetPhysicalDeviceImageFormatProperties2(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
@@ -8367,17 +8380,20 @@
return ?
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceQueueFamilyProperties2(
VkPhysicalDevice physicalDevice,
u32* pQueueFamilyPropertyCount,
VkQueueFamilyProperties2* pQueueFamilyProperties) {
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceMemoryProperties2(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceSparseImageFormatProperties2(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
@@ -8385,6 +8401,7 @@
VkSparseImageFormatProperties2* pProperties) {
}
+@vulkan1_1
cmd void vkTrimCommandPool(
VkDevice device,
VkCommandPool commandPool,
@@ -8392,6 +8409,7 @@
}
+@vulkan1_1
cmd void vkGetDeviceQueue2(
VkDevice device,
const VkDeviceQueueInfo2* pQueueInfo,
@@ -8406,6 +8424,7 @@
}
}
+@vulkan1_1
cmd VkResult vkCreateSamplerYcbcrConversion(
VkDevice device,
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
@@ -8414,12 +8433,14 @@
return ?
}
+@vulkan1_1
cmd void vkDestroySamplerYcbcrConversion(
VkDevice device,
VkSamplerYcbcrConversion ycbcrConversion,
const VkAllocationCallbacks* pAllocator) {
}
+@vulkan1_1
cmd VkResult vkCreateDescriptorUpdateTemplate(
VkDevice device,
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
@@ -8428,12 +8449,14 @@
return ?
}
+@vulkan1_1
cmd void vkDestroyDescriptorUpdateTemplate(
VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const VkAllocationCallbacks* pAllocator) {
}
+@vulkan1_1
cmd void vkUpdateDescriptorSetWithTemplate(
VkDevice device,
VkDescriptorSet descriptorSet,
@@ -8441,24 +8464,28 @@
const void* pData) {
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceExternalBufferProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
VkExternalBufferProperties* pExternalBufferProperties) {
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceExternalFenceProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
VkExternalFenceProperties* pExternalFenceProperties) {
}
+@vulkan1_1
cmd void vkGetPhysicalDeviceExternalSemaphoreProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
}
+@vulkan1_1
cmd void vkGetDescriptorSetLayoutSupport(
VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
@@ -8620,7 +8647,7 @@
return ?
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHR(
VkDevice device,
@@ -8628,7 +8655,7 @@
return ?
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
cmd VkResult vkGetDeviceGroupSurfacePresentModesKHR(
VkDevice device,
@@ -8637,7 +8664,7 @@
return ?
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
cmd VkResult vkGetPhysicalDevicePresentRectanglesKHR(
VkPhysicalDevice physicalDevice,
@@ -8647,7 +8674,7 @@
return ?
}
-//@version 1.1
+@vulkan1_1
@extension("VK_KHR_swapchain") // 2
cmd VkResult vkAcquireNextImage2KHR(
VkDevice device,
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;
diff --git a/vulkan/libvulkan/code-generator.tmpl b/vulkan/libvulkan/code-generator.tmpl
index e13ec0e..3b48e08 100644
--- a/vulkan/libvulkan/code-generator.tmpl
+++ b/vulkan/libvulkan/code-generator.tmpl
@@ -419,7 +419,7 @@
INIT_PROC(§
{{end}}
- {{if GetAnnotation $ "optional"}}false{{else}}true{{end}}, §
+ {{if GetAnnotation $ "optional"}}false{{else if GetAnnotation $ "vulkan1_1"}}false{{else}}true{{end}}, §
{{if (Macro "IsInstanceDispatched" $)}}
instance, §
@@ -734,9 +734,6 @@
{{else if eq $.Name "vkCreateDevice"}}true
{{else if eq $.Name "vkEnumeratePhysicalDevices"}}true
{{else if eq $.Name "vkEnumeratePhysicalDeviceGroups"}}true
- {{else if eq $.Name "vkGetDeviceGroupPresentCapabilitiesKHR"}}true
- {{else if eq $.Name "vkGetDeviceGroupSurfacePresentModesKHR"}}true
- {{else if eq $.Name "vkGetPhysicalDevicePresentRectanglesKHR"}}true
{{else if eq $.Name "vkGetDeviceQueue"}}true
{{else if eq $.Name "vkGetDeviceQueue2"}}true
{{else if eq $.Name "vkAllocateCommandBuffers"}}true
@@ -976,9 +973,6 @@
{{/* We cache physical devices in loader.cpp */}}
{{else if eq $.Name "vkEnumeratePhysicalDevices"}}true
{{else if eq $.Name "vkEnumeratePhysicalDeviceGroups"}}true
- {{else if eq $.Name "vkGetDeviceGroupPresentCapabilitiesKHR"}}true
- {{else if eq $.Name "vkGetDeviceGroupSurfacePresentModesKHR"}}true
- {{else if eq $.Name "vkGetPhysicalDevicePresentRectanglesKHR"}}true
{{else if eq $.Name "vkGetInstanceProcAddr"}}true
{{else if eq $.Name "vkGetDeviceProcAddr"}}true
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp
index dfe6793..ade0bde 100644
--- a/vulkan/libvulkan/driver.cpp
+++ b/vulkan/libvulkan/driver.cpp
@@ -1053,9 +1053,13 @@
instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
if ((result == VK_SUCCESS || result == VK_INCOMPLETE) &&
*pPhysicalDeviceGroupCount && pPhysicalDeviceGroupProperties) {
- for (uint32_t i = 0;
- i < pPhysicalDeviceGroupProperties->physicalDeviceCount; i++)
- SetData(pPhysicalDeviceGroupProperties->physicalDevices[i], data);
+ for (uint32_t i = 0; i < *pPhysicalDeviceGroupCount; i++) {
+ for (uint32_t j = 0;
+ j < pPhysicalDeviceGroupProperties->physicalDeviceCount; j++) {
+ SetData(pPhysicalDeviceGroupProperties->physicalDevices[j],
+ data);
+ }
+ }
}
return result;
diff --git a/vulkan/libvulkan/driver_gen.cpp b/vulkan/libvulkan/driver_gen.cpp
index 5dde133..c6e8a7a 100644
--- a/vulkan/libvulkan/driver_gen.cpp
+++ b/vulkan/libvulkan/driver_gen.cpp
@@ -492,8 +492,7 @@
INIT_PROC(true, instance, GetPhysicalDeviceProperties);
INIT_PROC(true, instance, CreateDevice);
INIT_PROC(true, instance, EnumerateDeviceExtensionProperties);
- INIT_PROC(true, instance, EnumeratePhysicalDeviceGroups);
- INIT_PROC_EXT(KHR_swapchain, true, instance, GetPhysicalDevicePresentRectanglesKHR);
+ INIT_PROC(false, instance, EnumeratePhysicalDeviceGroups);
INIT_PROC_EXT(EXT_debug_report, true, instance, CreateDebugReportCallbackEXT);
INIT_PROC_EXT(EXT_debug_report, true, instance, DestroyDebugReportCallbackEXT);
INIT_PROC_EXT(EXT_debug_report, true, instance, DebugReportMessageEXT);
@@ -516,9 +515,7 @@
INIT_PROC(true, dev, CreateImage);
INIT_PROC(true, dev, DestroyImage);
INIT_PROC(true, dev, AllocateCommandBuffers);
- INIT_PROC(true, dev, GetDeviceQueue2);
- INIT_PROC_EXT(KHR_swapchain, true, dev, GetDeviceGroupPresentCapabilitiesKHR);
- INIT_PROC_EXT(KHR_swapchain, true, dev, GetDeviceGroupSurfacePresentModesKHR);
+ INIT_PROC(false, dev, GetDeviceQueue2);
INIT_PROC_EXT(ANDROID_native_buffer, false, dev, GetSwapchainGrallocUsageANDROID);
INIT_PROC_EXT(ANDROID_native_buffer, false, dev, GetSwapchainGrallocUsage2ANDROID);
INIT_PROC_EXT(ANDROID_native_buffer, true, dev, AcquireImageANDROID);
diff --git a/vulkan/libvulkan/driver_gen.h b/vulkan/libvulkan/driver_gen.h
index e7e3b99..646662f 100644
--- a/vulkan/libvulkan/driver_gen.h
+++ b/vulkan/libvulkan/driver_gen.h
@@ -68,7 +68,6 @@
PFN_vkCreateDevice CreateDevice;
PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
- PFN_vkGetPhysicalDevicePresentRectanglesKHR GetPhysicalDevicePresentRectanglesKHR;
PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
@@ -85,8 +84,6 @@
PFN_vkDestroyImage DestroyImage;
PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
PFN_vkGetDeviceQueue2 GetDeviceQueue2;
- PFN_vkGetDeviceGroupPresentCapabilitiesKHR GetDeviceGroupPresentCapabilitiesKHR;
- PFN_vkGetDeviceGroupSurfacePresentModesKHR GetDeviceGroupSurfacePresentModesKHR;
PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID;
PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID;
PFN_vkAcquireImageANDROID AcquireImageANDROID;
diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
index d5e7c43..03e6ee0 100644
--- a/vulkan/libvulkan/swapchain.cpp
+++ b/vulkan/libvulkan/swapchain.cpp
@@ -775,13 +775,8 @@
VKAPI_ATTR
VkResult GetDeviceGroupPresentCapabilitiesKHR(
- VkDevice device,
+ VkDevice,
VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) {
- ALOGV("vkGetDeviceGroupPresentCapabilitiesKHR: device=0x%" PRIx64
- "pDeviceGroupPresentCapabilities=0x%" PRIx64,
- reinterpret_cast<uint64_t>(device),
- reinterpret_cast<uint64_t>(pDeviceGroupPresentCapabilities));
-
ALOGV_IF(pDeviceGroupPresentCapabilities->sType !=
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
"vkGetDeviceGroupPresentCapabilitiesKHR: invalid "
@@ -801,30 +796,18 @@
VKAPI_ATTR
VkResult GetDeviceGroupSurfacePresentModesKHR(
- VkDevice device,
- VkSurfaceKHR surface,
+ VkDevice,
+ VkSurfaceKHR,
VkDeviceGroupPresentModeFlagsKHR* pModes) {
- ALOGV("vkGetDeviceGroupSurfacePresentModesKHR: device=0x%" PRIx64
- "surface=0x%" PRIx64 "pModes=0x%" PRIx64,
- reinterpret_cast<uint64_t>(device),
- reinterpret_cast<uint64_t>(surface),
- reinterpret_cast<uint64_t>(pModes));
-
*pModes = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR;
return VK_SUCCESS;
}
VKAPI_ATTR
-VkResult GetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,
+VkResult GetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice,
VkSurfaceKHR surface,
uint32_t* pRectCount,
VkRect2D* pRects) {
- ALOGV("GetPhysicalDevicePresentRectanglesKHR: physicalDevice=0x%" PRIx64
- "surface=0x%" PRIx64 "pRectCount=%d pRects=0x%" PRIx64,
- reinterpret_cast<uint64_t>(physicalDevice),
- reinterpret_cast<uint64_t>(surface), *pRectCount,
- reinterpret_cast<uint64_t>(pRects));
-
if (!pRects) {
*pRectCount = 1;
} else {