Vulkan api update to 1.1
Import Vulkan 1.1 header from
khronos master@5b2d66c0e6906388385ed7adfd015d80ec0d846a
with the following modifications:
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES 10006300 -> 1000063000
- remove VK_KHR_get_display_properties2 (which is not ratified)
- device_group interactions from KHR_surface to KHR_swapchain (per MR 2409)
Summary of changes since 1.0.61:
* VK_KHR_surface -> v26 (subsumed interactions with VK_KHR_device_group)
* VK_KHR_swapchain -> v69 (subsumed interactions with VK_KHR_device_group)
* VK_EXT_debug_report -> v9 (no api changes)
* VK_KHX_multiview -> VK_KHR_multiview
* VK_KHX_device_group -> VK_KHR_device_group
* VK_KHX_device_group_creation -> VK_KHR_device_group_creation
* VK_KHR_push_descriptor -> v2
* Added VK_KHR_maintenance3
* Added 1.1 core enums, structs, and functions (kept KHR suffixed ones too)
Implemented the following in libvulkan:
* EnumerateInstanceVersion
* GetDeviceGroupPresentCapabilitiesKHR (minimal support for 1 device)
* GetDeviceGroupSurfacePresentModesKHR (minimal support for local present modes only)
* GetPhysicalDevicePresentRectanglesKHR (assumes whole window)
* AcquireNextImage2KHR (minimal thunk to AcquireNextImageKHR)
* GetDeviceQueue2
* added support for VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR
* support for 1.1 core device_groups functionality (no VK_KHR_device_group_creation)
- EnumeratePhysicalDeviceGroups
* added trampolines for 1.1 core entry points
* disabled apiVersion >= 1.1 check
Implemented in nulldrv (but largely untested beyond build/link)
* EnumerateInstanceVersion
* enough empty thunks for VK 1.1 core functions that it links
Test: Build Android
Change-Id: I247cd670543867bdf80877156d941cf3bfcf6303
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp
index 947a2f7..dfe6793 100644
--- a/vulkan/libvulkan/driver.cpp
+++ b/vulkan/libvulkan/driver.cpp
@@ -880,19 +880,6 @@
const VkAllocationCallbacks& data_allocator =
(pAllocator) ? *pAllocator : GetDefaultAllocator();
- if (pCreateInfo->pApplicationInfo &&
- pCreateInfo->pApplicationInfo->apiVersion >= VK_MAKE_VERSION(1, 1, 0)) {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wold-style-cast"
- ALOGI(
- "Requested Vulkan instance version %d.%d is greater than max "
- "supported version (1.0)",
- VK_VERSION_MAJOR(pCreateInfo->pApplicationInfo->apiVersion),
- VK_VERSION_MINOR(pCreateInfo->pApplicationInfo->apiVersion));
-#pragma clang diagnostic pop
- return VK_ERROR_INCOMPATIBLE_DRIVER;
- }
-
CreateInfoWrapper wrapper(*pCreateInfo, data_allocator);
VkResult result = wrapper.Validate();
if (result != VK_SUCCESS)
@@ -1056,6 +1043,24 @@
return result;
}
+VkResult EnumeratePhysicalDeviceGroups(
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
+ const auto& data = GetData(instance);
+
+ VkResult result = data.driver.EnumeratePhysicalDeviceGroups(
+ 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);
+ }
+
+ return result;
+}
+
void GetDeviceQueue(VkDevice device,
uint32_t queueFamilyIndex,
uint32_t queueIndex,
@@ -1066,6 +1071,15 @@
SetData(*pQueue, data);
}
+void GetDeviceQueue2(VkDevice device,
+ const VkDeviceQueueInfo2* pQueueInfo,
+ VkQueue* pQueue) {
+ const auto& data = GetData(device);
+
+ data.driver.GetDeviceQueue2(device, pQueueInfo, pQueue);
+ SetData(*pQueue, data);
+}
+
VKAPI_ATTR VkResult
AllocateCommandBuffers(VkDevice device,
const VkCommandBufferAllocateInfo* pAllocateInfo,