From: Rémi Bernon <rbernon@codeweavers.com> The copySrcLayoutCount, pCopySrcLayouts, copyDstLayoutCount and pCopyDstLayouts fields are client provided sizes and buffers and need to be copied from the input struct. --- dlls/winevulkan/make_vulkan | 2 ++ dlls/winevulkan/vulkan_thunks.c | 52 +++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 2dc13b0958e..c67d36fe257 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -1781,6 +1781,8 @@ class Record(Type): @staticmethod def from_xml(struct): + if struct.attrib["name"] == "VkPhysicalDeviceVulkan14Properties": + del struct.attrib["returnedonly"] returnedonly = "returnedonly" in struct.attrib members = filter(is_api_supported, struct.findall("member")) members = [VkMember.from_xml(member, returnedonly) for member in members] diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index 483618849e3..cfa9f6e6759 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -38930,8 +38930,34 @@ static void convert_VkPhysicalDeviceProperties2_win64_to_host(struct conversion_ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES: { VkPhysicalDeviceVulkan14Properties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceVulkan14Properties *in_ext = (const VkPhysicalDeviceVulkan14Properties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES; out_ext->pNext = NULL; + out_ext->lineSubPixelPrecisionBits = in_ext->lineSubPixelPrecisionBits; + out_ext->maxVertexAttribDivisor = in_ext->maxVertexAttribDivisor; + out_ext->supportsNonZeroFirstInstance = in_ext->supportsNonZeroFirstInstance; + out_ext->maxPushDescriptors = in_ext->maxPushDescriptors; + out_ext->dynamicRenderingLocalReadDepthStencilAttachments = in_ext->dynamicRenderingLocalReadDepthStencilAttachments; + out_ext->dynamicRenderingLocalReadMultisampledAttachments = in_ext->dynamicRenderingLocalReadMultisampledAttachments; + out_ext->earlyFragmentMultisampleCoverageAfterSampleCounting = in_ext->earlyFragmentMultisampleCoverageAfterSampleCounting; + out_ext->earlyFragmentSampleMaskTestBeforeSampleCounting = in_ext->earlyFragmentSampleMaskTestBeforeSampleCounting; + out_ext->depthStencilSwizzleOneSupport = in_ext->depthStencilSwizzleOneSupport; + out_ext->polygonModePointSize = in_ext->polygonModePointSize; + out_ext->nonStrictSinglePixelWideLinesUseParallelogram = in_ext->nonStrictSinglePixelWideLinesUseParallelogram; + out_ext->nonStrictWideLinesUseParallelogram = in_ext->nonStrictWideLinesUseParallelogram; + out_ext->blockTexelViewCompatibleMultipleLayers = in_ext->blockTexelViewCompatibleMultipleLayers; + out_ext->maxCombinedImageSamplerDescriptorCount = in_ext->maxCombinedImageSamplerDescriptorCount; + out_ext->fragmentShadingRateClampCombinerInputs = in_ext->fragmentShadingRateClampCombinerInputs; + out_ext->defaultRobustnessStorageBuffers = in_ext->defaultRobustnessStorageBuffers; + out_ext->defaultRobustnessUniformBuffers = in_ext->defaultRobustnessUniformBuffers; + out_ext->defaultRobustnessVertexInputs = in_ext->defaultRobustnessVertexInputs; + out_ext->defaultRobustnessImages = in_ext->defaultRobustnessImages; + out_ext->copySrcLayoutCount = in_ext->copySrcLayoutCount; + out_ext->pCopySrcLayouts = in_ext->pCopySrcLayouts; + out_ext->copyDstLayoutCount = in_ext->copyDstLayoutCount; + out_ext->pCopyDstLayouts = in_ext->pCopyDstLayouts; + memcpy(out_ext->optimalTilingLayoutUUID, in_ext->optimalTilingLayoutUUID, VK_UUID_SIZE * sizeof(uint8_t)); + out_ext->identicalMemoryTypeRequirements = in_ext->identicalMemoryTypeRequirements; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; @@ -41534,8 +41560,34 @@ static void convert_VkPhysicalDeviceProperties2_win32_to_host(struct conversion_ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES: { VkPhysicalDeviceVulkan14Properties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceVulkan14Properties32 *in_ext = (const VkPhysicalDeviceVulkan14Properties32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES; out_ext->pNext = NULL; + out_ext->lineSubPixelPrecisionBits = in_ext->lineSubPixelPrecisionBits; + out_ext->maxVertexAttribDivisor = in_ext->maxVertexAttribDivisor; + out_ext->supportsNonZeroFirstInstance = in_ext->supportsNonZeroFirstInstance; + out_ext->maxPushDescriptors = in_ext->maxPushDescriptors; + out_ext->dynamicRenderingLocalReadDepthStencilAttachments = in_ext->dynamicRenderingLocalReadDepthStencilAttachments; + out_ext->dynamicRenderingLocalReadMultisampledAttachments = in_ext->dynamicRenderingLocalReadMultisampledAttachments; + out_ext->earlyFragmentMultisampleCoverageAfterSampleCounting = in_ext->earlyFragmentMultisampleCoverageAfterSampleCounting; + out_ext->earlyFragmentSampleMaskTestBeforeSampleCounting = in_ext->earlyFragmentSampleMaskTestBeforeSampleCounting; + out_ext->depthStencilSwizzleOneSupport = in_ext->depthStencilSwizzleOneSupport; + out_ext->polygonModePointSize = in_ext->polygonModePointSize; + out_ext->nonStrictSinglePixelWideLinesUseParallelogram = in_ext->nonStrictSinglePixelWideLinesUseParallelogram; + out_ext->nonStrictWideLinesUseParallelogram = in_ext->nonStrictWideLinesUseParallelogram; + out_ext->blockTexelViewCompatibleMultipleLayers = in_ext->blockTexelViewCompatibleMultipleLayers; + out_ext->maxCombinedImageSamplerDescriptorCount = in_ext->maxCombinedImageSamplerDescriptorCount; + out_ext->fragmentShadingRateClampCombinerInputs = in_ext->fragmentShadingRateClampCombinerInputs; + out_ext->defaultRobustnessStorageBuffers = in_ext->defaultRobustnessStorageBuffers; + out_ext->defaultRobustnessUniformBuffers = in_ext->defaultRobustnessUniformBuffers; + out_ext->defaultRobustnessVertexInputs = in_ext->defaultRobustnessVertexInputs; + out_ext->defaultRobustnessImages = in_ext->defaultRobustnessImages; + out_ext->copySrcLayoutCount = in_ext->copySrcLayoutCount; + out_ext->pCopySrcLayouts = UlongToPtr(in_ext->pCopySrcLayouts); + out_ext->copyDstLayoutCount = in_ext->copyDstLayoutCount; + out_ext->pCopyDstLayouts = UlongToPtr(in_ext->pCopyDstLayouts); + memcpy(out_ext->optimalTilingLayoutUUID, in_ext->optimalTilingLayoutUUID, VK_UUID_SIZE * sizeof(uint8_t)); + out_ext->identicalMemoryTypeRequirements = in_ext->identicalMemoryTypeRequirements; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10531