diff --git a/dlls/winevulkan/loader_thunks.c b/dlls/winevulkan/loader_thunks.c index c0f164af17d..694c65ff213 100644 --- a/dlls/winevulkan/loader_thunks.c +++ b/dlls/winevulkan/loader_thunks.c @@ -5738,6 +5738,17 @@ void WINAPI vkReleaseProfilingLockKHR(VkDevice device) assert(!status); } +VkResult WINAPI vkReleaseSwapchainImagesEXT(VkDevice device, const VkReleaseSwapchainImagesInfoEXT *pReleaseInfo) +{ + struct vkReleaseSwapchainImagesEXT_params params; + NTSTATUS status; + params.device = device; + params.pReleaseInfo = pReleaseInfo; + status = UNIX_CALL(vkReleaseSwapchainImagesEXT, ¶ms); + assert(!status); + return params.result; +} + VkResult WINAPI vkResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) { struct vkResetCommandBuffer_params params; @@ -6525,6 +6536,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkQueueWaitIdle", vkQueueWaitIdle}, {"vkReleasePerformanceConfigurationINTEL", vkReleasePerformanceConfigurationINTEL}, {"vkReleaseProfilingLockKHR", vkReleaseProfilingLockKHR}, + {"vkReleaseSwapchainImagesEXT", vkReleaseSwapchainImagesEXT}, {"vkResetCommandBuffer", vkResetCommandBuffer}, {"vkResetCommandPool", vkResetCommandPool}, {"vkResetDescriptorPool", vkResetDescriptorPool}, diff --git a/dlls/winevulkan/loader_thunks.h b/dlls/winevulkan/loader_thunks.h index f2a9a6f18ff..b80a0349329 100644 --- a/dlls/winevulkan/loader_thunks.h +++ b/dlls/winevulkan/loader_thunks.h @@ -514,6 +514,7 @@ enum unix_call unix_vkQueueWaitIdle, unix_vkReleasePerformanceConfigurationINTEL, unix_vkReleaseProfilingLockKHR, + unix_vkReleaseSwapchainImagesEXT, unix_vkResetCommandBuffer, unix_vkResetCommandPool, unix_vkResetDescriptorPool, @@ -4421,6 +4422,13 @@ struct vkReleaseProfilingLockKHR_params VkDevice device; }; +struct vkReleaseSwapchainImagesEXT_params +{ + VkDevice device; + const VkReleaseSwapchainImagesInfoEXT *pReleaseInfo; + VkResult result; +}; + struct vkResetCommandBuffer_params { VkCommandBuffer commandBuffer; diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index fb8aa1f8185..7a883caceac 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -65,7 +65,7 @@ from enum import Enum LOGGER = logging.Logger("vulkan") LOGGER.addHandler(logging.StreamHandler()) -VK_XML_VERSION = "1.3.235" +VK_XML_VERSION = "1.3.237" WINE_VK_VERSION = (1, 3) # Filenames to create. @@ -92,6 +92,7 @@ UNSUPPORTED_EXTENSIONS = [ "VK_EXT_headless_surface", # Needs WSI work. "VK_KHR_display", # Needs WSI work. "VK_KHR_surface_protected_capabilities", + "VK_LUNARG_direct_driver_loading", # Implemented in the Vulkan loader # Device extensions "VK_AMD_display_native_hdr", diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index 3f7c5ba63c7..2352a17a553 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -2744,6 +2744,13 @@ typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32 VkBool32 shaderCoreBuiltins; } VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32; +typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkBool32 swapchainMaintenance1; +} VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32; + typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 { VkStructureType sType; @@ -2751,6 +2758,13 @@ typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 VkBool32 rayTracingInvocationReorder; } VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32; +typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM32 +{ + VkStructureType sType; + PTR32 pNext; + VkBool32 multiviewPerViewViewports; +} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM32; + typedef struct VkDeviceCreateInfo32 { VkStructureType sType; @@ -3840,6 +3854,23 @@ typedef struct VkSwapchainPresentBarrierCreateInfoNV32 VkBool32 presentBarrierEnable; } VkSwapchainPresentBarrierCreateInfoNV32; +typedef struct VkSwapchainPresentModesCreateInfoEXT32 +{ + VkStructureType sType; + PTR32 pNext; + uint32_t presentModeCount; + PTR32 pPresentModes; +} VkSwapchainPresentModesCreateInfoEXT32; + +typedef struct VkSwapchainPresentScalingCreateInfoEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkPresentScalingFlagsEXT scalingBehavior; + VkPresentGravityFlagsEXT presentGravityX; + VkPresentGravityFlagsEXT presentGravityY; +} VkSwapchainPresentScalingCreateInfoEXT32; + typedef struct VkSwapchainCreateInfoKHR32 { VkStructureType sType; @@ -5613,6 +5644,13 @@ typedef struct VkFramebufferMixedSamplesCombinationNV32 VkSampleCountFlags colorSamples; } VkFramebufferMixedSamplesCombinationNV32; +typedef struct VkSurfacePresentModeEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkPresentModeKHR presentMode; +} VkSurfacePresentModeEXT32; + typedef struct VkPhysicalDeviceSurfaceInfo2KHR32 { VkStructureType sType; @@ -5627,6 +5665,25 @@ typedef struct VkSurfaceCapabilitiesPresentBarrierNV32 VkBool32 presentBarrierSupported; } VkSurfaceCapabilitiesPresentBarrierNV32; +typedef struct VkSurfacePresentScalingCapabilitiesEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkPresentScalingFlagsEXT supportedPresentScaling; + VkPresentGravityFlagsEXT supportedPresentGravityX; + VkPresentGravityFlagsEXT supportedPresentGravityY; + VkExtent2D minScaledImageExtent; + VkExtent2D maxScaledImageExtent; +} VkSurfacePresentScalingCapabilitiesEXT32; + +typedef struct VkSurfacePresentModeCompatibilityEXT32 +{ + VkStructureType sType; + PTR32 pNext; + uint32_t presentModeCount; + PTR32 pPresentModes; +} VkSurfacePresentModeCompatibilityEXT32; + typedef struct VkSurfaceCapabilities2KHR32 { VkStructureType sType; @@ -5854,6 +5911,22 @@ typedef struct VkPresentIdKHR32 PTR32 pPresentIds; } VkPresentIdKHR32; +typedef struct VkSwapchainPresentFenceInfoEXT32 +{ + VkStructureType sType; + PTR32 pNext; + uint32_t swapchainCount; + PTR32 pFences; +} VkSwapchainPresentFenceInfoEXT32; + +typedef struct VkSwapchainPresentModeInfoEXT32 +{ + VkStructureType sType; + PTR32 pNext; + uint32_t swapchainCount; + PTR32 pPresentModes; +} VkSwapchainPresentModeInfoEXT32; + typedef struct VkPresentInfoKHR32 { VkStructureType sType; @@ -5940,6 +6013,15 @@ typedef struct VkSubmitInfo232 } VkSubmitInfo232; typedef VkSubmitInfo232 VkSubmitInfo2KHR32; +typedef struct VkReleaseSwapchainImagesInfoEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkSwapchainKHR DECLSPEC_ALIGN(8) swapchain; + uint32_t imageIndexCount; + PTR32 pImageIndices; +} VkReleaseSwapchainImagesInfoEXT32; + typedef struct VkDebugUtilsObjectTagInfoEXT32 { VkStructureType sType; @@ -11321,6 +11403,17 @@ static inline void convert_VkDeviceCreateInfo_win64_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: + { + VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *in_ext = (const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->swapchainMaintenance1 = in_ext->swapchainMaintenance1; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV: { VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); @@ -11332,6 +11425,17 @@ static inline void convert_VkDeviceCreateInfo_win64_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM: + { + VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *in_ext = (const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM; + out_ext->pNext = NULL; + out_ext->multiviewPerViewViewports = in_ext->multiviewPerViewViewports; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.", in_header->sType); break; @@ -13149,6 +13253,17 @@ static inline void convert_VkDeviceCreateInfo_win32_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: + { + VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32 *in_ext = (const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->swapchainMaintenance1 = in_ext->swapchainMaintenance1; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV: { VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); @@ -13160,6 +13275,17 @@ static inline void convert_VkDeviceCreateInfo_win32_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM: + { + VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM32 *in_ext = (const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM; + out_ext->pNext = NULL; + out_ext->multiviewPerViewViewports = in_ext->multiviewPerViewViewports; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.", in_header->sType); break; @@ -16226,6 +16352,31 @@ static inline void convert_VkSwapchainCreateInfoKHR_win32_to_host(struct convers out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT: + { + VkSwapchainPresentModesCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkSwapchainPresentModesCreateInfoEXT32 *in_ext = (const VkSwapchainPresentModesCreateInfoEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT; + out_ext->pNext = NULL; + out_ext->presentModeCount = in_ext->presentModeCount; + out_ext->pPresentModes = (const VkPresentModeKHR *)UlongToPtr(in_ext->pPresentModes); + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT: + { + VkSwapchainPresentScalingCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkSwapchainPresentScalingCreateInfoEXT32 *in_ext = (const VkSwapchainPresentScalingCreateInfoEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT; + out_ext->pNext = NULL; + out_ext->scalingBehavior = in_ext->scalingBehavior; + out_ext->presentGravityX = in_ext->presentGravityX; + out_ext->presentGravityY = in_ext->presentGravityY; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.", in_header->sType); break; @@ -17344,6 +17495,17 @@ static inline void convert_VkImageSparseMemoryRequirementsInfo2_win32_to_host(co FIXME("Unexpected pNext\n"); } +static inline void convert_VkSubresourceLayout_win32_to_host(const VkSubresourceLayout32 *in, VkSubresourceLayout *out) +{ + if (!in) return; + + out->offset = in->offset; + out->size = in->size; + out->rowPitch = in->rowPitch; + out->arrayPitch = in->arrayPitch; + out->depthPitch = in->depthPitch; +} + static inline void convert_VkSubresourceLayout_host_to_win32(const VkSubresourceLayout *in, VkSubresourceLayout32 *out) { if (!in) return; @@ -19453,6 +19615,17 @@ static inline void convert_VkPhysicalDeviceFeatures2_win32_to_host(struct conver out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: + { + VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32 *in_ext = (const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->swapchainMaintenance1 = in_ext->swapchainMaintenance1; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV: { VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); @@ -19464,6 +19637,17 @@ static inline void convert_VkPhysicalDeviceFeatures2_win32_to_host(struct conver out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM: + { + VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM32 *in_ext = (const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM; + out_ext->pNext = NULL; + out_ext->multiviewPerViewViewports = in_ext->multiviewPerViewViewports; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.", in_header->sType); break; @@ -20939,6 +21123,15 @@ static inline void convert_VkPhysicalDeviceFeatures2_host_to_win32(const VkPhysi out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: + { + VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT); + const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *in_ext = (const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT; + out_ext->swapchainMaintenance1 = in_ext->swapchainMaintenance1; + out_header = (void *)out_ext; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV: { VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV); @@ -20948,6 +21141,15 @@ static inline void convert_VkPhysicalDeviceFeatures2_host_to_win32(const VkPhysi out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM: + { + VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM); + const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *in_ext = (const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM; + out_ext->multiviewPerViewViewports = in_ext->multiviewPerViewViewports; + out_header = (void *)out_ext; + break; + } default: break; } @@ -23479,15 +23681,37 @@ static inline void convert_VkFramebufferMixedSamplesCombinationNV_array_host_to_ } } -static inline void convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_unwrapped_host(const VkPhysicalDeviceSurfaceInfo2KHR32 *in, VkPhysicalDeviceSurfaceInfo2KHR *out) +static inline void convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_unwrapped_host(struct conversion_context *ctx, const VkPhysicalDeviceSurfaceInfo2KHR32 *in, VkPhysicalDeviceSurfaceInfo2KHR *out) { + const VkBaseInStructure32 *in_header; + VkBaseOutStructure *out_header = (void *)out; + if (!in) return; out->sType = in->sType; out->pNext = NULL; out->surface = in->surface; - if (in->pNext) - FIXME("Unexpected pNext\n"); + + for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) + { + switch (in_header->sType) + { + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT: + { + VkSurfacePresentModeEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkSurfacePresentModeEXT32 *in_ext = (const VkSurfacePresentModeEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT; + out_ext->pNext = NULL; + out_ext->presentMode = in_ext->presentMode; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + default: + FIXME("Unhandled sType %u.", in_header->sType); + break; + } + } } static inline void convert_VkSurfaceCapabilities2KHR_win32_to_host(struct conversion_context *ctx, const VkSurfaceCapabilities2KHR32 *in, VkSurfaceCapabilities2KHR *out) @@ -23513,6 +23737,33 @@ static inline void convert_VkSurfaceCapabilities2KHR_win32_to_host(struct conver out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT: + { + VkSurfacePresentScalingCapabilitiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkSurfacePresentScalingCapabilitiesEXT32 *in_ext = (const VkSurfacePresentScalingCapabilitiesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT; + out_ext->pNext = NULL; + out_ext->supportedPresentScaling = in_ext->supportedPresentScaling; + out_ext->supportedPresentGravityX = in_ext->supportedPresentGravityX; + out_ext->supportedPresentGravityY = in_ext->supportedPresentGravityY; + out_ext->minScaledImageExtent = in_ext->minScaledImageExtent; + out_ext->maxScaledImageExtent = in_ext->maxScaledImageExtent; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT: + { + VkSurfacePresentModeCompatibilityEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkSurfacePresentModeCompatibilityEXT32 *in_ext = (const VkSurfacePresentModeCompatibilityEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT; + out_ext->pNext = NULL; + out_ext->presentModeCount = in_ext->presentModeCount; + out_ext->pPresentModes = (VkPresentModeKHR *)UlongToPtr(in_ext->pPresentModes); + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.", in_header->sType); break; @@ -23542,6 +23793,29 @@ static inline void convert_VkSurfaceCapabilities2KHR_host_to_win32(const VkSurfa out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT: + { + VkSurfacePresentScalingCapabilitiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT); + const VkSurfacePresentScalingCapabilitiesEXT *in_ext = (const VkSurfacePresentScalingCapabilitiesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT; + out_ext->supportedPresentScaling = in_ext->supportedPresentScaling; + out_ext->supportedPresentGravityX = in_ext->supportedPresentGravityX; + out_ext->supportedPresentGravityY = in_ext->supportedPresentGravityY; + out_ext->minScaledImageExtent = in_ext->minScaledImageExtent; + out_ext->maxScaledImageExtent = in_ext->maxScaledImageExtent; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT: + { + VkSurfacePresentModeCompatibilityEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT); + const VkSurfacePresentModeCompatibilityEXT *in_ext = (const VkSurfacePresentModeCompatibilityEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT; + out_ext->presentModeCount = in_ext->presentModeCount; + out_ext->pPresentModes = PtrToUlong(in_ext->pPresentModes); + out_header = (void *)out_ext; + break; + } default: break; } @@ -23559,15 +23833,37 @@ static inline void convert_VkPhysicalDeviceSurfaceInfo2KHR_win64_to_host(const V } #endif /* _WIN64 */ -static inline void convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_host(const VkPhysicalDeviceSurfaceInfo2KHR32 *in, VkPhysicalDeviceSurfaceInfo2KHR *out) +static inline void convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_host(struct conversion_context *ctx, const VkPhysicalDeviceSurfaceInfo2KHR32 *in, VkPhysicalDeviceSurfaceInfo2KHR *out) { + const VkBaseInStructure32 *in_header; + VkBaseOutStructure *out_header = (void *)out; + if (!in) return; out->sType = in->sType; out->pNext = NULL; out->surface = in->surface ? wine_surface_from_handle(in->surface)->driver_surface : 0; - if (in->pNext) - FIXME("Unexpected pNext\n"); + + for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) + { + switch (in_header->sType) + { + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT: + { + VkSurfacePresentModeEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkSurfacePresentModeEXT32 *in_ext = (const VkSurfacePresentModeEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT; + out_ext->pNext = NULL; + out_ext->presentMode = in_ext->presentMode; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + default: + FIXME("Unhandled sType %u.", in_header->sType); + break; + } + } } static inline void convert_VkSurfaceFormat2KHR_win32_to_host(struct conversion_context *ctx, const VkSurfaceFormat2KHR32 *in, VkSurfaceFormat2KHR *out) @@ -24503,6 +24799,30 @@ static inline void convert_VkPresentInfoKHR_win32_to_host(struct conversion_cont out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: + { + VkSwapchainPresentFenceInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkSwapchainPresentFenceInfoEXT32 *in_ext = (const VkSwapchainPresentFenceInfoEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT; + out_ext->pNext = NULL; + out_ext->swapchainCount = in_ext->swapchainCount; + out_ext->pFences = (const VkFence *)UlongToPtr(in_ext->pFences); + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT: + { + VkSwapchainPresentModeInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkSwapchainPresentModeInfoEXT32 *in_ext = (const VkSwapchainPresentModeInfoEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT; + out_ext->pNext = NULL; + out_ext->swapchainCount = in_ext->swapchainCount; + out_ext->pPresentModes = (const VkPresentModeKHR *)UlongToPtr(in_ext->pPresentModes); + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.", in_header->sType); break; @@ -24819,6 +25139,19 @@ static inline const VkSubmitInfo2 *convert_VkSubmitInfo2_array_win32_to_host(str return out; } +static inline void convert_VkReleaseSwapchainImagesInfoEXT_win32_to_host(const VkReleaseSwapchainImagesInfoEXT32 *in, VkReleaseSwapchainImagesInfoEXT *out) +{ + if (!in) return; + + out->sType = in->sType; + out->pNext = NULL; + out->swapchain = in->swapchain; + out->imageIndexCount = in->imageIndexCount; + out->pImageIndices = (const uint32_t *)UlongToPtr(in->pImageIndices); + if (in->pNext) + FIXME("Unexpected pNext\n"); +} + #ifdef _WIN64 static inline void convert_VkDebugUtilsObjectNameInfoEXT_win64_to_host(const VkDebugUtilsObjectNameInfoEXT *in, VkDebugUtilsObjectNameInfoEXT *out) { @@ -37213,6 +37546,7 @@ static NTSTATUS thunk32_vkGetImageSubresourceLayout(void *args) TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->image), params->pSubresource, params->pLayout); + convert_VkSubresourceLayout_win32_to_host((VkSubresourceLayout32 *)UlongToPtr(params->pLayout), &pLayout_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageSubresourceLayout(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->image, (const VkImageSubresource *)UlongToPtr(params->pSubresource), &pLayout_host); convert_VkSubresourceLayout_host_to_win32(&pLayout_host, (VkSubresourceLayout32 *)UlongToPtr(params->pLayout)); return STATUS_SUCCESS; @@ -38593,7 +38927,7 @@ static NTSTATUS thunk32_vkGetPhysicalDeviceSurfaceCapabilities2KHR(void *args) TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pSurfaceInfo, params->pSurfaceCapabilities); init_conversion_context(&ctx); - convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_unwrapped_host((const VkPhysicalDeviceSurfaceInfo2KHR32 *)UlongToPtr(params->pSurfaceInfo), &pSurfaceInfo_host); + convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_unwrapped_host(&ctx, (const VkPhysicalDeviceSurfaceInfo2KHR32 *)UlongToPtr(params->pSurfaceInfo), &pSurfaceInfo_host); convert_VkSurfaceCapabilities2KHR_win32_to_host(&ctx, (VkSurfaceCapabilities2KHR32 *)UlongToPtr(params->pSurfaceCapabilities), &pSurfaceCapabilities_host); params->result = wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pSurfaceInfo_host, &pSurfaceCapabilities_host); convert_VkSurfaceCapabilities2KHR_host_to_win32(&pSurfaceCapabilities_host, (VkSurfaceCapabilities2KHR32 *)UlongToPtr(params->pSurfaceCapabilities)); @@ -38660,7 +38994,7 @@ static NTSTATUS thunk32_vkGetPhysicalDeviceSurfaceFormats2KHR(void *args) TRACE("%#x, %#x, %#x, %#x\n", params->physicalDevice, params->pSurfaceInfo, params->pSurfaceFormatCount, params->pSurfaceFormats); init_conversion_context(&ctx); - convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_host((const VkPhysicalDeviceSurfaceInfo2KHR32 *)UlongToPtr(params->pSurfaceInfo), &pSurfaceInfo_host); + convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_host(&ctx, (const VkPhysicalDeviceSurfaceInfo2KHR32 *)UlongToPtr(params->pSurfaceInfo), &pSurfaceInfo_host); pSurfaceFormats_host = convert_VkSurfaceFormat2KHR_array_win32_to_host(&ctx, (VkSurfaceFormat2KHR32 *)UlongToPtr(params->pSurfaceFormats), *(uint32_t *)UlongToPtr(params->pSurfaceFormatCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSurfaceFormats2KHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pSurfaceInfo_host, (uint32_t *)UlongToPtr(params->pSurfaceFormatCount), pSurfaceFormats_host); convert_VkSurfaceFormat2KHR_array_host_to_win32(pSurfaceFormats_host, (VkSurfaceFormat2KHR32 *)UlongToPtr(params->pSurfaceFormats), *(uint32_t *)UlongToPtr(params->pSurfaceFormatCount)); @@ -40105,6 +40439,35 @@ static NTSTATUS thunk32_vkReleaseProfilingLockKHR(void *args) return STATUS_SUCCESS; } +#ifdef _WIN64 +static NTSTATUS thunk64_vkReleaseSwapchainImagesEXT(void *args) +{ + struct vkReleaseSwapchainImagesEXT_params *params = args; + + TRACE("%p, %p\n", params->device, params->pReleaseInfo); + + params->result = wine_device_from_handle(params->device)->funcs.p_vkReleaseSwapchainImagesEXT(wine_device_from_handle(params->device)->device, params->pReleaseInfo); + return STATUS_SUCCESS; +} +#endif /* _WIN64 */ + +static NTSTATUS thunk32_vkReleaseSwapchainImagesEXT(void *args) +{ + struct + { + PTR32 device; + PTR32 pReleaseInfo; + VkResult result; + } *params = args; + VkReleaseSwapchainImagesInfoEXT pReleaseInfo_host; + + TRACE("%#x, %#x\n", params->device, params->pReleaseInfo); + + convert_VkReleaseSwapchainImagesInfoEXT_win32_to_host((const VkReleaseSwapchainImagesInfoEXT32 *)UlongToPtr(params->pReleaseInfo), &pReleaseInfo_host); + params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkReleaseSwapchainImagesEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pReleaseInfo_host); + return STATUS_SUCCESS; +} + #ifdef _WIN64 static NTSTATUS thunk64_vkResetCommandBuffer(void *args) { @@ -41058,6 +41421,7 @@ static const char * const vk_device_extensions[] = "VK_EXT_shader_viewport_index_layer", "VK_EXT_subgroup_size_control", "VK_EXT_subpass_merge_feedback", + "VK_EXT_swapchain_maintenance1", "VK_EXT_texel_buffer_alignment", "VK_EXT_texture_compression_astc_hdr", "VK_EXT_tooling_info", @@ -41181,6 +41545,7 @@ static const char * const vk_device_extensions[] = "VK_NV_viewport_swizzle", "VK_QCOM_fragment_density_map_offset", "VK_QCOM_image_processing", + "VK_QCOM_multiview_per_view_viewports", "VK_QCOM_render_pass_shader_resolve", "VK_QCOM_render_pass_store_ops", "VK_QCOM_render_pass_transform", @@ -41194,6 +41559,7 @@ static const char * const vk_instance_extensions[] = { "VK_EXT_debug_report", "VK_EXT_debug_utils", + "VK_EXT_surface_maintenance1", "VK_EXT_swapchain_colorspace", "VK_EXT_validation_features", "VK_EXT_validation_flags", @@ -41749,6 +42115,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk64_vkQueueWaitIdle, thunk64_vkReleasePerformanceConfigurationINTEL, thunk64_vkReleaseProfilingLockKHR, + thunk64_vkReleaseSwapchainImagesEXT, thunk64_vkResetCommandBuffer, thunk64_vkResetCommandPool, thunk64_vkResetDescriptorPool, @@ -42289,6 +42656,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk32_vkQueueWaitIdle, thunk32_vkReleasePerformanceConfigurationINTEL, thunk32_vkReleaseProfilingLockKHR, + thunk32_vkReleaseSwapchainImagesEXT, thunk32_vkResetCommandBuffer, thunk32_vkResetCommandPool, thunk32_vkResetDescriptorPool, diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h index e4b2ec6abf9..b31cf348e1c 100644 --- a/dlls/winevulkan/vulkan_thunks.h +++ b/dlls/winevulkan/vulkan_thunks.h @@ -495,6 +495,7 @@ struct vulkan_device_funcs VkResult (*p_vkQueueWaitIdle)(VkQueue); VkResult (*p_vkReleasePerformanceConfigurationINTEL)(VkDevice, VkPerformanceConfigurationINTEL); void (*p_vkReleaseProfilingLockKHR)(VkDevice); + VkResult (*p_vkReleaseSwapchainImagesEXT)(VkDevice, const VkReleaseSwapchainImagesInfoEXT *); VkResult (*p_vkResetCommandBuffer)(VkCommandBuffer, VkCommandBufferResetFlags); VkResult (*p_vkResetCommandPool)(VkDevice, VkCommandPool, VkCommandPoolResetFlags); VkResult (*p_vkResetDescriptorPool)(VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags); @@ -1019,6 +1020,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkQueueWaitIdle) \ USE_VK_FUNC(vkReleasePerformanceConfigurationINTEL) \ USE_VK_FUNC(vkReleaseProfilingLockKHR) \ + USE_VK_FUNC(vkReleaseSwapchainImagesEXT) \ USE_VK_FUNC(vkResetCommandBuffer) \ USE_VK_FUNC(vkResetCommandPool) \ USE_VK_FUNC(vkResetDescriptorPool) \ diff --git a/dlls/winevulkan/winevulkan.json b/dlls/winevulkan/winevulkan.json index 0f898546db0..d8c8c29fded 100644 --- a/dlls/winevulkan/winevulkan.json +++ b/dlls/winevulkan/winevulkan.json @@ -2,6 +2,6 @@ "file_format_version": "1.0.0", "ICD": { "library_path": ".\\winevulkan.dll", - "api_version": "1.3.235" + "api_version": "1.3.237" } } diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index fd24fe0fad3..77c5cc02ae7 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -402,6 +402,10 @@ #define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties" #define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1 #define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2" +#define VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_surface_maintenance1" +#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_swapchain_maintenance1" #define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1 #define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation" #define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 @@ -560,6 +564,8 @@ #define VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME "VK_EXT_pipeline_protected_access" #define VK_QCOM_TILE_PROPERTIES_SPEC_VERSION 1 #define VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME "VK_QCOM_tile_properties" +#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME "VK_QCOM_multiview_per_view_viewports" #define VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION 1 #define VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME "VK_NV_ray_tracing_invocation_reorder" #define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 @@ -590,7 +596,7 @@ #define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0) #define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0) #define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0) -#define VK_HEADER_VERSION 235 +#define VK_HEADER_VERSION 237 #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; #define VK_USE_64_BIT_PTR_DEFINES 0 @@ -724,6 +730,7 @@ typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV; typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; typedef VkFlags VkDeviceMemoryReportFlagsEXT; typedef VkFlags VkDeviceQueueCreateFlags; +typedef VkFlags VkDirectDriverLoadingFlagsLUNARG; typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT; typedef VkFlags VkDisplayModeCreateFlagsKHR; typedef VkFlags VkDisplayPlaneAlphaFlagsKHR; @@ -813,6 +820,8 @@ typedef VkFlags VkPipelineTessellationStateCreateFlags; typedef VkFlags VkPipelineVertexInputStateCreateFlags; typedef VkFlags VkPipelineViewportStateCreateFlags; typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV; +typedef VkFlags VkPresentGravityFlagsEXT; +typedef VkFlags VkPresentScalingFlagsEXT; typedef VkFlags VkPrivateDataSlotCreateFlags; typedef VkPrivateDataSlotCreateFlags VkPrivateDataSlotCreateFlagsEXT; typedef VkFlags VkQueryControlFlags; @@ -1691,6 +1700,7 @@ typedef enum VkDriverId VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21, VK_DRIVER_ID_MESA_VENUS = 22, VK_DRIVER_ID_MESA_DOZEN = 23, + VK_DRIVER_ID_MESA_NVK = 24, VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY, VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE, VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV, @@ -3237,6 +3247,14 @@ typedef enum VkPolygonMode VK_POLYGON_MODE_MAX_ENUM = 0x7fffffff, } VkPolygonMode; +typedef enum VkPresentGravityFlagBitsEXT +{ + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 0x00000001, + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 0x00000002, + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 0x00000004, + VK_PRESENT_GRAVITY_FLAG_BITS_EXT_MAX_ENUM = 0x7fffffff, +} VkPresentGravityFlagBitsEXT; + typedef enum VkPresentModeKHR { VK_PRESENT_MODE_IMMEDIATE_KHR = 0, @@ -3246,6 +3264,14 @@ typedef enum VkPresentModeKHR VK_PRESENT_MODE_KHR_MAX_ENUM = 0x7fffffff, } VkPresentModeKHR; +typedef enum VkPresentScalingFlagBitsEXT +{ + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 0x00000001, + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 0x00000002, + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 0x00000004, + VK_PRESENT_SCALING_FLAG_BITS_EXT_MAX_ENUM = 0x7fffffff, +} VkPresentScalingFlagBitsEXT; + typedef enum VkPrimitiveTopology { VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, @@ -4075,6 +4101,15 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004, + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, @@ -4266,6 +4301,7 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000, VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000, @@ -4526,6 +4562,7 @@ typedef enum VkSwapchainCreateFlagBitsKHR VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001, VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002, VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004, + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 0x00000008, VK_SWAPCHAIN_CREATE_FLAG_BITS_KHR_MAX_ENUM = 0x7fffffff, } VkSwapchainCreateFlagBitsKHR; @@ -7943,6 +7980,13 @@ typedef struct VkPhysicalDeviceMultiviewFeatures } VkPhysicalDeviceMultiviewFeatures; typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR; +typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM +{ + VkStructureType sType; + void *pNext; + VkBool32 multiviewPerViewViewports; +} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + typedef struct VkPhysicalDeviceMultiviewProperties { VkStructureType sType; @@ -8684,6 +8728,13 @@ typedef struct VkPhysicalDeviceSurfaceInfo2KHR VkSurfaceKHR WINE_VK_ALIGN(8) surface; } VkPhysicalDeviceSurfaceInfo2KHR; +typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT +{ + VkStructureType sType; + void *pNext; + VkBool32 swapchainMaintenance1; +} VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT; + typedef struct VkPhysicalDeviceSynchronization2Features { VkStructureType sType; @@ -9598,6 +9649,15 @@ typedef struct VkRectLayerKHR uint32_t layer; } VkRectLayerKHR; +typedef struct VkReleaseSwapchainImagesInfoEXT +{ + VkStructureType sType; + const void *pNext; + VkSwapchainKHR WINE_VK_ALIGN(8) swapchain; + uint32_t imageIndexCount; + const uint32_t *pImageIndices; +} VkReleaseSwapchainImagesInfoEXT; + typedef struct VkRenderPassAttachmentBeginInfo { VkStructureType sType; @@ -10207,6 +10267,32 @@ typedef struct VkSurfaceFormatKHR VkColorSpaceKHR colorSpace; } VkSurfaceFormatKHR; +typedef struct VkSurfacePresentModeCompatibilityEXT +{ + VkStructureType sType; + void *pNext; + uint32_t presentModeCount; + VkPresentModeKHR *pPresentModes; +} VkSurfacePresentModeCompatibilityEXT; + +typedef struct VkSurfacePresentModeEXT +{ + VkStructureType sType; + void *pNext; + VkPresentModeKHR presentMode; +} VkSurfacePresentModeEXT; + +typedef struct VkSurfacePresentScalingCapabilitiesEXT +{ + VkStructureType sType; + void *pNext; + VkPresentScalingFlagsEXT supportedPresentScaling; + VkPresentGravityFlagsEXT supportedPresentGravityX; + VkPresentGravityFlagsEXT supportedPresentGravityY; + VkExtent2D minScaledImageExtent; + VkExtent2D maxScaledImageExtent; +} VkSurfacePresentScalingCapabilitiesEXT; + typedef struct VkSwapchainCreateInfoKHR { VkStructureType sType; @@ -10236,6 +10322,39 @@ typedef struct VkSwapchainPresentBarrierCreateInfoNV VkBool32 presentBarrierEnable; } VkSwapchainPresentBarrierCreateInfoNV; +typedef struct VkSwapchainPresentFenceInfoEXT +{ + VkStructureType sType; + void *pNext; + uint32_t swapchainCount; + const VkFence *pFences; +} VkSwapchainPresentFenceInfoEXT; + +typedef struct VkSwapchainPresentModeInfoEXT +{ + VkStructureType sType; + void *pNext; + uint32_t swapchainCount; + const VkPresentModeKHR *pPresentModes; +} VkSwapchainPresentModeInfoEXT; + +typedef struct VkSwapchainPresentModesCreateInfoEXT +{ + VkStructureType sType; + void *pNext; + uint32_t presentModeCount; + const VkPresentModeKHR *pPresentModes; +} VkSwapchainPresentModesCreateInfoEXT; + +typedef struct VkSwapchainPresentScalingCreateInfoEXT +{ + VkStructureType sType; + const void *pNext; + VkPresentScalingFlagsEXT scalingBehavior; + VkPresentGravityFlagsEXT presentGravityX; + VkPresentGravityFlagsEXT presentGravityY; +} VkSwapchainPresentScalingCreateInfoEXT; + typedef struct VkTextureLODGatherFormatPropertiesAMD { VkStructureType sType; @@ -11948,6 +12067,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue, uint32_t, const VkS typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue); typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice, VkPerformanceConfigurationINTEL); typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice); +typedef VkResult (VKAPI_PTR *PFN_vkReleaseSwapchainImagesEXT)(VkDevice, const VkReleaseSwapchainImagesInfoEXT *); typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer, VkCommandBufferResetFlags); typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice, VkCommandPool, VkCommandPoolResetFlags); typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags); @@ -12481,6 +12601,7 @@ VkResult VKAPI_CALL vkQueueSubmit2KHR(VkQueue queue, uint32_t submitCount, const VkResult VKAPI_CALL vkQueueWaitIdle(VkQueue queue); VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL(VkDevice device, VkPerformanceConfigurationINTEL configuration); void VKAPI_CALL vkReleaseProfilingLockKHR(VkDevice device); +VkResult VKAPI_CALL vkReleaseSwapchainImagesEXT(VkDevice device, const VkReleaseSwapchainImagesInfoEXT *pReleaseInfo); VkResult VKAPI_CALL vkResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags); VkResult VKAPI_CALL vkResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags); VkResult VKAPI_CALL vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);