From: Georg Lehmann dadschoorse@gmail.com
--- dlls/winevulkan/loader_thunks.c | 54 +++++++++ dlls/winevulkan/loader_thunks.h | 38 ++++++ dlls/winevulkan/make_vulkan | 2 +- dlls/winevulkan/vulkan_thunks.c | 207 ++++++++++++++++++++++++++++++++ dlls/winevulkan/vulkan_thunks.h | 21 ++++ dlls/winevulkan/winevulkan.json | 2 +- include/wine/vulkan.h | 123 ++++++++++++++++++- 7 files changed, 444 insertions(+), 3 deletions(-)
diff --git a/dlls/winevulkan/loader_thunks.c b/dlls/winevulkan/loader_thunks.c index 05b39884a0b..5a8f8e87bb3 100644 --- a/dlls/winevulkan/loader_thunks.c +++ b/dlls/winevulkan/loader_thunks.c @@ -766,6 +766,18 @@ void WINAPI vkCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer, const VkCo assert(!status); }
+void WINAPI vkCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride) +{ + struct vkCmdCopyMemoryIndirectNV_params params; + NTSTATUS status; + params.commandBuffer = commandBuffer; + params.copyBufferAddress = copyBufferAddress; + params.copyCount = copyCount; + params.stride = stride; + status = p_vk_direct_unix_call(unix_handle, unix_vkCmdCopyMemoryIndirectNV, ¶ms); + assert(!status); +} + void WINAPI vkCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR *pInfo) { struct vkCmdCopyMemoryToAccelerationStructureKHR_params params; @@ -776,6 +788,21 @@ void WINAPI vkCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuf assert(!status); }
+void WINAPI vkCmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout, const VkImageSubresourceLayers *pImageSubresources) +{ + struct vkCmdCopyMemoryToImageIndirectNV_params params; + NTSTATUS status; + params.commandBuffer = commandBuffer; + params.copyBufferAddress = copyBufferAddress; + params.copyCount = copyCount; + params.stride = stride; + params.dstImage = dstImage; + params.dstImageLayout = dstImageLayout; + params.pImageSubresources = pImageSubresources; + status = p_vk_direct_unix_call(unix_handle, unix_vkCmdCopyMemoryToImageIndirectNV, ¶ms); + assert(!status); +} + void WINAPI vkCmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT *pInfo) { struct vkCmdCopyMemoryToMicromapEXT_params params; @@ -861,6 +888,29 @@ void WINAPI vkCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer, const VkDeb assert(!status); }
+void WINAPI vkCmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t stride) +{ + struct vkCmdDecompressMemoryIndirectCountNV_params params; + NTSTATUS status; + params.commandBuffer = commandBuffer; + params.indirectCommandsAddress = indirectCommandsAddress; + params.indirectCommandsCountAddress = indirectCommandsCountAddress; + params.stride = stride; + status = p_vk_direct_unix_call(unix_handle, unix_vkCmdDecompressMemoryIndirectCountNV, ¶ms); + assert(!status); +} + +void WINAPI vkCmdDecompressMemoryNV(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, const VkDecompressMemoryRegionNV *pDecompressMemoryRegions) +{ + struct vkCmdDecompressMemoryNV_params params; + NTSTATUS status; + params.commandBuffer = commandBuffer; + params.decompressRegionCount = decompressRegionCount; + params.pDecompressMemoryRegions = pDecompressMemoryRegions; + status = p_vk_direct_unix_call(unix_handle, unix_vkCmdDecompressMemoryNV, ¶ms); + assert(!status); +} + void WINAPI vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { struct vkCmdDispatch_params params; @@ -5969,7 +6019,9 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkCmdCopyImageToBuffer", vkCmdCopyImageToBuffer}, {"vkCmdCopyImageToBuffer2", vkCmdCopyImageToBuffer2}, {"vkCmdCopyImageToBuffer2KHR", vkCmdCopyImageToBuffer2KHR}, + {"vkCmdCopyMemoryIndirectNV", vkCmdCopyMemoryIndirectNV}, {"vkCmdCopyMemoryToAccelerationStructureKHR", vkCmdCopyMemoryToAccelerationStructureKHR}, + {"vkCmdCopyMemoryToImageIndirectNV", vkCmdCopyMemoryToImageIndirectNV}, {"vkCmdCopyMemoryToMicromapEXT", vkCmdCopyMemoryToMicromapEXT}, {"vkCmdCopyMicromapEXT", vkCmdCopyMicromapEXT}, {"vkCmdCopyMicromapToMemoryEXT", vkCmdCopyMicromapToMemoryEXT}, @@ -5978,6 +6030,8 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkCmdDebugMarkerBeginEXT", vkCmdDebugMarkerBeginEXT}, {"vkCmdDebugMarkerEndEXT", vkCmdDebugMarkerEndEXT}, {"vkCmdDebugMarkerInsertEXT", vkCmdDebugMarkerInsertEXT}, + {"vkCmdDecompressMemoryIndirectCountNV", vkCmdDecompressMemoryIndirectCountNV}, + {"vkCmdDecompressMemoryNV", vkCmdDecompressMemoryNV}, {"vkCmdDispatch", vkCmdDispatch}, {"vkCmdDispatchBase", vkCmdDispatchBase}, {"vkCmdDispatchBaseKHR", vkCmdDispatchBaseKHR}, diff --git a/dlls/winevulkan/loader_thunks.h b/dlls/winevulkan/loader_thunks.h index b262c9d29fb..b29fb18cf08 100644 --- a/dlls/winevulkan/loader_thunks.h +++ b/dlls/winevulkan/loader_thunks.h @@ -80,7 +80,9 @@ enum unix_call unix_vkCmdCopyImageToBuffer, unix_vkCmdCopyImageToBuffer2, unix_vkCmdCopyImageToBuffer2KHR, + unix_vkCmdCopyMemoryIndirectNV, unix_vkCmdCopyMemoryToAccelerationStructureKHR, + unix_vkCmdCopyMemoryToImageIndirectNV, unix_vkCmdCopyMemoryToMicromapEXT, unix_vkCmdCopyMicromapEXT, unix_vkCmdCopyMicromapToMemoryEXT, @@ -89,6 +91,8 @@ enum unix_call unix_vkCmdDebugMarkerBeginEXT, unix_vkCmdDebugMarkerEndEXT, unix_vkCmdDebugMarkerInsertEXT, + unix_vkCmdDecompressMemoryIndirectCountNV, + unix_vkCmdDecompressMemoryNV, unix_vkCmdDispatch, unix_vkCmdDispatchBase, unix_vkCmdDispatchBaseKHR, @@ -1044,12 +1048,31 @@ struct vkCmdCopyImageToBuffer2KHR_params const VkCopyImageToBufferInfo2 *pCopyImageToBufferInfo; };
+struct vkCmdCopyMemoryIndirectNV_params +{ + VkCommandBuffer commandBuffer; + VkDeviceAddress copyBufferAddress; + uint32_t copyCount; + uint32_t stride; +}; + struct vkCmdCopyMemoryToAccelerationStructureKHR_params { VkCommandBuffer commandBuffer; const VkCopyMemoryToAccelerationStructureInfoKHR *pInfo; };
+struct vkCmdCopyMemoryToImageIndirectNV_params +{ + VkCommandBuffer commandBuffer; + VkDeviceAddress copyBufferAddress; + uint32_t copyCount; + uint32_t stride; + VkImage DECLSPEC_ALIGN(8) dstImage; + VkImageLayout dstImageLayout; + const VkImageSubresourceLayers *pImageSubresources; +}; + struct vkCmdCopyMemoryToMicromapEXT_params { VkCommandBuffer commandBuffer; @@ -1103,6 +1126,21 @@ struct vkCmdDebugMarkerInsertEXT_params const VkDebugMarkerMarkerInfoEXT *pMarkerInfo; };
+struct vkCmdDecompressMemoryIndirectCountNV_params +{ + VkCommandBuffer commandBuffer; + VkDeviceAddress indirectCommandsAddress; + VkDeviceAddress indirectCommandsCountAddress; + uint32_t stride; +}; + +struct vkCmdDecompressMemoryNV_params +{ + VkCommandBuffer commandBuffer; + uint32_t decompressRegionCount; + const VkDecompressMemoryRegionNV *pDecompressMemoryRegions; +}; + struct vkCmdDispatch_params { VkCommandBuffer commandBuffer; diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index d7b253020b4..d3a0b8fac62 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -64,7 +64,7 @@ from enum import Enum LOGGER = logging.Logger("vulkan") LOGGER.addHandler(logging.StreamHandler())
-VK_XML_VERSION = "1.3.230" +VK_XML_VERSION = "1.3.233" WINE_VK_VERSION = (1, 3)
# Filenames to create. diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index 6bc56df790f..65b4ab9b496 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -671,6 +671,28 @@ static inline void convert_VkCuLaunchInfoNVX_win32_to_host(const VkCuLaunchInfoN } #endif /* USE_STRUCT_CONVERSION */
+#if defined(USE_STRUCT_CONVERSION) +static inline VkDecompressMemoryRegionNV_host *convert_VkDecompressMemoryRegionNV_array_win32_to_host(struct conversion_context *ctx, const VkDecompressMemoryRegionNV *in, uint32_t count) +{ + VkDecompressMemoryRegionNV_host *out; + unsigned int i; + + if (!in || !count) return NULL; + + out = conversion_context_alloc(ctx, count * sizeof(*out)); + for (i = 0; i < count; i++) + { + out[i].srcAddress = in[i].srcAddress; + out[i].dstAddress = in[i].dstAddress; + out[i].compressedSize = in[i].compressedSize; + out[i].decompressedSize = in[i].decompressedSize; + out[i].decompressionMethod = in[i].decompressionMethod; + } + + return out; +} +#endif /* USE_STRUCT_CONVERSION */ + #if !defined(USE_STRUCT_CONVERSION) static inline VkCommandBuffer *convert_VkCommandBuffer_array_win64_to_host(struct conversion_context *ctx, const VkCommandBuffer *in, uint32_t count) { @@ -3393,6 +3415,38 @@ VkResult convert_VkDeviceCreateInfo_struct_chain(struct conversion_context *ctx, break; }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV: + { + const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *in = (const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *)in_header; + VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *out; + + if (!(out = conversion_context_alloc(ctx, sizeof(*out)))) return VK_ERROR_OUT_OF_HOST_MEMORY; + + out->sType = in->sType; + out->pNext = NULL; + out->indirectCopy = in->indirectCopy; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV: + { + const VkPhysicalDeviceMemoryDecompressionFeaturesNV *in = (const VkPhysicalDeviceMemoryDecompressionFeaturesNV *)in_header; + VkPhysicalDeviceMemoryDecompressionFeaturesNV *out; + + if (!(out = conversion_context_alloc(ctx, sizeof(*out)))) return VK_ERROR_OUT_OF_HOST_MEMORY; + + out->sType = in->sType; + out->pNext = NULL; + out->memoryDecompression = in->memoryDecompression; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: { const VkPhysicalDeviceShadingRateImageFeaturesNV *in = (const VkPhysicalDeviceShadingRateImageFeaturesNV *)in_header; @@ -5154,6 +5208,38 @@ VkResult convert_VkDeviceCreateInfo_struct_chain(struct conversion_context *ctx, break; }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM: + { + const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *in = (const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *)in_header; + VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *out; + + if (!(out = conversion_context_alloc(ctx, sizeof(*out)))) return VK_ERROR_OUT_OF_HOST_MEMORY; + + out->sType = in->sType; + out->pNext = NULL; + out->shaderCoreBuiltins = in->shaderCoreBuiltins; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV: + { + const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *in = (const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *)in_header; + VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *out; + + if (!(out = conversion_context_alloc(ctx, sizeof(*out)))) return VK_ERROR_OUT_OF_HOST_MEMORY; + + out->sType = in->sType; + out->pNext = NULL; + out->rayTracingInvocationReorder = in->rayTracingInvocationReorder; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + default: FIXME("Application requested a linked structure of type %u.\n", in_header->sType); } @@ -7043,6 +7129,32 @@ static NTSTATUS thunk32_vkCmdCopyImageToBuffer2KHR(void *args)
#if !defined(USE_STRUCT_CONVERSION)
+static NTSTATUS thunk64_vkCmdCopyMemoryIndirectNV(void *args) +{ + struct vkCmdCopyMemoryIndirectNV_params *params = args; + + TRACE("%p, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->copyBufferAddress), params->copyCount, params->stride); + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyMemoryIndirectNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->copyBufferAddress, params->copyCount, params->stride); + return STATUS_SUCCESS; +} + +#else /* USE_STRUCT_CONVERSION */ + +static NTSTATUS thunk32_vkCmdCopyMemoryIndirectNV(void *args) +{ + struct vkCmdCopyMemoryIndirectNV_params *params = args; + + TRACE("%p, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->copyBufferAddress), params->copyCount, params->stride); + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyMemoryIndirectNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->copyBufferAddress, params->copyCount, params->stride); + return STATUS_SUCCESS; +} + +#endif /* USE_STRUCT_CONVERSION */ + +#if !defined(USE_STRUCT_CONVERSION) + static NTSTATUS thunk64_vkCmdCopyMemoryToAccelerationStructureKHR(void *args) { struct vkCmdCopyMemoryToAccelerationStructureKHR_params *params = args; @@ -7071,6 +7183,32 @@ static NTSTATUS thunk32_vkCmdCopyMemoryToAccelerationStructureKHR(void *args)
#if !defined(USE_STRUCT_CONVERSION)
+static NTSTATUS thunk64_vkCmdCopyMemoryToImageIndirectNV(void *args) +{ + struct vkCmdCopyMemoryToImageIndirectNV_params *params = args; + + TRACE("%p, 0x%s, %u, %u, 0x%s, %#x, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->copyBufferAddress), params->copyCount, params->stride, wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->pImageSubresources); + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyMemoryToImageIndirectNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->copyBufferAddress, params->copyCount, params->stride, params->dstImage, params->dstImageLayout, params->pImageSubresources); + return STATUS_SUCCESS; +} + +#else /* USE_STRUCT_CONVERSION */ + +static NTSTATUS thunk32_vkCmdCopyMemoryToImageIndirectNV(void *args) +{ + struct vkCmdCopyMemoryToImageIndirectNV_params *params = args; + + TRACE("%p, 0x%s, %u, %u, 0x%s, %#x, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->copyBufferAddress), params->copyCount, params->stride, wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->pImageSubresources); + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyMemoryToImageIndirectNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->copyBufferAddress, params->copyCount, params->stride, params->dstImage, params->dstImageLayout, params->pImageSubresources); + return STATUS_SUCCESS; +} + +#endif /* USE_STRUCT_CONVERSION */ + +#if !defined(USE_STRUCT_CONVERSION) + static NTSTATUS thunk64_vkCmdCopyMemoryToMicromapEXT(void *args) { struct vkCmdCopyMemoryToMicromapEXT_params *params = args; @@ -7287,6 +7425,63 @@ static NTSTATUS thunk32_vkCmdDebugMarkerInsertEXT(void *args)
#if !defined(USE_STRUCT_CONVERSION)
+static NTSTATUS thunk64_vkCmdDecompressMemoryIndirectCountNV(void *args) +{ + struct vkCmdDecompressMemoryIndirectCountNV_params *params = args; + + TRACE("%p, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->indirectCommandsAddress), wine_dbgstr_longlong(params->indirectCommandsCountAddress), params->stride); + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDecompressMemoryIndirectCountNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->indirectCommandsAddress, params->indirectCommandsCountAddress, params->stride); + return STATUS_SUCCESS; +} + +#else /* USE_STRUCT_CONVERSION */ + +static NTSTATUS thunk32_vkCmdDecompressMemoryIndirectCountNV(void *args) +{ + struct vkCmdDecompressMemoryIndirectCountNV_params *params = args; + + TRACE("%p, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->indirectCommandsAddress), wine_dbgstr_longlong(params->indirectCommandsCountAddress), params->stride); + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDecompressMemoryIndirectCountNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->indirectCommandsAddress, params->indirectCommandsCountAddress, params->stride); + return STATUS_SUCCESS; +} + +#endif /* USE_STRUCT_CONVERSION */ + +#if !defined(USE_STRUCT_CONVERSION) + +static NTSTATUS thunk64_vkCmdDecompressMemoryNV(void *args) +{ + struct vkCmdDecompressMemoryNV_params *params = args; + + TRACE("%p, %u, %p\n", params->commandBuffer, params->decompressRegionCount, params->pDecompressMemoryRegions); + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDecompressMemoryNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->decompressRegionCount, params->pDecompressMemoryRegions); + return STATUS_SUCCESS; +} + +#else /* USE_STRUCT_CONVERSION */ + +static NTSTATUS thunk32_vkCmdDecompressMemoryNV(void *args) +{ + struct vkCmdDecompressMemoryNV_params *params = args; + VkDecompressMemoryRegionNV_host *pDecompressMemoryRegions_host; + struct conversion_context ctx; + + TRACE("%p, %u, %p\n", params->commandBuffer, params->decompressRegionCount, params->pDecompressMemoryRegions); + + init_conversion_context(&ctx); + pDecompressMemoryRegions_host = convert_VkDecompressMemoryRegionNV_array_win32_to_host(&ctx, params->pDecompressMemoryRegions, params->decompressRegionCount); + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDecompressMemoryNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->decompressRegionCount, pDecompressMemoryRegions_host); + free_conversion_context(&ctx); + return STATUS_SUCCESS; +} + +#endif /* USE_STRUCT_CONVERSION */ + +#if !defined(USE_STRUCT_CONVERSION) + static NTSTATUS thunk64_vkCmdDispatch(void *args) { struct vkCmdDispatch_params *params = args; @@ -19120,6 +19315,7 @@ static const char * const vk_device_extensions[] = "VK_AMD_shader_trinary_minmax", "VK_AMD_texture_gather_bias_lod", "VK_ARM_rasterization_order_attachment_access", + "VK_ARM_shader_core_builtins", "VK_EXT_4444_formats", "VK_EXT_astc_decode_mode", "VK_EXT_attachment_feedback_loop_layout", @@ -19289,6 +19485,7 @@ static const char * const vk_device_extensions[] = "VK_NV_clip_space_w_scaling", "VK_NV_compute_shader_derivatives", "VK_NV_cooperative_matrix", + "VK_NV_copy_memory_indirect", "VK_NV_corner_sampled_image", "VK_NV_coverage_reduction_mode", "VK_NV_dedicated_allocation", @@ -19305,10 +19502,12 @@ static const char * const vk_device_extensions[] = "VK_NV_glsl_shader", "VK_NV_inherited_viewport_scissor", "VK_NV_linear_color_attachment", + "VK_NV_memory_decompression", "VK_NV_mesh_shader", "VK_NV_optical_flow", "VK_NV_present_barrier", "VK_NV_ray_tracing", + "VK_NV_ray_tracing_invocation_reorder", "VK_NV_ray_tracing_motion_blur", "VK_NV_representative_fragment_test", "VK_NV_sample_mask_override_coverage", @@ -19481,7 +19680,9 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk64_vkCmdCopyImageToBuffer, thunk64_vkCmdCopyImageToBuffer2, thunk64_vkCmdCopyImageToBuffer2KHR, + thunk64_vkCmdCopyMemoryIndirectNV, thunk64_vkCmdCopyMemoryToAccelerationStructureKHR, + thunk64_vkCmdCopyMemoryToImageIndirectNV, thunk64_vkCmdCopyMemoryToMicromapEXT, thunk64_vkCmdCopyMicromapEXT, thunk64_vkCmdCopyMicromapToMemoryEXT, @@ -19490,6 +19691,8 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk64_vkCmdDebugMarkerBeginEXT, thunk64_vkCmdDebugMarkerEndEXT, thunk64_vkCmdDebugMarkerInsertEXT, + thunk64_vkCmdDecompressMemoryIndirectCountNV, + thunk64_vkCmdDecompressMemoryNV, thunk64_vkCmdDispatch, thunk64_vkCmdDispatchBase, thunk64_vkCmdDispatchBaseKHR, @@ -20002,7 +20205,9 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk32_vkCmdCopyImageToBuffer, thunk32_vkCmdCopyImageToBuffer2, thunk32_vkCmdCopyImageToBuffer2KHR, + thunk32_vkCmdCopyMemoryIndirectNV, thunk32_vkCmdCopyMemoryToAccelerationStructureKHR, + thunk32_vkCmdCopyMemoryToImageIndirectNV, thunk32_vkCmdCopyMemoryToMicromapEXT, thunk32_vkCmdCopyMicromapEXT, thunk32_vkCmdCopyMicromapToMemoryEXT, @@ -20011,6 +20216,8 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk32_vkCmdDebugMarkerBeginEXT, thunk32_vkCmdDebugMarkerEndEXT, thunk32_vkCmdDebugMarkerInsertEXT, + thunk32_vkCmdDecompressMemoryIndirectCountNV, + thunk32_vkCmdDecompressMemoryNV, thunk32_vkCmdDispatch, thunk32_vkCmdDispatchBase, thunk32_vkCmdDispatchBaseKHR, diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h index 6e87550854a..43e43664bd3 100644 --- a/dlls/winevulkan/vulkan_thunks.h +++ b/dlls/winevulkan/vulkan_thunks.h @@ -567,6 +567,19 @@ typedef struct VkCuLaunchInfoNVX_host typedef VkCuLaunchInfoNVX VkCuLaunchInfoNVX_host; #endif
+#if defined(USE_STRUCT_CONVERSION) +typedef struct VkDecompressMemoryRegionNV_host +{ + VkDeviceAddress srcAddress; + VkDeviceAddress dstAddress; + VkDeviceSize compressedSize; + VkDeviceSize decompressedSize; + VkMemoryDecompressionMethodFlagsNV decompressionMethod; +} VkDecompressMemoryRegionNV_host; +#else +typedef VkDecompressMemoryRegionNV VkDecompressMemoryRegionNV_host; +#endif + #if defined(USE_STRUCT_CONVERSION) typedef struct VkIndirectCommandsStreamNV_host { @@ -2005,7 +2018,9 @@ struct vulkan_device_funcs void (*p_vkCmdCopyImageToBuffer)(VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, uint32_t, const VkBufferImageCopy_host *); void (*p_vkCmdCopyImageToBuffer2)(VkCommandBuffer, const VkCopyImageToBufferInfo2_host *); void (*p_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer, const VkCopyImageToBufferInfo2_host *); + void (*p_vkCmdCopyMemoryIndirectNV)(VkCommandBuffer, VkDeviceAddress, uint32_t, uint32_t); void (*p_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR_host *); + void (*p_vkCmdCopyMemoryToImageIndirectNV)(VkCommandBuffer, VkDeviceAddress, uint32_t, uint32_t, VkImage, VkImageLayout, const VkImageSubresourceLayers *); void (*p_vkCmdCopyMemoryToMicromapEXT)(VkCommandBuffer, const VkCopyMemoryToMicromapInfoEXT_host *); void (*p_vkCmdCopyMicromapEXT)(VkCommandBuffer, const VkCopyMicromapInfoEXT_host *); void (*p_vkCmdCopyMicromapToMemoryEXT)(VkCommandBuffer, const VkCopyMicromapToMemoryInfoEXT_host *); @@ -2014,6 +2029,8 @@ struct vulkan_device_funcs void (*p_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer, const VkDebugMarkerMarkerInfoEXT *); void (*p_vkCmdDebugMarkerEndEXT)(VkCommandBuffer); void (*p_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer, const VkDebugMarkerMarkerInfoEXT *); + void (*p_vkCmdDecompressMemoryIndirectCountNV)(VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, uint32_t); + void (*p_vkCmdDecompressMemoryNV)(VkCommandBuffer, uint32_t, const VkDecompressMemoryRegionNV_host *); void (*p_vkCmdDispatch)(VkCommandBuffer, uint32_t, uint32_t, uint32_t); void (*p_vkCmdDispatchBase)(VkCommandBuffer, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); void (*p_vkCmdDispatchBaseKHR)(VkCommandBuffer, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); @@ -2516,7 +2533,9 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkCmdCopyImageToBuffer) \ USE_VK_FUNC(vkCmdCopyImageToBuffer2) \ USE_VK_FUNC(vkCmdCopyImageToBuffer2KHR) \ + USE_VK_FUNC(vkCmdCopyMemoryIndirectNV) \ USE_VK_FUNC(vkCmdCopyMemoryToAccelerationStructureKHR) \ + USE_VK_FUNC(vkCmdCopyMemoryToImageIndirectNV) \ USE_VK_FUNC(vkCmdCopyMemoryToMicromapEXT) \ USE_VK_FUNC(vkCmdCopyMicromapEXT) \ USE_VK_FUNC(vkCmdCopyMicromapToMemoryEXT) \ @@ -2525,6 +2544,8 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkCmdDebugMarkerBeginEXT) \ USE_VK_FUNC(vkCmdDebugMarkerEndEXT) \ USE_VK_FUNC(vkCmdDebugMarkerInsertEXT) \ + USE_VK_FUNC(vkCmdDecompressMemoryIndirectCountNV) \ + USE_VK_FUNC(vkCmdDecompressMemoryNV) \ USE_VK_FUNC(vkCmdDispatch) \ USE_VK_FUNC(vkCmdDispatchBase) \ USE_VK_FUNC(vkCmdDispatchBaseKHR) \ diff --git a/dlls/winevulkan/winevulkan.json b/dlls/winevulkan/winevulkan.json index 984485704d9..e5b7cd50955 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.230" + "api_version": "1.3.233" } } diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 821c2d6a3fb..4e1ef24442c 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -532,6 +532,10 @@ #define VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME "VK_EXT_non_seamless_cube_map" #define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1 #define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset" +#define VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION 1 +#define VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME "VK_NV_copy_memory_indirect" +#define VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION 1 +#define VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME "VK_NV_memory_decompression" #define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1 #define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME "VK_NV_linear_color_attachment" #define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1 @@ -554,8 +558,12 @@ #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_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 #define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_EXT_mutable_descriptor_type" +#define VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION 2 +#define VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME "VK_ARM_shader_core_builtins" #define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 #define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" #define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1 @@ -580,7 +588,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 230 +#define VK_HEADER_VERSION 233 #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 @@ -763,6 +771,7 @@ typedef VkFlags VkInstanceCreateFlags; typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; typedef VkFlags VkMemoryAllocateFlags; typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR; +typedef VkFlags64 VkMemoryDecompressionMethodFlagsNV; typedef VkFlags VkMemoryHeapFlags; typedef VkFlags VkMemoryMapFlags; typedef VkFlags VkMemoryPropertyFlags; @@ -2671,6 +2680,10 @@ typedef enum VkMemoryAllocateFlagBits } VkMemoryAllocateFlagBits; typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR;
+typedef VkFlags64 VkMemoryDecompressionMethodFlagBitsNV; + +static const VkMemoryDecompressionMethodFlagBitsNV VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = 0x00000001ull; + typedef enum VkMemoryHeapFlagBits { VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, @@ -3334,6 +3347,13 @@ typedef enum VkRasterizationOrderAMD VK_RASTERIZATION_ORDER_AMD_MAX_ENUM = 0x7fffffff, } VkRasterizationOrderAMD;
+typedef enum VkRayTracingInvocationReorderModeNV +{ + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0, + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1, + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NV_MAX_ENUM = 0x7fffffff, +} VkRayTracingInvocationReorderModeNV; + typedef enum VkRayTracingShaderGroupTypeKHR { VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0, @@ -4189,6 +4209,10 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001, VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000, @@ -4215,6 +4239,10 @@ 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_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, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, @@ -5215,6 +5243,13 @@ typedef struct VkCopyDescriptorSet uint32_t descriptorCount; } VkCopyDescriptorSet;
+typedef struct VkCopyMemoryIndirectCommandNV +{ + VkDeviceAddress srcAddress; + VkDeviceAddress dstAddress; + VkDeviceSize WINE_VK_ALIGN(8) size; +} VkCopyMemoryIndirectCommandNV; + typedef struct VkCopyMicromapInfoEXT { VkStructureType sType; @@ -5334,6 +5369,15 @@ typedef struct VkDebugUtilsObjectTagInfoEXT const void *pTag; } VkDebugUtilsObjectTagInfoEXT;
+typedef struct VkDecompressMemoryRegionNV +{ + VkDeviceAddress srcAddress; + VkDeviceAddress dstAddress; + VkDeviceSize WINE_VK_ALIGN(8) compressedSize; + VkDeviceSize WINE_VK_ALIGN(8) decompressedSize; + VkMemoryDecompressionMethodFlagsNV decompressionMethod; +} VkDecompressMemoryRegionNV; + typedef struct VkDedicatedAllocationBufferCreateInfoNV { VkStructureType sType; @@ -6724,6 +6768,20 @@ typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV VkShaderStageFlags cooperativeMatrixSupportedStages; } VkPhysicalDeviceCooperativeMatrixPropertiesNV;
+typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV +{ + VkStructureType sType; + void *pNext; + VkBool32 indirectCopy; +} VkPhysicalDeviceCopyMemoryIndirectFeaturesNV; + +typedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV +{ + VkStructureType sType; + void *pNext; + VkQueueFlags supportedQueues; +} VkPhysicalDeviceCopyMemoryIndirectPropertiesNV; + typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { VkStructureType sType; @@ -7601,6 +7659,21 @@ typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT VkDeviceSize WINE_VK_ALIGN(8) heapUsage[VK_MAX_MEMORY_HEAPS]; } VkPhysicalDeviceMemoryBudgetPropertiesEXT;
+typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesNV +{ + VkStructureType sType; + void *pNext; + VkBool32 memoryDecompression; +} VkPhysicalDeviceMemoryDecompressionFeaturesNV; + +typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesNV +{ + VkStructureType sType; + void *pNext; + VkMemoryDecompressionMethodFlagsNV decompressionMethods; + uint64_t WINE_VK_ALIGN(8) maxDecompressionIndirectCount; +} VkPhysicalDeviceMemoryDecompressionPropertiesNV; + typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT { VkStructureType sType; @@ -7985,6 +8058,20 @@ typedef struct VkPhysicalDeviceRayQueryFeaturesKHR VkBool32 rayQuery; } VkPhysicalDeviceRayQueryFeaturesKHR;
+typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV +{ + VkStructureType sType; + void *pNext; + VkBool32 rayTracingInvocationReorder; +} VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV; + +typedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV +{ + VkStructureType sType; + void *pNext; + VkRayTracingInvocationReorderModeNV rayTracingInvocationReorderReorderingHint; +} VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV; + typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR { VkStructureType sType; @@ -8161,6 +8248,22 @@ typedef struct VkPhysicalDeviceShaderClockFeaturesKHR VkBool32 shaderDeviceClock; } VkPhysicalDeviceShaderClockFeaturesKHR;
+typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM +{ + VkStructureType sType; + void *pNext; + VkBool32 shaderCoreBuiltins; +} VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM; + +typedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM +{ + VkStructureType sType; + void *pNext; + uint64_t WINE_VK_ALIGN(8) shaderCoreMask; + uint32_t shaderCoreCount; + uint32_t shaderWarpsPerCore; +} VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM; + typedef struct VkPhysicalDeviceShaderCoreProperties2AMD { VkStructureType sType; @@ -10385,6 +10488,16 @@ typedef struct VkCopyMemoryToAccelerationStructureInfoKHR VkCopyAccelerationStructureModeKHR mode; } VkCopyMemoryToAccelerationStructureInfoKHR;
+typedef struct VkCopyMemoryToImageIndirectCommandNV +{ + VkDeviceAddress srcAddress; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkCopyMemoryToImageIndirectCommandNV; + typedef struct VkCopyMemoryToMicromapInfoEXT { VkStructureType sType; @@ -11224,7 +11337,9 @@ typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer, const VkCopyIm typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, uint32_t, const VkBufferImageCopy *); typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer, const VkCopyImageToBufferInfo2 *); typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer, const VkCopyImageToBufferInfo2 *); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryIndirectNV)(VkCommandBuffer, VkDeviceAddress, uint32_t, uint32_t); typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR *); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToImageIndirectNV)(VkCommandBuffer, VkDeviceAddress, uint32_t, uint32_t, VkImage, VkImageLayout, const VkImageSubresourceLayers *); typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToMicromapEXT)(VkCommandBuffer, const VkCopyMemoryToMicromapInfoEXT *); typedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapEXT)(VkCommandBuffer, const VkCopyMicromapInfoEXT *); typedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapToMemoryEXT)(VkCommandBuffer, const VkCopyMicromapToMemoryInfoEXT *); @@ -11233,6 +11348,8 @@ typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer, const VkCu typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer, const VkDebugMarkerMarkerInfoEXT *); typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer); typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer, const VkDebugMarkerMarkerInfoEXT *); +typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryIndirectCountNV)(VkCommandBuffer, VkDeviceAddress, VkDeviceAddress, uint32_t); +typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryNV)(VkCommandBuffer, uint32_t, const VkDecompressMemoryRegionNV *); typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer, uint32_t, uint32_t, uint32_t); typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); @@ -11742,7 +11859,9 @@ void VKAPI_CALL vkCmdCopyImage2KHR(VkCommandBuffer commandBuffer, const VkCopyIm void VKAPI_CALL vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy *pRegions); void VKAPI_CALL vkCmdCopyImageToBuffer2(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2 *pCopyImageToBufferInfo); void VKAPI_CALL vkCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2 *pCopyImageToBufferInfo); +void VKAPI_CALL vkCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride); void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR *pInfo); +void VKAPI_CALL vkCmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout, const VkImageSubresourceLayers *pImageSubresources); void VKAPI_CALL vkCmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT *pInfo); void VKAPI_CALL vkCmdCopyMicromapEXT(VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT *pInfo); void VKAPI_CALL vkCmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT *pInfo); @@ -11751,6 +11870,8 @@ void VKAPI_CALL vkCmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer, const VkCu void VKAPI_CALL vkCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT *pMarkerInfo); void VKAPI_CALL vkCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer); void VKAPI_CALL vkCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT *pMarkerInfo); +void VKAPI_CALL vkCmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t stride); +void VKAPI_CALL vkCmdDecompressMemoryNV(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, const VkDecompressMemoryRegionNV *pDecompressMemoryRegions); void VKAPI_CALL vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); void VKAPI_CALL vkCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); void VKAPI_CALL vkCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
From: Georg Lehmann dadschoorse@gmail.com
--- dlls/winevulkan/loader_thunks.h | 12 +++++----- dlls/winevulkan/make_vulkan | 2 +- include/wine/vulkan.h | 40 ++++++++++++++++----------------- 3 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/dlls/winevulkan/loader_thunks.h b/dlls/winevulkan/loader_thunks.h index b29fb18cf08..e79209cfb97 100644 --- a/dlls/winevulkan/loader_thunks.h +++ b/dlls/winevulkan/loader_thunks.h @@ -1051,7 +1051,7 @@ struct vkCmdCopyImageToBuffer2KHR_params struct vkCmdCopyMemoryIndirectNV_params { VkCommandBuffer commandBuffer; - VkDeviceAddress copyBufferAddress; + VkDeviceAddress DECLSPEC_ALIGN(8) copyBufferAddress; uint32_t copyCount; uint32_t stride; }; @@ -1065,7 +1065,7 @@ struct vkCmdCopyMemoryToAccelerationStructureKHR_params struct vkCmdCopyMemoryToImageIndirectNV_params { VkCommandBuffer commandBuffer; - VkDeviceAddress copyBufferAddress; + VkDeviceAddress DECLSPEC_ALIGN(8) copyBufferAddress; uint32_t copyCount; uint32_t stride; VkImage DECLSPEC_ALIGN(8) dstImage; @@ -1129,8 +1129,8 @@ struct vkCmdDebugMarkerInsertEXT_params struct vkCmdDecompressMemoryIndirectCountNV_params { VkCommandBuffer commandBuffer; - VkDeviceAddress indirectCommandsAddress; - VkDeviceAddress indirectCommandsCountAddress; + VkDeviceAddress DECLSPEC_ALIGN(8) indirectCommandsAddress; + VkDeviceAddress DECLSPEC_ALIGN(8) indirectCommandsCountAddress; uint32_t stride; };
@@ -2209,7 +2209,7 @@ struct vkCmdSubpassShadingHUAWEI_params struct vkCmdTraceRaysIndirect2KHR_params { VkCommandBuffer commandBuffer; - VkDeviceAddress indirectDeviceAddress; + VkDeviceAddress DECLSPEC_ALIGN(8) indirectDeviceAddress; };
struct vkCmdTraceRaysIndirectKHR_params @@ -2219,7 +2219,7 @@ struct vkCmdTraceRaysIndirectKHR_params const VkStridedDeviceAddressRegionKHR *pMissShaderBindingTable; const VkStridedDeviceAddressRegionKHR *pHitShaderBindingTable; const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable; - VkDeviceAddress indirectDeviceAddress; + VkDeviceAddress DECLSPEC_ALIGN(8) indirectDeviceAddress; };
struct vkCmdTraceRaysKHR_params diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index d3a0b8fac62..6d5ead98833 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -1176,7 +1176,7 @@ class VkVariable(object): return False elif self.type == "size_t": return False - elif self.type in ["uint64_t", "VkDeviceSize"]: + elif self.type in ["uint64_t", "VkDeviceAddress", "VkDeviceSize"]: return True elif self.is_struct(): return self.struct.needs_alignment() diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 4e1ef24442c..fc42e784e6a 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -4695,7 +4695,7 @@ typedef struct VkAccelerationStructureCreateInfoKHR VkDeviceSize WINE_VK_ALIGN(8) offset; VkDeviceSize WINE_VK_ALIGN(8) size; VkAccelerationStructureTypeKHR type; - VkDeviceAddress deviceAddress; + VkDeviceAddress WINE_VK_ALIGN(8) deviceAddress; } VkAccelerationStructureCreateInfoKHR;
typedef struct VkAccelerationStructureDeviceAddressInfoKHR @@ -4910,7 +4910,7 @@ typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;
typedef struct VkBindIndexBufferIndirectCommandNV { - VkDeviceAddress bufferAddress; + VkDeviceAddress WINE_VK_ALIGN(8) bufferAddress; uint32_t size; VkIndexType indexType; } VkBindIndexBufferIndirectCommandNV; @@ -4922,7 +4922,7 @@ typedef struct VkBindShaderGroupIndirectCommandNV
typedef struct VkBindVertexBufferIndirectCommandNV { - VkDeviceAddress bufferAddress; + VkDeviceAddress WINE_VK_ALIGN(8) bufferAddress; uint32_t size; uint32_t stride; } VkBindVertexBufferIndirectCommandNV; @@ -4960,7 +4960,7 @@ typedef struct VkBufferDeviceAddressCreateInfoEXT { VkStructureType sType; const void *pNext; - VkDeviceAddress deviceAddress; + VkDeviceAddress WINE_VK_ALIGN(8) deviceAddress; } VkBufferDeviceAddressCreateInfoEXT;
typedef struct VkBufferDeviceAddressInfo @@ -5245,8 +5245,8 @@ typedef struct VkCopyDescriptorSet
typedef struct VkCopyMemoryIndirectCommandNV { - VkDeviceAddress srcAddress; - VkDeviceAddress dstAddress; + VkDeviceAddress WINE_VK_ALIGN(8) srcAddress; + VkDeviceAddress WINE_VK_ALIGN(8) dstAddress; VkDeviceSize WINE_VK_ALIGN(8) size; } VkCopyMemoryIndirectCommandNV;
@@ -5371,8 +5371,8 @@ typedef struct VkDebugUtilsObjectTagInfoEXT
typedef struct VkDecompressMemoryRegionNV { - VkDeviceAddress srcAddress; - VkDeviceAddress dstAddress; + VkDeviceAddress WINE_VK_ALIGN(8) srcAddress; + VkDeviceAddress WINE_VK_ALIGN(8) dstAddress; VkDeviceSize WINE_VK_ALIGN(8) compressedSize; VkDeviceSize WINE_VK_ALIGN(8) decompressedSize; VkMemoryDecompressionMethodFlagsNV decompressionMethod; @@ -5521,7 +5521,7 @@ typedef struct VkDeviceAddressBindingCallbackDataEXT VkStructureType sType; void *pNext; VkDeviceAddressBindingFlagsEXT flags; - VkDeviceAddress baseAddress; + VkDeviceAddress WINE_VK_ALIGN(8) baseAddress; VkDeviceSize WINE_VK_ALIGN(8) size; VkDeviceAddressBindingTypeEXT bindingType; } VkDeviceAddressBindingCallbackDataEXT; @@ -5544,7 +5544,7 @@ typedef struct VkDeviceDiagnosticsConfigCreateInfoNV typedef struct VkDeviceFaultAddressInfoEXT { VkDeviceFaultAddressTypeEXT addressType; - VkDeviceAddress reportedAddress; + VkDeviceAddress WINE_VK_ALIGN(8) reportedAddress; VkDeviceSize WINE_VK_ALIGN(8) addressPrecision; } VkDeviceFaultAddressInfoEXT;
@@ -5657,13 +5657,13 @@ typedef struct VkDeviceMemoryOverallocationCreateInfoAMD
typedef union VkDeviceOrHostAddressConstKHR { - VkDeviceAddress deviceAddress; + VkDeviceAddress WINE_VK_ALIGN(8) deviceAddress; const void *hostAddress; } VkDeviceOrHostAddressConstKHR;
typedef union VkDeviceOrHostAddressKHR { - VkDeviceAddress deviceAddress; + VkDeviceAddress WINE_VK_ALIGN(8) deviceAddress; void *hostAddress; } VkDeviceOrHostAddressKHR;
@@ -6123,7 +6123,7 @@ typedef struct VkImageViewAddressPropertiesNVX { VkStructureType sType; void *pNext; - VkDeviceAddress deviceAddress; + VkDeviceAddress WINE_VK_ALIGN(8) deviceAddress; VkDeviceSize WINE_VK_ALIGN(8) size; } VkImageViewAddressPropertiesNVX;
@@ -6386,7 +6386,7 @@ typedef struct VkMicromapCreateInfoEXT VkDeviceSize WINE_VK_ALIGN(8) offset; VkDeviceSize WINE_VK_ALIGN(8) size; VkMicromapTypeEXT type; - VkDeviceAddress deviceAddress; + VkDeviceAddress WINE_VK_ALIGN(8) deviceAddress; } VkMicromapCreateInfoEXT;
typedef struct VkMicromapTriangleEXT @@ -9870,7 +9870,7 @@ typedef struct VkStencilOpState
typedef struct VkStridedDeviceAddressRegionKHR { - VkDeviceAddress deviceAddress; + VkDeviceAddress WINE_VK_ALIGN(8) deviceAddress; VkDeviceSize WINE_VK_ALIGN(8) stride; VkDeviceSize WINE_VK_ALIGN(8) size; } VkStridedDeviceAddressRegionKHR; @@ -10115,15 +10115,15 @@ typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
typedef struct VkTraceRaysIndirectCommand2KHR { - VkDeviceAddress raygenShaderRecordAddress; + VkDeviceAddress WINE_VK_ALIGN(8) raygenShaderRecordAddress; VkDeviceSize WINE_VK_ALIGN(8) raygenShaderRecordSize; - VkDeviceAddress missShaderBindingTableAddress; + VkDeviceAddress WINE_VK_ALIGN(8) missShaderBindingTableAddress; VkDeviceSize WINE_VK_ALIGN(8) missShaderBindingTableSize; VkDeviceSize WINE_VK_ALIGN(8) missShaderBindingTableStride; - VkDeviceAddress hitShaderBindingTableAddress; + VkDeviceAddress WINE_VK_ALIGN(8) hitShaderBindingTableAddress; VkDeviceSize WINE_VK_ALIGN(8) hitShaderBindingTableSize; VkDeviceSize WINE_VK_ALIGN(8) hitShaderBindingTableStride; - VkDeviceAddress callableShaderBindingTableAddress; + VkDeviceAddress WINE_VK_ALIGN(8) callableShaderBindingTableAddress; VkDeviceSize WINE_VK_ALIGN(8) callableShaderBindingTableSize; VkDeviceSize WINE_VK_ALIGN(8) callableShaderBindingTableStride; uint32_t width; @@ -10490,7 +10490,7 @@ typedef struct VkCopyMemoryToAccelerationStructureInfoKHR
typedef struct VkCopyMemoryToImageIndirectCommandNV { - VkDeviceAddress srcAddress; + VkDeviceAddress WINE_VK_ALIGN(8) srcAddress; uint32_t bufferRowLength; uint32_t bufferImageHeight; VkImageSubresourceLayers imageSubresource;