diff --git a/dlls/winevulkan/loader_thunks.c b/dlls/winevulkan/loader_thunks.c index 1cd1f4b02a0..ec652ad6db0 100644 --- a/dlls/winevulkan/loader_thunks.c +++ b/dlls/winevulkan/loader_thunks.c @@ -1592,6 +1592,14 @@ void WINAPI vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasCons UNIX_CALL(vkCmdSetDepthBias, ¶ms); } +void WINAPI vkCmdSetDepthBias2EXT(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT *pDepthBiasInfo) +{ + struct vkCmdSetDepthBias2EXT_params params; + params.commandBuffer = commandBuffer; + params.pDepthBiasInfo = pDepthBiasInfo; + UNIX_CALL(vkCmdSetDepthBias2EXT, ¶ms); +} + void WINAPI vkCmdSetDepthBiasEnable(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) { struct vkCmdSetDepthBiasEnable_params params; @@ -5945,6 +5953,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkCmdSetCullMode", vkCmdSetCullMode}, {"vkCmdSetCullModeEXT", vkCmdSetCullModeEXT}, {"vkCmdSetDepthBias", vkCmdSetDepthBias}, + {"vkCmdSetDepthBias2EXT", vkCmdSetDepthBias2EXT}, {"vkCmdSetDepthBiasEnable", vkCmdSetDepthBiasEnable}, {"vkCmdSetDepthBiasEnableEXT", vkCmdSetDepthBiasEnableEXT}, {"vkCmdSetDepthBounds", vkCmdSetDepthBounds}, diff --git a/dlls/winevulkan/loader_thunks.h b/dlls/winevulkan/loader_thunks.h index 0cc4f42e408..7b4d0ccc1a6 100644 --- a/dlls/winevulkan/loader_thunks.h +++ b/dlls/winevulkan/loader_thunks.h @@ -174,6 +174,7 @@ enum unix_call unix_vkCmdSetCullMode, unix_vkCmdSetCullModeEXT, unix_vkCmdSetDepthBias, + unix_vkCmdSetDepthBias2EXT, unix_vkCmdSetDepthBiasEnable, unix_vkCmdSetDepthBiasEnableEXT, unix_vkCmdSetDepthBounds, @@ -1801,6 +1802,12 @@ struct vkCmdSetDepthBias_params float depthBiasSlopeFactor; }; +struct vkCmdSetDepthBias2EXT_params +{ + VkCommandBuffer commandBuffer; + const VkDepthBiasInfoEXT *pDepthBiasInfo; +}; + struct vkCmdSetDepthBiasEnable_params { VkCommandBuffer commandBuffer; diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index d6e455a13ea..7ac23fe05b9 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.251" +VK_XML_VERSION = "1.3.254" WINE_VK_VERSION = (1, 3) # Filenames to create. diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index 6f4508eaf40..94828aecf73 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -909,6 +909,13 @@ typedef struct VkMemoryBarrier32 VkAccessFlags dstAccessMask; } VkMemoryBarrier32; +typedef struct VkExternalMemoryAcquireUnmodifiedEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkBool32 acquireUnmodifiedMemory; +} VkExternalMemoryAcquireUnmodifiedEXT32; + typedef struct VkBufferMemoryBarrier32 { VkStructureType sType; @@ -1080,6 +1087,23 @@ typedef struct VkCoarseSampleOrderCustomNV32 PTR32 pSampleLocations; } VkCoarseSampleOrderCustomNV32; +typedef struct VkDepthBiasRepresentationInfoEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkDepthBiasRepresentationEXT depthBiasRepresentation; + VkBool32 depthBiasExact; +} VkDepthBiasRepresentationInfoEXT32; + +typedef struct VkDepthBiasInfoEXT32 +{ + VkStructureType sType; + PTR32 pNext; + float depthBiasConstantFactor; + float depthBiasClamp; + float depthBiasSlopeFactor; +} VkDepthBiasInfoEXT32; + typedef struct VkPerformanceMarkerInfoINTEL32 { VkStructureType sType; @@ -2060,6 +2084,13 @@ typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR32 VkBool32 performanceCounterMultipleQueryPools; } VkPhysicalDevicePerformanceQueryFeaturesKHR32; +typedef struct VkPerformanceQueryReservationInfoKHR32 +{ + VkStructureType sType; + PTR32 pNext; + uint32_t maxPerformanceQueriesPerPool; +} VkPerformanceQueryReservationInfoKHR32; + typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV32 { VkStructureType sType; @@ -2796,6 +2827,16 @@ typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32 VkBool32 swapchainMaintenance1; } VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT32; +typedef struct VkPhysicalDeviceDepthBiasControlFeaturesEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkBool32 depthBiasControl; + VkBool32 leastRepresentableValueForceUnormRepresentation; + VkBool32 floatRepresentation; + VkBool32 depthBiasExact; +} VkPhysicalDeviceDepthBiasControlFeaturesEXT32; + typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 { VkStructureType sType; @@ -8222,8 +8263,11 @@ static inline const VkMemoryBarrier *convert_VkMemoryBarrier_array_win32_to_host return out; } -static inline void convert_VkBufferMemoryBarrier_win32_to_host(const VkBufferMemoryBarrier32 *in, VkBufferMemoryBarrier *out) +static inline void convert_VkBufferMemoryBarrier_win32_to_host(struct conversion_context *ctx, const VkBufferMemoryBarrier32 *in, VkBufferMemoryBarrier *out) { + const VkBaseInStructure32 *in_header; + VkBaseOutStructure *out_header = (void *)out; + if (!in) return; out->sType = in->sType; @@ -8235,8 +8279,27 @@ static inline void convert_VkBufferMemoryBarrier_win32_to_host(const VkBufferMem out->buffer = in->buffer; out->offset = in->offset; out->size = in->size; - 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_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT: + { + VkExternalMemoryAcquireUnmodifiedEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkExternalMemoryAcquireUnmodifiedEXT32 *in_ext = (const VkExternalMemoryAcquireUnmodifiedEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT; + out_ext->pNext = NULL; + out_ext->acquireUnmodifiedMemory = in_ext->acquireUnmodifiedMemory; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + default: + FIXME("Unhandled sType %u.\n", in_header->sType); + break; + } + } } static inline const VkBufferMemoryBarrier *convert_VkBufferMemoryBarrier_array_win32_to_host(struct conversion_context *ctx, const VkBufferMemoryBarrier32 *in, uint32_t count) @@ -8249,7 +8312,7 @@ static inline const VkBufferMemoryBarrier *convert_VkBufferMemoryBarrier_array_w out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { - convert_VkBufferMemoryBarrier_win32_to_host(&in[i], &out[i]); + convert_VkBufferMemoryBarrier_win32_to_host(ctx, &in[i], &out[i]); } return out; @@ -8291,6 +8354,17 @@ static inline void convert_VkImageMemoryBarrier_win32_to_host(struct conversion_ out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT: + { + VkExternalMemoryAcquireUnmodifiedEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkExternalMemoryAcquireUnmodifiedEXT32 *in_ext = (const VkExternalMemoryAcquireUnmodifiedEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT; + out_ext->pNext = NULL; + out_ext->acquireUnmodifiedMemory = in_ext->acquireUnmodifiedMemory; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.\n", in_header->sType); break; @@ -8344,8 +8418,11 @@ static inline const VkMemoryBarrier2 *convert_VkMemoryBarrier2_array_win32_to_ho return out; } -static inline void convert_VkBufferMemoryBarrier2_win32_to_host(const VkBufferMemoryBarrier232 *in, VkBufferMemoryBarrier2 *out) +static inline void convert_VkBufferMemoryBarrier2_win32_to_host(struct conversion_context *ctx, const VkBufferMemoryBarrier232 *in, VkBufferMemoryBarrier2 *out) { + const VkBaseInStructure32 *in_header; + VkBaseOutStructure *out_header = (void *)out; + if (!in) return; out->sType = in->sType; @@ -8359,8 +8436,27 @@ static inline void convert_VkBufferMemoryBarrier2_win32_to_host(const VkBufferMe out->buffer = in->buffer; out->offset = in->offset; out->size = in->size; - 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_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT: + { + VkExternalMemoryAcquireUnmodifiedEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkExternalMemoryAcquireUnmodifiedEXT32 *in_ext = (const VkExternalMemoryAcquireUnmodifiedEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT; + out_ext->pNext = NULL; + out_ext->acquireUnmodifiedMemory = in_ext->acquireUnmodifiedMemory; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + default: + FIXME("Unhandled sType %u.\n", in_header->sType); + break; + } + } } static inline const VkBufferMemoryBarrier2 *convert_VkBufferMemoryBarrier2_array_win32_to_host(struct conversion_context *ctx, const VkBufferMemoryBarrier232 *in, uint32_t count) @@ -8373,7 +8469,7 @@ static inline const VkBufferMemoryBarrier2 *convert_VkBufferMemoryBarrier2_array out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { - convert_VkBufferMemoryBarrier2_win32_to_host(&in[i], &out[i]); + convert_VkBufferMemoryBarrier2_win32_to_host(ctx, &in[i], &out[i]); } return out; @@ -8417,6 +8513,17 @@ static inline void convert_VkImageMemoryBarrier2_win32_to_host(struct conversion out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT: + { + VkExternalMemoryAcquireUnmodifiedEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkExternalMemoryAcquireUnmodifiedEXT32 *in_ext = (const VkExternalMemoryAcquireUnmodifiedEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT; + out_ext->pNext = NULL; + out_ext->acquireUnmodifiedMemory = in_ext->acquireUnmodifiedMemory; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.\n", in_header->sType); break; @@ -8661,6 +8768,42 @@ static inline const VkCoarseSampleOrderCustomNV *convert_VkCoarseSampleOrderCust return out; } +static inline void convert_VkDepthBiasInfoEXT_win32_to_host(struct conversion_context *ctx, const VkDepthBiasInfoEXT32 *in, VkDepthBiasInfoEXT *out) +{ + const VkBaseInStructure32 *in_header; + VkBaseOutStructure *out_header = (void *)out; + + if (!in) return; + + out->sType = in->sType; + out->pNext = NULL; + out->depthBiasConstantFactor = in->depthBiasConstantFactor; + out->depthBiasClamp = in->depthBiasClamp; + out->depthBiasSlopeFactor = in->depthBiasSlopeFactor; + + for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) + { + switch (in_header->sType) + { + case VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT: + { + VkDepthBiasRepresentationInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkDepthBiasRepresentationInfoEXT32 *in_ext = (const VkDepthBiasRepresentationInfoEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT; + out_ext->pNext = NULL; + out_ext->depthBiasRepresentation = in_ext->depthBiasRepresentation; + out_ext->depthBiasExact = in_ext->depthBiasExact; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + default: + FIXME("Unhandled sType %u.\n", in_header->sType); + break; + } + } +} + static inline void convert_VkPerformanceMarkerInfoINTEL_win32_to_host(const VkPerformanceMarkerInfoINTEL32 *in, VkPerformanceMarkerInfoINTEL *out) { if (!in) return; @@ -10615,6 +10758,17 @@ static inline void convert_VkDeviceCreateInfo_win64_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR: + { + VkPerformanceQueryReservationInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPerformanceQueryReservationInfoKHR *in_ext = (const VkPerformanceQueryReservationInfoKHR *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR; + out_ext->pNext = NULL; + out_ext->maxPerformanceQueriesPerPool = in_ext->maxPerformanceQueriesPerPool; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: { VkPhysicalDeviceCoverageReductionModeFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); @@ -11670,6 +11824,20 @@ static inline void convert_VkDeviceCreateInfo_win64_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT: + { + VkPhysicalDeviceDepthBiasControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceDepthBiasControlFeaturesEXT *in_ext = (const VkPhysicalDeviceDepthBiasControlFeaturesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->depthBiasControl = in_ext->depthBiasControl; + out_ext->leastRepresentableValueForceUnormRepresentation = in_ext->leastRepresentableValueForceUnormRepresentation; + out_ext->floatRepresentation = in_ext->floatRepresentation; + out_ext->depthBiasExact = in_ext->depthBiasExact; + 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)); @@ -12567,6 +12735,17 @@ static inline void convert_VkDeviceCreateInfo_win32_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR: + { + VkPerformanceQueryReservationInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPerformanceQueryReservationInfoKHR32 *in_ext = (const VkPerformanceQueryReservationInfoKHR32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR; + out_ext->pNext = NULL; + out_ext->maxPerformanceQueriesPerPool = in_ext->maxPerformanceQueriesPerPool; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: { VkPhysicalDeviceCoverageReductionModeFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); @@ -13622,6 +13801,20 @@ static inline void convert_VkDeviceCreateInfo_win32_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT: + { + VkPhysicalDeviceDepthBiasControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceDepthBiasControlFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDepthBiasControlFeaturesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->depthBiasControl = in_ext->depthBiasControl; + out_ext->leastRepresentableValueForceUnormRepresentation = in_ext->leastRepresentableValueForceUnormRepresentation; + out_ext->floatRepresentation = in_ext->floatRepresentation; + out_ext->depthBiasExact = in_ext->depthBiasExact; + 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)); @@ -14258,6 +14451,18 @@ static inline void convert_VkPipelineRasterizationStateCreateInfo_win32_to_host( out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT: + { + VkDepthBiasRepresentationInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkDepthBiasRepresentationInfoEXT32 *in_ext = (const VkDepthBiasRepresentationInfoEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT; + out_ext->pNext = NULL; + out_ext->depthBiasRepresentation = in_ext->depthBiasRepresentation; + out_ext->depthBiasExact = in_ext->depthBiasExact; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.\n", in_header->sType); break; @@ -20169,6 +20374,20 @@ static inline void convert_VkPhysicalDeviceFeatures2_win32_to_host(struct conver out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT: + { + VkPhysicalDeviceDepthBiasControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceDepthBiasControlFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDepthBiasControlFeaturesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->depthBiasControl = in_ext->depthBiasControl; + out_ext->leastRepresentableValueForceUnormRepresentation = in_ext->leastRepresentableValueForceUnormRepresentation; + out_ext->floatRepresentation = in_ext->floatRepresentation; + out_ext->depthBiasExact = in_ext->depthBiasExact; + 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)); @@ -21767,6 +21986,18 @@ static inline void convert_VkPhysicalDeviceFeatures2_host_to_win32(const VkPhysi out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT: + { + VkPhysicalDeviceDepthBiasControlFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT); + const VkPhysicalDeviceDepthBiasControlFeaturesEXT *in_ext = (const VkPhysicalDeviceDepthBiasControlFeaturesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT; + out_ext->depthBiasControl = in_ext->depthBiasControl; + out_ext->leastRepresentableValueForceUnormRepresentation = in_ext->leastRepresentableValueForceUnormRepresentation; + out_ext->floatRepresentation = in_ext->floatRepresentation; + out_ext->depthBiasExact = in_ext->depthBiasExact; + 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); @@ -30063,6 +30294,31 @@ static void thunk32_vkCmdSetDepthBias(void *args) wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthBias(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthBiasConstantFactor, params->depthBiasClamp, params->depthBiasSlopeFactor); } +#ifdef _WIN64 +static void thunk64_vkCmdSetDepthBias2EXT(void *args) +{ + struct vkCmdSetDepthBias2EXT_params *params = args; + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthBias2EXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pDepthBiasInfo); +} +#endif /* _WIN64 */ + +static void thunk32_vkCmdSetDepthBias2EXT(void *args) +{ + struct + { + PTR32 commandBuffer; + PTR32 pDepthBiasInfo; + } *params = args; + VkDepthBiasInfoEXT pDepthBiasInfo_host; + struct conversion_context ctx; + + init_conversion_context(&ctx); + convert_VkDepthBiasInfoEXT_win32_to_host(&ctx, (const VkDepthBiasInfoEXT32 *)UlongToPtr(params->pDepthBiasInfo), &pDepthBiasInfo_host); + wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthBias2EXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pDepthBiasInfo_host); + free_conversion_context(&ctx); +} + #ifdef _WIN64 static void thunk64_vkCmdSetDepthBiasEnable(void *args) { @@ -41155,6 +41411,7 @@ static const char * const vk_device_extensions[] = "VK_EXT_conservative_rasterization", "VK_EXT_custom_border_color", "VK_EXT_debug_marker", + "VK_EXT_depth_bias_control", "VK_EXT_depth_clamp_zero_one", "VK_EXT_depth_clip_control", "VK_EXT_depth_clip_enable", @@ -41168,6 +41425,7 @@ static const char * const vk_device_extensions[] = "VK_EXT_extended_dynamic_state", "VK_EXT_extended_dynamic_state2", "VK_EXT_extended_dynamic_state3", + "VK_EXT_external_memory_acquire_unmodified", "VK_EXT_external_memory_host", "VK_EXT_filter_cubic", "VK_EXT_fragment_density_map", @@ -41590,6 +41848,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = (void *)thunk64_vkCmdSetCullMode, (void *)thunk64_vkCmdSetCullModeEXT, (void *)thunk64_vkCmdSetDepthBias, + (void *)thunk64_vkCmdSetDepthBias2EXT, (void *)thunk64_vkCmdSetDepthBiasEnable, (void *)thunk64_vkCmdSetDepthBiasEnableEXT, (void *)thunk64_vkCmdSetDepthBounds, @@ -42144,6 +42403,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = (void *)thunk32_vkCmdSetCullMode, (void *)thunk32_vkCmdSetCullModeEXT, (void *)thunk32_vkCmdSetDepthBias, + (void *)thunk32_vkCmdSetDepthBias2EXT, (void *)thunk32_vkCmdSetDepthBiasEnable, (void *)thunk32_vkCmdSetDepthBiasEnableEXT, (void *)thunk32_vkCmdSetDepthBounds, diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h index b44056e392e..3c3935cfc4b 100644 --- a/dlls/winevulkan/vulkan_thunks.h +++ b/dlls/winevulkan/vulkan_thunks.h @@ -219,6 +219,7 @@ struct vulkan_device_funcs void (*p_vkCmdSetCullMode)(VkCommandBuffer, VkCullModeFlags); void (*p_vkCmdSetCullModeEXT)(VkCommandBuffer, VkCullModeFlags); void (*p_vkCmdSetDepthBias)(VkCommandBuffer, float, float, float); + void (*p_vkCmdSetDepthBias2EXT)(VkCommandBuffer, const VkDepthBiasInfoEXT *); void (*p_vkCmdSetDepthBiasEnable)(VkCommandBuffer, VkBool32); void (*p_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer, VkBool32); void (*p_vkCmdSetDepthBounds)(VkCommandBuffer, float, float); @@ -757,6 +758,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkCmdSetCullMode) \ USE_VK_FUNC(vkCmdSetCullModeEXT) \ USE_VK_FUNC(vkCmdSetDepthBias) \ + USE_VK_FUNC(vkCmdSetDepthBias2EXT) \ USE_VK_FUNC(vkCmdSetDepthBiasEnable) \ USE_VK_FUNC(vkCmdSetDepthBiasEnableEXT) \ USE_VK_FUNC(vkCmdSetDepthBounds) \ diff --git a/dlls/winevulkan/winevulkan.json b/dlls/winevulkan/winevulkan.json index 43ddf4f96ca..c80806a002a 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.251" + "api_version": "1.3.254" } } diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 436489d7c9b..59f8b7275be 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -423,6 +423,8 @@ #define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment" #define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 3 #define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform" +#define VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME "VK_EXT_depth_bias_control" #define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1 #define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2" #define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12 @@ -563,6 +565,8 @@ #define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain" #define VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION 1 #define VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME "VK_QCOM_image_processing" +#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME "VK_EXT_external_memory_acquire_unmodified" #define VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION 2 #define VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME "VK_EXT_extended_dynamic_state3" #define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 2 @@ -625,7 +629,7 @@ #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 VKSC_API_VERSION_1_0 VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0) -#define VK_HEADER_VERSION 251 +#define VK_HEADER_VERSION 254 #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 @@ -911,8 +915,12 @@ typedef VkFlags VkVideoEncodeContentFlagsKHR; typedef VkFlags VkVideoEncodeFeedbackFlagsKHR; typedef VkFlags VkVideoEncodeFlagsKHR; typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; +typedef VkFlags VkVideoEncodeH264RateControlFlagsEXT; +typedef VkFlags VkVideoEncodeH264StdFlagsEXT; typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; +typedef VkFlags VkVideoEncodeH265RateControlFlagsEXT; +typedef VkFlags VkVideoEncodeH265StdFlagsEXT; typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; typedef VkFlags VkVideoEncodeRateControlFlagsKHR; typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; @@ -1577,6 +1585,14 @@ typedef enum VkDependencyFlagBits VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7fffffff, } VkDependencyFlagBits; +typedef enum VkDepthBiasRepresentationEXT +{ + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0, + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1, + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2, + VK_DEPTH_BIAS_REPRESENTATION_EXT_MAX_ENUM = 0x7fffffff, +} VkDepthBiasRepresentationEXT; + typedef enum VkDescriptorBindingFlagBits { VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001, @@ -4193,6 +4209,9 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000, + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001, + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, @@ -4354,6 +4373,7 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001, VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000, @@ -5564,6 +5584,23 @@ typedef struct VkDedicatedAllocationMemoryAllocateInfoNV VkBuffer WINE_VK_ALIGN(8) buffer; } VkDedicatedAllocationMemoryAllocateInfoNV; +typedef struct VkDepthBiasInfoEXT +{ + VkStructureType sType; + const void *pNext; + float depthBiasConstantFactor; + float depthBiasClamp; + float depthBiasSlopeFactor; +} VkDepthBiasInfoEXT; + +typedef struct VkDepthBiasRepresentationInfoEXT +{ + VkStructureType sType; + const void *pNext; + VkDepthBiasRepresentationEXT depthBiasRepresentation; + VkBool32 depthBiasExact; +} VkDepthBiasRepresentationInfoEXT; + typedef struct VkDescriptorAddressInfoEXT { VkStructureType sType; @@ -5998,6 +6035,13 @@ typedef struct VkExternalFenceProperties } VkExternalFenceProperties; typedef VkExternalFenceProperties VkExternalFencePropertiesKHR; +typedef struct VkExternalMemoryAcquireUnmodifiedEXT +{ + VkStructureType sType; + const void *pNext; + VkBool32 acquireUnmodifiedMemory; +} VkExternalMemoryAcquireUnmodifiedEXT; + typedef struct VkExternalMemoryBufferCreateInfo { VkStructureType sType; @@ -7087,6 +7131,16 @@ typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV VkBool32 dedicatedAllocationImageAliasing; } VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; +typedef struct VkPhysicalDeviceDepthBiasControlFeaturesEXT +{ + VkStructureType sType; + void *pNext; + VkBool32 depthBiasControl; + VkBool32 leastRepresentableValueForceUnormRepresentation; + VkBool32 floatRepresentation; + VkBool32 depthBiasExact; +} VkPhysicalDeviceDepthBiasControlFeaturesEXT; + typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT { VkStructureType sType; @@ -11998,6 +12052,7 @@ typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorLocationNV)(VkCommandBuffer, typedef void (VKAPI_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer, VkCullModeFlags); typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer, VkCullModeFlags); typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer, float, float, float); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias2EXT)(VkCommandBuffer, const VkDepthBiasInfoEXT *); typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer, VkBool32); typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer, VkBool32); typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer, float, float); @@ -12545,6 +12600,7 @@ void VKAPI_CALL vkCmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer, void VKAPI_CALL vkCmdSetCullMode(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); void VKAPI_CALL vkCmdSetCullModeEXT(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); void VKAPI_CALL vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor); +void VKAPI_CALL vkCmdSetDepthBias2EXT(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT *pDepthBiasInfo); void VKAPI_CALL vkCmdSetDepthBiasEnable(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); void VKAPI_CALL vkCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); void VKAPI_CALL vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);