winevulkan: Add support for VK_KHR_map_memory2.

This commit is contained in:
Jacek Caban 2023-04-07 18:25:05 +02:00 committed by Alexandre Julliard
parent 389fbcf961
commit 0a56a4ada2
7 changed files with 239 additions and 8 deletions

View file

@ -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, &params);
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, &params);
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},

View file

@ -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;

View file

@ -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},

View file

@ -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,

View file

@ -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,

View file

@ -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) \

View file

@ -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);