From: Jacek Caban jacek@codeweavers.com
--- dlls/winevulkan/loader_thunks.c | 25 ++++++++ dlls/winevulkan/loader_thunks.h | 17 +++++ dlls/winevulkan/make_vulkan | 3 +- dlls/winevulkan/vulkan.c | 62 +++++++++++++++--- dlls/winevulkan/vulkan_thunks.c | 108 ++++++++++++++++++++++++++++++++ dlls/winevulkan/vulkan_thunks.h | 6 ++ include/wine/vulkan.h | 26 ++++++++ 7 files changed, 239 insertions(+), 8 deletions(-)
diff --git a/dlls/winevulkan/loader_thunks.c b/dlls/winevulkan/loader_thunks.c index db3550b8cad..826cdeea842 100644 --- a/dlls/winevulkan/loader_thunks.c +++ b/dlls/winevulkan/loader_thunks.c @@ -5228,6 +5228,18 @@ VkResult WINAPI vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize return params.result; }
+VkResult WINAPI vkMapMemory2KHR(VkDevice device, const VkMemoryMapInfoKHR *pMemoryMapInfo, void **ppData) +{ + struct vkMapMemory2KHR_params params; + NTSTATUS status; + params.device = device; + params.pMemoryMapInfo = pMemoryMapInfo; + params.ppData = ppData; + status = UNIX_CALL(vkMapMemory2KHR, ¶ms); + assert(!status); + return params.result; +} + VkResult WINAPI vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache *pSrcCaches) { struct vkMergePipelineCaches_params params; @@ -5639,6 +5651,17 @@ void WINAPI vkUnmapMemory(VkDevice device, VkDeviceMemory memory) assert(!status); }
+VkResult WINAPI vkUnmapMemory2KHR(VkDevice device, const VkMemoryUnmapInfoKHR *pMemoryUnmapInfo) +{ + struct vkUnmapMemory2KHR_params params; + NTSTATUS status; + params.device = device; + params.pMemoryUnmapInfo = pMemoryUnmapInfo; + status = UNIX_CALL(vkUnmapMemory2KHR, ¶ms); + assert(!status); + return params.result; +} + void WINAPI vkUpdateDescriptorSetWithTemplate(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void *pData) { struct vkUpdateDescriptorSetWithTemplate_params params; @@ -6188,6 +6211,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkInitializePerformanceApiINTEL", vkInitializePerformanceApiINTEL}, {"vkInvalidateMappedMemoryRanges", vkInvalidateMappedMemoryRanges}, {"vkMapMemory", vkMapMemory}, + {"vkMapMemory2KHR", vkMapMemory2KHR}, {"vkMergePipelineCaches", vkMergePipelineCaches}, {"vkMergeValidationCachesEXT", vkMergeValidationCachesEXT}, {"vkQueueBeginDebugUtilsLabelEXT", vkQueueBeginDebugUtilsLabelEXT}, @@ -6223,6 +6247,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkTrimCommandPoolKHR", vkTrimCommandPoolKHR}, {"vkUninitializePerformanceApiINTEL", vkUninitializePerformanceApiINTEL}, {"vkUnmapMemory", vkUnmapMemory}, + {"vkUnmapMemory2KHR", vkUnmapMemory2KHR}, {"vkUpdateDescriptorSetWithTemplate", vkUpdateDescriptorSetWithTemplate}, {"vkUpdateDescriptorSetWithTemplateKHR", vkUpdateDescriptorSetWithTemplateKHR}, {"vkUpdateDescriptorSets", vkUpdateDescriptorSets}, diff --git a/dlls/winevulkan/loader_thunks.h b/dlls/winevulkan/loader_thunks.h index 90145cc246b..27d6ddc5b7c 100644 --- a/dlls/winevulkan/loader_thunks.h +++ b/dlls/winevulkan/loader_thunks.h @@ -509,6 +509,7 @@ enum unix_call unix_vkInitializePerformanceApiINTEL, unix_vkInvalidateMappedMemoryRanges, unix_vkMapMemory, + unix_vkMapMemory2KHR, unix_vkMergePipelineCaches, unix_vkMergeValidationCachesEXT, unix_vkQueueBeginDebugUtilsLabelEXT, @@ -545,6 +546,7 @@ enum unix_call unix_vkTrimCommandPoolKHR, unix_vkUninitializePerformanceApiINTEL, unix_vkUnmapMemory, + unix_vkUnmapMemory2KHR, unix_vkUpdateDescriptorSetWithTemplate, unix_vkUpdateDescriptorSetWithTemplateKHR, unix_vkUpdateDescriptorSets, @@ -4398,6 +4400,14 @@ struct vkMapMemory_params VkResult result; };
+struct vkMapMemory2KHR_params +{ + VkDevice device; + const VkMemoryMapInfoKHR *pMemoryMapInfo; + void **ppData; + VkResult result; +}; + struct vkMergePipelineCaches_params { VkDevice device; @@ -4665,6 +4675,13 @@ struct vkUnmapMemory_params VkDeviceMemory DECLSPEC_ALIGN(8) memory; };
+struct vkUnmapMemory2KHR_params +{ + VkDevice device; + const VkMemoryUnmapInfoKHR *pMemoryUnmapInfo; + VkResult result; +}; + struct vkUpdateDescriptorSetWithTemplate_params { VkDevice device; diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 89e0c22d051..5b2dc72f2af 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -100,7 +100,6 @@ UNSUPPORTED_EXTENSIONS = [ "VK_GOOGLE_display_timing", "VK_KHR_external_fence_win32", "VK_KHR_external_semaphore_win32", - "VK_KHR_map_memory2", # Needs wow64 handling and is useless for now. # Relates to external_semaphore and needs type conversions in bitflags. "VK_KHR_shared_presentable_image", # Needs WSI work. "VK_KHR_video_queue", # TODO Video extensions use separate headers + xml @@ -215,7 +214,9 @@ FUNCTION_OVERRIDES = { "vkAllocateMemory" : {"dispatch" : True, "driver" : False, "thunk" : ThunkType.PRIVATE}, "vkFreeMemory" : {"dispatch" : True, "driver" : False, "thunk" : ThunkType.PRIVATE}, "vkMapMemory" : {"dispatch" : True, "driver" : False, "thunk" : ThunkType.PRIVATE}, + "vkMapMemory2KHR" : {"dispatch" : True, "driver" : False, "thunk" : ThunkType.PRIVATE}, "vkUnmapMemory" : {"dispatch" : True, "driver" : False, "thunk" : ThunkType.PRIVATE}, + "vkUnmapMemory2KHR" : {"dispatch" : True, "driver" : False, "thunk" : ThunkType.PRIVATE}, "vkCreateBuffer" : {"dispatch" : True, "driver" : False, "thunk" : ThunkType.PRIVATE}, "vkCreateImage" : {"dispatch" : True, "driver" : False, "thunk" : ThunkType.PRIVATE},
diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c index 1df10cc89a6..198e68cd999 100644 --- a/dlls/winevulkan/vulkan.c +++ b/dlls/winevulkan/vulkan.c @@ -1605,21 +1605,46 @@ void wine_vkFreeMemory(VkDevice handle, VkDeviceMemory memory_handle, const VkAl free(memory); }
-VkResult wine_vkMapMemory(VkDevice handle, VkDeviceMemory memory_handle, VkDeviceSize offset, +VkResult wine_vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void **data) +{ + const VkMemoryMapInfoKHR info = + { + .sType = VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR, + .flags = flags, + .memory = memory, + .offset = offset, + .size = size, + }; + + return wine_vkMapMemory2KHR(device, &info, data); +} + +VkResult wine_vkMapMemory2KHR(VkDevice handle, const VkMemoryMapInfoKHR *map_info, void **data) { struct wine_device *device = wine_device_from_handle(handle); - struct wine_device_memory *memory = wine_device_memory_from_handle(memory_handle); + struct wine_device_memory *memory = wine_device_memory_from_handle(map_info->memory); + VkMemoryMapInfoKHR info = *map_info; VkResult result;
+ info.memory = memory->memory; if (memory->mapping) { - *data = (char *)memory->mapping + offset; + *data = (char *)memory->mapping + info.offset; TRACE("returning %p\n", *data); return VK_SUCCESS; }
- result = device->funcs.p_vkMapMemory(device->device, memory->memory, offset, size, flags, data); + if (device->funcs.p_vkMapMemory2KHR) + { + result = device->funcs.p_vkMapMemory2KHR(device->device, &info, data); + } + else + { + assert(!info.pNext); + result = device->funcs.p_vkMapMemory(device->device, info.memory, info.offset, + info.size, info.flags, data); + }
#ifdef _WIN64 if (NtCurrentTeb()->WowTebOffset && result == VK_SUCCESS && (UINT_PTR)*data >> 32) @@ -1634,13 +1659,36 @@ VkResult wine_vkMapMemory(VkDevice handle, VkDeviceMemory memory_handle, VkDevic return result; }
-void wine_vkUnmapMemory(VkDevice handle, VkDeviceMemory memory_handle) +void wine_vkUnmapMemory(VkDevice device, VkDeviceMemory memory) +{ + const VkMemoryUnmapInfoKHR info = + { + .sType = VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR, + .memory = memory, + }; + + wine_vkUnmapMemory2KHR(device, &info); +} + +VkResult wine_vkUnmapMemory2KHR(VkDevice handle, const VkMemoryUnmapInfoKHR *unmap_info) { struct wine_device *device = wine_device_from_handle(handle); - struct wine_device_memory *memory = wine_device_memory_from_handle(memory_handle); + struct wine_device_memory *memory = wine_device_memory_from_handle(unmap_info->memory); + VkMemoryUnmapInfoKHR info;
- if (!memory->mapping) + if (memory->mapping) + return VK_SUCCESS; + + if (!device->funcs.p_vkUnmapMemory2KHR) + { + assert(!unmap_info->pNext); device->funcs.p_vkUnmapMemory(device->device, memory->memory); + return VK_SUCCESS; + } + + info = *unmap_info; + info.memory = memory->memory; + return device->funcs.p_vkUnmapMemory2KHR(device->device, &info); }
VkResult wine_vkCreateBuffer(VkDevice handle, const VkBufferCreateInfo *create_info, diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index 857c2d70b9e..954fd51426f 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -5927,6 +5927,16 @@ typedef struct VkInitializePerformanceApiInfoINTEL32 PTR32 pUserData; } VkInitializePerformanceApiInfoINTEL32;
+typedef struct VkMemoryMapInfoKHR32 +{ + VkStructureType sType; + PTR32 pNext; + VkMemoryMapFlags flags; + VkDeviceMemory DECLSPEC_ALIGN(8) memory; + VkDeviceSize DECLSPEC_ALIGN(8) offset; + VkDeviceSize DECLSPEC_ALIGN(8) size; +} VkMemoryMapInfoKHR32; + typedef struct VkSparseMemoryBind32 { VkDeviceSize DECLSPEC_ALIGN(8) resourceOffset; @@ -6205,6 +6215,14 @@ typedef struct VkDebugUtilsMessengerCallbackDataEXT32 PTR32 pObjects; } VkDebugUtilsMessengerCallbackDataEXT32;
+typedef struct VkMemoryUnmapInfoKHR32 +{ + VkStructureType sType; + PTR32 pNext; + VkMemoryUnmapFlagsKHR flags; + VkDeviceMemory DECLSPEC_ALIGN(8) memory; +} VkMemoryUnmapInfoKHR32; + typedef struct VkCopyDescriptorSet32 { VkStructureType sType; @@ -24915,6 +24933,20 @@ static inline void convert_VkInitializePerformanceApiInfoINTEL_win32_to_host(con FIXME("Unexpected pNext\n"); }
+static inline void convert_VkMemoryMapInfoKHR_win32_to_unwrapped_host(const VkMemoryMapInfoKHR32 *in, VkMemoryMapInfoKHR *out) +{ + if (!in) return; + + out->sType = in->sType; + out->pNext = NULL; + out->flags = in->flags; + out->memory = in->memory; + out->offset = in->offset; + out->size = in->size; + if (in->pNext) + FIXME("Unexpected pNext\n"); +} + #ifdef _WIN64 static inline void convert_VkSparseMemoryBind_win64_to_host(const VkSparseMemoryBind *in, VkSparseMemoryBind *out) { @@ -25957,6 +25989,18 @@ static inline void convert_VkDebugUtilsMessengerCallbackDataEXT_win32_to_host(st } }
+static inline void convert_VkMemoryUnmapInfoKHR_win32_to_unwrapped_host(const VkMemoryUnmapInfoKHR32 *in, VkMemoryUnmapInfoKHR *out) +{ + if (!in) return; + + out->sType = in->sType; + out->pNext = NULL; + out->flags = in->flags; + out->memory = in->memory; + if (in->pNext) + FIXME("Unexpected pNext\n"); +} + static inline void convert_VkCopyDescriptorSet_win32_to_host(const VkCopyDescriptorSet32 *in, VkCopyDescriptorSet *out) { if (!in) return; @@ -39518,6 +39562,36 @@ static NTSTATUS thunk32_vkMapMemory(void *args) return STATUS_SUCCESS; }
+#ifdef _WIN64 +static NTSTATUS thunk64_vkMapMemory2KHR(void *args) +{ + struct vkMapMemory2KHR_params *params = args; + + TRACE("%p, %p, %p\n", params->device, params->pMemoryMapInfo, params->ppData); + + params->result = wine_vkMapMemory2KHR(params->device, params->pMemoryMapInfo, params->ppData); + return STATUS_SUCCESS; +} +#endif /* _WIN64 */ + +static NTSTATUS thunk32_vkMapMemory2KHR(void *args) +{ + struct + { + PTR32 device; + PTR32 pMemoryMapInfo; + PTR32 ppData; + VkResult result; + } *params = args; + VkMemoryMapInfoKHR pMemoryMapInfo_host; + + TRACE("%#x, %#x, %#x\n", params->device, params->pMemoryMapInfo, params->ppData); + + convert_VkMemoryMapInfoKHR_win32_to_unwrapped_host((const VkMemoryMapInfoKHR32 *)UlongToPtr(params->pMemoryMapInfo), &pMemoryMapInfo_host); + params->result = wine_vkMapMemory2KHR((VkDevice)UlongToPtr(params->device), &pMemoryMapInfo_host, (void **)UlongToPtr(params->ppData)); + return STATUS_SUCCESS; +} + #ifdef _WIN64 static NTSTATUS thunk64_vkMergePipelineCaches(void *args) { @@ -40583,6 +40657,35 @@ static NTSTATUS thunk32_vkUnmapMemory(void *args) return STATUS_SUCCESS; }
+#ifdef _WIN64 +static NTSTATUS thunk64_vkUnmapMemory2KHR(void *args) +{ + struct vkUnmapMemory2KHR_params *params = args; + + TRACE("%p, %p\n", params->device, params->pMemoryUnmapInfo); + + params->result = wine_vkUnmapMemory2KHR(params->device, params->pMemoryUnmapInfo); + return STATUS_SUCCESS; +} +#endif /* _WIN64 */ + +static NTSTATUS thunk32_vkUnmapMemory2KHR(void *args) +{ + struct + { + PTR32 device; + PTR32 pMemoryUnmapInfo; + VkResult result; + } *params = args; + VkMemoryUnmapInfoKHR pMemoryUnmapInfo_host; + + TRACE("%#x, %#x\n", params->device, params->pMemoryUnmapInfo); + + convert_VkMemoryUnmapInfoKHR_win32_to_unwrapped_host((const VkMemoryUnmapInfoKHR32 *)UlongToPtr(params->pMemoryUnmapInfo), &pMemoryUnmapInfo_host); + params->result = wine_vkUnmapMemory2KHR((VkDevice)UlongToPtr(params->device), &pMemoryUnmapInfo_host); + return STATUS_SUCCESS; +} + #ifdef _WIN64 static void thunk64_vkUpdateDescriptorSetWithTemplate(void *args) { @@ -41009,6 +41112,7 @@ static const char * const vk_device_extensions[] = "VK_KHR_maintenance2", "VK_KHR_maintenance3", "VK_KHR_maintenance4", + "VK_KHR_map_memory2", "VK_KHR_multiview", "VK_KHR_performance_query", "VK_KHR_pipeline_executable_properties", @@ -41651,6 +41755,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk64_vkInitializePerformanceApiINTEL, thunk64_vkInvalidateMappedMemoryRanges, thunk64_vkMapMemory, + thunk64_vkMapMemory2KHR, thunk64_vkMergePipelineCaches, thunk64_vkMergeValidationCachesEXT, thunk64_vkQueueBeginDebugUtilsLabelEXT, @@ -41687,6 +41792,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk64_vkTrimCommandPoolKHR, thunk64_vkUninitializePerformanceApiINTEL, thunk64_vkUnmapMemory, + thunk64_vkUnmapMemory2KHR, (void *)thunk64_vkUpdateDescriptorSetWithTemplate, thunk64_vkUpdateDescriptorSetWithTemplateKHR, (void *)thunk64_vkUpdateDescriptorSets, @@ -42202,6 +42308,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk32_vkInitializePerformanceApiINTEL, thunk32_vkInvalidateMappedMemoryRanges, thunk32_vkMapMemory, + thunk32_vkMapMemory2KHR, thunk32_vkMergePipelineCaches, thunk32_vkMergeValidationCachesEXT, thunk32_vkQueueBeginDebugUtilsLabelEXT, @@ -42238,6 +42345,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk32_vkTrimCommandPoolKHR, thunk32_vkUninitializePerformanceApiINTEL, thunk32_vkUnmapMemory, + thunk32_vkUnmapMemory2KHR, (void *)thunk32_vkUpdateDescriptorSetWithTemplate, thunk32_vkUpdateDescriptorSetWithTemplateKHR, (void *)thunk32_vkUpdateDescriptorSets, diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h index d63540bc2b9..8418e6cda63 100644 --- a/dlls/winevulkan/vulkan_thunks.h +++ b/dlls/winevulkan/vulkan_thunks.h @@ -55,7 +55,9 @@ VkResult wine_vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice phys VkResult wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *pSurfaceInfo, VkSurfaceCapabilities2KHR *pSurfaceCapabilities) DECLSPEC_HIDDEN; VkResult wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) DECLSPEC_HIDDEN; VkResult wine_vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void **ppData) DECLSPEC_HIDDEN; +VkResult wine_vkMapMemory2KHR(VkDevice device, const VkMemoryMapInfoKHR *pMemoryMapInfo, void **ppData) DECLSPEC_HIDDEN; void wine_vkUnmapMemory(VkDevice device, VkDeviceMemory memory) DECLSPEC_HIDDEN; +VkResult wine_vkUnmapMemory2KHR(VkDevice device, const VkMemoryUnmapInfoKHR *pMemoryUnmapInfo) DECLSPEC_HIDDEN;
/* For use by vkDevice and children */ struct vulkan_device_funcs @@ -490,6 +492,7 @@ struct vulkan_device_funcs VkResult (*p_vkInitializePerformanceApiINTEL)(VkDevice, const VkInitializePerformanceApiInfoINTEL *); VkResult (*p_vkInvalidateMappedMemoryRanges)(VkDevice, uint32_t, const VkMappedMemoryRange *); VkResult (*p_vkMapMemory)(VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, void **); + VkResult (*p_vkMapMemory2KHR)(VkDevice, const VkMemoryMapInfoKHR *, void **); VkResult (*p_vkMergePipelineCaches)(VkDevice, VkPipelineCache, uint32_t, const VkPipelineCache *); VkResult (*p_vkMergeValidationCachesEXT)(VkDevice, VkValidationCacheEXT, uint32_t, const VkValidationCacheEXT *); void (*p_vkQueueBeginDebugUtilsLabelEXT)(VkQueue, const VkDebugUtilsLabelEXT *); @@ -525,6 +528,7 @@ struct vulkan_device_funcs void (*p_vkTrimCommandPoolKHR)(VkDevice, VkCommandPool, VkCommandPoolTrimFlags); void (*p_vkUninitializePerformanceApiINTEL)(VkDevice); void (*p_vkUnmapMemory)(VkDevice, VkDeviceMemory); + VkResult (*p_vkUnmapMemory2KHR)(VkDevice, const VkMemoryUnmapInfoKHR *); void (*p_vkUpdateDescriptorSetWithTemplate)(VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, const void *); void (*p_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, const void *); void (*p_vkUpdateDescriptorSets)(VkDevice, uint32_t, const VkWriteDescriptorSet *, uint32_t, const VkCopyDescriptorSet *); @@ -1025,6 +1029,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkInitializePerformanceApiINTEL) \ USE_VK_FUNC(vkInvalidateMappedMemoryRanges) \ USE_VK_FUNC(vkMapMemory) \ + USE_VK_FUNC(vkMapMemory2KHR) \ USE_VK_FUNC(vkMergePipelineCaches) \ USE_VK_FUNC(vkMergeValidationCachesEXT) \ USE_VK_FUNC(vkQueueBeginDebugUtilsLabelEXT) \ @@ -1060,6 +1065,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkTrimCommandPoolKHR) \ USE_VK_FUNC(vkUninitializePerformanceApiINTEL) \ USE_VK_FUNC(vkUnmapMemory) \ + USE_VK_FUNC(vkUnmapMemory2KHR) \ USE_VK_FUNC(vkUpdateDescriptorSetWithTemplate) \ USE_VK_FUNC(vkUpdateDescriptorSetWithTemplateKHR) \ USE_VK_FUNC(vkUpdateDescriptorSets) \ diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index c5fa7259489..d3241f726e6 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -403,6 +403,8 @@ #define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations" #define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1 #define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties" +#define VK_KHR_MAP_MEMORY_2_SPEC_VERSION 1 +#define VK_KHR_MAP_MEMORY_2_EXTENSION_NAME "VK_KHR_map_memory2" #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 @@ -4154,6 +4156,8 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000, + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001, 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, @@ -6519,6 +6523,16 @@ typedef struct VkMemoryHostPointerPropertiesEXT uint32_t memoryTypeBits; } VkMemoryHostPointerPropertiesEXT;
+typedef struct VkMemoryMapInfoKHR +{ + VkStructureType sType; + const void *pNext; + VkMemoryMapFlags flags; + VkDeviceMemory WINE_VK_ALIGN(8) memory; + VkDeviceSize WINE_VK_ALIGN(8) offset; + VkDeviceSize WINE_VK_ALIGN(8) size; +} VkMemoryMapInfoKHR; + typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo { VkStructureType sType; @@ -6556,6 +6570,14 @@ typedef struct VkMemoryType uint32_t heapIndex; } VkMemoryType;
+typedef struct VkMemoryUnmapInfoKHR +{ + VkStructureType sType; + const void *pNext; + VkMemoryUnmapFlagsKHR flags; + VkDeviceMemory WINE_VK_ALIGN(8) memory; +} VkMemoryUnmapInfoKHR; + typedef struct VkMemoryWin32HandlePropertiesKHR { VkStructureType sType; @@ -12282,6 +12304,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice, VkValida typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice, const VkInitializePerformanceApiInfoINTEL *); typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice, uint32_t, const VkMappedMemoryRange *); typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, void **); +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory2KHR)(VkDevice, const VkMemoryMapInfoKHR *, void **); typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice, VkPipelineCache, uint32_t, const VkPipelineCache *); typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice, VkValidationCacheEXT, uint32_t, const VkValidationCacheEXT *); typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue, const VkDebugUtilsLabelEXT *); @@ -12318,6 +12341,7 @@ typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice, VkCommandPool, VkComma typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice, VkCommandPool, VkCommandPoolTrimFlags); typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice); typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice, VkDeviceMemory); +typedef VkResult (VKAPI_PTR *PFN_vkUnmapMemory2KHR)(VkDevice, const VkMemoryUnmapInfoKHR *); typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, const void *); typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, const void *); typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice, uint32_t, const VkWriteDescriptorSet *, uint32_t, const VkCopyDescriptorSet *); @@ -12826,6 +12850,7 @@ VkResult VKAPI_CALL vkGetValidationCacheDataEXT(VkDevice device, VkValidationCac VkResult VKAPI_CALL vkInitializePerformanceApiINTEL(VkDevice device, const VkInitializePerformanceApiInfoINTEL *pInitializeInfo); VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange *pMemoryRanges); VkResult VKAPI_CALL vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void **ppData); +VkResult VKAPI_CALL vkMapMemory2KHR(VkDevice device, const VkMemoryMapInfoKHR *pMemoryMapInfo, void **ppData); VkResult VKAPI_CALL vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache *pSrcCaches); VkResult VKAPI_CALL vkMergeValidationCachesEXT(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT *pSrcCaches); void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(VkQueue queue, const VkDebugUtilsLabelEXT *pLabelInfo); @@ -12862,6 +12887,7 @@ void VKAPI_CALL vkTrimCommandPool(VkDevice device, VkCommandPool commandPool, Vk void VKAPI_CALL vkTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); void VKAPI_CALL vkUninitializePerformanceApiINTEL(VkDevice device); void VKAPI_CALL vkUnmapMemory(VkDevice device, VkDeviceMemory memory); +VkResult VKAPI_CALL vkUnmapMemory2KHR(VkDevice device, const VkMemoryUnmapInfoKHR *pMemoryUnmapInfo); void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void *pData); void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void *pData); void VKAPI_CALL vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet *pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet *pDescriptorCopies);