vulkan: Update from version 0.192.0 to 0.193.0
Change-Id: I4387b28368c38c5165c1da99d8dc4e632ad2b42a
(cherry picked from commit d0534c33c98e8f0c844b37df7c764c9dbd6bbaa3)
diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
index 9198f64..31f0231 100644
--- a/vulkan/libvulkan/entry.cpp
+++ b/vulkan/libvulkan/entry.cpp
@@ -132,8 +132,8 @@
}
__attribute__((visibility("default")))
-VkResult vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence) {
- return GetVtbl(queue).QueueSubmit(queue, submitCount, pSubmitInfo, fence);
+VkResult vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {
+ return GetVtbl(queue).QueueSubmit(queue, submitCount, pSubmits, fence);
}
__attribute__((visibility("default")))
@@ -447,8 +447,8 @@
}
__attribute__((visibility("default")))
-void vkUpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
- GetVtbl(device).UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
+void vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
+ GetVtbl(device).UpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
}
__attribute__((visibility("default")))
@@ -542,8 +542,8 @@
}
__attribute__((visibility("default")))
-void vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4]) {
- GetVtbl(cmdBuffer).CmdSetBlendConstants(cmdBuffer, blendConst);
+void vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConstants[4]) {
+ GetVtbl(cmdBuffer).CmdSetBlendConstants(cmdBuffer, blendConstants);
}
__attribute__((visibility("default")))
@@ -642,8 +642,8 @@
}
__attribute__((visibility("default")))
-void vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data) {
- GetVtbl(cmdBuffer).CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
+void vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize size, uint32_t data) {
+ GetVtbl(cmdBuffer).CmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
}
__attribute__((visibility("default")))
@@ -742,23 +742,23 @@
}
__attribute__((visibility("default")))
-VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface) {
- return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface);
+VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) {
+ return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
}
__attribute__((visibility("default")))
-VkResult vkGetSurfacePropertiesKHR(VkDevice device, VkSurfaceKHR surface, VkSurfacePropertiesKHR* pSurfaceProperties) {
- return GetVtbl(device).GetSurfacePropertiesKHR(device, surface, pSurfaceProperties);
+VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
+ return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
}
__attribute__((visibility("default")))
-VkResult vkGetSurfaceFormatsKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) {
- return GetVtbl(device).GetSurfaceFormatsKHR(device, surface, pSurfaceFormatCount, pSurfaceFormats);
+VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) {
+ return GetVtbl(physicalDevice).GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
}
__attribute__((visibility("default")))
-VkResult vkGetSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
- return GetVtbl(device).GetSurfacePresentModesKHR(device, surface, pPresentModeCount, pPresentModes);
+VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
+ return GetVtbl(physicalDevice).GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
}
__attribute__((visibility("default")))
diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
index a0987e2..4e08015 100644
--- a/vulkan/libvulkan/get_proc_addr.cpp
+++ b/vulkan/libvulkan/get_proc_addr.cpp
@@ -64,6 +64,9 @@
{"vkGetPhysicalDeviceProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceProperties)},
{"vkGetPhysicalDeviceQueueFamilyProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceQueueFamilyProperties)},
{"vkGetPhysicalDeviceSparseImageFormatProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSparseImageFormatProperties)},
+ {"vkGetPhysicalDeviceSurfaceCapabilitiesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSurfaceCapabilitiesKHR)},
+ {"vkGetPhysicalDeviceSurfaceFormatsKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSurfaceFormatsKHR)},
+ {"vkGetPhysicalDeviceSurfacePresentModesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSurfacePresentModesKHR)},
{"vkGetPhysicalDeviceSurfaceSupportKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSurfaceSupportKHR)},
// clang-format on
};
@@ -181,9 +184,6 @@
{"vkGetPipelineCacheData", reinterpret_cast<PFN_vkVoidFunction>(vkGetPipelineCacheData)},
{"vkGetQueryPoolResults", reinterpret_cast<PFN_vkVoidFunction>(vkGetQueryPoolResults)},
{"vkGetRenderAreaGranularity", reinterpret_cast<PFN_vkVoidFunction>(vkGetRenderAreaGranularity)},
- {"vkGetSurfaceFormatsKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSurfaceFormatsKHR)},
- {"vkGetSurfacePresentModesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSurfacePresentModesKHR)},
- {"vkGetSurfacePropertiesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSurfacePropertiesKHR)},
{"vkGetSwapchainImagesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSwapchainImagesKHR)},
{"vkInvalidateMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(vkInvalidateMappedMemoryRanges)},
{"vkMapMemory", reinterpret_cast<PFN_vkVoidFunction>(vkMapMemory)},
@@ -221,6 +221,9 @@
{"vkGetPhysicalDeviceProperties", offsetof(InstanceVtbl, GetPhysicalDeviceProperties)},
{"vkGetPhysicalDeviceQueueFamilyProperties", offsetof(InstanceVtbl, GetPhysicalDeviceQueueFamilyProperties)},
{"vkGetPhysicalDeviceSparseImageFormatProperties", offsetof(InstanceVtbl, GetPhysicalDeviceSparseImageFormatProperties)},
+ {"vkGetPhysicalDeviceSurfaceCapabilitiesKHR", offsetof(InstanceVtbl, GetPhysicalDeviceSurfaceCapabilitiesKHR)},
+ {"vkGetPhysicalDeviceSurfaceFormatsKHR", offsetof(InstanceVtbl, GetPhysicalDeviceSurfaceFormatsKHR)},
+ {"vkGetPhysicalDeviceSurfacePresentModesKHR", offsetof(InstanceVtbl, GetPhysicalDeviceSurfacePresentModesKHR)},
{"vkGetPhysicalDeviceSurfaceSupportKHR", offsetof(InstanceVtbl, GetPhysicalDeviceSurfaceSupportKHR)},
// clang-format on
};
@@ -338,9 +341,6 @@
{"vkGetPipelineCacheData", offsetof(DeviceVtbl, GetPipelineCacheData)},
{"vkGetQueryPoolResults", offsetof(DeviceVtbl, GetQueryPoolResults)},
{"vkGetRenderAreaGranularity", offsetof(DeviceVtbl, GetRenderAreaGranularity)},
- {"vkGetSurfaceFormatsKHR", offsetof(DeviceVtbl, GetSurfaceFormatsKHR)},
- {"vkGetSurfacePresentModesKHR", offsetof(DeviceVtbl, GetSurfacePresentModesKHR)},
- {"vkGetSurfacePropertiesKHR", offsetof(DeviceVtbl, GetSurfacePropertiesKHR)},
{"vkGetSwapchainImagesKHR", offsetof(DeviceVtbl, GetSwapchainImagesKHR)},
{"vkInvalidateMappedMemoryRanges", offsetof(DeviceVtbl, InvalidateMappedMemoryRanges)},
{"vkMapMemory", offsetof(DeviceVtbl, MapMemory)},
@@ -486,6 +486,9 @@
}
vtbl.DestroySurfaceKHR = reinterpret_cast<PFN_vkDestroySurfaceKHR>(get_proc_addr(instance, "vkDestroySurfaceKHR"));
vtbl.GetPhysicalDeviceSurfaceSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceSupportKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"));
+ vtbl.GetPhysicalDeviceSurfaceCapabilitiesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"));
+ vtbl.GetPhysicalDeviceSurfaceFormatsKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceFormatsKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"));
+ vtbl.GetPhysicalDeviceSurfacePresentModesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfacePresentModesKHR>(get_proc_addr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"));
vtbl.CreateAndroidSurfaceKHR = reinterpret_cast<PFN_vkCreateAndroidSurfaceKHR>(get_proc_addr(instance, "vkCreateAndroidSurfaceKHR"));
// clang-format on
return success;
@@ -1112,21 +1115,6 @@
ALOGE("missing device proc: %s", "vkCmdExecuteCommands");
success = false;
}
- vtbl.GetSurfacePropertiesKHR = reinterpret_cast<PFN_vkGetSurfacePropertiesKHR>(get_proc_addr(device, "vkGetSurfacePropertiesKHR"));
- if (UNLIKELY(!vtbl.GetSurfacePropertiesKHR)) {
- ALOGE("missing device proc: %s", "vkGetSurfacePropertiesKHR");
- success = false;
- }
- vtbl.GetSurfaceFormatsKHR = reinterpret_cast<PFN_vkGetSurfaceFormatsKHR>(get_proc_addr(device, "vkGetSurfaceFormatsKHR"));
- if (UNLIKELY(!vtbl.GetSurfaceFormatsKHR)) {
- ALOGE("missing device proc: %s", "vkGetSurfaceFormatsKHR");
- success = false;
- }
- vtbl.GetSurfacePresentModesKHR = reinterpret_cast<PFN_vkGetSurfacePresentModesKHR>(get_proc_addr(device, "vkGetSurfacePresentModesKHR"));
- if (UNLIKELY(!vtbl.GetSurfacePresentModesKHR)) {
- ALOGE("missing device proc: %s", "vkGetSurfacePresentModesKHR");
- success = false;
- }
vtbl.CreateSwapchainKHR = reinterpret_cast<PFN_vkCreateSwapchainKHR>(get_proc_addr(device, "vkCreateSwapchainKHR"));
if (UNLIKELY(!vtbl.CreateSwapchainKHR)) {
ALOGE("missing device proc: %s", "vkCreateSwapchainKHR");
diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
index 10877c5..03265ef 100644
--- a/vulkan/libvulkan/loader.cpp
+++ b/vulkan/libvulkan/loader.cpp
@@ -546,15 +546,6 @@
return reinterpret_cast<PFN_vkVoidFunction>(Noop);
}
// WSI extensions are not in the driver so return the loader functions
- if (strcmp(name, "vkGetSurfacePropertiesKHR") == 0) {
- return reinterpret_cast<PFN_vkVoidFunction>(GetSurfacePropertiesKHR);
- }
- if (strcmp(name, "vkGetSurfaceFormatsKHR") == 0) {
- return reinterpret_cast<PFN_vkVoidFunction>(GetSurfaceFormatsKHR);
- }
- if (strcmp(name, "vkGetSurfacePresentModesKHR") == 0) {
- return reinterpret_cast<PFN_vkVoidFunction>(GetSurfacePresentModesKHR);
- }
if (strcmp(name, "vkCreateSwapchainKHR") == 0) {
return reinterpret_cast<PFN_vkVoidFunction>(CreateSwapchainKHR);
}
@@ -900,6 +891,9 @@
.EnumerateDeviceLayerProperties = EnumerateDeviceLayerPropertiesBottom,
.GetPhysicalDeviceSparseImageFormatProperties = GetPhysicalDeviceSparseImageFormatPropertiesBottom,
.GetPhysicalDeviceSurfaceSupportKHR = GetPhysicalDeviceSurfaceSupportKHR,
+ .GetPhysicalDeviceSurfaceCapabilitiesKHR = GetPhysicalDeviceSurfaceCapabilitiesKHR,
+ .GetPhysicalDeviceSurfaceFormatsKHR = GetPhysicalDeviceSurfaceFormatsKHR,
+ .GetPhysicalDeviceSurfacePresentModesKHR = GetPhysicalDeviceSurfacePresentModesKHR,
// clang-format on
};
diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
index 5c176db..b6c8552 100644
--- a/vulkan/libvulkan/loader.h
+++ b/vulkan/libvulkan/loader.h
@@ -51,6 +51,9 @@
PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
// Layers and loader only, not implemented by drivers
+ PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
+ PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
+ PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
@@ -187,9 +190,6 @@
PFN_vkCmdExecuteCommands CmdExecuteCommands;
// Layers and loader only, not implemented by drivers
- PFN_vkGetSurfacePropertiesKHR GetSurfacePropertiesKHR;
- PFN_vkGetSurfaceFormatsKHR GetSurfaceFormatsKHR;
- PFN_vkGetSurfacePresentModesKHR GetSurfacePresentModesKHR;
PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
@@ -268,18 +268,20 @@
void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface);
VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev,
uint32_t queue_family,
- VkSurfaceKHR surface);
-VkResult GetSurfacePropertiesKHR(VkDevice device,
- VkSurfaceKHR surface,
- VkSurfacePropertiesKHR* properties);
-VkResult GetSurfaceFormatsKHR(VkDevice device,
- VkSurfaceKHR surface,
- uint32_t* count,
- VkSurfaceFormatKHR* formats);
-VkResult GetSurfacePresentModesKHR(VkDevice device,
- VkSurfaceKHR surface,
- uint32_t* count,
- VkPresentModeKHR* modes);
+ VkSurfaceKHR surface,
+ VkBool32* pSupported);
+VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VkPhysicalDevice pdev,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* capabilities);
+VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev,
+ VkSurfaceKHR surface,
+ uint32_t* count,
+ VkSurfaceFormatKHR* formats);
+VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice pdev,
+ VkSurfaceKHR surface,
+ uint32_t* count,
+ VkPresentModeKHR* modes);
VkResult CreateSwapchainKHR(VkDevice device,
const VkSwapchainCreateInfoKHR* create_info,
VkSwapchainKHR* swapchain_handle);
diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
index 88619186..f1fe236 100644
--- a/vulkan/libvulkan/swapchain.cpp
+++ b/vulkan/libvulkan/swapchain.cpp
@@ -177,13 +177,16 @@
VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/,
uint32_t /*queue_family*/,
- VkSurfaceKHR /*surface*/) {
+ VkSurfaceKHR /*surface*/,
+ VkBool32* pSupported) {
+ *pSupported = VK_TRUE;
return VK_SUCCESS;
}
-VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
- VkSurfaceKHR surface,
- VkSurfacePropertiesKHR* properties) {
+VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VkPhysicalDevice /*pdev*/,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* capabilities) {
int err;
ANativeWindow* window = SurfaceFromHandle(surface)->window.get();
@@ -201,25 +204,25 @@
return VK_ERROR_INITIALIZATION_FAILED;
}
- properties->currentExtent = VkExtent2D{width, height};
+ capabilities->currentExtent = VkExtent2D{width, height};
// TODO(jessehall): Figure out what the min/max values should be.
- properties->minImageCount = 2;
- properties->maxImageCount = 3;
+ capabilities->minImageCount = 2;
+ capabilities->maxImageCount = 3;
// TODO(jessehall): Figure out what the max extent should be. Maximum
// texture dimension maybe?
- properties->minImageExtent = VkExtent2D{1, 1};
- properties->maxImageExtent = VkExtent2D{4096, 4096};
+ capabilities->minImageExtent = VkExtent2D{1, 1};
+ capabilities->maxImageExtent = VkExtent2D{4096, 4096};
// TODO(jessehall): We can support all transforms, fix this once
// implemented.
- properties->supportedTransforms = VK_SURFACE_TRANSFORM_NONE_BIT_KHR;
+ capabilities->supportedTransforms = VK_SURFACE_TRANSFORM_NONE_BIT_KHR;
// TODO(jessehall): Implement based on NATIVE_WINDOW_TRANSFORM_HINT.
- properties->currentTransform = VK_SURFACE_TRANSFORM_NONE_KHR;
+ capabilities->currentTransform = VK_SURFACE_TRANSFORM_NONE_KHR;
- properties->maxImageArraySize = 1;
+ capabilities->maxImageArraySize = 1;
// TODO(jessehall): I think these are right, but haven't thought hard about
// it. Do we need to query the driver for support of any of these?
@@ -227,7 +230,7 @@
// - VK_IMAGE_USAGE_GENERAL: maybe? does this imply cpu mappable?
// - VK_IMAGE_USAGE_DEPTH_STENCIL_BIT: definitely not
// - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT: definitely not
- properties->supportedUsageFlags =
+ capabilities->supportedUsageFlags =
VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT |
VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT | VK_IMAGE_USAGE_SAMPLED_BIT |
VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
@@ -236,10 +239,10 @@
return VK_SUCCESS;
}
-VkResult GetSurfaceFormatsKHR(VkDevice /*device*/,
- VkSurfaceKHR /*surface*/,
- uint32_t* count,
- VkSurfaceFormatKHR* formats) {
+VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice /*pdev*/,
+ VkSurfaceKHR /*surface*/,
+ uint32_t* count,
+ VkSurfaceFormatKHR* formats) {
// TODO(jessehall): Fill out the set of supported formats. Longer term, add
// a new gralloc method to query whether a (format, usage) pair is
// supported, and check that for each gralloc format that corresponds to a
@@ -262,10 +265,10 @@
return result;
}
-VkResult GetSurfacePresentModesKHR(VkDevice /*device*/,
- VkSurfaceKHR /*surface*/,
- uint32_t* count,
- VkPresentModeKHR* modes) {
+VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice /*pdev*/,
+ VkSurfaceKHR /*surface*/,
+ uint32_t* count,
+ VkPresentModeKHR* modes) {
const VkPresentModeKHR kModes[] = {
VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_FIFO_KHR,
};