/* Automatically generated from Vulkan vk.xml; DO NOT EDIT! * * This file is generated from Vulkan vk.xml file covered * by the following copyright and permission notice: * * Copyright 2015-2022 The Khronos Group Inc. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #if 0 #pragma makedep unix #endif #include "config.h" #include #include "vulkan_private.h" WINE_DEFAULT_DEBUG_CHANNEL(vulkan); typedef struct VkAcquireNextImageInfoKHR32 { VkStructureType sType; PTR32 pNext; VkSwapchainKHR DECLSPEC_ALIGN(8) swapchain; uint64_t DECLSPEC_ALIGN(8) timeout; VkSemaphore DECLSPEC_ALIGN(8) semaphore; VkFence DECLSPEC_ALIGN(8) fence; uint32_t deviceMask; } VkAcquireNextImageInfoKHR32; typedef struct VkPerformanceConfigurationAcquireInfoINTEL32 { VkStructureType sType; PTR32 pNext; VkPerformanceConfigurationTypeINTEL type; } VkPerformanceConfigurationAcquireInfoINTEL32; typedef struct VkAcquireProfilingLockInfoKHR32 { VkStructureType sType; PTR32 pNext; VkAcquireProfilingLockFlagsKHR flags; uint64_t DECLSPEC_ALIGN(8) timeout; } VkAcquireProfilingLockInfoKHR32; typedef struct VkCommandBufferAllocateInfo32 { VkStructureType sType; PTR32 pNext; VkCommandPool DECLSPEC_ALIGN(8) commandPool; VkCommandBufferLevel level; uint32_t commandBufferCount; } VkCommandBufferAllocateInfo32; typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t descriptorSetCount; PTR32 pDescriptorCounts; } VkDescriptorSetVariableDescriptorCountAllocateInfo32; typedef VkDescriptorSetVariableDescriptorCountAllocateInfo32 VkDescriptorSetVariableDescriptorCountAllocateInfoEXT32; typedef struct VkDescriptorSetAllocateInfo32 { VkStructureType sType; PTR32 pNext; VkDescriptorPool DECLSPEC_ALIGN(8) descriptorPool; uint32_t descriptorSetCount; PTR32 pSetLayouts; } VkDescriptorSetAllocateInfo32; typedef struct VkDedicatedAllocationMemoryAllocateInfoNV32 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) image; VkBuffer DECLSPEC_ALIGN(8) buffer; } VkDedicatedAllocationMemoryAllocateInfoNV32; typedef struct VkExportMemoryAllocateInfo32 { VkStructureType sType; PTR32 pNext; VkExternalMemoryHandleTypeFlags handleTypes; } VkExportMemoryAllocateInfo32; typedef VkExportMemoryAllocateInfo32 VkExportMemoryAllocateInfoKHR32; typedef struct VkImportMemoryWin32HandleInfoKHR32 { VkStructureType sType; PTR32 pNext; VkExternalMemoryHandleTypeFlagBits handleType; HANDLE handle; LPCWSTR name; } VkImportMemoryWin32HandleInfoKHR32; typedef struct VkExportMemoryWin32HandleInfoKHR32 { VkStructureType sType; PTR32 pNext; PTR32 pAttributes; DWORD dwAccess; LPCWSTR name; } VkExportMemoryWin32HandleInfoKHR32; typedef struct VkMemoryAllocateFlagsInfo32 { VkStructureType sType; PTR32 pNext; VkMemoryAllocateFlags flags; uint32_t deviceMask; } VkMemoryAllocateFlagsInfo32; typedef VkMemoryAllocateFlagsInfo32 VkMemoryAllocateFlagsInfoKHR32; typedef struct VkMemoryDedicatedAllocateInfo32 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) image; VkBuffer DECLSPEC_ALIGN(8) buffer; } VkMemoryDedicatedAllocateInfo32; typedef VkMemoryDedicatedAllocateInfo32 VkMemoryDedicatedAllocateInfoKHR32; typedef struct VkImportMemoryHostPointerInfoEXT32 { VkStructureType sType; PTR32 pNext; VkExternalMemoryHandleTypeFlagBits handleType; PTR32 pHostPointer; } VkImportMemoryHostPointerInfoEXT32; typedef struct VkMemoryPriorityAllocateInfoEXT32 { VkStructureType sType; PTR32 pNext; float priority; } VkMemoryPriorityAllocateInfoEXT32; typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo32 { VkStructureType sType; PTR32 pNext; uint64_t DECLSPEC_ALIGN(8) opaqueCaptureAddress; } VkMemoryOpaqueCaptureAddressAllocateInfo32; typedef VkMemoryOpaqueCaptureAddressAllocateInfo32 VkMemoryOpaqueCaptureAddressAllocateInfoKHR32; typedef struct VkMemoryAllocateInfo32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) allocationSize; uint32_t memoryTypeIndex; } VkMemoryAllocateInfo32; typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 conditionalRenderingEnable; } VkCommandBufferInheritanceConditionalRenderingInfoEXT32; typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM32 { VkStructureType sType; PTR32 pNext; VkSurfaceTransformFlagBitsKHR transform; VkRect2D renderArea; } VkCommandBufferInheritanceRenderPassTransformInfoQCOM32; typedef struct VkCommandBufferInheritanceViewportScissorInfoNV32 { VkStructureType sType; PTR32 pNext; VkBool32 viewportScissor2D; uint32_t viewportDepthCount; PTR32 pViewportDepths; } VkCommandBufferInheritanceViewportScissorInfoNV32; typedef struct VkCommandBufferInheritanceRenderingInfo32 { VkStructureType sType; PTR32 pNext; VkRenderingFlags flags; uint32_t viewMask; uint32_t colorAttachmentCount; PTR32 pColorAttachmentFormats; VkFormat depthAttachmentFormat; VkFormat stencilAttachmentFormat; VkSampleCountFlagBits rasterizationSamples; } VkCommandBufferInheritanceRenderingInfo32; typedef VkCommandBufferInheritanceRenderingInfo32 VkCommandBufferInheritanceRenderingInfoKHR32; typedef struct VkAttachmentSampleCountInfoAMD32 { VkStructureType sType; PTR32 pNext; uint32_t colorAttachmentCount; PTR32 pColorAttachmentSamples; VkSampleCountFlagBits depthStencilAttachmentSamples; } VkAttachmentSampleCountInfoAMD32; typedef VkAttachmentSampleCountInfoAMD32 VkAttachmentSampleCountInfoNV32; typedef struct VkMultiviewPerViewAttributesInfoNVX32 { VkStructureType sType; PTR32 pNext; VkBool32 perViewAttributes; VkBool32 perViewAttributesPositionXOnly; } VkMultiviewPerViewAttributesInfoNVX32; typedef struct VkCommandBufferInheritanceInfo32 { VkStructureType sType; PTR32 pNext; VkRenderPass DECLSPEC_ALIGN(8) renderPass; uint32_t subpass; VkFramebuffer DECLSPEC_ALIGN(8) framebuffer; VkBool32 occlusionQueryEnable; VkQueryControlFlags queryFlags; VkQueryPipelineStatisticFlags pipelineStatistics; } VkCommandBufferInheritanceInfo32; typedef struct VkDeviceGroupCommandBufferBeginInfo32 { VkStructureType sType; PTR32 pNext; uint32_t deviceMask; } VkDeviceGroupCommandBufferBeginInfo32; typedef VkDeviceGroupCommandBufferBeginInfo32 VkDeviceGroupCommandBufferBeginInfoKHR32; typedef struct VkCommandBufferBeginInfo32 { VkStructureType sType; PTR32 pNext; VkCommandBufferUsageFlags flags; PTR32 pInheritanceInfo; } VkCommandBufferBeginInfo32; typedef struct VkBindAccelerationStructureMemoryInfoNV32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureNV DECLSPEC_ALIGN(8) accelerationStructure; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) memoryOffset; uint32_t deviceIndexCount; PTR32 pDeviceIndices; } VkBindAccelerationStructureMemoryInfoNV32; typedef struct VkBindBufferMemoryDeviceGroupInfo32 { VkStructureType sType; PTR32 pNext; uint32_t deviceIndexCount; PTR32 pDeviceIndices; } VkBindBufferMemoryDeviceGroupInfo32; typedef VkBindBufferMemoryDeviceGroupInfo32 VkBindBufferMemoryDeviceGroupInfoKHR32; typedef struct VkBindBufferMemoryInfo32 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) memoryOffset; } VkBindBufferMemoryInfo32; typedef VkBindBufferMemoryInfo32 VkBindBufferMemoryInfoKHR32; typedef struct VkBindImageMemoryDeviceGroupInfo32 { VkStructureType sType; PTR32 pNext; uint32_t deviceIndexCount; PTR32 pDeviceIndices; uint32_t splitInstanceBindRegionCount; PTR32 pSplitInstanceBindRegions; } VkBindImageMemoryDeviceGroupInfo32; typedef VkBindImageMemoryDeviceGroupInfo32 VkBindImageMemoryDeviceGroupInfoKHR32; typedef struct VkBindImageMemorySwapchainInfoKHR32 { VkStructureType sType; PTR32 pNext; VkSwapchainKHR DECLSPEC_ALIGN(8) swapchain; uint32_t imageIndex; } VkBindImageMemorySwapchainInfoKHR32; typedef struct VkBindImagePlaneMemoryInfo32 { VkStructureType sType; PTR32 pNext; VkImageAspectFlagBits planeAspect; } VkBindImagePlaneMemoryInfo32; typedef VkBindImagePlaneMemoryInfo32 VkBindImagePlaneMemoryInfoKHR32; typedef struct VkBindImageMemoryInfo32 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) image; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) memoryOffset; } VkBindImageMemoryInfo32; typedef VkBindImageMemoryInfo32 VkBindImageMemoryInfoKHR32; typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV32 { VkStructureType sType; PTR32 pNext; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) vertexData; } VkAccelerationStructureGeometryMotionTrianglesDataNV32; typedef struct VkAccelerationStructureTrianglesOpacityMicromapEXT32 { VkStructureType sType; PTR32 pNext; VkIndexType indexType; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) indexBuffer; VkDeviceSize DECLSPEC_ALIGN(8) indexStride; uint32_t baseTriangle; uint32_t usageCountsCount; PTR32 pUsageCounts; PTR32 ppUsageCounts; VkMicromapEXT DECLSPEC_ALIGN(8) micromap; } VkAccelerationStructureTrianglesOpacityMicromapEXT32; typedef struct VkAccelerationStructureGeometryTrianglesDataKHR32 { VkStructureType sType; PTR32 pNext; VkFormat vertexFormat; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) vertexData; VkDeviceSize DECLSPEC_ALIGN(8) vertexStride; uint32_t maxVertex; VkIndexType indexType; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) indexData; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) transformData; } VkAccelerationStructureGeometryTrianglesDataKHR32; typedef struct VkAccelerationStructureGeometryAabbsDataKHR32 { VkStructureType sType; PTR32 pNext; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) data; VkDeviceSize DECLSPEC_ALIGN(8) stride; } VkAccelerationStructureGeometryAabbsDataKHR32; typedef struct VkAccelerationStructureGeometryInstancesDataKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 arrayOfPointers; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) data; } VkAccelerationStructureGeometryInstancesDataKHR32; typedef union VkAccelerationStructureGeometryDataKHR32 { VkAccelerationStructureGeometryTrianglesDataKHR32 DECLSPEC_ALIGN(8) triangles; VkAccelerationStructureGeometryAabbsDataKHR32 DECLSPEC_ALIGN(8) aabbs; VkAccelerationStructureGeometryInstancesDataKHR32 DECLSPEC_ALIGN(8) instances; } VkAccelerationStructureGeometryDataKHR32; typedef struct VkAccelerationStructureGeometryKHR32 { VkStructureType sType; PTR32 pNext; VkGeometryTypeKHR geometryType; VkAccelerationStructureGeometryDataKHR32 DECLSPEC_ALIGN(8) geometry; VkGeometryFlagsKHR flags; } VkAccelerationStructureGeometryKHR32; typedef struct VkAccelerationStructureBuildGeometryInfoKHR32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureTypeKHR type; VkBuildAccelerationStructureFlagsKHR flags; VkBuildAccelerationStructureModeKHR mode; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) srcAccelerationStructure; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) dstAccelerationStructure; uint32_t geometryCount; PTR32 pGeometries; PTR32 ppGeometries; VkDeviceOrHostAddressKHR DECLSPEC_ALIGN(8) scratchData; } VkAccelerationStructureBuildGeometryInfoKHR32; typedef struct VkMicromapBuildInfoEXT32 { VkStructureType sType; PTR32 pNext; VkMicromapTypeEXT type; VkBuildMicromapFlagsEXT flags; VkBuildMicromapModeEXT mode; VkMicromapEXT DECLSPEC_ALIGN(8) dstMicromap; uint32_t usageCountsCount; PTR32 pUsageCounts; PTR32 ppUsageCounts; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) data; VkDeviceOrHostAddressKHR DECLSPEC_ALIGN(8) scratchData; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) triangleArray; VkDeviceSize DECLSPEC_ALIGN(8) triangleArrayStride; } VkMicromapBuildInfoEXT32; typedef struct VkConditionalRenderingBeginInfoEXT32 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkConditionalRenderingFlagsEXT flags; } VkConditionalRenderingBeginInfoEXT32; typedef struct VkDebugUtilsLabelEXT32 { VkStructureType sType; PTR32 pNext; PTR32 pLabelName; float color[4]; } VkDebugUtilsLabelEXT32; typedef struct VkSampleLocationsInfoEXT32 { VkStructureType sType; PTR32 pNext; VkSampleCountFlagBits sampleLocationsPerPixel; VkExtent2D sampleLocationGridSize; uint32_t sampleLocationsCount; PTR32 pSampleLocations; } VkSampleLocationsInfoEXT32; typedef struct VkAttachmentSampleLocationsEXT32 { uint32_t attachmentIndex; VkSampleLocationsInfoEXT32 sampleLocationsInfo; } VkAttachmentSampleLocationsEXT32; typedef struct VkSubpassSampleLocationsEXT32 { uint32_t subpassIndex; VkSampleLocationsInfoEXT32 sampleLocationsInfo; } VkSubpassSampleLocationsEXT32; typedef struct VkDeviceGroupRenderPassBeginInfo32 { VkStructureType sType; PTR32 pNext; uint32_t deviceMask; uint32_t deviceRenderAreaCount; PTR32 pDeviceRenderAreas; } VkDeviceGroupRenderPassBeginInfo32; typedef VkDeviceGroupRenderPassBeginInfo32 VkDeviceGroupRenderPassBeginInfoKHR32; typedef struct VkRenderPassSampleLocationsBeginInfoEXT32 { VkStructureType sType; PTR32 pNext; uint32_t attachmentInitialSampleLocationsCount; PTR32 pAttachmentInitialSampleLocations; uint32_t postSubpassSampleLocationsCount; PTR32 pPostSubpassSampleLocations; } VkRenderPassSampleLocationsBeginInfoEXT32; typedef struct VkRenderPassAttachmentBeginInfo32 { VkStructureType sType; PTR32 pNext; uint32_t attachmentCount; PTR32 pAttachments; } VkRenderPassAttachmentBeginInfo32; typedef VkRenderPassAttachmentBeginInfo32 VkRenderPassAttachmentBeginInfoKHR32; typedef struct VkRenderPassTransformBeginInfoQCOM32 { VkStructureType sType; PTR32 pNext; VkSurfaceTransformFlagBitsKHR transform; } VkRenderPassTransformBeginInfoQCOM32; typedef struct VkRenderPassBeginInfo32 { VkStructureType sType; PTR32 pNext; VkRenderPass DECLSPEC_ALIGN(8) renderPass; VkFramebuffer DECLSPEC_ALIGN(8) framebuffer; VkRect2D renderArea; uint32_t clearValueCount; PTR32 pClearValues; } VkRenderPassBeginInfo32; typedef struct VkSubpassBeginInfo32 { VkStructureType sType; PTR32 pNext; VkSubpassContents contents; } VkSubpassBeginInfo32; typedef VkSubpassBeginInfo32 VkSubpassBeginInfoKHR32; typedef struct VkRenderingAttachmentInfo32 { VkStructureType sType; PTR32 pNext; VkImageView DECLSPEC_ALIGN(8) imageView; VkImageLayout imageLayout; VkResolveModeFlagBits resolveMode; VkImageView DECLSPEC_ALIGN(8) resolveImageView; VkImageLayout resolveImageLayout; VkAttachmentLoadOp loadOp; VkAttachmentStoreOp storeOp; VkClearValue clearValue; } VkRenderingAttachmentInfo32; typedef VkRenderingAttachmentInfo32 VkRenderingAttachmentInfoKHR32; typedef struct VkMultisampledRenderToSingleSampledInfoEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 multisampledRenderToSingleSampledEnable; VkSampleCountFlagBits rasterizationSamples; } VkMultisampledRenderToSingleSampledInfoEXT32; typedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR32 { VkStructureType sType; PTR32 pNext; VkImageView DECLSPEC_ALIGN(8) imageView; VkImageLayout imageLayout; VkExtent2D shadingRateAttachmentTexelSize; } VkRenderingFragmentShadingRateAttachmentInfoKHR32; typedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT32 { VkStructureType sType; PTR32 pNext; VkImageView DECLSPEC_ALIGN(8) imageView; VkImageLayout imageLayout; } VkRenderingFragmentDensityMapAttachmentInfoEXT32; typedef struct VkRenderingInfo32 { VkStructureType sType; PTR32 pNext; VkRenderingFlags flags; VkRect2D renderArea; uint32_t layerCount; uint32_t viewMask; uint32_t colorAttachmentCount; PTR32 pColorAttachments; PTR32 pDepthAttachment; PTR32 pStencilAttachment; } VkRenderingInfo32; typedef VkRenderingInfo32 VkRenderingInfoKHR32; typedef struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT32 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) buffer; } VkDescriptorBufferBindingPushDescriptorBufferHandleEXT32; typedef struct VkDescriptorBufferBindingInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceAddress DECLSPEC_ALIGN(8) address; VkBufferUsageFlags usage; } VkDescriptorBufferBindingInfoEXT32; typedef struct VkCopyCommandTransformInfoQCOM32 { VkStructureType sType; PTR32 pNext; VkSurfaceTransformFlagBitsKHR transform; } VkCopyCommandTransformInfoQCOM32; typedef struct VkImageBlit232 { VkStructureType sType; PTR32 pNext; VkImageSubresourceLayers srcSubresource; VkOffset3D srcOffsets[2]; VkImageSubresourceLayers dstSubresource; VkOffset3D dstOffsets[2]; } VkImageBlit232; typedef VkImageBlit232 VkImageBlit2KHR32; typedef struct VkBlitImageInfo232 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) srcImage; VkImageLayout srcImageLayout; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; uint32_t regionCount; PTR32 pRegions; VkFilter filter; } VkBlitImageInfo232; typedef VkBlitImageInfo232 VkBlitImageInfo2KHR32; typedef struct VkGeometryTrianglesNV32 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) vertexData; VkDeviceSize DECLSPEC_ALIGN(8) vertexOffset; uint32_t vertexCount; VkDeviceSize DECLSPEC_ALIGN(8) vertexStride; VkFormat vertexFormat; VkBuffer DECLSPEC_ALIGN(8) indexData; VkDeviceSize DECLSPEC_ALIGN(8) indexOffset; uint32_t indexCount; VkIndexType indexType; VkBuffer DECLSPEC_ALIGN(8) transformData; VkDeviceSize DECLSPEC_ALIGN(8) transformOffset; } VkGeometryTrianglesNV32; typedef struct VkGeometryAABBNV32 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) aabbData; uint32_t numAABBs; uint32_t stride; VkDeviceSize DECLSPEC_ALIGN(8) offset; } VkGeometryAABBNV32; typedef struct VkGeometryDataNV32 { VkGeometryTrianglesNV32 DECLSPEC_ALIGN(8) triangles; VkGeometryAABBNV32 DECLSPEC_ALIGN(8) aabbs; } VkGeometryDataNV32; typedef struct VkGeometryNV32 { VkStructureType sType; PTR32 pNext; VkGeometryTypeKHR geometryType; VkGeometryDataNV32 DECLSPEC_ALIGN(8) geometry; VkGeometryFlagsKHR flags; } VkGeometryNV32; typedef struct VkAccelerationStructureInfoNV32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureTypeNV type; VkBuildAccelerationStructureFlagsNV flags; uint32_t instanceCount; uint32_t geometryCount; PTR32 pGeometries; } VkAccelerationStructureInfoNV32; typedef struct VkCopyAccelerationStructureInfoKHR32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) src; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) dst; VkCopyAccelerationStructureModeKHR mode; } VkCopyAccelerationStructureInfoKHR32; typedef struct VkCopyAccelerationStructureToMemoryInfoKHR32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) src; VkDeviceOrHostAddressKHR DECLSPEC_ALIGN(8) dst; VkCopyAccelerationStructureModeKHR mode; } VkCopyAccelerationStructureToMemoryInfoKHR32; typedef struct VkBufferCopy32 { VkDeviceSize DECLSPEC_ALIGN(8) srcOffset; VkDeviceSize DECLSPEC_ALIGN(8) dstOffset; VkDeviceSize DECLSPEC_ALIGN(8) size; } VkBufferCopy32; typedef struct VkBufferCopy232 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) srcOffset; VkDeviceSize DECLSPEC_ALIGN(8) dstOffset; VkDeviceSize DECLSPEC_ALIGN(8) size; } VkBufferCopy232; typedef VkBufferCopy232 VkBufferCopy2KHR32; typedef struct VkCopyBufferInfo232 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) srcBuffer; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; uint32_t regionCount; PTR32 pRegions; } VkCopyBufferInfo232; typedef VkCopyBufferInfo232 VkCopyBufferInfo2KHR32; typedef struct VkBufferImageCopy32 { VkDeviceSize DECLSPEC_ALIGN(8) bufferOffset; uint32_t bufferRowLength; uint32_t bufferImageHeight; VkImageSubresourceLayers imageSubresource; VkOffset3D imageOffset; VkExtent3D imageExtent; } VkBufferImageCopy32; typedef struct VkBufferImageCopy232 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) bufferOffset; uint32_t bufferRowLength; uint32_t bufferImageHeight; VkImageSubresourceLayers imageSubresource; VkOffset3D imageOffset; VkExtent3D imageExtent; } VkBufferImageCopy232; typedef VkBufferImageCopy232 VkBufferImageCopy2KHR32; typedef struct VkCopyBufferToImageInfo232 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) srcBuffer; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; uint32_t regionCount; PTR32 pRegions; } VkCopyBufferToImageInfo232; typedef VkCopyBufferToImageInfo232 VkCopyBufferToImageInfo2KHR32; typedef struct VkImageCopy232 { VkStructureType sType; PTR32 pNext; VkImageSubresourceLayers srcSubresource; VkOffset3D srcOffset; VkImageSubresourceLayers dstSubresource; VkOffset3D dstOffset; VkExtent3D extent; } VkImageCopy232; typedef VkImageCopy232 VkImageCopy2KHR32; typedef struct VkCopyImageInfo232 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) srcImage; VkImageLayout srcImageLayout; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; uint32_t regionCount; PTR32 pRegions; } VkCopyImageInfo232; typedef VkCopyImageInfo232 VkCopyImageInfo2KHR32; typedef struct VkCopyImageToBufferInfo232 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) srcImage; VkImageLayout srcImageLayout; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; uint32_t regionCount; PTR32 pRegions; } VkCopyImageToBufferInfo232; typedef VkCopyImageToBufferInfo232 VkCopyImageToBufferInfo2KHR32; typedef struct VkCopyMemoryToAccelerationStructureInfoKHR32 { VkStructureType sType; PTR32 pNext; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) src; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) dst; VkCopyAccelerationStructureModeKHR mode; } VkCopyMemoryToAccelerationStructureInfoKHR32; typedef struct VkCopyMemoryToMicromapInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceOrHostAddressConstKHR DECLSPEC_ALIGN(8) src; VkMicromapEXT DECLSPEC_ALIGN(8) dst; VkCopyMicromapModeEXT mode; } VkCopyMemoryToMicromapInfoEXT32; typedef struct VkCopyMicromapInfoEXT32 { VkStructureType sType; PTR32 pNext; VkMicromapEXT DECLSPEC_ALIGN(8) src; VkMicromapEXT DECLSPEC_ALIGN(8) dst; VkCopyMicromapModeEXT mode; } VkCopyMicromapInfoEXT32; typedef struct VkCopyMicromapToMemoryInfoEXT32 { VkStructureType sType; PTR32 pNext; VkMicromapEXT DECLSPEC_ALIGN(8) src; VkDeviceOrHostAddressKHR DECLSPEC_ALIGN(8) dst; VkCopyMicromapModeEXT mode; } VkCopyMicromapToMemoryInfoEXT32; typedef struct VkCuLaunchInfoNVX32 { VkStructureType sType; PTR32 pNext; VkCuFunctionNVX DECLSPEC_ALIGN(8) function; uint32_t gridDimX; uint32_t gridDimY; uint32_t gridDimZ; uint32_t blockDimX; uint32_t blockDimY; uint32_t blockDimZ; uint32_t sharedMemBytes; PTR32 paramCount; PTR32 pParams; PTR32 extraCount; PTR32 pExtras; } VkCuLaunchInfoNVX32; typedef struct VkDebugMarkerMarkerInfoEXT32 { VkStructureType sType; PTR32 pNext; PTR32 pMarkerName; float color[4]; } VkDebugMarkerMarkerInfoEXT32; typedef struct VkDecompressMemoryRegionNV32 { VkDeviceAddress DECLSPEC_ALIGN(8) srcAddress; VkDeviceAddress DECLSPEC_ALIGN(8) dstAddress; VkDeviceSize DECLSPEC_ALIGN(8) compressedSize; VkDeviceSize DECLSPEC_ALIGN(8) decompressedSize; VkMemoryDecompressionMethodFlagsNV DECLSPEC_ALIGN(8) decompressionMethod; } VkDecompressMemoryRegionNV32; typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM32 { VkStructureType sType; PTR32 pNext; uint32_t fragmentDensityOffsetCount; PTR32 pFragmentDensityOffsets; } VkSubpassFragmentDensityMapOffsetEndInfoQCOM32; typedef struct VkSubpassEndInfo32 { VkStructureType sType; PTR32 pNext; } VkSubpassEndInfo32; typedef VkSubpassEndInfo32 VkSubpassEndInfoKHR32; typedef struct VkIndirectCommandsStreamNV32 { VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; } VkIndirectCommandsStreamNV32; typedef struct VkGeneratedCommandsInfoNV32 { VkStructureType sType; PTR32 pNext; VkPipelineBindPoint pipelineBindPoint; VkPipeline DECLSPEC_ALIGN(8) pipeline; VkIndirectCommandsLayoutNV DECLSPEC_ALIGN(8) indirectCommandsLayout; uint32_t streamCount; PTR32 pStreams; uint32_t sequencesCount; VkBuffer DECLSPEC_ALIGN(8) preprocessBuffer; VkDeviceSize DECLSPEC_ALIGN(8) preprocessOffset; VkDeviceSize DECLSPEC_ALIGN(8) preprocessSize; VkBuffer DECLSPEC_ALIGN(8) sequencesCountBuffer; VkDeviceSize DECLSPEC_ALIGN(8) sequencesCountOffset; VkBuffer DECLSPEC_ALIGN(8) sequencesIndexBuffer; VkDeviceSize DECLSPEC_ALIGN(8) sequencesIndexOffset; } VkGeneratedCommandsInfoNV32; typedef struct VkOpticalFlowExecuteInfoNV32 { VkStructureType sType; PTR32 pNext; VkOpticalFlowExecuteFlagsNV flags; uint32_t regionCount; PTR32 pRegions; } VkOpticalFlowExecuteInfoNV32; typedef struct VkMemoryBarrier32 { VkStructureType sType; PTR32 pNext; VkAccessFlags srcAccessMask; VkAccessFlags dstAccessMask; } VkMemoryBarrier32; typedef struct VkBufferMemoryBarrier32 { VkStructureType sType; PTR32 pNext; VkAccessFlags srcAccessMask; VkAccessFlags dstAccessMask; uint32_t srcQueueFamilyIndex; uint32_t dstQueueFamilyIndex; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) size; } VkBufferMemoryBarrier32; typedef struct VkImageMemoryBarrier32 { VkStructureType sType; PTR32 pNext; VkAccessFlags srcAccessMask; VkAccessFlags dstAccessMask; VkImageLayout oldLayout; VkImageLayout newLayout; uint32_t srcQueueFamilyIndex; uint32_t dstQueueFamilyIndex; VkImage DECLSPEC_ALIGN(8) image; VkImageSubresourceRange subresourceRange; } VkImageMemoryBarrier32; typedef struct VkMemoryBarrier232 { VkStructureType sType; PTR32 pNext; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) srcStageMask; VkAccessFlags2 DECLSPEC_ALIGN(8) srcAccessMask; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) dstStageMask; VkAccessFlags2 DECLSPEC_ALIGN(8) dstAccessMask; } VkMemoryBarrier232; typedef VkMemoryBarrier232 VkMemoryBarrier2KHR32; typedef struct VkBufferMemoryBarrier232 { VkStructureType sType; PTR32 pNext; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) srcStageMask; VkAccessFlags2 DECLSPEC_ALIGN(8) srcAccessMask; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) dstStageMask; VkAccessFlags2 DECLSPEC_ALIGN(8) dstAccessMask; uint32_t srcQueueFamilyIndex; uint32_t dstQueueFamilyIndex; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) size; } VkBufferMemoryBarrier232; typedef VkBufferMemoryBarrier232 VkBufferMemoryBarrier2KHR32; typedef struct VkImageMemoryBarrier232 { VkStructureType sType; PTR32 pNext; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) srcStageMask; VkAccessFlags2 DECLSPEC_ALIGN(8) srcAccessMask; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) dstStageMask; VkAccessFlags2 DECLSPEC_ALIGN(8) dstAccessMask; VkImageLayout oldLayout; VkImageLayout newLayout; uint32_t srcQueueFamilyIndex; uint32_t dstQueueFamilyIndex; VkImage DECLSPEC_ALIGN(8) image; VkImageSubresourceRange subresourceRange; } VkImageMemoryBarrier232; typedef VkImageMemoryBarrier232 VkImageMemoryBarrier2KHR32; typedef struct VkDependencyInfo32 { VkStructureType sType; PTR32 pNext; VkDependencyFlags dependencyFlags; uint32_t memoryBarrierCount; PTR32 pMemoryBarriers; uint32_t bufferMemoryBarrierCount; PTR32 pBufferMemoryBarriers; uint32_t imageMemoryBarrierCount; PTR32 pImageMemoryBarriers; } VkDependencyInfo32; typedef VkDependencyInfo32 VkDependencyInfoKHR32; typedef struct VkDescriptorImageInfo32 { VkSampler DECLSPEC_ALIGN(8) sampler; VkImageView DECLSPEC_ALIGN(8) imageView; VkImageLayout imageLayout; } VkDescriptorImageInfo32; typedef struct VkDescriptorBufferInfo32 { VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) range; } VkDescriptorBufferInfo32; typedef struct VkWriteDescriptorSetInlineUniformBlock32 { VkStructureType sType; PTR32 pNext; uint32_t dataSize; PTR32 pData; } VkWriteDescriptorSetInlineUniformBlock32; typedef VkWriteDescriptorSetInlineUniformBlock32 VkWriteDescriptorSetInlineUniformBlockEXT32; typedef struct VkWriteDescriptorSetAccelerationStructureKHR32 { VkStructureType sType; PTR32 pNext; uint32_t accelerationStructureCount; PTR32 pAccelerationStructures; } VkWriteDescriptorSetAccelerationStructureKHR32; typedef struct VkWriteDescriptorSetAccelerationStructureNV32 { VkStructureType sType; PTR32 pNext; uint32_t accelerationStructureCount; PTR32 pAccelerationStructures; } VkWriteDescriptorSetAccelerationStructureNV32; typedef struct VkWriteDescriptorSet32 { VkStructureType sType; PTR32 pNext; VkDescriptorSet DECLSPEC_ALIGN(8) dstSet; uint32_t dstBinding; uint32_t dstArrayElement; uint32_t descriptorCount; VkDescriptorType descriptorType; PTR32 pImageInfo; PTR32 pBufferInfo; PTR32 pTexelBufferView; } VkWriteDescriptorSet32; typedef struct VkImageResolve232 { VkStructureType sType; PTR32 pNext; VkImageSubresourceLayers srcSubresource; VkOffset3D srcOffset; VkImageSubresourceLayers dstSubresource; VkOffset3D dstOffset; VkExtent3D extent; } VkImageResolve232; typedef VkImageResolve232 VkImageResolve2KHR32; typedef struct VkResolveImageInfo232 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) srcImage; VkImageLayout srcImageLayout; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; uint32_t regionCount; PTR32 pRegions; } VkResolveImageInfo232; typedef VkResolveImageInfo232 VkResolveImageInfo2KHR32; typedef struct VkCoarseSampleOrderCustomNV32 { VkShadingRatePaletteEntryNV shadingRate; uint32_t sampleCount; uint32_t sampleLocationCount; PTR32 pSampleLocations; } VkCoarseSampleOrderCustomNV32; typedef struct VkPerformanceMarkerInfoINTEL32 { VkStructureType sType; PTR32 pNext; uint64_t DECLSPEC_ALIGN(8) marker; } VkPerformanceMarkerInfoINTEL32; typedef struct VkPerformanceOverrideInfoINTEL32 { VkStructureType sType; PTR32 pNext; VkPerformanceOverrideTypeINTEL type; VkBool32 enable; uint64_t DECLSPEC_ALIGN(8) parameter; } VkPerformanceOverrideInfoINTEL32; typedef struct VkPerformanceStreamMarkerInfoINTEL32 { VkStructureType sType; PTR32 pNext; uint32_t marker; } VkPerformanceStreamMarkerInfoINTEL32; typedef struct VkVertexInputBindingDescription2EXT32 { VkStructureType sType; PTR32 pNext; uint32_t binding; uint32_t stride; VkVertexInputRate inputRate; uint32_t divisor; } VkVertexInputBindingDescription2EXT32; typedef struct VkVertexInputAttributeDescription2EXT32 { VkStructureType sType; PTR32 pNext; uint32_t location; uint32_t binding; VkFormat format; uint32_t offset; } VkVertexInputAttributeDescription2EXT32; typedef struct VkShadingRatePaletteNV32 { uint32_t shadingRatePaletteEntryCount; PTR32 pShadingRatePaletteEntries; } VkShadingRatePaletteNV32; typedef struct VkStridedDeviceAddressRegionKHR32 { VkDeviceAddress DECLSPEC_ALIGN(8) deviceAddress; VkDeviceSize DECLSPEC_ALIGN(8) stride; VkDeviceSize DECLSPEC_ALIGN(8) size; } VkStridedDeviceAddressRegionKHR32; typedef struct VkOpaqueCaptureDescriptorDataCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; PTR32 opaqueCaptureDescriptorData; } VkOpaqueCaptureDescriptorDataCreateInfoEXT32; typedef struct VkAccelerationStructureMotionInfoNV32 { VkStructureType sType; PTR32 pNext; uint32_t maxInstances; VkAccelerationStructureMotionInfoFlagsNV flags; } VkAccelerationStructureMotionInfoNV32; typedef struct VkAccelerationStructureCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureCreateFlagsKHR createFlags; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) size; VkAccelerationStructureTypeKHR type; VkDeviceAddress DECLSPEC_ALIGN(8) deviceAddress; } VkAccelerationStructureCreateInfoKHR32; typedef struct VkAccelerationStructureCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) compactedSize; VkAccelerationStructureInfoNV32 info; } VkAccelerationStructureCreateInfoNV32; typedef struct VkDedicatedAllocationBufferCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkBool32 dedicatedAllocation; } VkDedicatedAllocationBufferCreateInfoNV32; typedef struct VkExternalMemoryBufferCreateInfo32 { VkStructureType sType; PTR32 pNext; VkExternalMemoryHandleTypeFlags handleTypes; } VkExternalMemoryBufferCreateInfo32; typedef VkExternalMemoryBufferCreateInfo32 VkExternalMemoryBufferCreateInfoKHR32; typedef struct VkBufferOpaqueCaptureAddressCreateInfo32 { VkStructureType sType; PTR32 pNext; uint64_t DECLSPEC_ALIGN(8) opaqueCaptureAddress; } VkBufferOpaqueCaptureAddressCreateInfo32; typedef VkBufferOpaqueCaptureAddressCreateInfo32 VkBufferOpaqueCaptureAddressCreateInfoKHR32; typedef struct VkBufferDeviceAddressCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceAddress DECLSPEC_ALIGN(8) deviceAddress; } VkBufferDeviceAddressCreateInfoEXT32; typedef struct VkBufferCreateInfo32 { VkStructureType sType; PTR32 pNext; VkBufferCreateFlags flags; VkDeviceSize DECLSPEC_ALIGN(8) size; VkBufferUsageFlags usage; VkSharingMode sharingMode; uint32_t queueFamilyIndexCount; PTR32 pQueueFamilyIndices; } VkBufferCreateInfo32; typedef struct VkBufferViewCreateInfo32 { VkStructureType sType; PTR32 pNext; VkBufferViewCreateFlags flags; VkBuffer DECLSPEC_ALIGN(8) buffer; VkFormat format; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) range; } VkBufferViewCreateInfo32; typedef struct VkCommandPoolCreateInfo32 { VkStructureType sType; PTR32 pNext; VkCommandPoolCreateFlags flags; uint32_t queueFamilyIndex; } VkCommandPoolCreateInfo32; typedef struct VkPipelineCreationFeedback32 { VkPipelineCreationFeedbackFlags flags; uint64_t DECLSPEC_ALIGN(8) duration; } VkPipelineCreationFeedback32; typedef VkPipelineCreationFeedback32 VkPipelineCreationFeedbackEXT32; typedef struct VkSpecializationMapEntry32 { uint32_t constantID; uint32_t offset; PTR32 size; } VkSpecializationMapEntry32; typedef struct VkSpecializationInfo32 { uint32_t mapEntryCount; PTR32 pMapEntries; PTR32 dataSize; PTR32 pData; } VkSpecializationInfo32; typedef struct VkShaderModuleCreateInfo32 { VkStructureType sType; PTR32 pNext; VkShaderModuleCreateFlags flags; PTR32 codeSize; PTR32 pCode; } VkShaderModuleCreateInfo32; typedef struct VkShaderModuleValidationCacheCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkValidationCacheEXT DECLSPEC_ALIGN(8) validationCache; } VkShaderModuleValidationCacheCreateInfoEXT32; typedef struct VkDebugUtilsObjectNameInfoEXT32 { VkStructureType sType; PTR32 pNext; VkObjectType objectType; uint64_t DECLSPEC_ALIGN(8) objectHandle; PTR32 pObjectName; } VkDebugUtilsObjectNameInfoEXT32; typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t requiredSubgroupSize; } VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32; typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT32; typedef struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; uint32_t identifierSize; PTR32 pIdentifier; } VkPipelineShaderStageModuleIdentifierCreateInfoEXT32; typedef struct VkPipelineRobustnessCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkPipelineRobustnessBufferBehaviorEXT storageBuffers; VkPipelineRobustnessBufferBehaviorEXT uniformBuffers; VkPipelineRobustnessBufferBehaviorEXT vertexInputs; VkPipelineRobustnessImageBehaviorEXT images; } VkPipelineRobustnessCreateInfoEXT32; typedef struct VkPipelineShaderStageCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineShaderStageCreateFlags flags; VkShaderStageFlagBits stage; VkShaderModule DECLSPEC_ALIGN(8) module; PTR32 pName; PTR32 pSpecializationInfo; } VkPipelineShaderStageCreateInfo32; typedef struct VkPipelineCreationFeedbackCreateInfo32 { VkStructureType sType; PTR32 pNext; PTR32 pPipelineCreationFeedback; uint32_t pipelineStageCreationFeedbackCount; PTR32 pPipelineStageCreationFeedbacks; } VkPipelineCreationFeedbackCreateInfo32; typedef VkPipelineCreationFeedbackCreateInfo32 VkPipelineCreationFeedbackCreateInfoEXT32; typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI32 { VkStructureType sType; PTR32 pNext; VkRenderPass DECLSPEC_ALIGN(8) renderPass; uint32_t subpass; } VkSubpassShadingPipelineCreateInfoHUAWEI32; typedef struct VkPipelineCompilerControlCreateInfoAMD32 { VkStructureType sType; PTR32 pNext; VkPipelineCompilerControlFlagsAMD compilerControlFlags; } VkPipelineCompilerControlCreateInfoAMD32; typedef struct VkComputePipelineCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineCreateFlags flags; VkPipelineShaderStageCreateInfo32 DECLSPEC_ALIGN(8) stage; VkPipelineLayout DECLSPEC_ALIGN(8) layout; VkPipeline DECLSPEC_ALIGN(8) basePipelineHandle; int32_t basePipelineIndex; } VkComputePipelineCreateInfo32; typedef struct VkCuFunctionCreateInfoNVX32 { VkStructureType sType; PTR32 pNext; VkCuModuleNVX DECLSPEC_ALIGN(8) module; PTR32 pName; } VkCuFunctionCreateInfoNVX32; typedef struct VkCuModuleCreateInfoNVX32 { VkStructureType sType; PTR32 pNext; PTR32 dataSize; PTR32 pData; } VkCuModuleCreateInfoNVX32; typedef struct VkDebugReportCallbackCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDebugReportFlagsEXT flags; PFN_vkDebugReportCallbackEXT pfnCallback; PTR32 pUserData; } VkDebugReportCallbackCreateInfoEXT32; typedef struct VkDebugUtilsMessengerCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDebugUtilsMessengerCreateFlagsEXT flags; VkDebugUtilsMessageSeverityFlagsEXT messageSeverity; VkDebugUtilsMessageTypeFlagsEXT messageType; PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback; PTR32 pUserData; } VkDebugUtilsMessengerCreateInfoEXT32; typedef struct VkMutableDescriptorTypeListEXT32 { uint32_t descriptorTypeCount; PTR32 pDescriptorTypes; } VkMutableDescriptorTypeListEXT32; typedef VkMutableDescriptorTypeListEXT32 VkMutableDescriptorTypeListVALVE32; typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t maxInlineUniformBlockBindings; } VkDescriptorPoolInlineUniformBlockCreateInfo32; typedef VkDescriptorPoolInlineUniformBlockCreateInfo32 VkDescriptorPoolInlineUniformBlockCreateInfoEXT32; typedef struct VkMutableDescriptorTypeCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; uint32_t mutableDescriptorTypeListCount; PTR32 pMutableDescriptorTypeLists; } VkMutableDescriptorTypeCreateInfoEXT32; typedef VkMutableDescriptorTypeCreateInfoEXT32 VkMutableDescriptorTypeCreateInfoVALVE32; typedef struct VkDescriptorPoolCreateInfo32 { VkStructureType sType; PTR32 pNext; VkDescriptorPoolCreateFlags flags; uint32_t maxSets; uint32_t poolSizeCount; PTR32 pPoolSizes; } VkDescriptorPoolCreateInfo32; typedef struct VkDescriptorSetLayoutBinding32 { uint32_t binding; VkDescriptorType descriptorType; uint32_t descriptorCount; VkShaderStageFlags stageFlags; PTR32 pImmutableSamplers; } VkDescriptorSetLayoutBinding32; typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t bindingCount; PTR32 pBindingFlags; } VkDescriptorSetLayoutBindingFlagsCreateInfo32; typedef VkDescriptorSetLayoutBindingFlagsCreateInfo32 VkDescriptorSetLayoutBindingFlagsCreateInfoEXT32; typedef struct VkDescriptorSetLayoutCreateInfo32 { VkStructureType sType; PTR32 pNext; VkDescriptorSetLayoutCreateFlags flags; uint32_t bindingCount; PTR32 pBindings; } VkDescriptorSetLayoutCreateInfo32; typedef struct VkDescriptorUpdateTemplateEntry32 { uint32_t dstBinding; uint32_t dstArrayElement; uint32_t descriptorCount; VkDescriptorType descriptorType; PTR32 offset; PTR32 stride; } VkDescriptorUpdateTemplateEntry32; typedef VkDescriptorUpdateTemplateEntry32 VkDescriptorUpdateTemplateEntryKHR32; typedef struct VkDescriptorUpdateTemplateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkDescriptorUpdateTemplateCreateFlags flags; uint32_t descriptorUpdateEntryCount; PTR32 pDescriptorUpdateEntries; VkDescriptorUpdateTemplateType templateType; VkDescriptorSetLayout DECLSPEC_ALIGN(8) descriptorSetLayout; VkPipelineBindPoint pipelineBindPoint; VkPipelineLayout DECLSPEC_ALIGN(8) pipelineLayout; uint32_t set; } VkDescriptorUpdateTemplateCreateInfo32; typedef VkDescriptorUpdateTemplateCreateInfo32 VkDescriptorUpdateTemplateCreateInfoKHR32; typedef struct VkDeviceQueueGlobalPriorityCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkQueueGlobalPriorityKHR globalPriority; } VkDeviceQueueGlobalPriorityCreateInfoKHR32; typedef VkDeviceQueueGlobalPriorityCreateInfoKHR32 VkDeviceQueueGlobalPriorityCreateInfoEXT32; typedef struct VkDeviceQueueCreateInfo32 { VkStructureType sType; PTR32 pNext; VkDeviceQueueCreateFlags flags; uint32_t queueFamilyIndex; uint32_t queueCount; PTR32 pQueuePriorities; } VkDeviceQueueCreateInfo32; typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 deviceGeneratedCommands; } VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV32; typedef struct VkDevicePrivateDataCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t privateDataSlotRequestCount; } VkDevicePrivateDataCreateInfo32; typedef VkDevicePrivateDataCreateInfo32 VkDevicePrivateDataCreateInfoEXT32; typedef struct VkPhysicalDevicePrivateDataFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 privateData; } VkPhysicalDevicePrivateDataFeatures32; typedef VkPhysicalDevicePrivateDataFeatures32 VkPhysicalDevicePrivateDataFeaturesEXT32; typedef struct VkPhysicalDeviceFeatures232 { VkStructureType sType; PTR32 pNext; VkPhysicalDeviceFeatures features; } VkPhysicalDeviceFeatures232; typedef VkPhysicalDeviceFeatures232 VkPhysicalDeviceFeatures2KHR32; typedef struct VkPhysicalDeviceVariablePointersFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 variablePointersStorageBuffer; VkBool32 variablePointers; } VkPhysicalDeviceVariablePointersFeatures32; typedef VkPhysicalDeviceVariablePointersFeatures32 VkPhysicalDeviceVariablePointersFeaturesKHR32; typedef VkPhysicalDeviceVariablePointersFeatures32 VkPhysicalDeviceVariablePointerFeaturesKHR32; typedef VkPhysicalDeviceVariablePointersFeatures32 VkPhysicalDeviceVariablePointerFeatures32; typedef struct VkPhysicalDeviceMultiviewFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 multiview; VkBool32 multiviewGeometryShader; VkBool32 multiviewTessellationShader; } VkPhysicalDeviceMultiviewFeatures32; typedef VkPhysicalDeviceMultiviewFeatures32 VkPhysicalDeviceMultiviewFeaturesKHR32; typedef struct VkDeviceGroupDeviceCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t physicalDeviceCount; PTR32 pPhysicalDevices; } VkDeviceGroupDeviceCreateInfo32; typedef VkDeviceGroupDeviceCreateInfo32 VkDeviceGroupDeviceCreateInfoKHR32; typedef struct VkPhysicalDevicePresentIdFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 presentId; } VkPhysicalDevicePresentIdFeaturesKHR32; typedef struct VkPhysicalDevicePresentWaitFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 presentWait; } VkPhysicalDevicePresentWaitFeaturesKHR32; typedef struct VkPhysicalDevice16BitStorageFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 storageBuffer16BitAccess; VkBool32 uniformAndStorageBuffer16BitAccess; VkBool32 storagePushConstant16; VkBool32 storageInputOutput16; } VkPhysicalDevice16BitStorageFeatures32; typedef VkPhysicalDevice16BitStorageFeatures32 VkPhysicalDevice16BitStorageFeaturesKHR32; typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderSubgroupExtendedTypes; } VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures32; typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures32 VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR32; typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 samplerYcbcrConversion; } VkPhysicalDeviceSamplerYcbcrConversionFeatures32; typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures32 VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR32; typedef struct VkPhysicalDeviceProtectedMemoryFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 protectedMemory; } VkPhysicalDeviceProtectedMemoryFeatures32; typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 advancedBlendCoherentOperations; } VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT32; typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 multiDraw; } VkPhysicalDeviceMultiDrawFeaturesEXT32; typedef struct VkPhysicalDeviceInlineUniformBlockFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 inlineUniformBlock; VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; } VkPhysicalDeviceInlineUniformBlockFeatures32; typedef VkPhysicalDeviceInlineUniformBlockFeatures32 VkPhysicalDeviceInlineUniformBlockFeaturesEXT32; typedef struct VkPhysicalDeviceMaintenance4Features32 { VkStructureType sType; PTR32 pNext; VkBool32 maintenance4; } VkPhysicalDeviceMaintenance4Features32; typedef VkPhysicalDeviceMaintenance4Features32 VkPhysicalDeviceMaintenance4FeaturesKHR32; typedef struct VkPhysicalDeviceShaderDrawParametersFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderDrawParameters; } VkPhysicalDeviceShaderDrawParametersFeatures32; typedef VkPhysicalDeviceShaderDrawParametersFeatures32 VkPhysicalDeviceShaderDrawParameterFeatures32; typedef struct VkPhysicalDeviceShaderFloat16Int8Features32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderFloat16; VkBool32 shaderInt8; } VkPhysicalDeviceShaderFloat16Int8Features32; typedef VkPhysicalDeviceShaderFloat16Int8Features32 VkPhysicalDeviceShaderFloat16Int8FeaturesKHR32; typedef VkPhysicalDeviceShaderFloat16Int8Features32 VkPhysicalDeviceFloat16Int8FeaturesKHR32; typedef struct VkPhysicalDeviceHostQueryResetFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 hostQueryReset; } VkPhysicalDeviceHostQueryResetFeatures32; typedef VkPhysicalDeviceHostQueryResetFeatures32 VkPhysicalDeviceHostQueryResetFeaturesEXT32; typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 globalPriorityQuery; } VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR32; typedef VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR32 VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT32; typedef struct VkPhysicalDeviceDescriptorIndexingFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderInputAttachmentArrayDynamicIndexing; VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; VkBool32 shaderUniformBufferArrayNonUniformIndexing; VkBool32 shaderSampledImageArrayNonUniformIndexing; VkBool32 shaderStorageBufferArrayNonUniformIndexing; VkBool32 shaderStorageImageArrayNonUniformIndexing; VkBool32 shaderInputAttachmentArrayNonUniformIndexing; VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; VkBool32 descriptorBindingUniformBufferUpdateAfterBind; VkBool32 descriptorBindingSampledImageUpdateAfterBind; VkBool32 descriptorBindingStorageImageUpdateAfterBind; VkBool32 descriptorBindingStorageBufferUpdateAfterBind; VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; VkBool32 descriptorBindingUpdateUnusedWhilePending; VkBool32 descriptorBindingPartiallyBound; VkBool32 descriptorBindingVariableDescriptorCount; VkBool32 runtimeDescriptorArray; } VkPhysicalDeviceDescriptorIndexingFeatures32; typedef VkPhysicalDeviceDescriptorIndexingFeatures32 VkPhysicalDeviceDescriptorIndexingFeaturesEXT32; typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 timelineSemaphore; } VkPhysicalDeviceTimelineSemaphoreFeatures32; typedef VkPhysicalDeviceTimelineSemaphoreFeatures32 VkPhysicalDeviceTimelineSemaphoreFeaturesKHR32; typedef struct VkPhysicalDevice8BitStorageFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 storageBuffer8BitAccess; VkBool32 uniformAndStorageBuffer8BitAccess; VkBool32 storagePushConstant8; } VkPhysicalDevice8BitStorageFeatures32; typedef VkPhysicalDevice8BitStorageFeatures32 VkPhysicalDevice8BitStorageFeaturesKHR32; typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 conditionalRendering; VkBool32 inheritedConditionalRendering; } VkPhysicalDeviceConditionalRenderingFeaturesEXT32; typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 vulkanMemoryModel; VkBool32 vulkanMemoryModelDeviceScope; VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; } VkPhysicalDeviceVulkanMemoryModelFeatures32; typedef VkPhysicalDeviceVulkanMemoryModelFeatures32 VkPhysicalDeviceVulkanMemoryModelFeaturesKHR32; typedef struct VkPhysicalDeviceShaderAtomicInt64Features32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderBufferInt64Atomics; VkBool32 shaderSharedInt64Atomics; } VkPhysicalDeviceShaderAtomicInt64Features32; typedef VkPhysicalDeviceShaderAtomicInt64Features32 VkPhysicalDeviceShaderAtomicInt64FeaturesKHR32; typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderBufferFloat32Atomics; VkBool32 shaderBufferFloat32AtomicAdd; VkBool32 shaderBufferFloat64Atomics; VkBool32 shaderBufferFloat64AtomicAdd; VkBool32 shaderSharedFloat32Atomics; VkBool32 shaderSharedFloat32AtomicAdd; VkBool32 shaderSharedFloat64Atomics; VkBool32 shaderSharedFloat64AtomicAdd; VkBool32 shaderImageFloat32Atomics; VkBool32 shaderImageFloat32AtomicAdd; VkBool32 sparseImageFloat32Atomics; VkBool32 sparseImageFloat32AtomicAdd; } VkPhysicalDeviceShaderAtomicFloatFeaturesEXT32; typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderBufferFloat16Atomics; VkBool32 shaderBufferFloat16AtomicAdd; VkBool32 shaderBufferFloat16AtomicMinMax; VkBool32 shaderBufferFloat32AtomicMinMax; VkBool32 shaderBufferFloat64AtomicMinMax; VkBool32 shaderSharedFloat16Atomics; VkBool32 shaderSharedFloat16AtomicAdd; VkBool32 shaderSharedFloat16AtomicMinMax; VkBool32 shaderSharedFloat32AtomicMinMax; VkBool32 shaderSharedFloat64AtomicMinMax; VkBool32 shaderImageFloat32AtomicMinMax; VkBool32 sparseImageFloat32AtomicMinMax; } VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT32; typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 vertexAttributeInstanceRateDivisor; VkBool32 vertexAttributeInstanceRateZeroDivisor; } VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT32; typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 decodeModeSharedExponent; } VkPhysicalDeviceASTCDecodeFeaturesEXT32; typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 transformFeedback; VkBool32 geometryStreams; } VkPhysicalDeviceTransformFeedbackFeaturesEXT32; typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 representativeFragmentTest; } VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV32; typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 exclusiveScissor; } VkPhysicalDeviceExclusiveScissorFeaturesNV32; typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 cornerSampledImage; } VkPhysicalDeviceCornerSampledImageFeaturesNV32; typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 computeDerivativeGroupQuads; VkBool32 computeDerivativeGroupLinear; } VkPhysicalDeviceComputeShaderDerivativesFeaturesNV32; typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 imageFootprint; } VkPhysicalDeviceShaderImageFootprintFeaturesNV32; typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 dedicatedAllocationImageAliasing; } VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV32; typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 indirectCopy; } VkPhysicalDeviceCopyMemoryIndirectFeaturesNV32; typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 memoryDecompression; } VkPhysicalDeviceMemoryDecompressionFeaturesNV32; typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 shadingRateImage; VkBool32 shadingRateCoarseSampleOrder; } VkPhysicalDeviceShadingRateImageFeaturesNV32; typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI32 { VkStructureType sType; PTR32 pNext; VkBool32 invocationMask; } VkPhysicalDeviceInvocationMaskFeaturesHUAWEI32; typedef struct VkPhysicalDeviceMeshShaderFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 taskShader; VkBool32 meshShader; } VkPhysicalDeviceMeshShaderFeaturesNV32; typedef struct VkPhysicalDeviceMeshShaderFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 taskShader; VkBool32 meshShader; VkBool32 multiviewMeshShader; VkBool32 primitiveFragmentShadingRateMeshShader; VkBool32 meshShaderQueries; } VkPhysicalDeviceMeshShaderFeaturesEXT32; typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 accelerationStructure; VkBool32 accelerationStructureCaptureReplay; VkBool32 accelerationStructureIndirectBuild; VkBool32 accelerationStructureHostCommands; VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind; } VkPhysicalDeviceAccelerationStructureFeaturesKHR32; typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 rayTracingPipeline; VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay; VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed; VkBool32 rayTracingPipelineTraceRaysIndirect; VkBool32 rayTraversalPrimitiveCulling; } VkPhysicalDeviceRayTracingPipelineFeaturesKHR32; typedef struct VkPhysicalDeviceRayQueryFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 rayQuery; } VkPhysicalDeviceRayQueryFeaturesKHR32; typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 rayTracingMaintenance1; VkBool32 rayTracingPipelineTraceRaysIndirect2; } VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR32; typedef struct VkDeviceMemoryOverallocationCreateInfoAMD32 { VkStructureType sType; PTR32 pNext; VkMemoryOverallocationBehaviorAMD overallocationBehavior; } VkDeviceMemoryOverallocationCreateInfoAMD32; typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 fragmentDensityMap; VkBool32 fragmentDensityMapDynamic; VkBool32 fragmentDensityMapNonSubsampledImages; } VkPhysicalDeviceFragmentDensityMapFeaturesEXT32; typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 fragmentDensityMapDeferred; } VkPhysicalDeviceFragmentDensityMap2FeaturesEXT32; typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM32 { VkStructureType sType; PTR32 pNext; VkBool32 fragmentDensityMapOffset; } VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM32; typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 scalarBlockLayout; } VkPhysicalDeviceScalarBlockLayoutFeatures32; typedef VkPhysicalDeviceScalarBlockLayoutFeatures32 VkPhysicalDeviceScalarBlockLayoutFeaturesEXT32; typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 uniformBufferStandardLayout; } VkPhysicalDeviceUniformBufferStandardLayoutFeatures32; typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures32 VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR32; typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 depthClipEnable; } VkPhysicalDeviceDepthClipEnableFeaturesEXT32; typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 memoryPriority; } VkPhysicalDeviceMemoryPriorityFeaturesEXT32; typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 pageableDeviceLocalMemory; } VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT32; typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 bufferDeviceAddress; VkBool32 bufferDeviceAddressCaptureReplay; VkBool32 bufferDeviceAddressMultiDevice; } VkPhysicalDeviceBufferDeviceAddressFeatures32; typedef VkPhysicalDeviceBufferDeviceAddressFeatures32 VkPhysicalDeviceBufferDeviceAddressFeaturesKHR32; typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 bufferDeviceAddress; VkBool32 bufferDeviceAddressCaptureReplay; VkBool32 bufferDeviceAddressMultiDevice; } VkPhysicalDeviceBufferDeviceAddressFeaturesEXT32; typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT32 VkPhysicalDeviceBufferAddressFeaturesEXT32; typedef struct VkPhysicalDeviceImagelessFramebufferFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 imagelessFramebuffer; } VkPhysicalDeviceImagelessFramebufferFeatures32; typedef VkPhysicalDeviceImagelessFramebufferFeatures32 VkPhysicalDeviceImagelessFramebufferFeaturesKHR32; typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 textureCompressionASTC_HDR; } VkPhysicalDeviceTextureCompressionASTCHDRFeatures32; typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures32 VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT32; typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 cooperativeMatrix; VkBool32 cooperativeMatrixRobustBufferAccess; } VkPhysicalDeviceCooperativeMatrixFeaturesNV32; typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 ycbcrImageArrays; } VkPhysicalDeviceYcbcrImageArraysFeaturesEXT32; typedef struct VkPhysicalDevicePresentBarrierFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 presentBarrier; } VkPhysicalDevicePresentBarrierFeaturesNV32; typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 performanceCounterQueryPools; VkBool32 performanceCounterMultipleQueryPools; } VkPhysicalDevicePerformanceQueryFeaturesKHR32; typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 coverageReductionMode; } VkPhysicalDeviceCoverageReductionModeFeaturesNV32; typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderIntegerFunctions2; } VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL32; typedef struct VkPhysicalDeviceShaderClockFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderSubgroupClock; VkBool32 shaderDeviceClock; } VkPhysicalDeviceShaderClockFeaturesKHR32; typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 indexTypeUint8; } VkPhysicalDeviceIndexTypeUint8FeaturesEXT32; typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderSMBuiltins; } VkPhysicalDeviceShaderSMBuiltinsFeaturesNV32; typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 fragmentShaderSampleInterlock; VkBool32 fragmentShaderPixelInterlock; VkBool32 fragmentShaderShadingRateInterlock; } VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT32; typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 separateDepthStencilLayouts; } VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures32; typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures32 VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR32; typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 primitiveTopologyListRestart; VkBool32 primitiveTopologyPatchListRestart; } VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT32; typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 pipelineExecutableInfo; } VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR32; typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderDemoteToHelperInvocation; } VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures32; typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures32 VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT32; typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 texelBufferAlignment; } VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT32; typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 subgroupSizeControl; VkBool32 computeFullSubgroups; } VkPhysicalDeviceSubgroupSizeControlFeatures32; typedef VkPhysicalDeviceSubgroupSizeControlFeatures32 VkPhysicalDeviceSubgroupSizeControlFeaturesEXT32; typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 rectangularLines; VkBool32 bresenhamLines; VkBool32 smoothLines; VkBool32 stippledRectangularLines; VkBool32 stippledBresenhamLines; VkBool32 stippledSmoothLines; } VkPhysicalDeviceLineRasterizationFeaturesEXT32; typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 pipelineCreationCacheControl; } VkPhysicalDevicePipelineCreationCacheControlFeatures32; typedef VkPhysicalDevicePipelineCreationCacheControlFeatures32 VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT32; typedef struct VkPhysicalDeviceVulkan11Features32 { VkStructureType sType; PTR32 pNext; VkBool32 storageBuffer16BitAccess; VkBool32 uniformAndStorageBuffer16BitAccess; VkBool32 storagePushConstant16; VkBool32 storageInputOutput16; VkBool32 multiview; VkBool32 multiviewGeometryShader; VkBool32 multiviewTessellationShader; VkBool32 variablePointersStorageBuffer; VkBool32 variablePointers; VkBool32 protectedMemory; VkBool32 samplerYcbcrConversion; VkBool32 shaderDrawParameters; } VkPhysicalDeviceVulkan11Features32; typedef struct VkPhysicalDeviceVulkan12Features32 { VkStructureType sType; PTR32 pNext; VkBool32 samplerMirrorClampToEdge; VkBool32 drawIndirectCount; VkBool32 storageBuffer8BitAccess; VkBool32 uniformAndStorageBuffer8BitAccess; VkBool32 storagePushConstant8; VkBool32 shaderBufferInt64Atomics; VkBool32 shaderSharedInt64Atomics; VkBool32 shaderFloat16; VkBool32 shaderInt8; VkBool32 descriptorIndexing; VkBool32 shaderInputAttachmentArrayDynamicIndexing; VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; VkBool32 shaderUniformBufferArrayNonUniformIndexing; VkBool32 shaderSampledImageArrayNonUniformIndexing; VkBool32 shaderStorageBufferArrayNonUniformIndexing; VkBool32 shaderStorageImageArrayNonUniformIndexing; VkBool32 shaderInputAttachmentArrayNonUniformIndexing; VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; VkBool32 descriptorBindingUniformBufferUpdateAfterBind; VkBool32 descriptorBindingSampledImageUpdateAfterBind; VkBool32 descriptorBindingStorageImageUpdateAfterBind; VkBool32 descriptorBindingStorageBufferUpdateAfterBind; VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; VkBool32 descriptorBindingUpdateUnusedWhilePending; VkBool32 descriptorBindingPartiallyBound; VkBool32 descriptorBindingVariableDescriptorCount; VkBool32 runtimeDescriptorArray; VkBool32 samplerFilterMinmax; VkBool32 scalarBlockLayout; VkBool32 imagelessFramebuffer; VkBool32 uniformBufferStandardLayout; VkBool32 shaderSubgroupExtendedTypes; VkBool32 separateDepthStencilLayouts; VkBool32 hostQueryReset; VkBool32 timelineSemaphore; VkBool32 bufferDeviceAddress; VkBool32 bufferDeviceAddressCaptureReplay; VkBool32 bufferDeviceAddressMultiDevice; VkBool32 vulkanMemoryModel; VkBool32 vulkanMemoryModelDeviceScope; VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; VkBool32 shaderOutputViewportIndex; VkBool32 shaderOutputLayer; VkBool32 subgroupBroadcastDynamicId; } VkPhysicalDeviceVulkan12Features32; typedef struct VkPhysicalDeviceVulkan13Features32 { VkStructureType sType; PTR32 pNext; VkBool32 robustImageAccess; VkBool32 inlineUniformBlock; VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; VkBool32 pipelineCreationCacheControl; VkBool32 privateData; VkBool32 shaderDemoteToHelperInvocation; VkBool32 shaderTerminateInvocation; VkBool32 subgroupSizeControl; VkBool32 computeFullSubgroups; VkBool32 synchronization2; VkBool32 textureCompressionASTC_HDR; VkBool32 shaderZeroInitializeWorkgroupMemory; VkBool32 dynamicRendering; VkBool32 shaderIntegerDotProduct; VkBool32 maintenance4; } VkPhysicalDeviceVulkan13Features32; typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD32 { VkStructureType sType; PTR32 pNext; VkBool32 deviceCoherentMemory; } VkPhysicalDeviceCoherentMemoryFeaturesAMD32; typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 customBorderColors; VkBool32 customBorderColorWithoutFormat; } VkPhysicalDeviceCustomBorderColorFeaturesEXT32; typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 borderColorSwizzle; VkBool32 borderColorSwizzleFromImage; } VkPhysicalDeviceBorderColorSwizzleFeaturesEXT32; typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 extendedDynamicState; } VkPhysicalDeviceExtendedDynamicStateFeaturesEXT32; typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 extendedDynamicState2; VkBool32 extendedDynamicState2LogicOp; VkBool32 extendedDynamicState2PatchControlPoints; } VkPhysicalDeviceExtendedDynamicState2FeaturesEXT32; typedef struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 extendedDynamicState3TessellationDomainOrigin; VkBool32 extendedDynamicState3DepthClampEnable; VkBool32 extendedDynamicState3PolygonMode; VkBool32 extendedDynamicState3RasterizationSamples; VkBool32 extendedDynamicState3SampleMask; VkBool32 extendedDynamicState3AlphaToCoverageEnable; VkBool32 extendedDynamicState3AlphaToOneEnable; VkBool32 extendedDynamicState3LogicOpEnable; VkBool32 extendedDynamicState3ColorBlendEnable; VkBool32 extendedDynamicState3ColorBlendEquation; VkBool32 extendedDynamicState3ColorWriteMask; VkBool32 extendedDynamicState3RasterizationStream; VkBool32 extendedDynamicState3ConservativeRasterizationMode; VkBool32 extendedDynamicState3ExtraPrimitiveOverestimationSize; VkBool32 extendedDynamicState3DepthClipEnable; VkBool32 extendedDynamicState3SampleLocationsEnable; VkBool32 extendedDynamicState3ColorBlendAdvanced; VkBool32 extendedDynamicState3ProvokingVertexMode; VkBool32 extendedDynamicState3LineRasterizationMode; VkBool32 extendedDynamicState3LineStippleEnable; VkBool32 extendedDynamicState3DepthClipNegativeOneToOne; VkBool32 extendedDynamicState3ViewportWScalingEnable; VkBool32 extendedDynamicState3ViewportSwizzle; VkBool32 extendedDynamicState3CoverageToColorEnable; VkBool32 extendedDynamicState3CoverageToColorLocation; VkBool32 extendedDynamicState3CoverageModulationMode; VkBool32 extendedDynamicState3CoverageModulationTableEnable; VkBool32 extendedDynamicState3CoverageModulationTable; VkBool32 extendedDynamicState3CoverageReductionMode; VkBool32 extendedDynamicState3RepresentativeFragmentTestEnable; VkBool32 extendedDynamicState3ShadingRateImageEnable; } VkPhysicalDeviceExtendedDynamicState3FeaturesEXT32; typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 diagnosticsConfig; } VkPhysicalDeviceDiagnosticsConfigFeaturesNV32; typedef struct VkDeviceDiagnosticsConfigCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkDeviceDiagnosticsConfigFlagsNV flags; } VkDeviceDiagnosticsConfigCreateInfoNV32; typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderZeroInitializeWorkgroupMemory; } VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures32; typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures32 VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR32; typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderSubgroupUniformControlFlow; } VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR32; typedef struct VkPhysicalDeviceRobustness2FeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 robustBufferAccess2; VkBool32 robustImageAccess2; VkBool32 nullDescriptor; } VkPhysicalDeviceRobustness2FeaturesEXT32; typedef struct VkPhysicalDeviceImageRobustnessFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 robustImageAccess; } VkPhysicalDeviceImageRobustnessFeatures32; typedef VkPhysicalDeviceImageRobustnessFeatures32 VkPhysicalDeviceImageRobustnessFeaturesEXT32; typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 workgroupMemoryExplicitLayout; VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout; VkBool32 workgroupMemoryExplicitLayout8BitAccess; VkBool32 workgroupMemoryExplicitLayout16BitAccess; } VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR32; typedef struct VkPhysicalDevice4444FormatsFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 formatA4R4G4B4; VkBool32 formatA4B4G4R4; } VkPhysicalDevice4444FormatsFeaturesEXT32; typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI32 { VkStructureType sType; PTR32 pNext; VkBool32 subpassShading; } VkPhysicalDeviceSubpassShadingFeaturesHUAWEI32; typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderImageInt64Atomics; VkBool32 sparseImageInt64Atomics; } VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT32; typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 pipelineFragmentShadingRate; VkBool32 primitiveFragmentShadingRate; VkBool32 attachmentFragmentShadingRate; } VkPhysicalDeviceFragmentShadingRateFeaturesKHR32; typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderTerminateInvocation; } VkPhysicalDeviceShaderTerminateInvocationFeatures32; typedef VkPhysicalDeviceShaderTerminateInvocationFeatures32 VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR32; typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 fragmentShadingRateEnums; VkBool32 supersampleFragmentShadingRates; VkBool32 noInvocationFragmentShadingRates; } VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV32; typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 image2DViewOf3D; VkBool32 sampler2DViewOf3D; } VkPhysicalDeviceImage2DViewOf3DFeaturesEXT32; typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 mutableDescriptorType; } VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT32; typedef VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT32 VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE32; typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 depthClipControl; } VkPhysicalDeviceDepthClipControlFeaturesEXT32; typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 vertexInputDynamicState; } VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT32; typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 colorWriteEnable; } VkPhysicalDeviceColorWriteEnableFeaturesEXT32; typedef struct VkPhysicalDeviceSynchronization2Features32 { VkStructureType sType; PTR32 pNext; VkBool32 synchronization2; } VkPhysicalDeviceSynchronization2Features32; typedef VkPhysicalDeviceSynchronization2Features32 VkPhysicalDeviceSynchronization2FeaturesKHR32; typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 primitivesGeneratedQuery; VkBool32 primitivesGeneratedQueryWithRasterizerDiscard; VkBool32 primitivesGeneratedQueryWithNonZeroStreams; } VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT32; typedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 legacyDithering; } VkPhysicalDeviceLegacyDitheringFeaturesEXT32; typedef struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 multisampledRenderToSingleSampled; } VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT32; typedef struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 pipelineProtectedAccess; } VkPhysicalDevicePipelineProtectedAccessFeaturesEXT32; typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 inheritedViewportScissor2D; } VkPhysicalDeviceInheritedViewportScissorFeaturesNV32; typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 ycbcr2plane444Formats; } VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT32; typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 provokingVertexLast; VkBool32 transformFeedbackPreservesProvokingVertex; } VkPhysicalDeviceProvokingVertexFeaturesEXT32; typedef struct VkPhysicalDeviceDescriptorBufferFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 descriptorBuffer; VkBool32 descriptorBufferCaptureReplay; VkBool32 descriptorBufferImageLayoutIgnored; VkBool32 descriptorBufferPushDescriptors; } VkPhysicalDeviceDescriptorBufferFeaturesEXT32; typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderIntegerDotProduct; } VkPhysicalDeviceShaderIntegerDotProductFeatures32; typedef VkPhysicalDeviceShaderIntegerDotProductFeatures32 VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR32; typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 fragmentShaderBarycentric; } VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR32; typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR32 VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV32; typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 rayTracingMotionBlur; VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect; } VkPhysicalDeviceRayTracingMotionBlurFeaturesNV32; typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 formatRgba10x6WithoutYCbCrSampler; } VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT32; typedef struct VkPhysicalDeviceDynamicRenderingFeatures32 { VkStructureType sType; PTR32 pNext; VkBool32 dynamicRendering; } VkPhysicalDeviceDynamicRenderingFeatures32; typedef VkPhysicalDeviceDynamicRenderingFeatures32 VkPhysicalDeviceDynamicRenderingFeaturesKHR32; typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 minLod; } VkPhysicalDeviceImageViewMinLodFeaturesEXT32; typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 rasterizationOrderColorAttachmentAccess; VkBool32 rasterizationOrderDepthAttachmentAccess; VkBool32 rasterizationOrderStencilAttachmentAccess; } VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT32; typedef VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT32 VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM32; typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 linearColorAttachment; } VkPhysicalDeviceLinearColorAttachmentFeaturesNV32; typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 graphicsPipelineLibrary; } VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT32; typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE32 { VkStructureType sType; PTR32 pNext; VkBool32 descriptorSetHostMapping; } VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE32; typedef struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderModuleIdentifier; } VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT32; typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 imageCompressionControl; } VkPhysicalDeviceImageCompressionControlFeaturesEXT32; typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 imageCompressionControlSwapchain; } VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT32; typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 subpassMergeFeedback; } VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT32; typedef struct VkPhysicalDeviceOpacityMicromapFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 micromap; VkBool32 micromapCaptureReplay; VkBool32 micromapHostCommands; } VkPhysicalDeviceOpacityMicromapFeaturesEXT32; typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 pipelinePropertiesIdentifier; } VkPhysicalDevicePipelinePropertiesFeaturesEXT32; typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderEarlyAndLateFragmentTests; } VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD32; typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 nonSeamlessCubeMap; } VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT32; typedef struct VkPhysicalDevicePipelineRobustnessFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 pipelineRobustness; } VkPhysicalDevicePipelineRobustnessFeaturesEXT32; typedef struct VkPhysicalDeviceImageProcessingFeaturesQCOM32 { VkStructureType sType; PTR32 pNext; VkBool32 textureSampleWeighted; VkBool32 textureBoxFilter; VkBool32 textureBlockMatch; } VkPhysicalDeviceImageProcessingFeaturesQCOM32; typedef struct VkPhysicalDeviceTilePropertiesFeaturesQCOM32 { VkStructureType sType; PTR32 pNext; VkBool32 tileProperties; } VkPhysicalDeviceTilePropertiesFeaturesQCOM32; typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 attachmentFeedbackLoopLayout; } VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT32; typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 depthClampZeroOne; } VkPhysicalDeviceDepthClampZeroOneFeaturesEXT32; typedef struct VkPhysicalDeviceAddressBindingReportFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 reportAddressBinding; } VkPhysicalDeviceAddressBindingReportFeaturesEXT32; typedef struct VkPhysicalDeviceOpticalFlowFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 opticalFlow; } VkPhysicalDeviceOpticalFlowFeaturesNV32; typedef struct VkPhysicalDeviceFaultFeaturesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 deviceFault; VkBool32 deviceFaultVendorBinary; } VkPhysicalDeviceFaultFeaturesEXT32; typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32 { VkStructureType sType; PTR32 pNext; VkBool32 shaderCoreBuiltins; } VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32; typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 { VkStructureType sType; PTR32 pNext; VkBool32 rayTracingInvocationReorder; } VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32; typedef struct VkDeviceCreateInfo32 { VkStructureType sType; PTR32 pNext; VkDeviceCreateFlags flags; uint32_t queueCreateInfoCount; PTR32 pQueueCreateInfos; uint32_t enabledLayerCount; PTR32 ppEnabledLayerNames; uint32_t enabledExtensionCount; PTR32 ppEnabledExtensionNames; PTR32 pEnabledFeatures; } VkDeviceCreateInfo32; typedef struct VkEventCreateInfo32 { VkStructureType sType; PTR32 pNext; VkEventCreateFlags flags; } VkEventCreateInfo32; typedef struct VkExportFenceCreateInfo32 { VkStructureType sType; PTR32 pNext; VkExternalFenceHandleTypeFlags handleTypes; } VkExportFenceCreateInfo32; typedef VkExportFenceCreateInfo32 VkExportFenceCreateInfoKHR32; typedef struct VkFenceCreateInfo32 { VkStructureType sType; PTR32 pNext; VkFenceCreateFlags flags; } VkFenceCreateInfo32; typedef struct VkFramebufferAttachmentImageInfo32 { VkStructureType sType; PTR32 pNext; VkImageCreateFlags flags; VkImageUsageFlags usage; uint32_t width; uint32_t height; uint32_t layerCount; uint32_t viewFormatCount; PTR32 pViewFormats; } VkFramebufferAttachmentImageInfo32; typedef VkFramebufferAttachmentImageInfo32 VkFramebufferAttachmentImageInfoKHR32; typedef struct VkFramebufferAttachmentsCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t attachmentImageInfoCount; PTR32 pAttachmentImageInfos; } VkFramebufferAttachmentsCreateInfo32; typedef VkFramebufferAttachmentsCreateInfo32 VkFramebufferAttachmentsCreateInfoKHR32; typedef struct VkFramebufferCreateInfo32 { VkStructureType sType; PTR32 pNext; VkFramebufferCreateFlags flags; VkRenderPass DECLSPEC_ALIGN(8) renderPass; uint32_t attachmentCount; PTR32 pAttachments; uint32_t width; uint32_t height; uint32_t layers; } VkFramebufferCreateInfo32; typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; uint32_t vertexBindingDivisorCount; PTR32 pVertexBindingDivisors; } VkPipelineVertexInputDivisorStateCreateInfoEXT32; typedef struct VkPipelineVertexInputStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineVertexInputStateCreateFlags flags; uint32_t vertexBindingDescriptionCount; PTR32 pVertexBindingDescriptions; uint32_t vertexAttributeDescriptionCount; PTR32 pVertexAttributeDescriptions; } VkPipelineVertexInputStateCreateInfo32; typedef struct VkPipelineTessellationDomainOriginStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkTessellationDomainOrigin domainOrigin; } VkPipelineTessellationDomainOriginStateCreateInfo32; typedef VkPipelineTessellationDomainOriginStateCreateInfo32 VkPipelineTessellationDomainOriginStateCreateInfoKHR32; typedef struct VkPipelineTessellationStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineTessellationStateCreateFlags flags; uint32_t patchControlPoints; } VkPipelineTessellationStateCreateInfo32; typedef struct VkGraphicsShaderGroupCreateInfoNV32 { VkStructureType sType; PTR32 pNext; uint32_t stageCount; PTR32 pStages; PTR32 pVertexInputState; PTR32 pTessellationState; } VkGraphicsShaderGroupCreateInfoNV32; typedef struct VkPipelineInputAssemblyStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineInputAssemblyStateCreateFlags flags; VkPrimitiveTopology topology; VkBool32 primitiveRestartEnable; } VkPipelineInputAssemblyStateCreateInfo32; typedef struct VkPipelineViewportWScalingStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkBool32 viewportWScalingEnable; uint32_t viewportCount; PTR32 pViewportWScalings; } VkPipelineViewportWScalingStateCreateInfoNV32; typedef struct VkPipelineViewportSwizzleStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkPipelineViewportSwizzleStateCreateFlagsNV flags; uint32_t viewportCount; PTR32 pViewportSwizzles; } VkPipelineViewportSwizzleStateCreateInfoNV32; typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; uint32_t exclusiveScissorCount; PTR32 pExclusiveScissors; } VkPipelineViewportExclusiveScissorStateCreateInfoNV32; typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkBool32 shadingRateImageEnable; uint32_t viewportCount; PTR32 pShadingRatePalettes; } VkPipelineViewportShadingRateImageStateCreateInfoNV32; typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkCoarseSampleOrderTypeNV sampleOrderType; uint32_t customSampleOrderCount; PTR32 pCustomSampleOrders; } VkPipelineViewportCoarseSampleOrderStateCreateInfoNV32; typedef struct VkPipelineViewportDepthClipControlCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 negativeOneToOne; } VkPipelineViewportDepthClipControlCreateInfoEXT32; typedef struct VkPipelineViewportStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineViewportStateCreateFlags flags; uint32_t viewportCount; PTR32 pViewports; uint32_t scissorCount; PTR32 pScissors; } VkPipelineViewportStateCreateInfo32; typedef struct VkPipelineRasterizationStateRasterizationOrderAMD32 { VkStructureType sType; PTR32 pNext; VkRasterizationOrderAMD rasterizationOrder; } VkPipelineRasterizationStateRasterizationOrderAMD32; typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkPipelineRasterizationConservativeStateCreateFlagsEXT flags; VkConservativeRasterizationModeEXT conservativeRasterizationMode; float extraPrimitiveOverestimationSize; } VkPipelineRasterizationConservativeStateCreateInfoEXT32; typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkPipelineRasterizationStateStreamCreateFlagsEXT flags; uint32_t rasterizationStream; } VkPipelineRasterizationStateStreamCreateInfoEXT32; typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags; VkBool32 depthClipEnable; } VkPipelineRasterizationDepthClipStateCreateInfoEXT32; typedef struct VkPipelineRasterizationLineStateCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkLineRasterizationModeEXT lineRasterizationMode; VkBool32 stippledLineEnable; uint32_t lineStippleFactor; uint16_t lineStipplePattern; } VkPipelineRasterizationLineStateCreateInfoEXT32; typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkProvokingVertexModeEXT provokingVertexMode; } VkPipelineRasterizationProvokingVertexStateCreateInfoEXT32; typedef struct VkPipelineRasterizationStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineRasterizationStateCreateFlags flags; VkBool32 depthClampEnable; VkBool32 rasterizerDiscardEnable; VkPolygonMode polygonMode; VkCullModeFlags cullMode; VkFrontFace frontFace; VkBool32 depthBiasEnable; float depthBiasConstantFactor; float depthBiasClamp; float depthBiasSlopeFactor; float lineWidth; } VkPipelineRasterizationStateCreateInfo32; typedef struct VkPipelineCoverageToColorStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkPipelineCoverageToColorStateCreateFlagsNV flags; VkBool32 coverageToColorEnable; uint32_t coverageToColorLocation; } VkPipelineCoverageToColorStateCreateInfoNV32; typedef struct VkPipelineSampleLocationsStateCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 sampleLocationsEnable; VkSampleLocationsInfoEXT32 sampleLocationsInfo; } VkPipelineSampleLocationsStateCreateInfoEXT32; typedef struct VkPipelineCoverageModulationStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkPipelineCoverageModulationStateCreateFlagsNV flags; VkCoverageModulationModeNV coverageModulationMode; VkBool32 coverageModulationTableEnable; uint32_t coverageModulationTableCount; PTR32 pCoverageModulationTable; } VkPipelineCoverageModulationStateCreateInfoNV32; typedef struct VkPipelineCoverageReductionStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkPipelineCoverageReductionStateCreateFlagsNV flags; VkCoverageReductionModeNV coverageReductionMode; } VkPipelineCoverageReductionStateCreateInfoNV32; typedef struct VkPipelineMultisampleStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineMultisampleStateCreateFlags flags; VkSampleCountFlagBits rasterizationSamples; VkBool32 sampleShadingEnable; float minSampleShading; PTR32 pSampleMask; VkBool32 alphaToCoverageEnable; VkBool32 alphaToOneEnable; } VkPipelineMultisampleStateCreateInfo32; typedef struct VkPipelineDepthStencilStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineDepthStencilStateCreateFlags flags; VkBool32 depthTestEnable; VkBool32 depthWriteEnable; VkCompareOp depthCompareOp; VkBool32 depthBoundsTestEnable; VkBool32 stencilTestEnable; VkStencilOpState front; VkStencilOpState back; float minDepthBounds; float maxDepthBounds; } VkPipelineDepthStencilStateCreateInfo32; typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 srcPremultiplied; VkBool32 dstPremultiplied; VkBlendOverlapEXT blendOverlap; } VkPipelineColorBlendAdvancedStateCreateInfoEXT32; typedef struct VkPipelineColorWriteCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; uint32_t attachmentCount; PTR32 pColorWriteEnables; } VkPipelineColorWriteCreateInfoEXT32; typedef struct VkPipelineColorBlendStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineColorBlendStateCreateFlags flags; VkBool32 logicOpEnable; VkLogicOp logicOp; uint32_t attachmentCount; PTR32 pAttachments; float blendConstants[4]; } VkPipelineColorBlendStateCreateInfo32; typedef struct VkPipelineDynamicStateCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineDynamicStateCreateFlags flags; uint32_t dynamicStateCount; PTR32 pDynamicStates; } VkPipelineDynamicStateCreateInfo32; typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV32 { VkStructureType sType; PTR32 pNext; uint32_t groupCount; PTR32 pGroups; uint32_t pipelineCount; PTR32 pPipelines; } VkGraphicsPipelineShaderGroupsCreateInfoNV32; typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkPipelineDiscardRectangleStateCreateFlagsEXT flags; VkDiscardRectangleModeEXT discardRectangleMode; uint32_t discardRectangleCount; PTR32 pDiscardRectangles; } VkPipelineDiscardRectangleStateCreateInfoEXT32; typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkBool32 representativeFragmentTestEnable; } VkPipelineRepresentativeFragmentTestStateCreateInfoNV32; typedef struct VkPipelineLibraryCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; uint32_t libraryCount; PTR32 pLibraries; } VkPipelineLibraryCreateInfoKHR32; typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkExtent2D fragmentSize; VkFragmentShadingRateCombinerOpKHR combinerOps[2]; } VkPipelineFragmentShadingRateStateCreateInfoKHR32; typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkFragmentShadingRateTypeNV shadingRateType; VkFragmentShadingRateNV shadingRate; VkFragmentShadingRateCombinerOpKHR combinerOps[2]; } VkPipelineFragmentShadingRateEnumStateCreateInfoNV32; typedef struct VkPipelineRenderingCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t viewMask; uint32_t colorAttachmentCount; PTR32 pColorAttachmentFormats; VkFormat depthAttachmentFormat; VkFormat stencilAttachmentFormat; } VkPipelineRenderingCreateInfo32; typedef VkPipelineRenderingCreateInfo32 VkPipelineRenderingCreateInfoKHR32; typedef struct VkGraphicsPipelineLibraryCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkGraphicsPipelineLibraryFlagsEXT flags; } VkGraphicsPipelineLibraryCreateInfoEXT32; typedef struct VkGraphicsPipelineCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineCreateFlags flags; uint32_t stageCount; PTR32 pStages; PTR32 pVertexInputState; PTR32 pInputAssemblyState; PTR32 pTessellationState; PTR32 pViewportState; PTR32 pRasterizationState; PTR32 pMultisampleState; PTR32 pDepthStencilState; PTR32 pColorBlendState; PTR32 pDynamicState; VkPipelineLayout DECLSPEC_ALIGN(8) layout; VkRenderPass DECLSPEC_ALIGN(8) renderPass; uint32_t subpass; VkPipeline DECLSPEC_ALIGN(8) basePipelineHandle; int32_t basePipelineIndex; } VkGraphicsPipelineCreateInfo32; typedef struct VkDedicatedAllocationImageCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkBool32 dedicatedAllocation; } VkDedicatedAllocationImageCreateInfoNV32; typedef struct VkExternalMemoryImageCreateInfo32 { VkStructureType sType; PTR32 pNext; VkExternalMemoryHandleTypeFlags handleTypes; } VkExternalMemoryImageCreateInfo32; typedef VkExternalMemoryImageCreateInfo32 VkExternalMemoryImageCreateInfoKHR32; typedef struct VkImageSwapchainCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkSwapchainKHR DECLSPEC_ALIGN(8) swapchain; } VkImageSwapchainCreateInfoKHR32; typedef struct VkImageFormatListCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t viewFormatCount; PTR32 pViewFormats; } VkImageFormatListCreateInfo32; typedef VkImageFormatListCreateInfo32 VkImageFormatListCreateInfoKHR32; typedef struct VkImageStencilUsageCreateInfo32 { VkStructureType sType; PTR32 pNext; VkImageUsageFlags stencilUsage; } VkImageStencilUsageCreateInfo32; typedef VkImageStencilUsageCreateInfo32 VkImageStencilUsageCreateInfoEXT32; typedef struct VkImageCompressionControlEXT32 { VkStructureType sType; PTR32 pNext; VkImageCompressionFlagsEXT flags; uint32_t compressionControlPlaneCount; PTR32 pFixedRateFlags; } VkImageCompressionControlEXT32; typedef struct VkOpticalFlowImageFormatInfoNV32 { VkStructureType sType; PTR32 pNext; VkOpticalFlowUsageFlagsNV usage; } VkOpticalFlowImageFormatInfoNV32; typedef struct VkImageCreateInfo32 { VkStructureType sType; PTR32 pNext; VkImageCreateFlags flags; VkImageType imageType; VkFormat format; VkExtent3D extent; uint32_t mipLevels; uint32_t arrayLayers; VkSampleCountFlagBits samples; VkImageTiling tiling; VkImageUsageFlags usage; VkSharingMode sharingMode; uint32_t queueFamilyIndexCount; PTR32 pQueueFamilyIndices; VkImageLayout initialLayout; } VkImageCreateInfo32; typedef struct VkImageViewUsageCreateInfo32 { VkStructureType sType; PTR32 pNext; VkImageUsageFlags usage; } VkImageViewUsageCreateInfo32; typedef VkImageViewUsageCreateInfo32 VkImageViewUsageCreateInfoKHR32; typedef struct VkSamplerYcbcrConversionInfo32 { VkStructureType sType; PTR32 pNext; VkSamplerYcbcrConversion DECLSPEC_ALIGN(8) conversion; } VkSamplerYcbcrConversionInfo32; typedef VkSamplerYcbcrConversionInfo32 VkSamplerYcbcrConversionInfoKHR32; typedef struct VkImageViewASTCDecodeModeEXT32 { VkStructureType sType; PTR32 pNext; VkFormat decodeMode; } VkImageViewASTCDecodeModeEXT32; typedef struct VkImageViewMinLodCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; float minLod; } VkImageViewMinLodCreateInfoEXT32; typedef struct VkImageViewSampleWeightCreateInfoQCOM32 { VkStructureType sType; PTR32 pNext; VkOffset2D filterCenter; VkExtent2D filterSize; uint32_t numPhases; } VkImageViewSampleWeightCreateInfoQCOM32; typedef struct VkImageViewCreateInfo32 { VkStructureType sType; PTR32 pNext; VkImageViewCreateFlags flags; VkImage DECLSPEC_ALIGN(8) image; VkImageViewType viewType; VkFormat format; VkComponentMapping components; VkImageSubresourceRange subresourceRange; } VkImageViewCreateInfo32; typedef struct VkIndirectCommandsLayoutTokenNV32 { VkStructureType sType; PTR32 pNext; VkIndirectCommandsTokenTypeNV tokenType; uint32_t stream; uint32_t offset; uint32_t vertexBindingUnit; VkBool32 vertexDynamicStride; VkPipelineLayout DECLSPEC_ALIGN(8) pushconstantPipelineLayout; VkShaderStageFlags pushconstantShaderStageFlags; uint32_t pushconstantOffset; uint32_t pushconstantSize; VkIndirectStateFlagsNV indirectStateFlags; uint32_t indexTypeCount; PTR32 pIndexTypes; PTR32 pIndexTypeValues; } VkIndirectCommandsLayoutTokenNV32; typedef struct VkIndirectCommandsLayoutCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkIndirectCommandsLayoutUsageFlagsNV flags; VkPipelineBindPoint pipelineBindPoint; uint32_t tokenCount; PTR32 pTokens; uint32_t streamCount; PTR32 pStreamStrides; } VkIndirectCommandsLayoutCreateInfoNV32; typedef struct VkApplicationInfo32 { VkStructureType sType; PTR32 pNext; PTR32 pApplicationName; uint32_t applicationVersion; PTR32 pEngineName; uint32_t engineVersion; uint32_t apiVersion; } VkApplicationInfo32; typedef struct VkValidationFlagsEXT32 { VkStructureType sType; PTR32 pNext; uint32_t disabledValidationCheckCount; PTR32 pDisabledValidationChecks; } VkValidationFlagsEXT32; typedef struct VkValidationFeaturesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t enabledValidationFeatureCount; PTR32 pEnabledValidationFeatures; uint32_t disabledValidationFeatureCount; PTR32 pDisabledValidationFeatures; } VkValidationFeaturesEXT32; typedef struct VkInstanceCreateInfo32 { VkStructureType sType; PTR32 pNext; VkInstanceCreateFlags flags; PTR32 pApplicationInfo; uint32_t enabledLayerCount; PTR32 ppEnabledLayerNames; uint32_t enabledExtensionCount; PTR32 ppEnabledExtensionNames; } VkInstanceCreateInfo32; typedef struct VkMicromapCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkMicromapCreateFlagsEXT createFlags; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) size; VkMicromapTypeEXT type; VkDeviceAddress DECLSPEC_ALIGN(8) deviceAddress; } VkMicromapCreateInfoEXT32; typedef struct VkOpticalFlowSessionCreatePrivateDataInfoNV32 { VkStructureType sType; PTR32 pNext; uint32_t id; uint32_t size; PTR32 pPrivateData; } VkOpticalFlowSessionCreatePrivateDataInfoNV32; typedef struct VkOpticalFlowSessionCreateInfoNV32 { VkStructureType sType; PTR32 pNext; uint32_t width; uint32_t height; VkFormat imageFormat; VkFormat flowVectorFormat; VkFormat costFormat; VkOpticalFlowGridSizeFlagsNV outputGridSize; VkOpticalFlowGridSizeFlagsNV hintGridSize; VkOpticalFlowPerformanceLevelNV performanceLevel; VkOpticalFlowSessionCreateFlagsNV flags; } VkOpticalFlowSessionCreateInfoNV32; typedef struct VkPipelineCacheCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineCacheCreateFlags flags; PTR32 initialDataSize; PTR32 pInitialData; } VkPipelineCacheCreateInfo32; typedef struct VkPipelineLayoutCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPipelineLayoutCreateFlags flags; uint32_t setLayoutCount; PTR32 pSetLayouts; uint32_t pushConstantRangeCount; PTR32 pPushConstantRanges; } VkPipelineLayoutCreateInfo32; typedef struct VkPrivateDataSlotCreateInfo32 { VkStructureType sType; PTR32 pNext; VkPrivateDataSlotCreateFlags flags; } VkPrivateDataSlotCreateInfo32; typedef VkPrivateDataSlotCreateInfo32 VkPrivateDataSlotCreateInfoEXT32; typedef struct VkQueryPoolPerformanceCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; uint32_t queueFamilyIndex; uint32_t counterIndexCount; PTR32 pCounterIndices; } VkQueryPoolPerformanceCreateInfoKHR32; typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL32 { VkStructureType sType; PTR32 pNext; VkQueryPoolSamplingModeINTEL performanceCountersSampling; } VkQueryPoolPerformanceQueryCreateInfoINTEL32; typedef VkQueryPoolPerformanceQueryCreateInfoINTEL32 VkQueryPoolCreateInfoINTEL32; typedef struct VkQueryPoolCreateInfo32 { VkStructureType sType; PTR32 pNext; VkQueryPoolCreateFlags flags; VkQueryType queryType; uint32_t queryCount; VkQueryPipelineStatisticFlags pipelineStatistics; } VkQueryPoolCreateInfo32; typedef struct VkRayTracingShaderGroupCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkRayTracingShaderGroupTypeKHR type; uint32_t generalShader; uint32_t closestHitShader; uint32_t anyHitShader; uint32_t intersectionShader; PTR32 pShaderGroupCaptureReplayHandle; } VkRayTracingShaderGroupCreateInfoKHR32; typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; uint32_t maxPipelineRayPayloadSize; uint32_t maxPipelineRayHitAttributeSize; } VkRayTracingPipelineInterfaceCreateInfoKHR32; typedef struct VkRayTracingPipelineCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkPipelineCreateFlags flags; uint32_t stageCount; PTR32 pStages; uint32_t groupCount; PTR32 pGroups; uint32_t maxPipelineRayRecursionDepth; PTR32 pLibraryInfo; PTR32 pLibraryInterface; PTR32 pDynamicState; VkPipelineLayout DECLSPEC_ALIGN(8) layout; VkPipeline DECLSPEC_ALIGN(8) basePipelineHandle; int32_t basePipelineIndex; } VkRayTracingPipelineCreateInfoKHR32; typedef struct VkRayTracingShaderGroupCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkRayTracingShaderGroupTypeKHR type; uint32_t generalShader; uint32_t closestHitShader; uint32_t anyHitShader; uint32_t intersectionShader; } VkRayTracingShaderGroupCreateInfoNV32; typedef struct VkRayTracingPipelineCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkPipelineCreateFlags flags; uint32_t stageCount; PTR32 pStages; uint32_t groupCount; PTR32 pGroups; uint32_t maxRecursionDepth; VkPipelineLayout DECLSPEC_ALIGN(8) layout; VkPipeline DECLSPEC_ALIGN(8) basePipelineHandle; int32_t basePipelineIndex; } VkRayTracingPipelineCreateInfoNV32; typedef struct VkSubpassDescription32 { VkSubpassDescriptionFlags flags; VkPipelineBindPoint pipelineBindPoint; uint32_t inputAttachmentCount; PTR32 pInputAttachments; uint32_t colorAttachmentCount; PTR32 pColorAttachments; PTR32 pResolveAttachments; PTR32 pDepthStencilAttachment; uint32_t preserveAttachmentCount; PTR32 pPreserveAttachments; } VkSubpassDescription32; typedef struct VkRenderPassMultiviewCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t subpassCount; PTR32 pViewMasks; uint32_t dependencyCount; PTR32 pViewOffsets; uint32_t correlationMaskCount; PTR32 pCorrelationMasks; } VkRenderPassMultiviewCreateInfo32; typedef VkRenderPassMultiviewCreateInfo32 VkRenderPassMultiviewCreateInfoKHR32; typedef struct VkRenderPassInputAttachmentAspectCreateInfo32 { VkStructureType sType; PTR32 pNext; uint32_t aspectReferenceCount; PTR32 pAspectReferences; } VkRenderPassInputAttachmentAspectCreateInfo32; typedef VkRenderPassInputAttachmentAspectCreateInfo32 VkRenderPassInputAttachmentAspectCreateInfoKHR32; typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkAttachmentReference fragmentDensityMapAttachment; } VkRenderPassFragmentDensityMapCreateInfoEXT32; typedef struct VkRenderPassCreateInfo32 { VkStructureType sType; PTR32 pNext; VkRenderPassCreateFlags flags; uint32_t attachmentCount; PTR32 pAttachments; uint32_t subpassCount; PTR32 pSubpasses; uint32_t dependencyCount; PTR32 pDependencies; } VkRenderPassCreateInfo32; typedef struct VkAttachmentDescriptionStencilLayout32 { VkStructureType sType; PTR32 pNext; VkImageLayout stencilInitialLayout; VkImageLayout stencilFinalLayout; } VkAttachmentDescriptionStencilLayout32; typedef VkAttachmentDescriptionStencilLayout32 VkAttachmentDescriptionStencilLayoutKHR32; typedef struct VkAttachmentDescription232 { VkStructureType sType; PTR32 pNext; VkAttachmentDescriptionFlags flags; VkFormat format; VkSampleCountFlagBits samples; VkAttachmentLoadOp loadOp; VkAttachmentStoreOp storeOp; VkAttachmentLoadOp stencilLoadOp; VkAttachmentStoreOp stencilStoreOp; VkImageLayout initialLayout; VkImageLayout finalLayout; } VkAttachmentDescription232; typedef VkAttachmentDescription232 VkAttachmentDescription2KHR32; typedef struct VkAttachmentReferenceStencilLayout32 { VkStructureType sType; PTR32 pNext; VkImageLayout stencilLayout; } VkAttachmentReferenceStencilLayout32; typedef VkAttachmentReferenceStencilLayout32 VkAttachmentReferenceStencilLayoutKHR32; typedef struct VkAttachmentReference232 { VkStructureType sType; PTR32 pNext; uint32_t attachment; VkImageLayout layout; VkImageAspectFlags aspectMask; } VkAttachmentReference232; typedef VkAttachmentReference232 VkAttachmentReference2KHR32; typedef struct VkSubpassDescriptionDepthStencilResolve32 { VkStructureType sType; PTR32 pNext; VkResolveModeFlagBits depthResolveMode; VkResolveModeFlagBits stencilResolveMode; PTR32 pDepthStencilResolveAttachment; } VkSubpassDescriptionDepthStencilResolve32; typedef VkSubpassDescriptionDepthStencilResolve32 VkSubpassDescriptionDepthStencilResolveKHR32; typedef struct VkFragmentShadingRateAttachmentInfoKHR32 { VkStructureType sType; PTR32 pNext; PTR32 pFragmentShadingRateAttachment; VkExtent2D shadingRateAttachmentTexelSize; } VkFragmentShadingRateAttachmentInfoKHR32; typedef struct VkRenderPassCreationControlEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 disallowMerging; } VkRenderPassCreationControlEXT32; typedef struct VkRenderPassSubpassFeedbackCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; PTR32 pSubpassFeedback; } VkRenderPassSubpassFeedbackCreateInfoEXT32; typedef struct VkSubpassDescription232 { VkStructureType sType; PTR32 pNext; VkSubpassDescriptionFlags flags; VkPipelineBindPoint pipelineBindPoint; uint32_t viewMask; uint32_t inputAttachmentCount; PTR32 pInputAttachments; uint32_t colorAttachmentCount; PTR32 pColorAttachments; PTR32 pResolveAttachments; PTR32 pDepthStencilAttachment; uint32_t preserveAttachmentCount; PTR32 pPreserveAttachments; } VkSubpassDescription232; typedef VkSubpassDescription232 VkSubpassDescription2KHR32; typedef struct VkSubpassDependency232 { VkStructureType sType; PTR32 pNext; uint32_t srcSubpass; uint32_t dstSubpass; VkPipelineStageFlags srcStageMask; VkPipelineStageFlags dstStageMask; VkAccessFlags srcAccessMask; VkAccessFlags dstAccessMask; VkDependencyFlags dependencyFlags; int32_t viewOffset; } VkSubpassDependency232; typedef VkSubpassDependency232 VkSubpassDependency2KHR32; typedef struct VkRenderPassCreationFeedbackCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; PTR32 pRenderPassFeedback; } VkRenderPassCreationFeedbackCreateInfoEXT32; typedef struct VkRenderPassCreateInfo232 { VkStructureType sType; PTR32 pNext; VkRenderPassCreateFlags flags; uint32_t attachmentCount; PTR32 pAttachments; uint32_t subpassCount; PTR32 pSubpasses; uint32_t dependencyCount; PTR32 pDependencies; uint32_t correlatedViewMaskCount; PTR32 pCorrelatedViewMasks; } VkRenderPassCreateInfo232; typedef VkRenderPassCreateInfo232 VkRenderPassCreateInfo2KHR32; typedef struct VkSamplerReductionModeCreateInfo32 { VkStructureType sType; PTR32 pNext; VkSamplerReductionMode reductionMode; } VkSamplerReductionModeCreateInfo32; typedef VkSamplerReductionModeCreateInfo32 VkSamplerReductionModeCreateInfoEXT32; typedef struct VkSamplerCustomBorderColorCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkClearColorValue customBorderColor; VkFormat format; } VkSamplerCustomBorderColorCreateInfoEXT32; typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkComponentMapping components; VkBool32 srgb; } VkSamplerBorderColorComponentMappingCreateInfoEXT32; typedef struct VkSamplerCreateInfo32 { VkStructureType sType; PTR32 pNext; VkSamplerCreateFlags flags; VkFilter magFilter; VkFilter minFilter; VkSamplerMipmapMode mipmapMode; VkSamplerAddressMode addressModeU; VkSamplerAddressMode addressModeV; VkSamplerAddressMode addressModeW; float mipLodBias; VkBool32 anisotropyEnable; float maxAnisotropy; VkBool32 compareEnable; VkCompareOp compareOp; float minLod; float maxLod; VkBorderColor borderColor; VkBool32 unnormalizedCoordinates; } VkSamplerCreateInfo32; typedef struct VkSamplerYcbcrConversionCreateInfo32 { VkStructureType sType; PTR32 pNext; VkFormat format; VkSamplerYcbcrModelConversion ycbcrModel; VkSamplerYcbcrRange ycbcrRange; VkComponentMapping components; VkChromaLocation xChromaOffset; VkChromaLocation yChromaOffset; VkFilter chromaFilter; VkBool32 forceExplicitReconstruction; } VkSamplerYcbcrConversionCreateInfo32; typedef VkSamplerYcbcrConversionCreateInfo32 VkSamplerYcbcrConversionCreateInfoKHR32; typedef struct VkExportSemaphoreCreateInfo32 { VkStructureType sType; PTR32 pNext; VkExternalSemaphoreHandleTypeFlags handleTypes; } VkExportSemaphoreCreateInfo32; typedef VkExportSemaphoreCreateInfo32 VkExportSemaphoreCreateInfoKHR32; typedef struct VkSemaphoreTypeCreateInfo32 { VkStructureType sType; PTR32 pNext; VkSemaphoreType semaphoreType; uint64_t DECLSPEC_ALIGN(8) initialValue; } VkSemaphoreTypeCreateInfo32; typedef VkSemaphoreTypeCreateInfo32 VkSemaphoreTypeCreateInfoKHR32; typedef struct VkSemaphoreCreateInfo32 { VkStructureType sType; PTR32 pNext; VkSemaphoreCreateFlags flags; } VkSemaphoreCreateInfo32; typedef struct VkDeviceGroupSwapchainCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkDeviceGroupPresentModeFlagsKHR modes; } VkDeviceGroupSwapchainCreateInfoKHR32; typedef struct VkSwapchainPresentBarrierCreateInfoNV32 { VkStructureType sType; PTR32 pNext; VkBool32 presentBarrierEnable; } VkSwapchainPresentBarrierCreateInfoNV32; typedef struct VkSwapchainCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkSwapchainCreateFlagsKHR flags; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; uint32_t minImageCount; VkFormat imageFormat; VkColorSpaceKHR imageColorSpace; VkExtent2D imageExtent; uint32_t imageArrayLayers; VkImageUsageFlags imageUsage; VkSharingMode imageSharingMode; uint32_t queueFamilyIndexCount; PTR32 pQueueFamilyIndices; VkSurfaceTransformFlagBitsKHR preTransform; VkCompositeAlphaFlagBitsKHR compositeAlpha; VkPresentModeKHR presentMode; VkBool32 clipped; VkSwapchainKHR DECLSPEC_ALIGN(8) oldSwapchain; } VkSwapchainCreateInfoKHR32; typedef struct VkValidationCacheCreateInfoEXT32 { VkStructureType sType; PTR32 pNext; VkValidationCacheCreateFlagsEXT flags; PTR32 initialDataSize; PTR32 pInitialData; } VkValidationCacheCreateInfoEXT32; typedef struct VkWin32SurfaceCreateInfoKHR32 { VkStructureType sType; PTR32 pNext; VkWin32SurfaceCreateFlagsKHR flags; PTR32 hinstance; PTR32 hwnd; } VkWin32SurfaceCreateInfoKHR32; typedef struct VkDebugMarkerObjectNameInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDebugReportObjectTypeEXT objectType; uint64_t DECLSPEC_ALIGN(8) object; PTR32 pObjectName; } VkDebugMarkerObjectNameInfoEXT32; typedef struct VkDebugMarkerObjectTagInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDebugReportObjectTypeEXT objectType; uint64_t DECLSPEC_ALIGN(8) object; uint64_t DECLSPEC_ALIGN(8) tagName; PTR32 tagSize; PTR32 pTag; } VkDebugMarkerObjectTagInfoEXT32; typedef struct VkPhysicalDeviceGroupProperties32 { VkStructureType sType; PTR32 pNext; uint32_t physicalDeviceCount; PTR32 physicalDevices[VK_MAX_DEVICE_GROUP_SIZE]; VkBool32 subsetAllocation; } VkPhysicalDeviceGroupProperties32; typedef VkPhysicalDeviceGroupProperties32 VkPhysicalDeviceGroupPropertiesKHR32; typedef struct VkPerformanceCounterKHR32 { VkStructureType sType; PTR32 pNext; VkPerformanceCounterUnitKHR unit; VkPerformanceCounterScopeKHR scope; VkPerformanceCounterStorageKHR storage; uint8_t uuid[VK_UUID_SIZE]; } VkPerformanceCounterKHR32; typedef struct VkPerformanceCounterDescriptionKHR32 { VkStructureType sType; PTR32 pNext; VkPerformanceCounterDescriptionFlagsKHR flags; char name[VK_MAX_DESCRIPTION_SIZE]; char category[VK_MAX_DESCRIPTION_SIZE]; char description[VK_MAX_DESCRIPTION_SIZE]; } VkPerformanceCounterDescriptionKHR32; typedef struct VkMappedMemoryRange32 { VkStructureType sType; PTR32 pNext; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) size; } VkMappedMemoryRange32; typedef struct VkAccelerationStructureBuildSizesInfoKHR32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) accelerationStructureSize; VkDeviceSize DECLSPEC_ALIGN(8) updateScratchSize; VkDeviceSize DECLSPEC_ALIGN(8) buildScratchSize; } VkAccelerationStructureBuildSizesInfoKHR32; typedef struct VkAccelerationStructureDeviceAddressInfoKHR32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) accelerationStructure; } VkAccelerationStructureDeviceAddressInfoKHR32; typedef struct VkAccelerationStructureMemoryRequirementsInfoNV32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureMemoryRequirementsTypeNV type; VkAccelerationStructureNV DECLSPEC_ALIGN(8) accelerationStructure; } VkAccelerationStructureMemoryRequirementsInfoNV32; typedef struct VkMemoryRequirements32 { VkDeviceSize DECLSPEC_ALIGN(8) size; VkDeviceSize DECLSPEC_ALIGN(8) alignment; uint32_t memoryTypeBits; } VkMemoryRequirements32; typedef struct VkAccelerationStructureCaptureDescriptorDataInfoEXT32 { VkStructureType sType; PTR32 pNext; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) accelerationStructure; VkAccelerationStructureNV DECLSPEC_ALIGN(8) accelerationStructureNV; } VkAccelerationStructureCaptureDescriptorDataInfoEXT32; typedef struct VkBufferDeviceAddressInfo32 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) buffer; } VkBufferDeviceAddressInfo32; typedef VkBufferDeviceAddressInfo32 VkBufferDeviceAddressInfoKHR32; typedef VkBufferDeviceAddressInfo32 VkBufferDeviceAddressInfoEXT32; typedef struct VkBufferMemoryRequirementsInfo232 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) buffer; } VkBufferMemoryRequirementsInfo232; typedef VkBufferMemoryRequirementsInfo232 VkBufferMemoryRequirementsInfo2KHR32; typedef struct VkMemoryDedicatedRequirements32 { VkStructureType sType; PTR32 pNext; VkBool32 prefersDedicatedAllocation; VkBool32 requiresDedicatedAllocation; } VkMemoryDedicatedRequirements32; typedef VkMemoryDedicatedRequirements32 VkMemoryDedicatedRequirementsKHR32; typedef struct VkMemoryRequirements232 { VkStructureType sType; PTR32 pNext; VkMemoryRequirements32 DECLSPEC_ALIGN(8) memoryRequirements; } VkMemoryRequirements232; typedef VkMemoryRequirements232 VkMemoryRequirements2KHR32; typedef struct VkBufferCaptureDescriptorDataInfoEXT32 { VkStructureType sType; PTR32 pNext; VkBuffer DECLSPEC_ALIGN(8) buffer; } VkBufferCaptureDescriptorDataInfoEXT32; typedef struct VkCalibratedTimestampInfoEXT32 { VkStructureType sType; PTR32 pNext; VkTimeDomainEXT timeDomain; } VkCalibratedTimestampInfoEXT32; typedef struct VkDescriptorAddressInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceAddress DECLSPEC_ALIGN(8) address; VkDeviceSize DECLSPEC_ALIGN(8) range; VkFormat format; } VkDescriptorAddressInfoEXT32; typedef union VkDescriptorDataEXT32 { PTR32 pSampler; PTR32 pCombinedImageSampler; PTR32 pInputAttachmentImage; PTR32 pSampledImage; PTR32 pStorageImage; PTR32 pUniformTexelBuffer; PTR32 pStorageTexelBuffer; PTR32 pUniformBuffer; PTR32 pStorageBuffer; VkDeviceAddress DECLSPEC_ALIGN(8) accelerationStructure; } VkDescriptorDataEXT32; typedef struct VkDescriptorGetInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDescriptorType type; VkDescriptorDataEXT32 DECLSPEC_ALIGN(8) data; } VkDescriptorGetInfoEXT32; typedef struct VkDescriptorSetBindingReferenceVALVE32 { VkStructureType sType; PTR32 pNext; VkDescriptorSetLayout DECLSPEC_ALIGN(8) descriptorSetLayout; uint32_t binding; } VkDescriptorSetBindingReferenceVALVE32; typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE32 { VkStructureType sType; PTR32 pNext; PTR32 descriptorOffset; uint32_t descriptorSize; } VkDescriptorSetLayoutHostMappingInfoVALVE32; typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport32 { VkStructureType sType; PTR32 pNext; uint32_t maxVariableDescriptorCount; } VkDescriptorSetVariableDescriptorCountLayoutSupport32; typedef VkDescriptorSetVariableDescriptorCountLayoutSupport32 VkDescriptorSetVariableDescriptorCountLayoutSupportEXT32; typedef struct VkDescriptorSetLayoutSupport32 { VkStructureType sType; PTR32 pNext; VkBool32 supported; } VkDescriptorSetLayoutSupport32; typedef VkDescriptorSetLayoutSupport32 VkDescriptorSetLayoutSupportKHR32; typedef struct VkAccelerationStructureVersionInfoKHR32 { VkStructureType sType; PTR32 pNext; PTR32 pVersionData; } VkAccelerationStructureVersionInfoKHR32; typedef struct VkDeviceBufferMemoryRequirements32 { VkStructureType sType; PTR32 pNext; PTR32 pCreateInfo; } VkDeviceBufferMemoryRequirements32; typedef VkDeviceBufferMemoryRequirements32 VkDeviceBufferMemoryRequirementsKHR32; typedef struct VkDeviceFaultCountsEXT32 { VkStructureType sType; PTR32 pNext; uint32_t addressInfoCount; uint32_t vendorInfoCount; VkDeviceSize DECLSPEC_ALIGN(8) vendorBinarySize; } VkDeviceFaultCountsEXT32; typedef struct VkDeviceFaultAddressInfoEXT32 { VkDeviceFaultAddressTypeEXT addressType; VkDeviceAddress DECLSPEC_ALIGN(8) reportedAddress; VkDeviceSize DECLSPEC_ALIGN(8) addressPrecision; } VkDeviceFaultAddressInfoEXT32; typedef struct VkDeviceFaultVendorInfoEXT32 { char description[VK_MAX_DESCRIPTION_SIZE]; uint64_t DECLSPEC_ALIGN(8) vendorFaultCode; uint64_t DECLSPEC_ALIGN(8) vendorFaultData; } VkDeviceFaultVendorInfoEXT32; typedef struct VkDeviceFaultInfoEXT32 { VkStructureType sType; PTR32 pNext; char description[VK_MAX_DESCRIPTION_SIZE]; PTR32 pAddressInfos; PTR32 pVendorInfos; PTR32 pVendorBinaryData; } VkDeviceFaultInfoEXT32; typedef struct VkDeviceGroupPresentCapabilitiesKHR32 { VkStructureType sType; PTR32 pNext; uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE]; VkDeviceGroupPresentModeFlagsKHR modes; } VkDeviceGroupPresentCapabilitiesKHR32; typedef struct VkDeviceImageMemoryRequirements32 { VkStructureType sType; PTR32 pNext; PTR32 pCreateInfo; VkImageAspectFlagBits planeAspect; } VkDeviceImageMemoryRequirements32; typedef VkDeviceImageMemoryRequirements32 VkDeviceImageMemoryRequirementsKHR32; typedef struct VkSparseImageMemoryRequirements32 { VkSparseImageFormatProperties formatProperties; uint32_t imageMipTailFirstLod; VkDeviceSize DECLSPEC_ALIGN(8) imageMipTailSize; VkDeviceSize DECLSPEC_ALIGN(8) imageMipTailOffset; VkDeviceSize DECLSPEC_ALIGN(8) imageMipTailStride; } VkSparseImageMemoryRequirements32; typedef struct VkSparseImageMemoryRequirements232 { VkStructureType sType; PTR32 pNext; VkSparseImageMemoryRequirements32 DECLSPEC_ALIGN(8) memoryRequirements; } VkSparseImageMemoryRequirements232; typedef VkSparseImageMemoryRequirements232 VkSparseImageMemoryRequirements2KHR32; typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo32 { VkStructureType sType; PTR32 pNext; VkDeviceMemory DECLSPEC_ALIGN(8) memory; } VkDeviceMemoryOpaqueCaptureAddressInfo32; typedef VkDeviceMemoryOpaqueCaptureAddressInfo32 VkDeviceMemoryOpaqueCaptureAddressInfoKHR32; typedef struct VkMicromapVersionInfoEXT32 { VkStructureType sType; PTR32 pNext; PTR32 pVersionData; } VkMicromapVersionInfoEXT32; typedef struct VkDeviceQueueInfo232 { VkStructureType sType; PTR32 pNext; VkDeviceQueueCreateFlags flags; uint32_t queueFamilyIndex; uint32_t queueIndex; } VkDeviceQueueInfo232; typedef struct VkTilePropertiesQCOM32 { VkStructureType sType; PTR32 pNext; VkExtent3D tileSize; VkExtent2D apronSize; VkOffset2D origin; } VkTilePropertiesQCOM32; typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV32 { VkStructureType sType; PTR32 pNext; VkPipelineBindPoint pipelineBindPoint; VkPipeline DECLSPEC_ALIGN(8) pipeline; VkIndirectCommandsLayoutNV DECLSPEC_ALIGN(8) indirectCommandsLayout; uint32_t maxSequencesCount; } VkGeneratedCommandsMemoryRequirementsInfoNV32; typedef struct VkImagePlaneMemoryRequirementsInfo32 { VkStructureType sType; PTR32 pNext; VkImageAspectFlagBits planeAspect; } VkImagePlaneMemoryRequirementsInfo32; typedef VkImagePlaneMemoryRequirementsInfo32 VkImagePlaneMemoryRequirementsInfoKHR32; typedef struct VkImageMemoryRequirementsInfo232 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) image; } VkImageMemoryRequirementsInfo232; typedef VkImageMemoryRequirementsInfo232 VkImageMemoryRequirementsInfo2KHR32; typedef struct VkImageCaptureDescriptorDataInfoEXT32 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) image; } VkImageCaptureDescriptorDataInfoEXT32; typedef struct VkImageSparseMemoryRequirementsInfo232 { VkStructureType sType; PTR32 pNext; VkImage DECLSPEC_ALIGN(8) image; } VkImageSparseMemoryRequirementsInfo232; typedef VkImageSparseMemoryRequirementsInfo232 VkImageSparseMemoryRequirementsInfo2KHR32; typedef struct VkSubresourceLayout32 { VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) size; VkDeviceSize DECLSPEC_ALIGN(8) rowPitch; VkDeviceSize DECLSPEC_ALIGN(8) arrayPitch; VkDeviceSize DECLSPEC_ALIGN(8) depthPitch; } VkSubresourceLayout32; typedef struct VkImageSubresource2EXT32 { VkStructureType sType; PTR32 pNext; VkImageSubresource imageSubresource; } VkImageSubresource2EXT32; typedef struct VkImageCompressionPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkImageCompressionFlagsEXT imageCompressionFlags; VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags; } VkImageCompressionPropertiesEXT32; typedef struct VkSubresourceLayout2EXT32 { VkStructureType sType; PTR32 pNext; VkSubresourceLayout32 DECLSPEC_ALIGN(8) subresourceLayout; } VkSubresourceLayout2EXT32; typedef struct VkImageViewAddressPropertiesNVX32 { VkStructureType sType; PTR32 pNext; VkDeviceAddress DECLSPEC_ALIGN(8) deviceAddress; VkDeviceSize DECLSPEC_ALIGN(8) size; } VkImageViewAddressPropertiesNVX32; typedef struct VkImageViewHandleInfoNVX32 { VkStructureType sType; PTR32 pNext; VkImageView DECLSPEC_ALIGN(8) imageView; VkDescriptorType descriptorType; VkSampler DECLSPEC_ALIGN(8) sampler; } VkImageViewHandleInfoNVX32; typedef struct VkImageViewCaptureDescriptorDataInfoEXT32 { VkStructureType sType; PTR32 pNext; VkImageView DECLSPEC_ALIGN(8) imageView; } VkImageViewCaptureDescriptorDataInfoEXT32; typedef struct VkMemoryHostPointerPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t memoryTypeBits; } VkMemoryHostPointerPropertiesEXT32; typedef struct VkMicromapBuildSizesInfoEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) micromapSize; VkDeviceSize DECLSPEC_ALIGN(8) buildScratchSize; VkBool32 discardable; } VkMicromapBuildSizesInfoEXT32; typedef union VkPerformanceValueDataINTEL32 { uint32_t value32; uint64_t DECLSPEC_ALIGN(8) value64; float valueFloat; VkBool32 valueBool; PTR32 valueString; } VkPerformanceValueDataINTEL32; typedef struct VkPerformanceValueINTEL32 { VkPerformanceValueTypeINTEL type; VkPerformanceValueDataINTEL32 DECLSPEC_ALIGN(8) data; } VkPerformanceValueINTEL32; typedef struct VkCooperativeMatrixPropertiesNV32 { VkStructureType sType; PTR32 pNext; uint32_t MSize; uint32_t NSize; uint32_t KSize; VkComponentTypeNV AType; VkComponentTypeNV BType; VkComponentTypeNV CType; VkComponentTypeNV DType; VkScopeNV scope; } VkCooperativeMatrixPropertiesNV32; typedef struct VkPhysicalDeviceExternalBufferInfo32 { VkStructureType sType; PTR32 pNext; VkBufferCreateFlags flags; VkBufferUsageFlags usage; VkExternalMemoryHandleTypeFlagBits handleType; } VkPhysicalDeviceExternalBufferInfo32; typedef VkPhysicalDeviceExternalBufferInfo32 VkPhysicalDeviceExternalBufferInfoKHR32; typedef struct VkExternalBufferProperties32 { VkStructureType sType; PTR32 pNext; VkExternalMemoryProperties externalMemoryProperties; } VkExternalBufferProperties32; typedef VkExternalBufferProperties32 VkExternalBufferPropertiesKHR32; typedef struct VkPhysicalDeviceExternalFenceInfo32 { VkStructureType sType; PTR32 pNext; VkExternalFenceHandleTypeFlagBits handleType; } VkPhysicalDeviceExternalFenceInfo32; typedef VkPhysicalDeviceExternalFenceInfo32 VkPhysicalDeviceExternalFenceInfoKHR32; typedef struct VkExternalFenceProperties32 { VkStructureType sType; PTR32 pNext; VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes; VkExternalFenceHandleTypeFlags compatibleHandleTypes; VkExternalFenceFeatureFlags externalFenceFeatures; } VkExternalFenceProperties32; typedef VkExternalFenceProperties32 VkExternalFencePropertiesKHR32; typedef struct VkPhysicalDeviceExternalSemaphoreInfo32 { VkStructureType sType; PTR32 pNext; VkExternalSemaphoreHandleTypeFlagBits handleType; } VkPhysicalDeviceExternalSemaphoreInfo32; typedef VkPhysicalDeviceExternalSemaphoreInfo32 VkPhysicalDeviceExternalSemaphoreInfoKHR32; typedef struct VkExternalSemaphoreProperties32 { VkStructureType sType; PTR32 pNext; VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes; VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes; VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures; } VkExternalSemaphoreProperties32; typedef VkExternalSemaphoreProperties32 VkExternalSemaphorePropertiesKHR32; typedef struct VkSubpassResolvePerformanceQueryEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 optimal; } VkSubpassResolvePerformanceQueryEXT32; typedef struct VkFormatProperties332 { VkStructureType sType; PTR32 pNext; VkFormatFeatureFlags2 DECLSPEC_ALIGN(8) linearTilingFeatures; VkFormatFeatureFlags2 DECLSPEC_ALIGN(8) optimalTilingFeatures; VkFormatFeatureFlags2 DECLSPEC_ALIGN(8) bufferFeatures; } VkFormatProperties332; typedef VkFormatProperties332 VkFormatProperties3KHR32; typedef struct VkFormatProperties232 { VkStructureType sType; PTR32 pNext; VkFormatProperties formatProperties; } VkFormatProperties232; typedef VkFormatProperties232 VkFormatProperties2KHR32; typedef struct VkPhysicalDeviceFragmentShadingRateKHR32 { VkStructureType sType; PTR32 pNext; VkSampleCountFlags sampleCounts; VkExtent2D fragmentSize; } VkPhysicalDeviceFragmentShadingRateKHR32; typedef struct VkImageFormatProperties32 { VkExtent3D maxExtent; uint32_t maxMipLevels; uint32_t maxArrayLayers; VkSampleCountFlags sampleCounts; VkDeviceSize DECLSPEC_ALIGN(8) maxResourceSize; } VkImageFormatProperties32; typedef struct VkPhysicalDeviceExternalImageFormatInfo32 { VkStructureType sType; PTR32 pNext; VkExternalMemoryHandleTypeFlagBits handleType; } VkPhysicalDeviceExternalImageFormatInfo32; typedef VkPhysicalDeviceExternalImageFormatInfo32 VkPhysicalDeviceExternalImageFormatInfoKHR32; typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT32 { VkStructureType sType; PTR32 pNext; VkImageViewType imageViewType; } VkPhysicalDeviceImageViewImageFormatInfoEXT32; typedef struct VkPhysicalDeviceImageFormatInfo232 { VkStructureType sType; PTR32 pNext; VkFormat format; VkImageType type; VkImageTiling tiling; VkImageUsageFlags usage; VkImageCreateFlags flags; } VkPhysicalDeviceImageFormatInfo232; typedef VkPhysicalDeviceImageFormatInfo232 VkPhysicalDeviceImageFormatInfo2KHR32; typedef struct VkExternalImageFormatProperties32 { VkStructureType sType; PTR32 pNext; VkExternalMemoryProperties externalMemoryProperties; } VkExternalImageFormatProperties32; typedef VkExternalImageFormatProperties32 VkExternalImageFormatPropertiesKHR32; typedef struct VkSamplerYcbcrConversionImageFormatProperties32 { VkStructureType sType; PTR32 pNext; uint32_t combinedImageSamplerDescriptorCount; } VkSamplerYcbcrConversionImageFormatProperties32; typedef VkSamplerYcbcrConversionImageFormatProperties32 VkSamplerYcbcrConversionImageFormatPropertiesKHR32; typedef struct VkTextureLODGatherFormatPropertiesAMD32 { VkStructureType sType; PTR32 pNext; VkBool32 supportsTextureGatherLODBiasAMD; } VkTextureLODGatherFormatPropertiesAMD32; typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 filterCubic; VkBool32 filterCubicMinmax; } VkFilterCubicImageViewImageFormatPropertiesEXT32; typedef struct VkImageFormatProperties232 { VkStructureType sType; PTR32 pNext; VkImageFormatProperties32 DECLSPEC_ALIGN(8) imageFormatProperties; } VkImageFormatProperties232; typedef VkImageFormatProperties232 VkImageFormatProperties2KHR32; typedef struct VkMemoryHeap32 { VkDeviceSize DECLSPEC_ALIGN(8) size; VkMemoryHeapFlags flags; } VkMemoryHeap32; typedef struct VkPhysicalDeviceMemoryProperties32 { uint32_t memoryTypeCount; VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; uint32_t memoryHeapCount; VkMemoryHeap32 DECLSPEC_ALIGN(8) memoryHeaps[VK_MAX_MEMORY_HEAPS]; } VkPhysicalDeviceMemoryProperties32; typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) heapBudget[VK_MAX_MEMORY_HEAPS]; VkDeviceSize DECLSPEC_ALIGN(8) heapUsage[VK_MAX_MEMORY_HEAPS]; } VkPhysicalDeviceMemoryBudgetPropertiesEXT32; typedef struct VkPhysicalDeviceMemoryProperties232 { VkStructureType sType; PTR32 pNext; VkPhysicalDeviceMemoryProperties32 DECLSPEC_ALIGN(8) memoryProperties; } VkPhysicalDeviceMemoryProperties232; typedef VkPhysicalDeviceMemoryProperties232 VkPhysicalDeviceMemoryProperties2KHR32; typedef struct VkMultisamplePropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkExtent2D maxSampleLocationGridSize; } VkMultisamplePropertiesEXT32; typedef struct VkOpticalFlowImageFormatPropertiesNV32 { VkStructureType sType; PTR32 pNext; VkFormat format; } VkOpticalFlowImageFormatPropertiesNV32; typedef struct VkPhysicalDeviceLimits32 { uint32_t maxImageDimension1D; uint32_t maxImageDimension2D; uint32_t maxImageDimension3D; uint32_t maxImageDimensionCube; uint32_t maxImageArrayLayers; uint32_t maxTexelBufferElements; uint32_t maxUniformBufferRange; uint32_t maxStorageBufferRange; uint32_t maxPushConstantsSize; uint32_t maxMemoryAllocationCount; uint32_t maxSamplerAllocationCount; VkDeviceSize DECLSPEC_ALIGN(8) bufferImageGranularity; VkDeviceSize DECLSPEC_ALIGN(8) sparseAddressSpaceSize; uint32_t maxBoundDescriptorSets; uint32_t maxPerStageDescriptorSamplers; uint32_t maxPerStageDescriptorUniformBuffers; uint32_t maxPerStageDescriptorStorageBuffers; uint32_t maxPerStageDescriptorSampledImages; uint32_t maxPerStageDescriptorStorageImages; uint32_t maxPerStageDescriptorInputAttachments; uint32_t maxPerStageResources; uint32_t maxDescriptorSetSamplers; uint32_t maxDescriptorSetUniformBuffers; uint32_t maxDescriptorSetUniformBuffersDynamic; uint32_t maxDescriptorSetStorageBuffers; uint32_t maxDescriptorSetStorageBuffersDynamic; uint32_t maxDescriptorSetSampledImages; uint32_t maxDescriptorSetStorageImages; uint32_t maxDescriptorSetInputAttachments; uint32_t maxVertexInputAttributes; uint32_t maxVertexInputBindings; uint32_t maxVertexInputAttributeOffset; uint32_t maxVertexInputBindingStride; uint32_t maxVertexOutputComponents; uint32_t maxTessellationGenerationLevel; uint32_t maxTessellationPatchSize; uint32_t maxTessellationControlPerVertexInputComponents; uint32_t maxTessellationControlPerVertexOutputComponents; uint32_t maxTessellationControlPerPatchOutputComponents; uint32_t maxTessellationControlTotalOutputComponents; uint32_t maxTessellationEvaluationInputComponents; uint32_t maxTessellationEvaluationOutputComponents; uint32_t maxGeometryShaderInvocations; uint32_t maxGeometryInputComponents; uint32_t maxGeometryOutputComponents; uint32_t maxGeometryOutputVertices; uint32_t maxGeometryTotalOutputComponents; uint32_t maxFragmentInputComponents; uint32_t maxFragmentOutputAttachments; uint32_t maxFragmentDualSrcAttachments; uint32_t maxFragmentCombinedOutputResources; uint32_t maxComputeSharedMemorySize; uint32_t maxComputeWorkGroupCount[3]; uint32_t maxComputeWorkGroupInvocations; uint32_t maxComputeWorkGroupSize[3]; uint32_t subPixelPrecisionBits; uint32_t subTexelPrecisionBits; uint32_t mipmapPrecisionBits; uint32_t maxDrawIndexedIndexValue; uint32_t maxDrawIndirectCount; float maxSamplerLodBias; float maxSamplerAnisotropy; uint32_t maxViewports; uint32_t maxViewportDimensions[2]; float viewportBoundsRange[2]; uint32_t viewportSubPixelBits; PTR32 minMemoryMapAlignment; VkDeviceSize DECLSPEC_ALIGN(8) minTexelBufferOffsetAlignment; VkDeviceSize DECLSPEC_ALIGN(8) minUniformBufferOffsetAlignment; VkDeviceSize DECLSPEC_ALIGN(8) minStorageBufferOffsetAlignment; int32_t minTexelOffset; uint32_t maxTexelOffset; int32_t minTexelGatherOffset; uint32_t maxTexelGatherOffset; float minInterpolationOffset; float maxInterpolationOffset; uint32_t subPixelInterpolationOffsetBits; uint32_t maxFramebufferWidth; uint32_t maxFramebufferHeight; uint32_t maxFramebufferLayers; VkSampleCountFlags framebufferColorSampleCounts; VkSampleCountFlags framebufferDepthSampleCounts; VkSampleCountFlags framebufferStencilSampleCounts; VkSampleCountFlags framebufferNoAttachmentsSampleCounts; uint32_t maxColorAttachments; VkSampleCountFlags sampledImageColorSampleCounts; VkSampleCountFlags sampledImageIntegerSampleCounts; VkSampleCountFlags sampledImageDepthSampleCounts; VkSampleCountFlags sampledImageStencilSampleCounts; VkSampleCountFlags storageImageSampleCounts; uint32_t maxSampleMaskWords; VkBool32 timestampComputeAndGraphics; float timestampPeriod; uint32_t maxClipDistances; uint32_t maxCullDistances; uint32_t maxCombinedClipAndCullDistances; uint32_t discreteQueuePriorities; float pointSizeRange[2]; float lineWidthRange[2]; float pointSizeGranularity; float lineWidthGranularity; VkBool32 strictLines; VkBool32 standardSampleLocations; VkDeviceSize DECLSPEC_ALIGN(8) optimalBufferCopyOffsetAlignment; VkDeviceSize DECLSPEC_ALIGN(8) optimalBufferCopyRowPitchAlignment; VkDeviceSize DECLSPEC_ALIGN(8) nonCoherentAtomSize; } VkPhysicalDeviceLimits32; typedef struct VkPhysicalDeviceProperties32 { uint32_t apiVersion; uint32_t driverVersion; uint32_t vendorID; uint32_t deviceID; VkPhysicalDeviceType deviceType; char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]; uint8_t pipelineCacheUUID[VK_UUID_SIZE]; VkPhysicalDeviceLimits32 DECLSPEC_ALIGN(8) limits; VkPhysicalDeviceSparseProperties sparseProperties; } VkPhysicalDeviceProperties32; typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV32 { VkStructureType sType; PTR32 pNext; uint32_t maxGraphicsShaderGroupCount; uint32_t maxIndirectSequenceCount; uint32_t maxIndirectCommandsTokenCount; uint32_t maxIndirectCommandsStreamCount; uint32_t maxIndirectCommandsTokenOffset; uint32_t maxIndirectCommandsStreamStride; uint32_t minSequencesCountBufferOffsetAlignment; uint32_t minSequencesIndexBufferOffsetAlignment; uint32_t minIndirectCommandsBufferOffsetAlignment; } VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV32; typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t maxMultiDrawCount; } VkPhysicalDeviceMultiDrawPropertiesEXT32; typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR32 { VkStructureType sType; PTR32 pNext; uint32_t maxPushDescriptors; } VkPhysicalDevicePushDescriptorPropertiesKHR32; typedef struct VkPhysicalDeviceDriverProperties32 { VkStructureType sType; PTR32 pNext; VkDriverId driverID; char driverName[VK_MAX_DRIVER_NAME_SIZE]; char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; VkConformanceVersion conformanceVersion; } VkPhysicalDeviceDriverProperties32; typedef VkPhysicalDeviceDriverProperties32 VkPhysicalDeviceDriverPropertiesKHR32; typedef struct VkPhysicalDeviceIDProperties32 { VkStructureType sType; PTR32 pNext; uint8_t deviceUUID[VK_UUID_SIZE]; uint8_t driverUUID[VK_UUID_SIZE]; uint8_t deviceLUID[VK_LUID_SIZE]; uint32_t deviceNodeMask; VkBool32 deviceLUIDValid; } VkPhysicalDeviceIDProperties32; typedef VkPhysicalDeviceIDProperties32 VkPhysicalDeviceIDPropertiesKHR32; typedef struct VkPhysicalDeviceMultiviewProperties32 { VkStructureType sType; PTR32 pNext; uint32_t maxMultiviewViewCount; uint32_t maxMultiviewInstanceIndex; } VkPhysicalDeviceMultiviewProperties32; typedef VkPhysicalDeviceMultiviewProperties32 VkPhysicalDeviceMultiviewPropertiesKHR32; typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t maxDiscardRectangles; } VkPhysicalDeviceDiscardRectanglePropertiesEXT32; typedef struct VkPhysicalDeviceSubgroupProperties32 { VkStructureType sType; PTR32 pNext; uint32_t subgroupSize; VkShaderStageFlags supportedStages; VkSubgroupFeatureFlags supportedOperations; VkBool32 quadOperationsInAllStages; } VkPhysicalDeviceSubgroupProperties32; typedef struct VkPhysicalDevicePointClippingProperties32 { VkStructureType sType; PTR32 pNext; VkPointClippingBehavior pointClippingBehavior; } VkPhysicalDevicePointClippingProperties32; typedef VkPhysicalDevicePointClippingProperties32 VkPhysicalDevicePointClippingPropertiesKHR32; typedef struct VkPhysicalDeviceProtectedMemoryProperties32 { VkStructureType sType; PTR32 pNext; VkBool32 protectedNoFault; } VkPhysicalDeviceProtectedMemoryProperties32; typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties32 { VkStructureType sType; PTR32 pNext; VkBool32 filterMinmaxSingleComponentFormats; VkBool32 filterMinmaxImageComponentMapping; } VkPhysicalDeviceSamplerFilterMinmaxProperties32; typedef VkPhysicalDeviceSamplerFilterMinmaxProperties32 VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT32; typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkSampleCountFlags sampleLocationSampleCounts; VkExtent2D maxSampleLocationGridSize; float sampleLocationCoordinateRange[2]; uint32_t sampleLocationSubPixelBits; VkBool32 variableSampleLocations; } VkPhysicalDeviceSampleLocationsPropertiesEXT32; typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t advancedBlendMaxColorAttachments; VkBool32 advancedBlendIndependentBlend; VkBool32 advancedBlendNonPremultipliedSrcColor; VkBool32 advancedBlendNonPremultipliedDstColor; VkBool32 advancedBlendCorrelatedOverlap; VkBool32 advancedBlendAllOperations; } VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT32; typedef struct VkPhysicalDeviceInlineUniformBlockProperties32 { VkStructureType sType; PTR32 pNext; uint32_t maxInlineUniformBlockSize; uint32_t maxPerStageDescriptorInlineUniformBlocks; uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; uint32_t maxDescriptorSetInlineUniformBlocks; uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; } VkPhysicalDeviceInlineUniformBlockProperties32; typedef VkPhysicalDeviceInlineUniformBlockProperties32 VkPhysicalDeviceInlineUniformBlockPropertiesEXT32; typedef struct VkPhysicalDeviceMaintenance3Properties32 { VkStructureType sType; PTR32 pNext; uint32_t maxPerSetDescriptors; VkDeviceSize DECLSPEC_ALIGN(8) maxMemoryAllocationSize; } VkPhysicalDeviceMaintenance3Properties32; typedef VkPhysicalDeviceMaintenance3Properties32 VkPhysicalDeviceMaintenance3PropertiesKHR32; typedef struct VkPhysicalDeviceMaintenance4Properties32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) maxBufferSize; } VkPhysicalDeviceMaintenance4Properties32; typedef VkPhysicalDeviceMaintenance4Properties32 VkPhysicalDeviceMaintenance4PropertiesKHR32; typedef struct VkPhysicalDeviceFloatControlsProperties32 { VkStructureType sType; PTR32 pNext; VkShaderFloatControlsIndependence denormBehaviorIndependence; VkShaderFloatControlsIndependence roundingModeIndependence; VkBool32 shaderSignedZeroInfNanPreserveFloat16; VkBool32 shaderSignedZeroInfNanPreserveFloat32; VkBool32 shaderSignedZeroInfNanPreserveFloat64; VkBool32 shaderDenormPreserveFloat16; VkBool32 shaderDenormPreserveFloat32; VkBool32 shaderDenormPreserveFloat64; VkBool32 shaderDenormFlushToZeroFloat16; VkBool32 shaderDenormFlushToZeroFloat32; VkBool32 shaderDenormFlushToZeroFloat64; VkBool32 shaderRoundingModeRTEFloat16; VkBool32 shaderRoundingModeRTEFloat32; VkBool32 shaderRoundingModeRTEFloat64; VkBool32 shaderRoundingModeRTZFloat16; VkBool32 shaderRoundingModeRTZFloat32; VkBool32 shaderRoundingModeRTZFloat64; } VkPhysicalDeviceFloatControlsProperties32; typedef VkPhysicalDeviceFloatControlsProperties32 VkPhysicalDeviceFloatControlsPropertiesKHR32; typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) minImportedHostPointerAlignment; } VkPhysicalDeviceExternalMemoryHostPropertiesEXT32; typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT32 { VkStructureType sType; PTR32 pNext; float primitiveOverestimationSize; float maxExtraPrimitiveOverestimationSize; float extraPrimitiveOverestimationSizeGranularity; VkBool32 primitiveUnderestimation; VkBool32 conservativePointAndLineRasterization; VkBool32 degenerateTrianglesRasterized; VkBool32 degenerateLinesRasterized; VkBool32 fullyCoveredFragmentShaderInputVariable; VkBool32 conservativeRasterizationPostDepthCoverage; } VkPhysicalDeviceConservativeRasterizationPropertiesEXT32; typedef struct VkPhysicalDeviceShaderCorePropertiesAMD32 { VkStructureType sType; PTR32 pNext; uint32_t shaderEngineCount; uint32_t shaderArraysPerEngineCount; uint32_t computeUnitsPerShaderArray; uint32_t simdPerComputeUnit; uint32_t wavefrontsPerSimd; uint32_t wavefrontSize; uint32_t sgprsPerSimd; uint32_t minSgprAllocation; uint32_t maxSgprAllocation; uint32_t sgprAllocationGranularity; uint32_t vgprsPerSimd; uint32_t minVgprAllocation; uint32_t maxVgprAllocation; uint32_t vgprAllocationGranularity; } VkPhysicalDeviceShaderCorePropertiesAMD32; typedef struct VkPhysicalDeviceShaderCoreProperties2AMD32 { VkStructureType sType; PTR32 pNext; VkShaderCorePropertiesFlagsAMD shaderCoreFeatures; uint32_t activeComputeUnitCount; } VkPhysicalDeviceShaderCoreProperties2AMD32; typedef struct VkPhysicalDeviceDescriptorIndexingProperties32 { VkStructureType sType; PTR32 pNext; uint32_t maxUpdateAfterBindDescriptorsInAllPools; VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; VkBool32 shaderSampledImageArrayNonUniformIndexingNative; VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; VkBool32 shaderStorageImageArrayNonUniformIndexingNative; VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; VkBool32 robustBufferAccessUpdateAfterBind; VkBool32 quadDivergentImplicitLod; uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; uint32_t maxPerStageUpdateAfterBindResources; uint32_t maxDescriptorSetUpdateAfterBindSamplers; uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; uint32_t maxDescriptorSetUpdateAfterBindSampledImages; uint32_t maxDescriptorSetUpdateAfterBindStorageImages; uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; } VkPhysicalDeviceDescriptorIndexingProperties32; typedef VkPhysicalDeviceDescriptorIndexingProperties32 VkPhysicalDeviceDescriptorIndexingPropertiesEXT32; typedef struct VkPhysicalDeviceTimelineSemaphoreProperties32 { VkStructureType sType; PTR32 pNext; uint64_t DECLSPEC_ALIGN(8) maxTimelineSemaphoreValueDifference; } VkPhysicalDeviceTimelineSemaphoreProperties32; typedef VkPhysicalDeviceTimelineSemaphoreProperties32 VkPhysicalDeviceTimelineSemaphorePropertiesKHR32; typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t maxVertexAttribDivisor; } VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT32; typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t pciDomain; uint32_t pciBus; uint32_t pciDevice; uint32_t pciFunction; } VkPhysicalDevicePCIBusInfoPropertiesEXT32; typedef struct VkPhysicalDeviceDepthStencilResolveProperties32 { VkStructureType sType; PTR32 pNext; VkResolveModeFlags supportedDepthResolveModes; VkResolveModeFlags supportedStencilResolveModes; VkBool32 independentResolveNone; VkBool32 independentResolve; } VkPhysicalDeviceDepthStencilResolveProperties32; typedef VkPhysicalDeviceDepthStencilResolveProperties32 VkPhysicalDeviceDepthStencilResolvePropertiesKHR32; typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t maxTransformFeedbackStreams; uint32_t maxTransformFeedbackBuffers; VkDeviceSize DECLSPEC_ALIGN(8) maxTransformFeedbackBufferSize; uint32_t maxTransformFeedbackStreamDataSize; uint32_t maxTransformFeedbackBufferDataSize; uint32_t maxTransformFeedbackBufferDataStride; VkBool32 transformFeedbackQueries; VkBool32 transformFeedbackStreamsLinesTriangles; VkBool32 transformFeedbackRasterizationStreamSelect; VkBool32 transformFeedbackDraw; } VkPhysicalDeviceTransformFeedbackPropertiesEXT32; typedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV32 { VkStructureType sType; PTR32 pNext; VkQueueFlags supportedQueues; } VkPhysicalDeviceCopyMemoryIndirectPropertiesNV32; typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesNV32 { VkStructureType sType; PTR32 pNext; VkMemoryDecompressionMethodFlagsNV DECLSPEC_ALIGN(8) decompressionMethods; uint64_t DECLSPEC_ALIGN(8) maxDecompressionIndirectCount; } VkPhysicalDeviceMemoryDecompressionPropertiesNV32; typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV32 { VkStructureType sType; PTR32 pNext; VkExtent2D shadingRateTexelSize; uint32_t shadingRatePaletteSize; uint32_t shadingRateMaxCoarseSamples; } VkPhysicalDeviceShadingRateImagePropertiesNV32; typedef struct VkPhysicalDeviceMeshShaderPropertiesNV32 { VkStructureType sType; PTR32 pNext; uint32_t maxDrawMeshTasksCount; uint32_t maxTaskWorkGroupInvocations; uint32_t maxTaskWorkGroupSize[3]; uint32_t maxTaskTotalMemorySize; uint32_t maxTaskOutputCount; uint32_t maxMeshWorkGroupInvocations; uint32_t maxMeshWorkGroupSize[3]; uint32_t maxMeshTotalMemorySize; uint32_t maxMeshOutputVertices; uint32_t maxMeshOutputPrimitives; uint32_t maxMeshMultiviewViewCount; uint32_t meshOutputPerVertexGranularity; uint32_t meshOutputPerPrimitiveGranularity; } VkPhysicalDeviceMeshShaderPropertiesNV32; typedef struct VkPhysicalDeviceMeshShaderPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t maxTaskWorkGroupTotalCount; uint32_t maxTaskWorkGroupCount[3]; uint32_t maxTaskWorkGroupInvocations; uint32_t maxTaskWorkGroupSize[3]; uint32_t maxTaskPayloadSize; uint32_t maxTaskSharedMemorySize; uint32_t maxTaskPayloadAndSharedMemorySize; uint32_t maxMeshWorkGroupTotalCount; uint32_t maxMeshWorkGroupCount[3]; uint32_t maxMeshWorkGroupInvocations; uint32_t maxMeshWorkGroupSize[3]; uint32_t maxMeshSharedMemorySize; uint32_t maxMeshPayloadAndSharedMemorySize; uint32_t maxMeshOutputMemorySize; uint32_t maxMeshPayloadAndOutputMemorySize; uint32_t maxMeshOutputComponents; uint32_t maxMeshOutputVertices; uint32_t maxMeshOutputPrimitives; uint32_t maxMeshOutputLayers; uint32_t maxMeshMultiviewViewCount; uint32_t meshOutputPerVertexGranularity; uint32_t meshOutputPerPrimitiveGranularity; uint32_t maxPreferredTaskWorkGroupInvocations; uint32_t maxPreferredMeshWorkGroupInvocations; VkBool32 prefersLocalInvocationVertexOutput; VkBool32 prefersLocalInvocationPrimitiveOutput; VkBool32 prefersCompactVertexOutput; VkBool32 prefersCompactPrimitiveOutput; } VkPhysicalDeviceMeshShaderPropertiesEXT32; typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR32 { VkStructureType sType; PTR32 pNext; uint64_t DECLSPEC_ALIGN(8) maxGeometryCount; uint64_t DECLSPEC_ALIGN(8) maxInstanceCount; uint64_t DECLSPEC_ALIGN(8) maxPrimitiveCount; uint32_t maxPerStageDescriptorAccelerationStructures; uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures; uint32_t maxDescriptorSetAccelerationStructures; uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures; uint32_t minAccelerationStructureScratchOffsetAlignment; } VkPhysicalDeviceAccelerationStructurePropertiesKHR32; typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR32 { VkStructureType sType; PTR32 pNext; uint32_t shaderGroupHandleSize; uint32_t maxRayRecursionDepth; uint32_t maxShaderGroupStride; uint32_t shaderGroupBaseAlignment; uint32_t shaderGroupHandleCaptureReplaySize; uint32_t maxRayDispatchInvocationCount; uint32_t shaderGroupHandleAlignment; uint32_t maxRayHitAttributeSize; } VkPhysicalDeviceRayTracingPipelinePropertiesKHR32; typedef struct VkPhysicalDeviceRayTracingPropertiesNV32 { VkStructureType sType; PTR32 pNext; uint32_t shaderGroupHandleSize; uint32_t maxRecursionDepth; uint32_t maxShaderGroupStride; uint32_t shaderGroupBaseAlignment; uint64_t DECLSPEC_ALIGN(8) maxGeometryCount; uint64_t DECLSPEC_ALIGN(8) maxInstanceCount; uint64_t DECLSPEC_ALIGN(8) maxTriangleCount; uint32_t maxDescriptorSetAccelerationStructures; } VkPhysicalDeviceRayTracingPropertiesNV32; typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkExtent2D minFragmentDensityTexelSize; VkExtent2D maxFragmentDensityTexelSize; VkBool32 fragmentDensityInvocations; } VkPhysicalDeviceFragmentDensityMapPropertiesEXT32; typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 subsampledLoads; VkBool32 subsampledCoarseReconstructionEarlyAccess; uint32_t maxSubsampledArrayLayers; uint32_t maxDescriptorSetSubsampledSamplers; } VkPhysicalDeviceFragmentDensityMap2PropertiesEXT32; typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM32 { VkStructureType sType; PTR32 pNext; VkExtent2D fragmentDensityOffsetGranularity; } VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM32; typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV32 { VkStructureType sType; PTR32 pNext; VkShaderStageFlags cooperativeMatrixSupportedStages; } VkPhysicalDeviceCooperativeMatrixPropertiesNV32; typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 allowCommandBufferQueryCopies; } VkPhysicalDevicePerformanceQueryPropertiesKHR32; typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV32 { VkStructureType sType; PTR32 pNext; uint32_t shaderSMCount; uint32_t shaderWarpsPerSM; } VkPhysicalDeviceShaderSMBuiltinsPropertiesNV32; typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) storageTexelBufferOffsetAlignmentBytes; VkBool32 storageTexelBufferOffsetSingleTexelAlignment; VkDeviceSize DECLSPEC_ALIGN(8) uniformTexelBufferOffsetAlignmentBytes; VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; } VkPhysicalDeviceTexelBufferAlignmentProperties32; typedef VkPhysicalDeviceTexelBufferAlignmentProperties32 VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT32; typedef struct VkPhysicalDeviceSubgroupSizeControlProperties32 { VkStructureType sType; PTR32 pNext; uint32_t minSubgroupSize; uint32_t maxSubgroupSize; uint32_t maxComputeWorkgroupSubgroups; VkShaderStageFlags requiredSubgroupSizeStages; } VkPhysicalDeviceSubgroupSizeControlProperties32; typedef VkPhysicalDeviceSubgroupSizeControlProperties32 VkPhysicalDeviceSubgroupSizeControlPropertiesEXT32; typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI32 { VkStructureType sType; PTR32 pNext; uint32_t maxSubpassShadingWorkgroupSizeAspectRatio; } VkPhysicalDeviceSubpassShadingPropertiesHUAWEI32; typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t lineSubPixelPrecisionBits; } VkPhysicalDeviceLineRasterizationPropertiesEXT32; typedef struct VkPhysicalDeviceVulkan11Properties32 { VkStructureType sType; PTR32 pNext; uint8_t deviceUUID[VK_UUID_SIZE]; uint8_t driverUUID[VK_UUID_SIZE]; uint8_t deviceLUID[VK_LUID_SIZE]; uint32_t deviceNodeMask; VkBool32 deviceLUIDValid; uint32_t subgroupSize; VkShaderStageFlags subgroupSupportedStages; VkSubgroupFeatureFlags subgroupSupportedOperations; VkBool32 subgroupQuadOperationsInAllStages; VkPointClippingBehavior pointClippingBehavior; uint32_t maxMultiviewViewCount; uint32_t maxMultiviewInstanceIndex; VkBool32 protectedNoFault; uint32_t maxPerSetDescriptors; VkDeviceSize DECLSPEC_ALIGN(8) maxMemoryAllocationSize; } VkPhysicalDeviceVulkan11Properties32; typedef struct VkPhysicalDeviceVulkan12Properties32 { VkStructureType sType; PTR32 pNext; VkDriverId driverID; char driverName[VK_MAX_DRIVER_NAME_SIZE]; char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; VkConformanceVersion conformanceVersion; VkShaderFloatControlsIndependence denormBehaviorIndependence; VkShaderFloatControlsIndependence roundingModeIndependence; VkBool32 shaderSignedZeroInfNanPreserveFloat16; VkBool32 shaderSignedZeroInfNanPreserveFloat32; VkBool32 shaderSignedZeroInfNanPreserveFloat64; VkBool32 shaderDenormPreserveFloat16; VkBool32 shaderDenormPreserveFloat32; VkBool32 shaderDenormPreserveFloat64; VkBool32 shaderDenormFlushToZeroFloat16; VkBool32 shaderDenormFlushToZeroFloat32; VkBool32 shaderDenormFlushToZeroFloat64; VkBool32 shaderRoundingModeRTEFloat16; VkBool32 shaderRoundingModeRTEFloat32; VkBool32 shaderRoundingModeRTEFloat64; VkBool32 shaderRoundingModeRTZFloat16; VkBool32 shaderRoundingModeRTZFloat32; VkBool32 shaderRoundingModeRTZFloat64; uint32_t maxUpdateAfterBindDescriptorsInAllPools; VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; VkBool32 shaderSampledImageArrayNonUniformIndexingNative; VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; VkBool32 shaderStorageImageArrayNonUniformIndexingNative; VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; VkBool32 robustBufferAccessUpdateAfterBind; VkBool32 quadDivergentImplicitLod; uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; uint32_t maxPerStageUpdateAfterBindResources; uint32_t maxDescriptorSetUpdateAfterBindSamplers; uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; uint32_t maxDescriptorSetUpdateAfterBindSampledImages; uint32_t maxDescriptorSetUpdateAfterBindStorageImages; uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; VkResolveModeFlags supportedDepthResolveModes; VkResolveModeFlags supportedStencilResolveModes; VkBool32 independentResolveNone; VkBool32 independentResolve; VkBool32 filterMinmaxSingleComponentFormats; VkBool32 filterMinmaxImageComponentMapping; uint64_t DECLSPEC_ALIGN(8) maxTimelineSemaphoreValueDifference; VkSampleCountFlags framebufferIntegerColorSampleCounts; } VkPhysicalDeviceVulkan12Properties32; typedef struct VkPhysicalDeviceVulkan13Properties32 { VkStructureType sType; PTR32 pNext; uint32_t minSubgroupSize; uint32_t maxSubgroupSize; uint32_t maxComputeWorkgroupSubgroups; VkShaderStageFlags requiredSubgroupSizeStages; uint32_t maxInlineUniformBlockSize; uint32_t maxPerStageDescriptorInlineUniformBlocks; uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; uint32_t maxDescriptorSetInlineUniformBlocks; uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; uint32_t maxInlineUniformTotalSize; VkBool32 integerDotProduct8BitUnsignedAccelerated; VkBool32 integerDotProduct8BitSignedAccelerated; VkBool32 integerDotProduct8BitMixedSignednessAccelerated; VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; VkBool32 integerDotProduct16BitUnsignedAccelerated; VkBool32 integerDotProduct16BitSignedAccelerated; VkBool32 integerDotProduct16BitMixedSignednessAccelerated; VkBool32 integerDotProduct32BitUnsignedAccelerated; VkBool32 integerDotProduct32BitSignedAccelerated; VkBool32 integerDotProduct32BitMixedSignednessAccelerated; VkBool32 integerDotProduct64BitUnsignedAccelerated; VkBool32 integerDotProduct64BitSignedAccelerated; VkBool32 integerDotProduct64BitMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; VkDeviceSize DECLSPEC_ALIGN(8) storageTexelBufferOffsetAlignmentBytes; VkBool32 storageTexelBufferOffsetSingleTexelAlignment; VkDeviceSize DECLSPEC_ALIGN(8) uniformTexelBufferOffsetAlignmentBytes; VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; VkDeviceSize DECLSPEC_ALIGN(8) maxBufferSize; } VkPhysicalDeviceVulkan13Properties32; typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t maxCustomBorderColorSamplers; } VkPhysicalDeviceCustomBorderColorPropertiesEXT32; typedef struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 dynamicPrimitiveTopologyUnrestricted; } VkPhysicalDeviceExtendedDynamicState3PropertiesEXT32; typedef struct VkPhysicalDeviceRobustness2PropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceSize DECLSPEC_ALIGN(8) robustStorageBufferAccessSizeAlignment; VkDeviceSize DECLSPEC_ALIGN(8) robustUniformBufferAccessSizeAlignment; } VkPhysicalDeviceRobustness2PropertiesEXT32; typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR32 { VkStructureType sType; PTR32 pNext; VkExtent2D minFragmentShadingRateAttachmentTexelSize; VkExtent2D maxFragmentShadingRateAttachmentTexelSize; uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio; VkBool32 primitiveFragmentShadingRateWithMultipleViewports; VkBool32 layeredShadingRateAttachments; VkBool32 fragmentShadingRateNonTrivialCombinerOps; VkExtent2D maxFragmentSize; uint32_t maxFragmentSizeAspectRatio; uint32_t maxFragmentShadingRateCoverageSamples; VkSampleCountFlagBits maxFragmentShadingRateRasterizationSamples; VkBool32 fragmentShadingRateWithShaderDepthStencilWrites; VkBool32 fragmentShadingRateWithSampleMask; VkBool32 fragmentShadingRateWithShaderSampleMask; VkBool32 fragmentShadingRateWithConservativeRasterization; VkBool32 fragmentShadingRateWithFragmentShaderInterlock; VkBool32 fragmentShadingRateWithCustomSampleLocations; VkBool32 fragmentShadingRateStrictMultiplyCombiner; } VkPhysicalDeviceFragmentShadingRatePropertiesKHR32; typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV32 { VkStructureType sType; PTR32 pNext; VkSampleCountFlagBits maxFragmentShadingRateInvocationCount; } VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV32; typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 provokingVertexModePerPipeline; VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex; } VkPhysicalDeviceProvokingVertexPropertiesEXT32; typedef struct VkPhysicalDeviceDescriptorBufferPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 combinedImageSamplerDescriptorSingleArray; VkBool32 bufferlessPushDescriptors; VkBool32 allowSamplerImageViewPostSubmitCreation; VkDeviceSize DECLSPEC_ALIGN(8) descriptorBufferOffsetAlignment; uint32_t maxDescriptorBufferBindings; uint32_t maxResourceDescriptorBufferBindings; uint32_t maxSamplerDescriptorBufferBindings; uint32_t maxEmbeddedImmutableSamplerBindings; uint32_t maxEmbeddedImmutableSamplers; PTR32 bufferCaptureReplayDescriptorDataSize; PTR32 imageCaptureReplayDescriptorDataSize; PTR32 imageViewCaptureReplayDescriptorDataSize; PTR32 samplerCaptureReplayDescriptorDataSize; PTR32 accelerationStructureCaptureReplayDescriptorDataSize; PTR32 samplerDescriptorSize; PTR32 combinedImageSamplerDescriptorSize; PTR32 sampledImageDescriptorSize; PTR32 storageImageDescriptorSize; PTR32 uniformTexelBufferDescriptorSize; PTR32 robustUniformTexelBufferDescriptorSize; PTR32 storageTexelBufferDescriptorSize; PTR32 robustStorageTexelBufferDescriptorSize; PTR32 uniformBufferDescriptorSize; PTR32 robustUniformBufferDescriptorSize; PTR32 storageBufferDescriptorSize; PTR32 robustStorageBufferDescriptorSize; PTR32 inputAttachmentDescriptorSize; PTR32 accelerationStructureDescriptorSize; VkDeviceSize DECLSPEC_ALIGN(8) maxSamplerDescriptorBufferRange; VkDeviceSize DECLSPEC_ALIGN(8) maxResourceDescriptorBufferRange; VkDeviceSize DECLSPEC_ALIGN(8) samplerDescriptorBufferAddressSpaceSize; VkDeviceSize DECLSPEC_ALIGN(8) resourceDescriptorBufferAddressSpaceSize; VkDeviceSize DECLSPEC_ALIGN(8) descriptorBufferAddressSpaceSize; } VkPhysicalDeviceDescriptorBufferPropertiesEXT32; typedef struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT32 { VkStructureType sType; PTR32 pNext; PTR32 combinedImageSamplerDensityMapDescriptorSize; } VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT32; typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties32 { VkStructureType sType; PTR32 pNext; VkBool32 integerDotProduct8BitUnsignedAccelerated; VkBool32 integerDotProduct8BitSignedAccelerated; VkBool32 integerDotProduct8BitMixedSignednessAccelerated; VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; VkBool32 integerDotProduct16BitUnsignedAccelerated; VkBool32 integerDotProduct16BitSignedAccelerated; VkBool32 integerDotProduct16BitMixedSignednessAccelerated; VkBool32 integerDotProduct32BitUnsignedAccelerated; VkBool32 integerDotProduct32BitSignedAccelerated; VkBool32 integerDotProduct32BitMixedSignednessAccelerated; VkBool32 integerDotProduct64BitUnsignedAccelerated; VkBool32 integerDotProduct64BitSignedAccelerated; VkBool32 integerDotProduct64BitMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; } VkPhysicalDeviceShaderIntegerDotProductProperties32; typedef VkPhysicalDeviceShaderIntegerDotProductProperties32 VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR32; typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR32 { VkStructureType sType; PTR32 pNext; VkBool32 triStripVertexOrderIndependentOfProvokingVertex; } VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR32; typedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkBool32 graphicsPipelineLibraryFastLinking; VkBool32 graphicsPipelineLibraryIndependentInterpolationDecoration; } VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT32; typedef struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint8_t shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE]; } VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT32; typedef struct VkPhysicalDeviceOpacityMicromapPropertiesEXT32 { VkStructureType sType; PTR32 pNext; uint32_t maxOpacity2StateSubdivisionLevel; uint32_t maxOpacity4StateSubdivisionLevel; } VkPhysicalDeviceOpacityMicromapPropertiesEXT32; typedef struct VkPhysicalDevicePipelineRobustnessPropertiesEXT32 { VkStructureType sType; PTR32 pNext; VkPipelineRobustnessBufferBehaviorEXT defaultRobustnessStorageBuffers; VkPipelineRobustnessBufferBehaviorEXT defaultRobustnessUniformBuffers; VkPipelineRobustnessBufferBehaviorEXT defaultRobustnessVertexInputs; VkPipelineRobustnessImageBehaviorEXT defaultRobustnessImages; } VkPhysicalDevicePipelineRobustnessPropertiesEXT32; typedef struct VkPhysicalDeviceImageProcessingPropertiesQCOM32 { VkStructureType sType; PTR32 pNext; uint32_t maxWeightFilterPhases; VkExtent2D maxWeightFilterDimension; VkExtent2D maxBlockMatchRegion; VkExtent2D maxBoxFilterBlockSize; } VkPhysicalDeviceImageProcessingPropertiesQCOM32; typedef struct VkPhysicalDeviceOpticalFlowPropertiesNV32 { VkStructureType sType; PTR32 pNext; VkOpticalFlowGridSizeFlagsNV supportedOutputGridSizes; VkOpticalFlowGridSizeFlagsNV supportedHintGridSizes; VkBool32 hintSupported; VkBool32 costSupported; VkBool32 bidirectionalFlowSupported; VkBool32 globalFlowSupported; uint32_t minWidth; uint32_t minHeight; uint32_t maxWidth; uint32_t maxHeight; uint32_t maxNumRegionsOfInterest; } VkPhysicalDeviceOpticalFlowPropertiesNV32; typedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM32 { VkStructureType sType; PTR32 pNext; uint64_t DECLSPEC_ALIGN(8) shaderCoreMask; uint32_t shaderCoreCount; uint32_t shaderWarpsPerCore; } VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM32; typedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV32 { VkStructureType sType; PTR32 pNext; VkRayTracingInvocationReorderModeNV rayTracingInvocationReorderReorderingHint; } VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV32; typedef struct VkPhysicalDeviceProperties232 { VkStructureType sType; PTR32 pNext; VkPhysicalDeviceProperties32 DECLSPEC_ALIGN(8) properties; } VkPhysicalDeviceProperties232; typedef VkPhysicalDeviceProperties232 VkPhysicalDeviceProperties2KHR32; typedef struct VkQueueFamilyGlobalPriorityPropertiesKHR32 { VkStructureType sType; PTR32 pNext; uint32_t priorityCount; VkQueueGlobalPriorityKHR priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_KHR]; } VkQueueFamilyGlobalPriorityPropertiesKHR32; typedef VkQueueFamilyGlobalPriorityPropertiesKHR32 VkQueueFamilyGlobalPriorityPropertiesEXT32; typedef struct VkQueueFamilyCheckpointPropertiesNV32 { VkStructureType sType; PTR32 pNext; VkPipelineStageFlags checkpointExecutionStageMask; } VkQueueFamilyCheckpointPropertiesNV32; typedef struct VkQueueFamilyCheckpointProperties2NV32 { VkStructureType sType; PTR32 pNext; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) checkpointExecutionStageMask; } VkQueueFamilyCheckpointProperties2NV32; typedef struct VkQueueFamilyProperties232 { VkStructureType sType; PTR32 pNext; VkQueueFamilyProperties queueFamilyProperties; } VkQueueFamilyProperties232; typedef VkQueueFamilyProperties232 VkQueueFamilyProperties2KHR32; typedef struct VkPhysicalDeviceSparseImageFormatInfo232 { VkStructureType sType; PTR32 pNext; VkFormat format; VkImageType type; VkSampleCountFlagBits samples; VkImageUsageFlags usage; VkImageTiling tiling; } VkPhysicalDeviceSparseImageFormatInfo232; typedef VkPhysicalDeviceSparseImageFormatInfo232 VkPhysicalDeviceSparseImageFormatInfo2KHR32; typedef struct VkSparseImageFormatProperties232 { VkStructureType sType; PTR32 pNext; VkSparseImageFormatProperties properties; } VkSparseImageFormatProperties232; typedef VkSparseImageFormatProperties232 VkSparseImageFormatProperties2KHR32; typedef struct VkFramebufferMixedSamplesCombinationNV32 { VkStructureType sType; PTR32 pNext; VkCoverageReductionModeNV coverageReductionMode; VkSampleCountFlagBits rasterizationSamples; VkSampleCountFlags depthStencilSamples; VkSampleCountFlags colorSamples; } VkFramebufferMixedSamplesCombinationNV32; typedef struct VkPhysicalDeviceSurfaceInfo2KHR32 { VkStructureType sType; PTR32 pNext; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; } VkPhysicalDeviceSurfaceInfo2KHR32; typedef struct VkSurfaceCapabilitiesPresentBarrierNV32 { VkStructureType sType; PTR32 pNext; VkBool32 presentBarrierSupported; } VkSurfaceCapabilitiesPresentBarrierNV32; typedef struct VkSurfaceCapabilities2KHR32 { VkStructureType sType; PTR32 pNext; VkSurfaceCapabilitiesKHR surfaceCapabilities; } VkSurfaceCapabilities2KHR32; typedef struct VkSurfaceFormat2KHR32 { VkStructureType sType; PTR32 pNext; VkSurfaceFormatKHR surfaceFormat; } VkSurfaceFormat2KHR32; typedef struct VkPhysicalDeviceToolProperties32 { VkStructureType sType; PTR32 pNext; char name[VK_MAX_EXTENSION_NAME_SIZE]; char version[VK_MAX_EXTENSION_NAME_SIZE]; VkToolPurposeFlags purposes; char description[VK_MAX_DESCRIPTION_SIZE]; char layer[VK_MAX_EXTENSION_NAME_SIZE]; } VkPhysicalDeviceToolProperties32; typedef VkPhysicalDeviceToolProperties32 VkPhysicalDeviceToolPropertiesEXT32; typedef struct VkPipelineExecutableInfoKHR32 { VkStructureType sType; PTR32 pNext; VkPipeline DECLSPEC_ALIGN(8) pipeline; uint32_t executableIndex; } VkPipelineExecutableInfoKHR32; typedef struct VkPipelineExecutableInternalRepresentationKHR32 { VkStructureType sType; PTR32 pNext; char name[VK_MAX_DESCRIPTION_SIZE]; char description[VK_MAX_DESCRIPTION_SIZE]; VkBool32 isText; PTR32 dataSize; PTR32 pData; } VkPipelineExecutableInternalRepresentationKHR32; typedef struct VkPipelineInfoKHR32 { VkStructureType sType; PTR32 pNext; VkPipeline DECLSPEC_ALIGN(8) pipeline; } VkPipelineInfoKHR32; typedef VkPipelineInfoKHR32 VkPipelineInfoEXT32; typedef struct VkPipelineExecutablePropertiesKHR32 { VkStructureType sType; PTR32 pNext; VkShaderStageFlags stages; char name[VK_MAX_DESCRIPTION_SIZE]; char description[VK_MAX_DESCRIPTION_SIZE]; uint32_t subgroupSize; } VkPipelineExecutablePropertiesKHR32; typedef union VkPipelineExecutableStatisticValueKHR32 { VkBool32 b32; int64_t i64; uint64_t DECLSPEC_ALIGN(8) u64; double f64; } VkPipelineExecutableStatisticValueKHR32; typedef struct VkPipelineExecutableStatisticKHR32 { VkStructureType sType; PTR32 pNext; char name[VK_MAX_DESCRIPTION_SIZE]; char description[VK_MAX_DESCRIPTION_SIZE]; VkPipelineExecutableStatisticFormatKHR format; VkPipelineExecutableStatisticValueKHR32 DECLSPEC_ALIGN(8) value; } VkPipelineExecutableStatisticKHR32; typedef struct VkCheckpointData2NV32 { VkStructureType sType; PTR32 pNext; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) stage; PTR32 pCheckpointMarker; } VkCheckpointData2NV32; typedef struct VkCheckpointDataNV32 { VkStructureType sType; PTR32 pNext; VkPipelineStageFlagBits stage; PTR32 pCheckpointMarker; } VkCheckpointDataNV32; typedef struct VkSamplerCaptureDescriptorDataInfoEXT32 { VkStructureType sType; PTR32 pNext; VkSampler DECLSPEC_ALIGN(8) sampler; } VkSamplerCaptureDescriptorDataInfoEXT32; typedef struct VkShaderModuleIdentifierEXT32 { VkStructureType sType; PTR32 pNext; uint32_t identifierSize; uint8_t identifier[VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT]; } VkShaderModuleIdentifierEXT32; typedef struct VkInitializePerformanceApiInfoINTEL32 { VkStructureType sType; PTR32 pNext; PTR32 pUserData; } VkInitializePerformanceApiInfoINTEL32; typedef struct VkSparseMemoryBind32 { VkDeviceSize DECLSPEC_ALIGN(8) resourceOffset; VkDeviceSize DECLSPEC_ALIGN(8) size; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) memoryOffset; VkSparseMemoryBindFlags flags; } VkSparseMemoryBind32; typedef struct VkSparseBufferMemoryBindInfo32 { VkBuffer DECLSPEC_ALIGN(8) buffer; uint32_t bindCount; PTR32 pBinds; } VkSparseBufferMemoryBindInfo32; typedef struct VkSparseImageOpaqueMemoryBindInfo32 { VkImage DECLSPEC_ALIGN(8) image; uint32_t bindCount; PTR32 pBinds; } VkSparseImageOpaqueMemoryBindInfo32; typedef struct VkSparseImageMemoryBind32 { VkImageSubresource subresource; VkOffset3D offset; VkExtent3D extent; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) memoryOffset; VkSparseMemoryBindFlags flags; } VkSparseImageMemoryBind32; typedef struct VkSparseImageMemoryBindInfo32 { VkImage DECLSPEC_ALIGN(8) image; uint32_t bindCount; PTR32 pBinds; } VkSparseImageMemoryBindInfo32; typedef struct VkDeviceGroupBindSparseInfo32 { VkStructureType sType; PTR32 pNext; uint32_t resourceDeviceIndex; uint32_t memoryDeviceIndex; } VkDeviceGroupBindSparseInfo32; typedef VkDeviceGroupBindSparseInfo32 VkDeviceGroupBindSparseInfoKHR32; typedef struct VkTimelineSemaphoreSubmitInfo32 { VkStructureType sType; PTR32 pNext; uint32_t waitSemaphoreValueCount; PTR32 pWaitSemaphoreValues; uint32_t signalSemaphoreValueCount; PTR32 pSignalSemaphoreValues; } VkTimelineSemaphoreSubmitInfo32; typedef VkTimelineSemaphoreSubmitInfo32 VkTimelineSemaphoreSubmitInfoKHR32; typedef struct VkBindSparseInfo32 { VkStructureType sType; PTR32 pNext; uint32_t waitSemaphoreCount; PTR32 pWaitSemaphores; uint32_t bufferBindCount; PTR32 pBufferBinds; uint32_t imageOpaqueBindCount; PTR32 pImageOpaqueBinds; uint32_t imageBindCount; PTR32 pImageBinds; uint32_t signalSemaphoreCount; PTR32 pSignalSemaphores; } VkBindSparseInfo32; typedef struct VkPresentRegionKHR32 { uint32_t rectangleCount; PTR32 pRectangles; } VkPresentRegionKHR32; typedef struct VkPresentRegionsKHR32 { VkStructureType sType; PTR32 pNext; uint32_t swapchainCount; PTR32 pRegions; } VkPresentRegionsKHR32; typedef struct VkDeviceGroupPresentInfoKHR32 { VkStructureType sType; PTR32 pNext; uint32_t swapchainCount; PTR32 pDeviceMasks; VkDeviceGroupPresentModeFlagBitsKHR mode; } VkDeviceGroupPresentInfoKHR32; typedef struct VkPresentIdKHR32 { VkStructureType sType; PTR32 pNext; uint32_t swapchainCount; PTR32 pPresentIds; } VkPresentIdKHR32; typedef struct VkPresentInfoKHR32 { VkStructureType sType; PTR32 pNext; uint32_t waitSemaphoreCount; PTR32 pWaitSemaphores; uint32_t swapchainCount; PTR32 pSwapchains; PTR32 pImageIndices; PTR32 pResults; } VkPresentInfoKHR32; typedef struct VkDeviceGroupSubmitInfo32 { VkStructureType sType; PTR32 pNext; uint32_t waitSemaphoreCount; PTR32 pWaitSemaphoreDeviceIndices; uint32_t commandBufferCount; PTR32 pCommandBufferDeviceMasks; uint32_t signalSemaphoreCount; PTR32 pSignalSemaphoreDeviceIndices; } VkDeviceGroupSubmitInfo32; typedef VkDeviceGroupSubmitInfo32 VkDeviceGroupSubmitInfoKHR32; typedef struct VkProtectedSubmitInfo32 { VkStructureType sType; PTR32 pNext; VkBool32 protectedSubmit; } VkProtectedSubmitInfo32; typedef struct VkPerformanceQuerySubmitInfoKHR32 { VkStructureType sType; PTR32 pNext; uint32_t counterPassIndex; } VkPerformanceQuerySubmitInfoKHR32; typedef struct VkSubmitInfo32 { VkStructureType sType; PTR32 pNext; uint32_t waitSemaphoreCount; PTR32 pWaitSemaphores; PTR32 pWaitDstStageMask; uint32_t commandBufferCount; PTR32 pCommandBuffers; uint32_t signalSemaphoreCount; PTR32 pSignalSemaphores; } VkSubmitInfo32; typedef struct VkSemaphoreSubmitInfo32 { VkStructureType sType; PTR32 pNext; VkSemaphore DECLSPEC_ALIGN(8) semaphore; uint64_t DECLSPEC_ALIGN(8) value; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) stageMask; uint32_t deviceIndex; } VkSemaphoreSubmitInfo32; typedef VkSemaphoreSubmitInfo32 VkSemaphoreSubmitInfoKHR32; typedef struct VkCommandBufferSubmitInfo32 { VkStructureType sType; PTR32 pNext; PTR32 commandBuffer; uint32_t deviceMask; } VkCommandBufferSubmitInfo32; typedef VkCommandBufferSubmitInfo32 VkCommandBufferSubmitInfoKHR32; typedef struct VkSubmitInfo232 { VkStructureType sType; PTR32 pNext; VkSubmitFlags flags; uint32_t waitSemaphoreInfoCount; PTR32 pWaitSemaphoreInfos; uint32_t commandBufferInfoCount; PTR32 pCommandBufferInfos; uint32_t signalSemaphoreInfoCount; PTR32 pSignalSemaphoreInfos; } VkSubmitInfo232; typedef VkSubmitInfo232 VkSubmitInfo2KHR32; typedef struct VkDebugUtilsObjectTagInfoEXT32 { VkStructureType sType; PTR32 pNext; VkObjectType objectType; uint64_t DECLSPEC_ALIGN(8) objectHandle; uint64_t DECLSPEC_ALIGN(8) tagName; PTR32 tagSize; PTR32 pTag; } VkDebugUtilsObjectTagInfoEXT32; typedef struct VkSemaphoreSignalInfo32 { VkStructureType sType; PTR32 pNext; VkSemaphore DECLSPEC_ALIGN(8) semaphore; uint64_t DECLSPEC_ALIGN(8) value; } VkSemaphoreSignalInfo32; typedef VkSemaphoreSignalInfo32 VkSemaphoreSignalInfoKHR32; typedef struct VkDeviceAddressBindingCallbackDataEXT32 { VkStructureType sType; PTR32 pNext; VkDeviceAddressBindingFlagsEXT flags; VkDeviceAddress DECLSPEC_ALIGN(8) baseAddress; VkDeviceSize DECLSPEC_ALIGN(8) size; VkDeviceAddressBindingTypeEXT bindingType; } VkDeviceAddressBindingCallbackDataEXT32; typedef struct VkDebugUtilsMessengerCallbackDataEXT32 { VkStructureType sType; PTR32 pNext; VkDebugUtilsMessengerCallbackDataFlagsEXT flags; PTR32 pMessageIdName; int32_t messageIdNumber; PTR32 pMessage; uint32_t queueLabelCount; PTR32 pQueueLabels; uint32_t cmdBufLabelCount; PTR32 pCmdBufLabels; uint32_t objectCount; PTR32 pObjects; } VkDebugUtilsMessengerCallbackDataEXT32; typedef struct VkCopyDescriptorSet32 { VkStructureType sType; PTR32 pNext; VkDescriptorSet DECLSPEC_ALIGN(8) srcSet; uint32_t srcBinding; uint32_t srcArrayElement; VkDescriptorSet DECLSPEC_ALIGN(8) dstSet; uint32_t dstBinding; uint32_t dstArrayElement; uint32_t descriptorCount; } VkCopyDescriptorSet32; typedef struct VkSemaphoreWaitInfo32 { VkStructureType sType; PTR32 pNext; VkSemaphoreWaitFlags flags; uint32_t semaphoreCount; PTR32 pSemaphores; PTR32 pValues; } VkSemaphoreWaitInfo32; typedef VkSemaphoreWaitInfo32 VkSemaphoreWaitInfoKHR32; static uint64_t wine_vk_unwrap_handle(uint32_t type, uint64_t handle) { switch(type) { case VK_OBJECT_TYPE_COMMAND_BUFFER: return (uint64_t) (uintptr_t) wine_cmd_buffer_from_handle(((VkCommandBuffer) (uintptr_t) handle))->command_buffer; case VK_OBJECT_TYPE_COMMAND_POOL: return (uint64_t) wine_cmd_pool_from_handle(handle)->command_pool; case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT: return (uint64_t) wine_debug_report_callback_from_handle(handle)->debug_callback; case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT: return (uint64_t) wine_debug_utils_messenger_from_handle(handle)->debug_messenger; case VK_OBJECT_TYPE_DEVICE: return (uint64_t) (uintptr_t) wine_device_from_handle(((VkDevice) (uintptr_t) handle))->device; case VK_OBJECT_TYPE_DEVICE_MEMORY: return (uint64_t) wine_device_memory_from_handle(handle)->memory; case VK_OBJECT_TYPE_INSTANCE: return (uint64_t) (uintptr_t) wine_instance_from_handle(((VkInstance) (uintptr_t) handle))->instance; case VK_OBJECT_TYPE_PHYSICAL_DEVICE: return (uint64_t) (uintptr_t) wine_phys_dev_from_handle(((VkPhysicalDevice) (uintptr_t) handle))->phys_dev; case VK_OBJECT_TYPE_QUEUE: return (uint64_t) (uintptr_t) wine_queue_from_handle(((VkQueue) (uintptr_t) handle))->queue; case VK_OBJECT_TYPE_SURFACE_KHR: return (uint64_t) wine_surface_from_handle(handle)->surface; default: return handle; } } static inline void convert_VkAcquireNextImageInfoKHR_win32_to_host(const VkAcquireNextImageInfoKHR32 *in, VkAcquireNextImageInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->swapchain = in->swapchain; out->timeout = in->timeout; out->semaphore = in->semaphore; out->fence = in->fence; out->deviceMask = in->deviceMask; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPerformanceConfigurationAcquireInfoINTEL_win32_to_host(const VkPerformanceConfigurationAcquireInfoINTEL32 *in, VkPerformanceConfigurationAcquireInfoINTEL *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkAcquireProfilingLockInfoKHR_win32_to_host(const VkAcquireProfilingLockInfoKHR32 *in, VkAcquireProfilingLockInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->timeout = in->timeout; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCommandBufferAllocateInfo_win32_to_unwrapped_host(const VkCommandBufferAllocateInfo32 *in, VkCommandBufferAllocateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->commandPool = in->commandPool; out->level = in->level; out->commandBufferCount = in->commandBufferCount; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline VkCommandBuffer *convert_VkCommandBuffer_array_win32_to_unwrapped_host(struct conversion_context *ctx, const PTR32 *in, uint32_t count) { VkCommandBuffer *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] = UlongToPtr(in[i]); } return out; } static inline void convert_VkDescriptorSetAllocateInfo_win32_to_host(struct conversion_context *ctx, const VkDescriptorSetAllocateInfo32 *in, VkDescriptorSetAllocateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->descriptorPool = in->descriptorPool; out->descriptorSetCount = in->descriptorSetCount; out->pSetLayouts = (const VkDescriptorSetLayout *)UlongToPtr(in->pSetLayouts); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: { VkDescriptorSetVariableDescriptorCountAllocateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDescriptorSetVariableDescriptorCountAllocateInfo32 *in_ext = (const VkDescriptorSetVariableDescriptorCountAllocateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO; out_ext->pNext = NULL; out_ext->descriptorSetCount = in_ext->descriptorSetCount; out_ext->pDescriptorCounts = (const uint32_t *)UlongToPtr(in_ext->pDescriptorCounts); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkMemoryAllocateInfo_win32_to_host(struct conversion_context *ctx, const VkMemoryAllocateInfo32 *in, VkMemoryAllocateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->allocationSize = in->allocationSize; out->memoryTypeIndex = in->memoryTypeIndex; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: { VkDedicatedAllocationMemoryAllocateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDedicatedAllocationMemoryAllocateInfoNV32 *in_ext = (const VkDedicatedAllocationMemoryAllocateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV; out_ext->pNext = NULL; out_ext->image = in_ext->image; out_ext->buffer = in_ext->buffer; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: { VkExportMemoryAllocateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkExportMemoryAllocateInfo32 *in_ext = (const VkExportMemoryAllocateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO; out_ext->pNext = NULL; out_ext->handleTypes = in_ext->handleTypes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: { VkImportMemoryWin32HandleInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImportMemoryWin32HandleInfoKHR32 *in_ext = (const VkImportMemoryWin32HandleInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR; out_ext->pNext = NULL; out_ext->handleType = in_ext->handleType; out_ext->handle = in_ext->handle; out_ext->name = in_ext->name; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR: { VkExportMemoryWin32HandleInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkExportMemoryWin32HandleInfoKHR32 *in_ext = (const VkExportMemoryWin32HandleInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR; out_ext->pNext = NULL; out_ext->pAttributes = (const SECURITY_ATTRIBUTES *)UlongToPtr(in_ext->pAttributes); out_ext->dwAccess = in_ext->dwAccess; out_ext->name = in_ext->name; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: { VkMemoryAllocateFlagsInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMemoryAllocateFlagsInfo32 *in_ext = (const VkMemoryAllocateFlagsInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->deviceMask = in_ext->deviceMask; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: { VkMemoryDedicatedAllocateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMemoryDedicatedAllocateInfo32 *in_ext = (const VkMemoryDedicatedAllocateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO; out_ext->pNext = NULL; out_ext->image = in_ext->image; out_ext->buffer = in_ext->buffer; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: { VkImportMemoryHostPointerInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImportMemoryHostPointerInfoEXT32 *in_ext = (const VkImportMemoryHostPointerInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT; out_ext->pNext = NULL; out_ext->handleType = in_ext->handleType; out_ext->pHostPointer = (void *)UlongToPtr(in_ext->pHostPointer); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT: { VkMemoryPriorityAllocateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMemoryPriorityAllocateInfoEXT32 *in_ext = (const VkMemoryPriorityAllocateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT; out_ext->pNext = NULL; out_ext->priority = in_ext->priority; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: { VkMemoryOpaqueCaptureAddressAllocateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMemoryOpaqueCaptureAddressAllocateInfo32 *in_ext = (const VkMemoryOpaqueCaptureAddressAllocateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO; out_ext->pNext = NULL; out_ext->opaqueCaptureAddress = in_ext->opaqueCaptureAddress; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkCommandBufferInheritanceInfo_win32_to_host(struct conversion_context *ctx, const VkCommandBufferInheritanceInfo32 *in, VkCommandBufferInheritanceInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->renderPass = in->renderPass; out->subpass = in->subpass; out->framebuffer = in->framebuffer; out->occlusionQueryEnable = in->occlusionQueryEnable; out->queryFlags = in->queryFlags; out->pipelineStatistics = in->pipelineStatistics; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT: { VkCommandBufferInheritanceConditionalRenderingInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkCommandBufferInheritanceConditionalRenderingInfoEXT32 *in_ext = (const VkCommandBufferInheritanceConditionalRenderingInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT; out_ext->pNext = NULL; out_ext->conditionalRenderingEnable = in_ext->conditionalRenderingEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM: { VkCommandBufferInheritanceRenderPassTransformInfoQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkCommandBufferInheritanceRenderPassTransformInfoQCOM32 *in_ext = (const VkCommandBufferInheritanceRenderPassTransformInfoQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM; out_ext->pNext = NULL; out_ext->transform = in_ext->transform; out_ext->renderArea = in_ext->renderArea; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV: { VkCommandBufferInheritanceViewportScissorInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkCommandBufferInheritanceViewportScissorInfoNV32 *in_ext = (const VkCommandBufferInheritanceViewportScissorInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV; out_ext->pNext = NULL; out_ext->viewportScissor2D = in_ext->viewportScissor2D; out_ext->viewportDepthCount = in_ext->viewportDepthCount; out_ext->pViewportDepths = (const VkViewport *)UlongToPtr(in_ext->pViewportDepths); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: { VkCommandBufferInheritanceRenderingInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkCommandBufferInheritanceRenderingInfo32 *in_ext = (const VkCommandBufferInheritanceRenderingInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->viewMask = in_ext->viewMask; out_ext->colorAttachmentCount = in_ext->colorAttachmentCount; out_ext->pColorAttachmentFormats = (const VkFormat *)UlongToPtr(in_ext->pColorAttachmentFormats); out_ext->depthAttachmentFormat = in_ext->depthAttachmentFormat; out_ext->stencilAttachmentFormat = in_ext->stencilAttachmentFormat; out_ext->rasterizationSamples = in_ext->rasterizationSamples; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: { VkAttachmentSampleCountInfoAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkAttachmentSampleCountInfoAMD32 *in_ext = (const VkAttachmentSampleCountInfoAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD; out_ext->pNext = NULL; out_ext->colorAttachmentCount = in_ext->colorAttachmentCount; out_ext->pColorAttachmentSamples = (const VkSampleCountFlagBits *)UlongToPtr(in_ext->pColorAttachmentSamples); out_ext->depthStencilAttachmentSamples = in_ext->depthStencilAttachmentSamples; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: { VkMultiviewPerViewAttributesInfoNVX *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMultiviewPerViewAttributesInfoNVX32 *in_ext = (const VkMultiviewPerViewAttributesInfoNVX32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX; out_ext->pNext = NULL; out_ext->perViewAttributes = in_ext->perViewAttributes; out_ext->perViewAttributesPositionXOnly = in_ext->perViewAttributesPositionXOnly; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkCommandBufferInheritanceInfo *convert_VkCommandBufferInheritanceInfo_array_win32_to_host(struct conversion_context *ctx, const VkCommandBufferInheritanceInfo32 *in, uint32_t count) { VkCommandBufferInheritanceInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCommandBufferInheritanceInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkCommandBufferBeginInfo_win32_to_host(struct conversion_context *ctx, const VkCommandBufferBeginInfo32 *in, VkCommandBufferBeginInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->pInheritanceInfo = convert_VkCommandBufferInheritanceInfo_array_win32_to_host(ctx, (const VkCommandBufferInheritanceInfo32 *)UlongToPtr(in->pInheritanceInfo), 1); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: { VkDeviceGroupCommandBufferBeginInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupCommandBufferBeginInfo32 *in_ext = (const VkDeviceGroupCommandBufferBeginInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO; out_ext->pNext = NULL; out_ext->deviceMask = in_ext->deviceMask; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline void convert_VkBindAccelerationStructureMemoryInfoNV_win64_to_host(const VkBindAccelerationStructureMemoryInfoNV *in, VkBindAccelerationStructureMemoryInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->accelerationStructure = in->accelerationStructure; out->memory = wine_device_memory_from_handle(in->memory)->memory; out->memoryOffset = in->memoryOffset; out->deviceIndexCount = in->deviceIndexCount; out->pDeviceIndices = in->pDeviceIndices; } #endif /* _WIN64 */ static inline void convert_VkBindAccelerationStructureMemoryInfoNV_win32_to_host(const VkBindAccelerationStructureMemoryInfoNV32 *in, VkBindAccelerationStructureMemoryInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->accelerationStructure = in->accelerationStructure; out->memory = wine_device_memory_from_handle(in->memory)->memory; out->memoryOffset = in->memoryOffset; out->deviceIndexCount = in->deviceIndexCount; out->pDeviceIndices = (const uint32_t *)UlongToPtr(in->pDeviceIndices); if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline const VkBindAccelerationStructureMemoryInfoNV *convert_VkBindAccelerationStructureMemoryInfoNV_array_win64_to_host(struct conversion_context *ctx, const VkBindAccelerationStructureMemoryInfoNV *in, uint32_t count) { VkBindAccelerationStructureMemoryInfoNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBindAccelerationStructureMemoryInfoNV_win64_to_host(&in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkBindAccelerationStructureMemoryInfoNV *convert_VkBindAccelerationStructureMemoryInfoNV_array_win32_to_host(struct conversion_context *ctx, const VkBindAccelerationStructureMemoryInfoNV32 *in, uint32_t count) { VkBindAccelerationStructureMemoryInfoNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBindAccelerationStructureMemoryInfoNV_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkBindBufferMemoryInfo_win64_to_host(const VkBindBufferMemoryInfo *in, VkBindBufferMemoryInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->buffer = in->buffer; out->memory = wine_device_memory_from_handle(in->memory)->memory; out->memoryOffset = in->memoryOffset; } #endif /* _WIN64 */ static inline void convert_VkBindBufferMemoryInfo_win32_to_host(struct conversion_context *ctx, const VkBindBufferMemoryInfo32 *in, VkBindBufferMemoryInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->buffer = in->buffer; out->memory = wine_device_memory_from_handle(in->memory)->memory; out->memoryOffset = in->memoryOffset; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: { VkBindBufferMemoryDeviceGroupInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkBindBufferMemoryDeviceGroupInfo32 *in_ext = (const VkBindBufferMemoryDeviceGroupInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO; out_ext->pNext = NULL; out_ext->deviceIndexCount = in_ext->deviceIndexCount; out_ext->pDeviceIndices = (const uint32_t *)UlongToPtr(in_ext->pDeviceIndices); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline const VkBindBufferMemoryInfo *convert_VkBindBufferMemoryInfo_array_win64_to_host(struct conversion_context *ctx, const VkBindBufferMemoryInfo *in, uint32_t count) { VkBindBufferMemoryInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBindBufferMemoryInfo_win64_to_host(&in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkBindBufferMemoryInfo *convert_VkBindBufferMemoryInfo_array_win32_to_host(struct conversion_context *ctx, const VkBindBufferMemoryInfo32 *in, uint32_t count) { VkBindBufferMemoryInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBindBufferMemoryInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkBindImageMemoryInfo_win64_to_host(const VkBindImageMemoryInfo *in, VkBindImageMemoryInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->image = in->image; out->memory = wine_device_memory_from_handle(in->memory)->memory; out->memoryOffset = in->memoryOffset; } #endif /* _WIN64 */ static inline void convert_VkBindImageMemoryInfo_win32_to_host(struct conversion_context *ctx, const VkBindImageMemoryInfo32 *in, VkBindImageMemoryInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->image = in->image; out->memory = wine_device_memory_from_handle(in->memory)->memory; out->memoryOffset = in->memoryOffset; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: { VkBindImageMemoryDeviceGroupInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkBindImageMemoryDeviceGroupInfo32 *in_ext = (const VkBindImageMemoryDeviceGroupInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO; out_ext->pNext = NULL; out_ext->deviceIndexCount = in_ext->deviceIndexCount; out_ext->pDeviceIndices = (const uint32_t *)UlongToPtr(in_ext->pDeviceIndices); out_ext->splitInstanceBindRegionCount = in_ext->splitInstanceBindRegionCount; out_ext->pSplitInstanceBindRegions = (const VkRect2D *)UlongToPtr(in_ext->pSplitInstanceBindRegions); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: { VkBindImageMemorySwapchainInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkBindImageMemorySwapchainInfoKHR32 *in_ext = (const VkBindImageMemorySwapchainInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR; out_ext->pNext = NULL; out_ext->swapchain = in_ext->swapchain; out_ext->imageIndex = in_ext->imageIndex; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: { VkBindImagePlaneMemoryInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkBindImagePlaneMemoryInfo32 *in_ext = (const VkBindImagePlaneMemoryInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO; out_ext->pNext = NULL; out_ext->planeAspect = in_ext->planeAspect; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline const VkBindImageMemoryInfo *convert_VkBindImageMemoryInfo_array_win64_to_host(struct conversion_context *ctx, const VkBindImageMemoryInfo *in, uint32_t count) { VkBindImageMemoryInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBindImageMemoryInfo_win64_to_host(&in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkBindImageMemoryInfo *convert_VkBindImageMemoryInfo_array_win32_to_host(struct conversion_context *ctx, const VkBindImageMemoryInfo32 *in, uint32_t count) { VkBindImageMemoryInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBindImageMemoryInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline const VkMicromapUsageEXT * const*convert_VkMicromapUsageEXT_pointer_array_win32_to_host(struct conversion_context *ctx, const PTR32 *in, uint32_t count) { VkMicromapUsageEXT **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] = UlongToPtr(in[i]); } return (void *)out; } static inline void convert_VkAccelerationStructureGeometryTrianglesDataKHR_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureGeometryTrianglesDataKHR32 *in, VkAccelerationStructureGeometryTrianglesDataKHR *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->vertexFormat = in->vertexFormat; out->vertexData = in->vertexData; out->vertexStride = in->vertexStride; out->maxVertex = in->maxVertex; out->indexType = in->indexType; out->indexData = in->indexData; out->transformData = in->transformData; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV: { VkAccelerationStructureGeometryMotionTrianglesDataNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkAccelerationStructureGeometryMotionTrianglesDataNV32 *in_ext = (const VkAccelerationStructureGeometryMotionTrianglesDataNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV; out_ext->pNext = NULL; out_ext->vertexData = in_ext->vertexData; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT: { VkAccelerationStructureTrianglesOpacityMicromapEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkAccelerationStructureTrianglesOpacityMicromapEXT32 *in_ext = (const VkAccelerationStructureTrianglesOpacityMicromapEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT; out_ext->pNext = NULL; out_ext->indexType = in_ext->indexType; out_ext->indexBuffer = in_ext->indexBuffer; out_ext->indexStride = in_ext->indexStride; out_ext->baseTriangle = in_ext->baseTriangle; out_ext->usageCountsCount = in_ext->usageCountsCount; out_ext->pUsageCounts = (const VkMicromapUsageEXT *)UlongToPtr(in_ext->pUsageCounts); out_ext->ppUsageCounts = convert_VkMicromapUsageEXT_pointer_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in_ext->ppUsageCounts), in_ext->usageCountsCount); out_ext->micromap = in_ext->micromap; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkAccelerationStructureGeometryAabbsDataKHR_win32_to_host(const VkAccelerationStructureGeometryAabbsDataKHR32 *in, VkAccelerationStructureGeometryAabbsDataKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->data = in->data; out->stride = in->stride; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkAccelerationStructureGeometryInstancesDataKHR_win32_to_host(const VkAccelerationStructureGeometryInstancesDataKHR32 *in, VkAccelerationStructureGeometryInstancesDataKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->arrayOfPointers = in->arrayOfPointers; out->data = in->data; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkAccelerationStructureGeometryDataKHR_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureGeometryDataKHR32 *in, VkAccelerationStructureGeometryDataKHR *out, VkFlags selector) { if (!in) return; if (selector == VK_GEOMETRY_TYPE_TRIANGLES_KHR) convert_VkAccelerationStructureGeometryTrianglesDataKHR_win32_to_host(ctx, &in->triangles, &out->triangles); if (selector == VK_GEOMETRY_TYPE_AABBS_KHR) convert_VkAccelerationStructureGeometryAabbsDataKHR_win32_to_host(&in->aabbs, &out->aabbs); if (selector == VK_GEOMETRY_TYPE_INSTANCES_KHR) convert_VkAccelerationStructureGeometryInstancesDataKHR_win32_to_host(&in->instances, &out->instances); } static inline void convert_VkAccelerationStructureGeometryKHR_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureGeometryKHR32 *in, VkAccelerationStructureGeometryKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->geometryType = in->geometryType; convert_VkAccelerationStructureGeometryDataKHR_win32_to_host(ctx, &in->geometry, &out->geometry, in->geometryType); out->flags = in->flags; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkAccelerationStructureGeometryKHR *convert_VkAccelerationStructureGeometryKHR_array_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureGeometryKHR32 *in, uint32_t count) { VkAccelerationStructureGeometryKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkAccelerationStructureGeometryKHR_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline const VkAccelerationStructureGeometryKHR * const*convert_VkAccelerationStructureGeometryKHR_pointer_array_win32_to_host(struct conversion_context *ctx, const PTR32 *in, uint32_t count) { VkAccelerationStructureGeometryKHR **out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { if (in[i]) { out[i] = conversion_context_alloc(ctx, sizeof(*out[i])); convert_VkAccelerationStructureGeometryKHR_win32_to_host(ctx, (VkAccelerationStructureGeometryKHR32 *)UlongToPtr(in[i]), out[i]); } else out[i] = NULL; } return (void *)out; } static inline void convert_VkAccelerationStructureBuildGeometryInfoKHR_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureBuildGeometryInfoKHR32 *in, VkAccelerationStructureBuildGeometryInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; out->flags = in->flags; out->mode = in->mode; out->srcAccelerationStructure = in->srcAccelerationStructure; out->dstAccelerationStructure = in->dstAccelerationStructure; out->geometryCount = in->geometryCount; out->pGeometries = convert_VkAccelerationStructureGeometryKHR_array_win32_to_host(ctx, (const VkAccelerationStructureGeometryKHR32 *)UlongToPtr(in->pGeometries), in->geometryCount); out->ppGeometries = convert_VkAccelerationStructureGeometryKHR_pointer_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in->ppGeometries), in->geometryCount); out->scratchData = in->scratchData; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkAccelerationStructureBuildGeometryInfoKHR *convert_VkAccelerationStructureBuildGeometryInfoKHR_array_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureBuildGeometryInfoKHR32 *in, uint32_t count) { VkAccelerationStructureBuildGeometryInfoKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkAccelerationStructureBuildGeometryInfoKHR_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkMicromapBuildInfoEXT_win32_to_host(struct conversion_context *ctx, const VkMicromapBuildInfoEXT32 *in, VkMicromapBuildInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; out->flags = in->flags; out->mode = in->mode; out->dstMicromap = in->dstMicromap; out->usageCountsCount = in->usageCountsCount; out->pUsageCounts = (const VkMicromapUsageEXT *)UlongToPtr(in->pUsageCounts); out->ppUsageCounts = convert_VkMicromapUsageEXT_pointer_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in->ppUsageCounts), in->usageCountsCount); out->data = in->data; out->scratchData = in->scratchData; out->triangleArray = in->triangleArray; out->triangleArrayStride = in->triangleArrayStride; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkMicromapBuildInfoEXT *convert_VkMicromapBuildInfoEXT_array_win32_to_host(struct conversion_context *ctx, const VkMicromapBuildInfoEXT32 *in, uint32_t count) { VkMicromapBuildInfoEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkMicromapBuildInfoEXT_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkConditionalRenderingBeginInfoEXT_win32_to_host(const VkConditionalRenderingBeginInfoEXT32 *in, VkConditionalRenderingBeginInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->buffer = in->buffer; out->offset = in->offset; out->flags = in->flags; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDebugUtilsLabelEXT_win32_to_host(const VkDebugUtilsLabelEXT32 *in, VkDebugUtilsLabelEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pLabelName = (const char *)UlongToPtr(in->pLabelName); memcpy(out->color, in->color, 4 * sizeof(float)); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSampleLocationsInfoEXT_win32_to_host(const VkSampleLocationsInfoEXT32 *in, VkSampleLocationsInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->sampleLocationsPerPixel = in->sampleLocationsPerPixel; out->sampleLocationGridSize = in->sampleLocationGridSize; out->sampleLocationsCount = in->sampleLocationsCount; out->pSampleLocations = (const VkSampleLocationEXT *)UlongToPtr(in->pSampleLocations); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkAttachmentSampleLocationsEXT_win32_to_host(const VkAttachmentSampleLocationsEXT32 *in, VkAttachmentSampleLocationsEXT *out) { if (!in) return; out->attachmentIndex = in->attachmentIndex; convert_VkSampleLocationsInfoEXT_win32_to_host(&in->sampleLocationsInfo, &out->sampleLocationsInfo); } static inline const VkAttachmentSampleLocationsEXT *convert_VkAttachmentSampleLocationsEXT_array_win32_to_host(struct conversion_context *ctx, const VkAttachmentSampleLocationsEXT32 *in, uint32_t count) { VkAttachmentSampleLocationsEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkAttachmentSampleLocationsEXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkSubpassSampleLocationsEXT_win32_to_host(const VkSubpassSampleLocationsEXT32 *in, VkSubpassSampleLocationsEXT *out) { if (!in) return; out->subpassIndex = in->subpassIndex; convert_VkSampleLocationsInfoEXT_win32_to_host(&in->sampleLocationsInfo, &out->sampleLocationsInfo); } static inline const VkSubpassSampleLocationsEXT *convert_VkSubpassSampleLocationsEXT_array_win32_to_host(struct conversion_context *ctx, const VkSubpassSampleLocationsEXT32 *in, uint32_t count) { VkSubpassSampleLocationsEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSubpassSampleLocationsEXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkRenderPassBeginInfo_win32_to_host(struct conversion_context *ctx, const VkRenderPassBeginInfo32 *in, VkRenderPassBeginInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->renderPass = in->renderPass; out->framebuffer = in->framebuffer; out->renderArea = in->renderArea; out->clearValueCount = in->clearValueCount; out->pClearValues = (const VkClearValue *)UlongToPtr(in->pClearValues); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: { VkDeviceGroupRenderPassBeginInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupRenderPassBeginInfo32 *in_ext = (const VkDeviceGroupRenderPassBeginInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO; out_ext->pNext = NULL; out_ext->deviceMask = in_ext->deviceMask; out_ext->deviceRenderAreaCount = in_ext->deviceRenderAreaCount; out_ext->pDeviceRenderAreas = (const VkRect2D *)UlongToPtr(in_ext->pDeviceRenderAreas); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT: { VkRenderPassSampleLocationsBeginInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassSampleLocationsBeginInfoEXT32 *in_ext = (const VkRenderPassSampleLocationsBeginInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT; out_ext->pNext = NULL; out_ext->attachmentInitialSampleLocationsCount = in_ext->attachmentInitialSampleLocationsCount; out_ext->pAttachmentInitialSampleLocations = convert_VkAttachmentSampleLocationsEXT_array_win32_to_host(ctx, (const VkAttachmentSampleLocationsEXT32 *)UlongToPtr(in_ext->pAttachmentInitialSampleLocations), in_ext->attachmentInitialSampleLocationsCount); out_ext->postSubpassSampleLocationsCount = in_ext->postSubpassSampleLocationsCount; out_ext->pPostSubpassSampleLocations = convert_VkSubpassSampleLocationsEXT_array_win32_to_host(ctx, (const VkSubpassSampleLocationsEXT32 *)UlongToPtr(in_ext->pPostSubpassSampleLocations), in_ext->postSubpassSampleLocationsCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: { VkRenderPassAttachmentBeginInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassAttachmentBeginInfo32 *in_ext = (const VkRenderPassAttachmentBeginInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO; out_ext->pNext = NULL; out_ext->attachmentCount = in_ext->attachmentCount; out_ext->pAttachments = (const VkImageView *)UlongToPtr(in_ext->pAttachments); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM: { VkRenderPassTransformBeginInfoQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassTransformBeginInfoQCOM32 *in_ext = (const VkRenderPassTransformBeginInfoQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM; out_ext->pNext = NULL; out_ext->transform = in_ext->transform; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkSubpassBeginInfo_win32_to_host(const VkSubpassBeginInfo32 *in, VkSubpassBeginInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->contents = in->contents; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkRenderingAttachmentInfo_win32_to_host(const VkRenderingAttachmentInfo32 *in, VkRenderingAttachmentInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->imageView = in->imageView; out->imageLayout = in->imageLayout; out->resolveMode = in->resolveMode; out->resolveImageView = in->resolveImageView; out->resolveImageLayout = in->resolveImageLayout; out->loadOp = in->loadOp; out->storeOp = in->storeOp; out->clearValue = in->clearValue; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkRenderingAttachmentInfo *convert_VkRenderingAttachmentInfo_array_win32_to_host(struct conversion_context *ctx, const VkRenderingAttachmentInfo32 *in, uint32_t count) { VkRenderingAttachmentInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkRenderingAttachmentInfo_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkRenderingInfo_win32_to_host(struct conversion_context *ctx, const VkRenderingInfo32 *in, VkRenderingInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->renderArea = in->renderArea; out->layerCount = in->layerCount; out->viewMask = in->viewMask; out->colorAttachmentCount = in->colorAttachmentCount; out->pColorAttachments = convert_VkRenderingAttachmentInfo_array_win32_to_host(ctx, (const VkRenderingAttachmentInfo32 *)UlongToPtr(in->pColorAttachments), in->colorAttachmentCount); out->pDepthAttachment = convert_VkRenderingAttachmentInfo_array_win32_to_host(ctx, (const VkRenderingAttachmentInfo32 *)UlongToPtr(in->pDepthAttachment), 1); out->pStencilAttachment = convert_VkRenderingAttachmentInfo_array_win32_to_host(ctx, (const VkRenderingAttachmentInfo32 *)UlongToPtr(in->pStencilAttachment), 1); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: { VkDeviceGroupRenderPassBeginInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupRenderPassBeginInfo32 *in_ext = (const VkDeviceGroupRenderPassBeginInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO; out_ext->pNext = NULL; out_ext->deviceMask = in_ext->deviceMask; out_ext->deviceRenderAreaCount = in_ext->deviceRenderAreaCount; out_ext->pDeviceRenderAreas = (const VkRect2D *)UlongToPtr(in_ext->pDeviceRenderAreas); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT: { VkMultisampledRenderToSingleSampledInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMultisampledRenderToSingleSampledInfoEXT32 *in_ext = (const VkMultisampledRenderToSingleSampledInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT; out_ext->pNext = NULL; out_ext->multisampledRenderToSingleSampledEnable = in_ext->multisampledRenderToSingleSampledEnable; out_ext->rasterizationSamples = in_ext->rasterizationSamples; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: { VkRenderingFragmentShadingRateAttachmentInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderingFragmentShadingRateAttachmentInfoKHR32 *in_ext = (const VkRenderingFragmentShadingRateAttachmentInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR; out_ext->pNext = NULL; out_ext->imageView = in_ext->imageView; out_ext->imageLayout = in_ext->imageLayout; out_ext->shadingRateAttachmentTexelSize = in_ext->shadingRateAttachmentTexelSize; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: { VkRenderingFragmentDensityMapAttachmentInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderingFragmentDensityMapAttachmentInfoEXT32 *in_ext = (const VkRenderingFragmentDensityMapAttachmentInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT; out_ext->pNext = NULL; out_ext->imageView = in_ext->imageView; out_ext->imageLayout = in_ext->imageLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: { VkMultiviewPerViewAttributesInfoNVX *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMultiviewPerViewAttributesInfoNVX32 *in_ext = (const VkMultiviewPerViewAttributesInfoNVX32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX; out_ext->pNext = NULL; out_ext->perViewAttributes = in_ext->perViewAttributes; out_ext->perViewAttributesPositionXOnly = in_ext->perViewAttributesPositionXOnly; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkDescriptorBufferBindingInfoEXT_win32_to_host(struct conversion_context *ctx, const VkDescriptorBufferBindingInfoEXT32 *in, VkDescriptorBufferBindingInfoEXT *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->address = in->address; out->usage = in->usage; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT: { VkDescriptorBufferBindingPushDescriptorBufferHandleEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDescriptorBufferBindingPushDescriptorBufferHandleEXT32 *in_ext = (const VkDescriptorBufferBindingPushDescriptorBufferHandleEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT; out_ext->pNext = NULL; out_ext->buffer = in_ext->buffer; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkDescriptorBufferBindingInfoEXT *convert_VkDescriptorBufferBindingInfoEXT_array_win32_to_host(struct conversion_context *ctx, const VkDescriptorBufferBindingInfoEXT32 *in, uint32_t count) { VkDescriptorBufferBindingInfoEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDescriptorBufferBindingInfoEXT_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkImageBlit2_win32_to_host(struct conversion_context *ctx, const VkImageBlit232 *in, VkImageBlit2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcSubresource = in->srcSubresource; memcpy(out->srcOffsets, in->srcOffsets, 2 * sizeof(VkOffset3D)); out->dstSubresource = in->dstSubresource; memcpy(out->dstOffsets, in->dstOffsets, 2 * sizeof(VkOffset3D)); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM: { VkCopyCommandTransformInfoQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkCopyCommandTransformInfoQCOM32 *in_ext = (const VkCopyCommandTransformInfoQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM; out_ext->pNext = NULL; out_ext->transform = in_ext->transform; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkImageBlit2 *convert_VkImageBlit2_array_win32_to_host(struct conversion_context *ctx, const VkImageBlit232 *in, uint32_t count) { VkImageBlit2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkImageBlit2_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkBlitImageInfo2_win32_to_host(struct conversion_context *ctx, const VkBlitImageInfo232 *in, VkBlitImageInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcImage = in->srcImage; out->srcImageLayout = in->srcImageLayout; out->dstImage = in->dstImage; out->dstImageLayout = in->dstImageLayout; out->regionCount = in->regionCount; out->pRegions = convert_VkImageBlit2_array_win32_to_host(ctx, (const VkImageBlit232 *)UlongToPtr(in->pRegions), in->regionCount); out->filter = in->filter; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkGeometryTrianglesNV_win32_to_host(const VkGeometryTrianglesNV32 *in, VkGeometryTrianglesNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->vertexData = in->vertexData; out->vertexOffset = in->vertexOffset; out->vertexCount = in->vertexCount; out->vertexStride = in->vertexStride; out->vertexFormat = in->vertexFormat; out->indexData = in->indexData; out->indexOffset = in->indexOffset; out->indexCount = in->indexCount; out->indexType = in->indexType; out->transformData = in->transformData; out->transformOffset = in->transformOffset; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkGeometryAABBNV_win32_to_host(const VkGeometryAABBNV32 *in, VkGeometryAABBNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->aabbData = in->aabbData; out->numAABBs = in->numAABBs; out->stride = in->stride; out->offset = in->offset; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkGeometryDataNV_win32_to_host(const VkGeometryDataNV32 *in, VkGeometryDataNV *out) { if (!in) return; convert_VkGeometryTrianglesNV_win32_to_host(&in->triangles, &out->triangles); convert_VkGeometryAABBNV_win32_to_host(&in->aabbs, &out->aabbs); } static inline void convert_VkGeometryNV_win32_to_host(const VkGeometryNV32 *in, VkGeometryNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->geometryType = in->geometryType; convert_VkGeometryDataNV_win32_to_host(&in->geometry, &out->geometry); out->flags = in->flags; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkGeometryNV *convert_VkGeometryNV_array_win32_to_host(struct conversion_context *ctx, const VkGeometryNV32 *in, uint32_t count) { VkGeometryNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkGeometryNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkAccelerationStructureInfoNV_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureInfoNV32 *in, VkAccelerationStructureInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; out->flags = in->flags; out->instanceCount = in->instanceCount; out->geometryCount = in->geometryCount; out->pGeometries = convert_VkGeometryNV_array_win32_to_host(ctx, (const VkGeometryNV32 *)UlongToPtr(in->pGeometries), in->geometryCount); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCopyAccelerationStructureInfoKHR_win32_to_host(const VkCopyAccelerationStructureInfoKHR32 *in, VkCopyAccelerationStructureInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->src = in->src; out->dst = in->dst; out->mode = in->mode; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCopyAccelerationStructureToMemoryInfoKHR_win32_to_host(const VkCopyAccelerationStructureToMemoryInfoKHR32 *in, VkCopyAccelerationStructureToMemoryInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->src = in->src; out->dst = in->dst; out->mode = in->mode; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkBufferCopy_win32_to_host(const VkBufferCopy32 *in, VkBufferCopy *out) { if (!in) return; out->srcOffset = in->srcOffset; out->dstOffset = in->dstOffset; out->size = in->size; } static inline const VkBufferCopy *convert_VkBufferCopy_array_win32_to_host(struct conversion_context *ctx, const VkBufferCopy32 *in, uint32_t count) { VkBufferCopy *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBufferCopy_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkBufferCopy2_win32_to_host(const VkBufferCopy232 *in, VkBufferCopy2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcOffset = in->srcOffset; out->dstOffset = in->dstOffset; out->size = in->size; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkBufferCopy2 *convert_VkBufferCopy2_array_win32_to_host(struct conversion_context *ctx, const VkBufferCopy232 *in, uint32_t count) { VkBufferCopy2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBufferCopy2_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkCopyBufferInfo2_win32_to_host(struct conversion_context *ctx, const VkCopyBufferInfo232 *in, VkCopyBufferInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcBuffer = in->srcBuffer; out->dstBuffer = in->dstBuffer; out->regionCount = in->regionCount; out->pRegions = convert_VkBufferCopy2_array_win32_to_host(ctx, (const VkBufferCopy232 *)UlongToPtr(in->pRegions), in->regionCount); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkBufferImageCopy_win32_to_host(const VkBufferImageCopy32 *in, VkBufferImageCopy *out) { if (!in) return; out->bufferOffset = in->bufferOffset; out->bufferRowLength = in->bufferRowLength; out->bufferImageHeight = in->bufferImageHeight; out->imageSubresource = in->imageSubresource; out->imageOffset = in->imageOffset; out->imageExtent = in->imageExtent; } static inline const VkBufferImageCopy *convert_VkBufferImageCopy_array_win32_to_host(struct conversion_context *ctx, const VkBufferImageCopy32 *in, uint32_t count) { VkBufferImageCopy *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBufferImageCopy_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkBufferImageCopy2_win32_to_host(struct conversion_context *ctx, const VkBufferImageCopy232 *in, VkBufferImageCopy2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->bufferOffset = in->bufferOffset; out->bufferRowLength = in->bufferRowLength; out->bufferImageHeight = in->bufferImageHeight; out->imageSubresource = in->imageSubresource; out->imageOffset = in->imageOffset; out->imageExtent = in->imageExtent; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM: { VkCopyCommandTransformInfoQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkCopyCommandTransformInfoQCOM32 *in_ext = (const VkCopyCommandTransformInfoQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM; out_ext->pNext = NULL; out_ext->transform = in_ext->transform; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkBufferImageCopy2 *convert_VkBufferImageCopy2_array_win32_to_host(struct conversion_context *ctx, const VkBufferImageCopy232 *in, uint32_t count) { VkBufferImageCopy2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBufferImageCopy2_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkCopyBufferToImageInfo2_win32_to_host(struct conversion_context *ctx, const VkCopyBufferToImageInfo232 *in, VkCopyBufferToImageInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcBuffer = in->srcBuffer; out->dstImage = in->dstImage; out->dstImageLayout = in->dstImageLayout; out->regionCount = in->regionCount; out->pRegions = convert_VkBufferImageCopy2_array_win32_to_host(ctx, (const VkBufferImageCopy232 *)UlongToPtr(in->pRegions), in->regionCount); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkImageCopy2_win32_to_host(const VkImageCopy232 *in, VkImageCopy2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcSubresource = in->srcSubresource; out->srcOffset = in->srcOffset; out->dstSubresource = in->dstSubresource; out->dstOffset = in->dstOffset; out->extent = in->extent; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkImageCopy2 *convert_VkImageCopy2_array_win32_to_host(struct conversion_context *ctx, const VkImageCopy232 *in, uint32_t count) { VkImageCopy2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkImageCopy2_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkCopyImageInfo2_win32_to_host(struct conversion_context *ctx, const VkCopyImageInfo232 *in, VkCopyImageInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcImage = in->srcImage; out->srcImageLayout = in->srcImageLayout; out->dstImage = in->dstImage; out->dstImageLayout = in->dstImageLayout; out->regionCount = in->regionCount; out->pRegions = convert_VkImageCopy2_array_win32_to_host(ctx, (const VkImageCopy232 *)UlongToPtr(in->pRegions), in->regionCount); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCopyImageToBufferInfo2_win32_to_host(struct conversion_context *ctx, const VkCopyImageToBufferInfo232 *in, VkCopyImageToBufferInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcImage = in->srcImage; out->srcImageLayout = in->srcImageLayout; out->dstBuffer = in->dstBuffer; out->regionCount = in->regionCount; out->pRegions = convert_VkBufferImageCopy2_array_win32_to_host(ctx, (const VkBufferImageCopy232 *)UlongToPtr(in->pRegions), in->regionCount); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCopyMemoryToAccelerationStructureInfoKHR_win32_to_host(const VkCopyMemoryToAccelerationStructureInfoKHR32 *in, VkCopyMemoryToAccelerationStructureInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->src = in->src; out->dst = in->dst; out->mode = in->mode; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCopyMemoryToMicromapInfoEXT_win32_to_host(const VkCopyMemoryToMicromapInfoEXT32 *in, VkCopyMemoryToMicromapInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->src = in->src; out->dst = in->dst; out->mode = in->mode; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCopyMicromapInfoEXT_win32_to_host(const VkCopyMicromapInfoEXT32 *in, VkCopyMicromapInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->src = in->src; out->dst = in->dst; out->mode = in->mode; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCopyMicromapToMemoryInfoEXT_win32_to_host(const VkCopyMicromapToMemoryInfoEXT32 *in, VkCopyMicromapToMemoryInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->src = in->src; out->dst = in->dst; out->mode = in->mode; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCuLaunchInfoNVX_win32_to_host(const VkCuLaunchInfoNVX32 *in, VkCuLaunchInfoNVX *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->function = in->function; out->gridDimX = in->gridDimX; out->gridDimY = in->gridDimY; out->gridDimZ = in->gridDimZ; out->blockDimX = in->blockDimX; out->blockDimY = in->blockDimY; out->blockDimZ = in->blockDimZ; out->sharedMemBytes = in->sharedMemBytes; out->paramCount = in->paramCount; out->pParams = (const void * const *)UlongToPtr(in->pParams); out->extraCount = in->extraCount; out->pExtras = (const void * const *)UlongToPtr(in->pExtras); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDebugMarkerMarkerInfoEXT_win32_to_host(const VkDebugMarkerMarkerInfoEXT32 *in, VkDebugMarkerMarkerInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pMarkerName = (const char *)UlongToPtr(in->pMarkerName); memcpy(out->color, in->color, 4 * sizeof(float)); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDecompressMemoryRegionNV_win32_to_host(const VkDecompressMemoryRegionNV32 *in, VkDecompressMemoryRegionNV *out) { if (!in) return; out->srcAddress = in->srcAddress; out->dstAddress = in->dstAddress; out->compressedSize = in->compressedSize; out->decompressedSize = in->decompressedSize; out->decompressionMethod = in->decompressionMethod; } static inline const VkDecompressMemoryRegionNV *convert_VkDecompressMemoryRegionNV_array_win32_to_host(struct conversion_context *ctx, const VkDecompressMemoryRegionNV32 *in, uint32_t count) { VkDecompressMemoryRegionNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDecompressMemoryRegionNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkSubpassEndInfo_win32_to_host(struct conversion_context *ctx, const VkSubpassEndInfo32 *in, VkSubpassEndInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM: { VkSubpassFragmentDensityMapOffsetEndInfoQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSubpassFragmentDensityMapOffsetEndInfoQCOM32 *in_ext = (const VkSubpassFragmentDensityMapOffsetEndInfoQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM; out_ext->pNext = NULL; out_ext->fragmentDensityOffsetCount = in_ext->fragmentDensityOffsetCount; out_ext->pFragmentDensityOffsets = (const VkOffset2D *)UlongToPtr(in_ext->pFragmentDensityOffsets); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline const VkCommandBuffer *convert_VkCommandBuffer_array_win64_to_host(struct conversion_context *ctx, const VkCommandBuffer *in, uint32_t count) { VkCommandBuffer *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] = wine_cmd_buffer_from_handle(in[i])->command_buffer; } return out; } #endif /* _WIN64 */ static inline const VkCommandBuffer *convert_VkCommandBuffer_array_win32_to_host(struct conversion_context *ctx, const PTR32 *in, uint32_t count) { VkCommandBuffer *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] = wine_cmd_buffer_from_handle(UlongToPtr(in[i]))->command_buffer; } return out; } static inline void convert_VkIndirectCommandsStreamNV_win32_to_host(const VkIndirectCommandsStreamNV32 *in, VkIndirectCommandsStreamNV *out) { if (!in) return; out->buffer = in->buffer; out->offset = in->offset; } static inline const VkIndirectCommandsStreamNV *convert_VkIndirectCommandsStreamNV_array_win32_to_host(struct conversion_context *ctx, const VkIndirectCommandsStreamNV32 *in, uint32_t count) { VkIndirectCommandsStreamNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkIndirectCommandsStreamNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkGeneratedCommandsInfoNV_win32_to_host(struct conversion_context *ctx, const VkGeneratedCommandsInfoNV32 *in, VkGeneratedCommandsInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pipelineBindPoint = in->pipelineBindPoint; out->pipeline = in->pipeline; out->indirectCommandsLayout = in->indirectCommandsLayout; out->streamCount = in->streamCount; out->pStreams = convert_VkIndirectCommandsStreamNV_array_win32_to_host(ctx, (const VkIndirectCommandsStreamNV32 *)UlongToPtr(in->pStreams), in->streamCount); out->sequencesCount = in->sequencesCount; out->preprocessBuffer = in->preprocessBuffer; out->preprocessOffset = in->preprocessOffset; out->preprocessSize = in->preprocessSize; out->sequencesCountBuffer = in->sequencesCountBuffer; out->sequencesCountOffset = in->sequencesCountOffset; out->sequencesIndexBuffer = in->sequencesIndexBuffer; out->sequencesIndexOffset = in->sequencesIndexOffset; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkOpticalFlowExecuteInfoNV_win32_to_host(const VkOpticalFlowExecuteInfoNV32 *in, VkOpticalFlowExecuteInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->regionCount = in->regionCount; out->pRegions = (const VkRect2D *)UlongToPtr(in->pRegions); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMemoryBarrier_win32_to_host(const VkMemoryBarrier32 *in, VkMemoryBarrier *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcAccessMask = in->srcAccessMask; out->dstAccessMask = in->dstAccessMask; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkMemoryBarrier *convert_VkMemoryBarrier_array_win32_to_host(struct conversion_context *ctx, const VkMemoryBarrier32 *in, uint32_t count) { VkMemoryBarrier *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkMemoryBarrier_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkBufferMemoryBarrier_win32_to_host(const VkBufferMemoryBarrier32 *in, VkBufferMemoryBarrier *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcAccessMask = in->srcAccessMask; out->dstAccessMask = in->dstAccessMask; out->srcQueueFamilyIndex = in->srcQueueFamilyIndex; out->dstQueueFamilyIndex = in->dstQueueFamilyIndex; out->buffer = in->buffer; out->offset = in->offset; out->size = in->size; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkBufferMemoryBarrier *convert_VkBufferMemoryBarrier_array_win32_to_host(struct conversion_context *ctx, const VkBufferMemoryBarrier32 *in, uint32_t count) { VkBufferMemoryBarrier *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBufferMemoryBarrier_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkImageMemoryBarrier_win32_to_host(struct conversion_context *ctx, const VkImageMemoryBarrier32 *in, VkImageMemoryBarrier *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcAccessMask = in->srcAccessMask; out->dstAccessMask = in->dstAccessMask; out->oldLayout = in->oldLayout; out->newLayout = in->newLayout; out->srcQueueFamilyIndex = in->srcQueueFamilyIndex; out->dstQueueFamilyIndex = in->dstQueueFamilyIndex; out->image = in->image; out->subresourceRange = in->subresourceRange; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT: { VkSampleLocationsInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSampleLocationsInfoEXT32 *in_ext = (const VkSampleLocationsInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT; out_ext->pNext = NULL; out_ext->sampleLocationsPerPixel = in_ext->sampleLocationsPerPixel; out_ext->sampleLocationGridSize = in_ext->sampleLocationGridSize; out_ext->sampleLocationsCount = in_ext->sampleLocationsCount; out_ext->pSampleLocations = (const VkSampleLocationEXT *)UlongToPtr(in_ext->pSampleLocations); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkImageMemoryBarrier *convert_VkImageMemoryBarrier_array_win32_to_host(struct conversion_context *ctx, const VkImageMemoryBarrier32 *in, uint32_t count) { VkImageMemoryBarrier *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkImageMemoryBarrier_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkMemoryBarrier2_win32_to_host(const VkMemoryBarrier232 *in, VkMemoryBarrier2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcStageMask = in->srcStageMask; out->srcAccessMask = in->srcAccessMask; out->dstStageMask = in->dstStageMask; out->dstAccessMask = in->dstAccessMask; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkMemoryBarrier2 *convert_VkMemoryBarrier2_array_win32_to_host(struct conversion_context *ctx, const VkMemoryBarrier232 *in, uint32_t count) { VkMemoryBarrier2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkMemoryBarrier2_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkBufferMemoryBarrier2_win32_to_host(const VkBufferMemoryBarrier232 *in, VkBufferMemoryBarrier2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcStageMask = in->srcStageMask; out->srcAccessMask = in->srcAccessMask; out->dstStageMask = in->dstStageMask; out->dstAccessMask = in->dstAccessMask; out->srcQueueFamilyIndex = in->srcQueueFamilyIndex; out->dstQueueFamilyIndex = in->dstQueueFamilyIndex; out->buffer = in->buffer; out->offset = in->offset; out->size = in->size; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkBufferMemoryBarrier2 *convert_VkBufferMemoryBarrier2_array_win32_to_host(struct conversion_context *ctx, const VkBufferMemoryBarrier232 *in, uint32_t count) { VkBufferMemoryBarrier2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBufferMemoryBarrier2_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkImageMemoryBarrier2_win32_to_host(struct conversion_context *ctx, const VkImageMemoryBarrier232 *in, VkImageMemoryBarrier2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcStageMask = in->srcStageMask; out->srcAccessMask = in->srcAccessMask; out->dstStageMask = in->dstStageMask; out->dstAccessMask = in->dstAccessMask; out->oldLayout = in->oldLayout; out->newLayout = in->newLayout; out->srcQueueFamilyIndex = in->srcQueueFamilyIndex; out->dstQueueFamilyIndex = in->dstQueueFamilyIndex; out->image = in->image; out->subresourceRange = in->subresourceRange; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT: { VkSampleLocationsInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSampleLocationsInfoEXT32 *in_ext = (const VkSampleLocationsInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT; out_ext->pNext = NULL; out_ext->sampleLocationsPerPixel = in_ext->sampleLocationsPerPixel; out_ext->sampleLocationGridSize = in_ext->sampleLocationGridSize; out_ext->sampleLocationsCount = in_ext->sampleLocationsCount; out_ext->pSampleLocations = (const VkSampleLocationEXT *)UlongToPtr(in_ext->pSampleLocations); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkImageMemoryBarrier2 *convert_VkImageMemoryBarrier2_array_win32_to_host(struct conversion_context *ctx, const VkImageMemoryBarrier232 *in, uint32_t count) { VkImageMemoryBarrier2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkImageMemoryBarrier2_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkDependencyInfo_win32_to_host(struct conversion_context *ctx, const VkDependencyInfo32 *in, VkDependencyInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->dependencyFlags = in->dependencyFlags; out->memoryBarrierCount = in->memoryBarrierCount; out->pMemoryBarriers = convert_VkMemoryBarrier2_array_win32_to_host(ctx, (const VkMemoryBarrier232 *)UlongToPtr(in->pMemoryBarriers), in->memoryBarrierCount); out->bufferMemoryBarrierCount = in->bufferMemoryBarrierCount; out->pBufferMemoryBarriers = convert_VkBufferMemoryBarrier2_array_win32_to_host(ctx, (const VkBufferMemoryBarrier232 *)UlongToPtr(in->pBufferMemoryBarriers), in->bufferMemoryBarrierCount); out->imageMemoryBarrierCount = in->imageMemoryBarrierCount; out->pImageMemoryBarriers = convert_VkImageMemoryBarrier2_array_win32_to_host(ctx, (const VkImageMemoryBarrier232 *)UlongToPtr(in->pImageMemoryBarriers), in->imageMemoryBarrierCount); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDescriptorImageInfo_win32_to_host(const VkDescriptorImageInfo32 *in, VkDescriptorImageInfo *out) { if (!in) return; out->sampler = in->sampler; out->imageView = in->imageView; out->imageLayout = in->imageLayout; } static inline const VkDescriptorImageInfo *convert_VkDescriptorImageInfo_array_win32_to_host(struct conversion_context *ctx, const VkDescriptorImageInfo32 *in, uint32_t count) { VkDescriptorImageInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDescriptorImageInfo_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkDescriptorBufferInfo_win32_to_host(const VkDescriptorBufferInfo32 *in, VkDescriptorBufferInfo *out) { if (!in) return; out->buffer = in->buffer; out->offset = in->offset; out->range = in->range; } static inline const VkDescriptorBufferInfo *convert_VkDescriptorBufferInfo_array_win32_to_host(struct conversion_context *ctx, const VkDescriptorBufferInfo32 *in, uint32_t count) { VkDescriptorBufferInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDescriptorBufferInfo_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkWriteDescriptorSet_win32_to_host(struct conversion_context *ctx, const VkWriteDescriptorSet32 *in, VkWriteDescriptorSet *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->dstSet = in->dstSet; out->dstBinding = in->dstBinding; out->dstArrayElement = in->dstArrayElement; out->descriptorCount = in->descriptorCount; out->descriptorType = in->descriptorType; out->pImageInfo = convert_VkDescriptorImageInfo_array_win32_to_host(ctx, (const VkDescriptorImageInfo32 *)UlongToPtr(in->pImageInfo), in->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || in->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER || in->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE || in->descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE || in->descriptorType == VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT || in->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM || in->descriptorType == VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM ? in->descriptorCount : 0); out->pBufferInfo = convert_VkDescriptorBufferInfo_array_win32_to_host(ctx, (const VkDescriptorBufferInfo32 *)UlongToPtr(in->pBufferInfo), in->descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER || in->descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER || in->descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC || in->descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC ? in->descriptorCount : 0); out->pTexelBufferView = (const VkBufferView *)UlongToPtr(in->pTexelBufferView); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: { VkWriteDescriptorSetInlineUniformBlock *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkWriteDescriptorSetInlineUniformBlock32 *in_ext = (const VkWriteDescriptorSetInlineUniformBlock32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK; out_ext->pNext = NULL; out_ext->dataSize = in_ext->dataSize; out_ext->pData = (const void *)UlongToPtr(in_ext->pData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: { VkWriteDescriptorSetAccelerationStructureKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkWriteDescriptorSetAccelerationStructureKHR32 *in_ext = (const VkWriteDescriptorSetAccelerationStructureKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR; out_ext->pNext = NULL; out_ext->accelerationStructureCount = in_ext->accelerationStructureCount; out_ext->pAccelerationStructures = (const VkAccelerationStructureKHR *)UlongToPtr(in_ext->pAccelerationStructures); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: { VkWriteDescriptorSetAccelerationStructureNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkWriteDescriptorSetAccelerationStructureNV32 *in_ext = (const VkWriteDescriptorSetAccelerationStructureNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV; out_ext->pNext = NULL; out_ext->accelerationStructureCount = in_ext->accelerationStructureCount; out_ext->pAccelerationStructures = (const VkAccelerationStructureNV *)UlongToPtr(in_ext->pAccelerationStructures); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkWriteDescriptorSet *convert_VkWriteDescriptorSet_array_win32_to_host(struct conversion_context *ctx, const VkWriteDescriptorSet32 *in, uint32_t count) { VkWriteDescriptorSet *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkWriteDescriptorSet_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkImageResolve2_win32_to_host(const VkImageResolve232 *in, VkImageResolve2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcSubresource = in->srcSubresource; out->srcOffset = in->srcOffset; out->dstSubresource = in->dstSubresource; out->dstOffset = in->dstOffset; out->extent = in->extent; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkImageResolve2 *convert_VkImageResolve2_array_win32_to_host(struct conversion_context *ctx, const VkImageResolve232 *in, uint32_t count) { VkImageResolve2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkImageResolve2_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkResolveImageInfo2_win32_to_host(struct conversion_context *ctx, const VkResolveImageInfo232 *in, VkResolveImageInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcImage = in->srcImage; out->srcImageLayout = in->srcImageLayout; out->dstImage = in->dstImage; out->dstImageLayout = in->dstImageLayout; out->regionCount = in->regionCount; out->pRegions = convert_VkImageResolve2_array_win32_to_host(ctx, (const VkImageResolve232 *)UlongToPtr(in->pRegions), in->regionCount); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCoarseSampleOrderCustomNV_win32_to_host(const VkCoarseSampleOrderCustomNV32 *in, VkCoarseSampleOrderCustomNV *out) { if (!in) return; out->shadingRate = in->shadingRate; out->sampleCount = in->sampleCount; out->sampleLocationCount = in->sampleLocationCount; out->pSampleLocations = (const VkCoarseSampleLocationNV *)UlongToPtr(in->pSampleLocations); } static inline const VkCoarseSampleOrderCustomNV *convert_VkCoarseSampleOrderCustomNV_array_win32_to_host(struct conversion_context *ctx, const VkCoarseSampleOrderCustomNV32 *in, uint32_t count) { VkCoarseSampleOrderCustomNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCoarseSampleOrderCustomNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPerformanceMarkerInfoINTEL_win32_to_host(const VkPerformanceMarkerInfoINTEL32 *in, VkPerformanceMarkerInfoINTEL *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->marker = in->marker; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPerformanceOverrideInfoINTEL_win32_to_host(const VkPerformanceOverrideInfoINTEL32 *in, VkPerformanceOverrideInfoINTEL *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; out->enable = in->enable; out->parameter = in->parameter; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPerformanceStreamMarkerInfoINTEL_win32_to_host(const VkPerformanceStreamMarkerInfoINTEL32 *in, VkPerformanceStreamMarkerInfoINTEL *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->marker = in->marker; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkVertexInputBindingDescription2EXT_win32_to_host(const VkVertexInputBindingDescription2EXT32 *in, VkVertexInputBindingDescription2EXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->binding = in->binding; out->stride = in->stride; out->inputRate = in->inputRate; out->divisor = in->divisor; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkVertexInputBindingDescription2EXT *convert_VkVertexInputBindingDescription2EXT_array_win32_to_host(struct conversion_context *ctx, const VkVertexInputBindingDescription2EXT32 *in, uint32_t count) { VkVertexInputBindingDescription2EXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkVertexInputBindingDescription2EXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkVertexInputAttributeDescription2EXT_win32_to_host(const VkVertexInputAttributeDescription2EXT32 *in, VkVertexInputAttributeDescription2EXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->location = in->location; out->binding = in->binding; out->format = in->format; out->offset = in->offset; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkVertexInputAttributeDescription2EXT *convert_VkVertexInputAttributeDescription2EXT_array_win32_to_host(struct conversion_context *ctx, const VkVertexInputAttributeDescription2EXT32 *in, uint32_t count) { VkVertexInputAttributeDescription2EXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkVertexInputAttributeDescription2EXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkShadingRatePaletteNV_win32_to_host(const VkShadingRatePaletteNV32 *in, VkShadingRatePaletteNV *out) { if (!in) return; out->shadingRatePaletteEntryCount = in->shadingRatePaletteEntryCount; out->pShadingRatePaletteEntries = (const VkShadingRatePaletteEntryNV *)UlongToPtr(in->pShadingRatePaletteEntries); } static inline const VkShadingRatePaletteNV *convert_VkShadingRatePaletteNV_array_win32_to_host(struct conversion_context *ctx, const VkShadingRatePaletteNV32 *in, uint32_t count) { VkShadingRatePaletteNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkShadingRatePaletteNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkStridedDeviceAddressRegionKHR_win32_to_host(const VkStridedDeviceAddressRegionKHR32 *in, VkStridedDeviceAddressRegionKHR *out) { if (!in) return; out->deviceAddress = in->deviceAddress; out->stride = in->stride; out->size = in->size; } static inline const VkDependencyInfo *convert_VkDependencyInfo_array_win32_to_host(struct conversion_context *ctx, const VkDependencyInfo32 *in, uint32_t count) { VkDependencyInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDependencyInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkAccelerationStructureCreateInfoKHR_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureCreateInfoKHR32 *in, VkAccelerationStructureCreateInfoKHR *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->createFlags = in->createFlags; out->buffer = in->buffer; out->offset = in->offset; out->size = in->size; out->type = in->type; out->deviceAddress = in->deviceAddress; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT: { VkOpaqueCaptureDescriptorDataCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *in_ext = (const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->opaqueCaptureDescriptorData = (const void *)UlongToPtr(in_ext->opaqueCaptureDescriptorData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV: { VkAccelerationStructureMotionInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkAccelerationStructureMotionInfoNV32 *in_ext = (const VkAccelerationStructureMotionInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV; out_ext->pNext = NULL; out_ext->maxInstances = in_ext->maxInstances; out_ext->flags = in_ext->flags; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkAccelerationStructureCreateInfoNV_win32_to_host(struct conversion_context *ctx, const VkAccelerationStructureCreateInfoNV32 *in, VkAccelerationStructureCreateInfoNV *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->compactedSize = in->compactedSize; convert_VkAccelerationStructureInfoNV_win32_to_host(ctx, &in->info, &out->info); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT: { VkOpaqueCaptureDescriptorDataCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *in_ext = (const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->opaqueCaptureDescriptorData = (const void *)UlongToPtr(in_ext->opaqueCaptureDescriptorData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkBufferCreateInfo_win32_to_host(struct conversion_context *ctx, const VkBufferCreateInfo32 *in, VkBufferCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->size = in->size; out->usage = in->usage; out->sharingMode = in->sharingMode; out->queueFamilyIndexCount = in->queueFamilyIndexCount; out->pQueueFamilyIndices = (const uint32_t *)UlongToPtr(in->pQueueFamilyIndices); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: { VkDedicatedAllocationBufferCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDedicatedAllocationBufferCreateInfoNV32 *in_ext = (const VkDedicatedAllocationBufferCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->dedicatedAllocation = in_ext->dedicatedAllocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: { VkExternalMemoryBufferCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkExternalMemoryBufferCreateInfo32 *in_ext = (const VkExternalMemoryBufferCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO; out_ext->pNext = NULL; out_ext->handleTypes = in_ext->handleTypes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: { VkBufferOpaqueCaptureAddressCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkBufferOpaqueCaptureAddressCreateInfo32 *in_ext = (const VkBufferOpaqueCaptureAddressCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO; out_ext->pNext = NULL; out_ext->opaqueCaptureAddress = in_ext->opaqueCaptureAddress; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT: { VkBufferDeviceAddressCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkBufferDeviceAddressCreateInfoEXT32 *in_ext = (const VkBufferDeviceAddressCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->deviceAddress = in_ext->deviceAddress; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT: { VkOpaqueCaptureDescriptorDataCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *in_ext = (const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->opaqueCaptureDescriptorData = (const void *)UlongToPtr(in_ext->opaqueCaptureDescriptorData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkBufferViewCreateInfo_win32_to_host(const VkBufferViewCreateInfo32 *in, VkBufferViewCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->buffer = in->buffer; out->format = in->format; out->offset = in->offset; out->range = in->range; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCommandPoolCreateInfo_win32_to_host(const VkCommandPoolCreateInfo32 *in, VkCommandPoolCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->queueFamilyIndex = in->queueFamilyIndex; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPipelineCreationFeedback_host_to_win32(const VkPipelineCreationFeedback *in, VkPipelineCreationFeedback32 *out) { if (!in) return; out->flags = in->flags; out->duration = in->duration; } static inline VkPipelineCreationFeedback *convert_VkPipelineCreationFeedback_array_win32_to_host(struct conversion_context *ctx, const VkPipelineCreationFeedback32 *in, uint32_t count) { VkPipelineCreationFeedback *out; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); return out; } static inline void convert_VkPipelineCreationFeedback_array_host_to_win32(const VkPipelineCreationFeedback *in, VkPipelineCreationFeedback32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPipelineCreationFeedback_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkSpecializationMapEntry_win32_to_host(const VkSpecializationMapEntry32 *in, VkSpecializationMapEntry *out) { if (!in) return; out->constantID = in->constantID; out->offset = in->offset; out->size = in->size; } static inline const VkSpecializationMapEntry *convert_VkSpecializationMapEntry_array_win32_to_host(struct conversion_context *ctx, const VkSpecializationMapEntry32 *in, uint32_t count) { VkSpecializationMapEntry *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSpecializationMapEntry_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkSpecializationInfo_win32_to_host(struct conversion_context *ctx, const VkSpecializationInfo32 *in, VkSpecializationInfo *out) { if (!in) return; out->mapEntryCount = in->mapEntryCount; out->pMapEntries = convert_VkSpecializationMapEntry_array_win32_to_host(ctx, (const VkSpecializationMapEntry32 *)UlongToPtr(in->pMapEntries), in->mapEntryCount); out->dataSize = in->dataSize; out->pData = (const void *)UlongToPtr(in->pData); } static inline const VkSpecializationInfo *convert_VkSpecializationInfo_array_win32_to_host(struct conversion_context *ctx, const VkSpecializationInfo32 *in, uint32_t count) { VkSpecializationInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSpecializationInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkPipelineShaderStageCreateInfo_win64_to_host(struct conversion_context *ctx, const VkPipelineShaderStageCreateInfo *in, VkPipelineShaderStageCreateInfo *out) { const VkBaseInStructure *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->stage = in->stage; out->module = in->module; out->pName = in->pName; out->pSpecializationInfo = in->pSpecializationInfo; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: { VkShaderModuleCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkShaderModuleCreateInfo *in_ext = (const VkShaderModuleCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->codeSize = in_ext->codeSize; out_ext->pCode = in_ext->pCode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: { VkShaderModuleValidationCacheCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkShaderModuleValidationCacheCreateInfoEXT *in_ext = (const VkShaderModuleValidationCacheCreateInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->validationCache = in_ext->validationCache; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT: { VkDebugUtilsObjectNameInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDebugUtilsObjectNameInfoEXT *in_ext = (const VkDebugUtilsObjectNameInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT; out_ext->pNext = NULL; out_ext->objectType = in_ext->objectType; out_ext->objectHandle = wine_vk_unwrap_handle(in_ext->objectType, in_ext->objectHandle); out_ext->pObjectName = in_ext->pObjectName; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: { VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *in_ext = (const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO; out_ext->pNext = NULL; out_ext->requiredSubgroupSize = in_ext->requiredSubgroupSize; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT: { VkPipelineShaderStageModuleIdentifierCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineShaderStageModuleIdentifierCreateInfoEXT *in_ext = (const VkPipelineShaderStageModuleIdentifierCreateInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->identifierSize = in_ext->identifierSize; out_ext->pIdentifier = in_ext->pIdentifier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: { VkPipelineRobustnessCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRobustnessCreateInfoEXT *in_ext = (const VkPipelineRobustnessCreateInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->storageBuffers = in_ext->storageBuffers; out_ext->uniformBuffers = in_ext->uniformBuffers; out_ext->vertexInputs = in_ext->vertexInputs; out_ext->images = in_ext->images; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #endif /* _WIN64 */ static inline void convert_VkPipelineShaderStageCreateInfo_win32_to_host(struct conversion_context *ctx, const VkPipelineShaderStageCreateInfo32 *in, VkPipelineShaderStageCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->stage = in->stage; out->module = in->module; out->pName = (const char *)UlongToPtr(in->pName); out->pSpecializationInfo = convert_VkSpecializationInfo_array_win32_to_host(ctx, (const VkSpecializationInfo32 *)UlongToPtr(in->pSpecializationInfo), 1); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: { VkShaderModuleCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkShaderModuleCreateInfo32 *in_ext = (const VkShaderModuleCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->codeSize = in_ext->codeSize; out_ext->pCode = (const uint32_t *)UlongToPtr(in_ext->pCode); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: { VkShaderModuleValidationCacheCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkShaderModuleValidationCacheCreateInfoEXT32 *in_ext = (const VkShaderModuleValidationCacheCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->validationCache = in_ext->validationCache; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT: { VkDebugUtilsObjectNameInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDebugUtilsObjectNameInfoEXT32 *in_ext = (const VkDebugUtilsObjectNameInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT; out_ext->pNext = NULL; out_ext->objectType = in_ext->objectType; out_ext->objectHandle = wine_vk_unwrap_handle(in_ext->objectType, in_ext->objectHandle); out_ext->pObjectName = (const char *)UlongToPtr(in_ext->pObjectName); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: { VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 *in_ext = (const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO; out_ext->pNext = NULL; out_ext->requiredSubgroupSize = in_ext->requiredSubgroupSize; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT: { VkPipelineShaderStageModuleIdentifierCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineShaderStageModuleIdentifierCreateInfoEXT32 *in_ext = (const VkPipelineShaderStageModuleIdentifierCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->identifierSize = in_ext->identifierSize; out_ext->pIdentifier = (const uint8_t *)UlongToPtr(in_ext->pIdentifier); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: { VkPipelineRobustnessCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRobustnessCreateInfoEXT32 *in_ext = (const VkPipelineRobustnessCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->storageBuffers = in_ext->storageBuffers; out_ext->uniformBuffers = in_ext->uniformBuffers; out_ext->vertexInputs = in_ext->vertexInputs; out_ext->images = in_ext->images; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline void convert_VkComputePipelineCreateInfo_win64_to_host(struct conversion_context *ctx, const VkComputePipelineCreateInfo *in, VkComputePipelineCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->flags = in->flags; convert_VkPipelineShaderStageCreateInfo_win64_to_host(ctx, &in->stage, &out->stage); out->layout = in->layout; out->basePipelineHandle = in->basePipelineHandle; out->basePipelineIndex = in->basePipelineIndex; } #endif /* _WIN64 */ static inline void convert_VkComputePipelineCreateInfo_win32_to_host(struct conversion_context *ctx, const VkComputePipelineCreateInfo32 *in, VkComputePipelineCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; convert_VkPipelineShaderStageCreateInfo_win32_to_host(ctx, &in->stage, &out->stage); out->layout = in->layout; out->basePipelineHandle = in->basePipelineHandle; out->basePipelineIndex = in->basePipelineIndex; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCreationFeedbackCreateInfo32 *in_ext = (const VkPipelineCreationFeedbackCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; out_ext->pNext = NULL; out_ext->pPipelineCreationFeedback = convert_VkPipelineCreationFeedback_array_win32_to_host(ctx, (VkPipelineCreationFeedback32 *)UlongToPtr(in_ext->pPipelineCreationFeedback), 1); out_ext->pipelineStageCreationFeedbackCount = in_ext->pipelineStageCreationFeedbackCount; out_ext->pPipelineStageCreationFeedbacks = convert_VkPipelineCreationFeedback_array_win32_to_host(ctx, (VkPipelineCreationFeedback32 *)UlongToPtr(in_ext->pPipelineStageCreationFeedbacks), in_ext->pipelineStageCreationFeedbackCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI: { VkSubpassShadingPipelineCreateInfoHUAWEI *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSubpassShadingPipelineCreateInfoHUAWEI32 *in_ext = (const VkSubpassShadingPipelineCreateInfoHUAWEI32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI; out_ext->pNext = NULL; out_ext->renderPass = in_ext->renderPass; out_ext->subpass = in_ext->subpass; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: { VkPipelineCompilerControlCreateInfoAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCompilerControlCreateInfoAMD32 *in_ext = (const VkPipelineCompilerControlCreateInfoAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD; out_ext->pNext = NULL; out_ext->compilerControlFlags = in_ext->compilerControlFlags; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: { VkPipelineRobustnessCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRobustnessCreateInfoEXT32 *in_ext = (const VkPipelineRobustnessCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->storageBuffers = in_ext->storageBuffers; out_ext->uniformBuffers = in_ext->uniformBuffers; out_ext->vertexInputs = in_ext->vertexInputs; out_ext->images = in_ext->images; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkComputePipelineCreateInfo_host_to_win32(const VkComputePipelineCreateInfo *in, const VkComputePipelineCreateInfo32 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO); const VkPipelineCreationFeedbackCreateInfo *in_ext = (const VkPipelineCreationFeedbackCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; convert_VkPipelineCreationFeedback_array_host_to_win32(in_ext->pPipelineCreationFeedback, (VkPipelineCreationFeedback32 *)UlongToPtr(out_ext->pPipelineCreationFeedback), 1); convert_VkPipelineCreationFeedback_array_host_to_win32(in_ext->pPipelineStageCreationFeedbacks, (VkPipelineCreationFeedback32 *)UlongToPtr(out_ext->pPipelineStageCreationFeedbacks), in_ext->pipelineStageCreationFeedbackCount); out_header = (void *)out_ext; break; } default: break; } } } #ifdef _WIN64 static inline const VkComputePipelineCreateInfo *convert_VkComputePipelineCreateInfo_array_win64_to_host(struct conversion_context *ctx, const VkComputePipelineCreateInfo *in, uint32_t count) { VkComputePipelineCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkComputePipelineCreateInfo_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkComputePipelineCreateInfo *convert_VkComputePipelineCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkComputePipelineCreateInfo32 *in, uint32_t count) { VkComputePipelineCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkComputePipelineCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkComputePipelineCreateInfo_array_host_to_win32(const VkComputePipelineCreateInfo *in, const VkComputePipelineCreateInfo32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkComputePipelineCreateInfo_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkCuFunctionCreateInfoNVX_win32_to_host(const VkCuFunctionCreateInfoNVX32 *in, VkCuFunctionCreateInfoNVX *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->module = in->module; out->pName = (const char *)UlongToPtr(in->pName); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCuModuleCreateInfoNVX_win32_to_host(const VkCuModuleCreateInfoNVX32 *in, VkCuModuleCreateInfoNVX *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->dataSize = in->dataSize; out->pData = (const void *)UlongToPtr(in->pData); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDebugReportCallbackCreateInfoEXT_win32_to_host(const VkDebugReportCallbackCreateInfoEXT32 *in, VkDebugReportCallbackCreateInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->pfnCallback = in->pfnCallback; out->pUserData = (void *)UlongToPtr(in->pUserData); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDebugUtilsMessengerCreateInfoEXT_win32_to_host(const VkDebugUtilsMessengerCreateInfoEXT32 *in, VkDebugUtilsMessengerCreateInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->messageSeverity = in->messageSeverity; out->messageType = in->messageType; out->pfnUserCallback = in->pfnUserCallback; out->pUserData = (void *)UlongToPtr(in->pUserData); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMutableDescriptorTypeListEXT_win32_to_host(const VkMutableDescriptorTypeListEXT32 *in, VkMutableDescriptorTypeListEXT *out) { if (!in) return; out->descriptorTypeCount = in->descriptorTypeCount; out->pDescriptorTypes = (const VkDescriptorType *)UlongToPtr(in->pDescriptorTypes); } static inline const VkMutableDescriptorTypeListEXT *convert_VkMutableDescriptorTypeListEXT_array_win32_to_host(struct conversion_context *ctx, const VkMutableDescriptorTypeListEXT32 *in, uint32_t count) { VkMutableDescriptorTypeListEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkMutableDescriptorTypeListEXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkDescriptorPoolCreateInfo_win32_to_host(struct conversion_context *ctx, const VkDescriptorPoolCreateInfo32 *in, VkDescriptorPoolCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->maxSets = in->maxSets; out->poolSizeCount = in->poolSizeCount; out->pPoolSizes = (const VkDescriptorPoolSize *)UlongToPtr(in->pPoolSizes); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO: { VkDescriptorPoolInlineUniformBlockCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDescriptorPoolInlineUniformBlockCreateInfo32 *in_ext = (const VkDescriptorPoolInlineUniformBlockCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO; out_ext->pNext = NULL; out_ext->maxInlineUniformBlockBindings = in_ext->maxInlineUniformBlockBindings; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT: { VkMutableDescriptorTypeCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMutableDescriptorTypeCreateInfoEXT32 *in_ext = (const VkMutableDescriptorTypeCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->mutableDescriptorTypeListCount = in_ext->mutableDescriptorTypeListCount; out_ext->pMutableDescriptorTypeLists = convert_VkMutableDescriptorTypeListEXT_array_win32_to_host(ctx, (const VkMutableDescriptorTypeListEXT32 *)UlongToPtr(in_ext->pMutableDescriptorTypeLists), in_ext->mutableDescriptorTypeListCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkDescriptorSetLayoutBinding_win32_to_host(const VkDescriptorSetLayoutBinding32 *in, VkDescriptorSetLayoutBinding *out) { if (!in) return; out->binding = in->binding; out->descriptorType = in->descriptorType; out->descriptorCount = in->descriptorCount; out->stageFlags = in->stageFlags; out->pImmutableSamplers = (const VkSampler *)UlongToPtr(in->pImmutableSamplers); } static inline const VkDescriptorSetLayoutBinding *convert_VkDescriptorSetLayoutBinding_array_win32_to_host(struct conversion_context *ctx, const VkDescriptorSetLayoutBinding32 *in, uint32_t count) { VkDescriptorSetLayoutBinding *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDescriptorSetLayoutBinding_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkDescriptorSetLayoutCreateInfo_win32_to_host(struct conversion_context *ctx, const VkDescriptorSetLayoutCreateInfo32 *in, VkDescriptorSetLayoutCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->bindingCount = in->bindingCount; out->pBindings = convert_VkDescriptorSetLayoutBinding_array_win32_to_host(ctx, (const VkDescriptorSetLayoutBinding32 *)UlongToPtr(in->pBindings), in->bindingCount); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: { VkDescriptorSetLayoutBindingFlagsCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDescriptorSetLayoutBindingFlagsCreateInfo32 *in_ext = (const VkDescriptorSetLayoutBindingFlagsCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO; out_ext->pNext = NULL; out_ext->bindingCount = in_ext->bindingCount; out_ext->pBindingFlags = (const VkDescriptorBindingFlags *)UlongToPtr(in_ext->pBindingFlags); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT: { VkMutableDescriptorTypeCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMutableDescriptorTypeCreateInfoEXT32 *in_ext = (const VkMutableDescriptorTypeCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->mutableDescriptorTypeListCount = in_ext->mutableDescriptorTypeListCount; out_ext->pMutableDescriptorTypeLists = convert_VkMutableDescriptorTypeListEXT_array_win32_to_host(ctx, (const VkMutableDescriptorTypeListEXT32 *)UlongToPtr(in_ext->pMutableDescriptorTypeLists), in_ext->mutableDescriptorTypeListCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkDescriptorUpdateTemplateEntry_win32_to_host(const VkDescriptorUpdateTemplateEntry32 *in, VkDescriptorUpdateTemplateEntry *out) { if (!in) return; out->dstBinding = in->dstBinding; out->dstArrayElement = in->dstArrayElement; out->descriptorCount = in->descriptorCount; out->descriptorType = in->descriptorType; out->offset = in->offset; out->stride = in->stride; } static inline const VkDescriptorUpdateTemplateEntry *convert_VkDescriptorUpdateTemplateEntry_array_win32_to_host(struct conversion_context *ctx, const VkDescriptorUpdateTemplateEntry32 *in, uint32_t count) { VkDescriptorUpdateTemplateEntry *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDescriptorUpdateTemplateEntry_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkDescriptorUpdateTemplateCreateInfo_win32_to_host(struct conversion_context *ctx, const VkDescriptorUpdateTemplateCreateInfo32 *in, VkDescriptorUpdateTemplateCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->descriptorUpdateEntryCount = in->descriptorUpdateEntryCount; out->pDescriptorUpdateEntries = convert_VkDescriptorUpdateTemplateEntry_array_win32_to_host(ctx, (const VkDescriptorUpdateTemplateEntry32 *)UlongToPtr(in->pDescriptorUpdateEntries), in->descriptorUpdateEntryCount); out->templateType = in->templateType; out->descriptorSetLayout = in->descriptorSetLayout; out->pipelineBindPoint = in->pipelineBindPoint; out->pipelineLayout = in->pipelineLayout; out->set = in->set; if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline const VkPhysicalDevice *convert_VkPhysicalDevice_array_win64_to_host(struct conversion_context *ctx, const VkPhysicalDevice *in, uint32_t count) { VkPhysicalDevice *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] = wine_phys_dev_from_handle(in[i])->phys_dev; } return out; } #endif /* _WIN64 */ static inline const VkPhysicalDevice *convert_VkPhysicalDevice_array_win32_to_host(struct conversion_context *ctx, const PTR32 *in, uint32_t count) { VkPhysicalDevice *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] = wine_phys_dev_from_handle(UlongToPtr(in[i]))->phys_dev; } return out; } static inline void convert_VkDeviceQueueCreateInfo_win32_to_host(struct conversion_context *ctx, const VkDeviceQueueCreateInfo32 *in, VkDeviceQueueCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->queueFamilyIndex = in->queueFamilyIndex; out->queueCount = in->queueCount; out->pQueuePriorities = (const float *)UlongToPtr(in->pQueuePriorities); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR: { VkDeviceQueueGlobalPriorityCreateInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceQueueGlobalPriorityCreateInfoKHR32 *in_ext = (const VkDeviceQueueGlobalPriorityCreateInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR; out_ext->pNext = NULL; out_ext->globalPriority = in_ext->globalPriority; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkDeviceQueueCreateInfo *convert_VkDeviceQueueCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkDeviceQueueCreateInfo32 *in, uint32_t count) { VkDeviceQueueCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDeviceQueueCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline const char * const*convert_char_pointer_array_win32_to_host(struct conversion_context *ctx, const PTR32 *in, uint32_t count) { char **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] = UlongToPtr(in[i]); } return (void *)out; } #ifdef _WIN64 static inline void convert_VkDeviceCreateInfo_win64_to_host(struct conversion_context *ctx, const VkDeviceCreateInfo *in, VkDeviceCreateInfo *out) { const VkBaseInStructure *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->queueCreateInfoCount = in->queueCreateInfoCount; out->pQueueCreateInfos = in->pQueueCreateInfos; out->enabledLayerCount = in->enabledLayerCount; out->ppEnabledLayerNames = in->ppEnabledLayerNames; out->enabledExtensionCount = in->enabledExtensionCount; out->ppEnabledExtensionNames = in->ppEnabledExtensionNames; out->pEnabledFeatures = in->pEnabledFeatures; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO: break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: { VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *in_ext = (const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV; out_ext->pNext = NULL; out_ext->deviceGeneratedCommands = in_ext->deviceGeneratedCommands; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: { VkDevicePrivateDataCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDevicePrivateDataCreateInfo *in_ext = (const VkDevicePrivateDataCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO; out_ext->pNext = NULL; out_ext->privateDataSlotRequestCount = in_ext->privateDataSlotRequestCount; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: { VkPhysicalDevicePrivateDataFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrivateDataFeatures *in_ext = (const VkPhysicalDevicePrivateDataFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES; out_ext->pNext = NULL; out_ext->privateData = in_ext->privateData; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: { VkPhysicalDeviceFeatures2 *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFeatures2 *in_ext = (const VkPhysicalDeviceFeatures2 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; out_ext->pNext = NULL; out_ext->features = in_ext->features; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: { VkPhysicalDeviceVariablePointersFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVariablePointersFeatures *in_ext = (const VkPhysicalDeviceVariablePointersFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES; out_ext->pNext = NULL; out_ext->variablePointersStorageBuffer = in_ext->variablePointersStorageBuffer; out_ext->variablePointers = in_ext->variablePointers; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: { VkPhysicalDeviceMultiviewFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultiviewFeatures *in_ext = (const VkPhysicalDeviceMultiviewFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES; out_ext->pNext = NULL; out_ext->multiview = in_ext->multiview; out_ext->multiviewGeometryShader = in_ext->multiviewGeometryShader; out_ext->multiviewTessellationShader = in_ext->multiviewTessellationShader; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: { VkDeviceGroupDeviceCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupDeviceCreateInfo *in_ext = (const VkDeviceGroupDeviceCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO; out_ext->pNext = NULL; out_ext->physicalDeviceCount = in_ext->physicalDeviceCount; out_ext->pPhysicalDevices = convert_VkPhysicalDevice_array_win64_to_host(ctx, in_ext->pPhysicalDevices, in_ext->physicalDeviceCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: { VkPhysicalDevicePresentIdFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentIdFeaturesKHR *in_ext = (const VkPhysicalDevicePresentIdFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR; out_ext->pNext = NULL; out_ext->presentId = in_ext->presentId; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: { VkPhysicalDevicePresentWaitFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentWaitFeaturesKHR *in_ext = (const VkPhysicalDevicePresentWaitFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR; out_ext->pNext = NULL; out_ext->presentWait = in_ext->presentWait; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: { VkPhysicalDevice16BitStorageFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice16BitStorageFeatures *in_ext = (const VkPhysicalDevice16BitStorageFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer16BitAccess = in_ext->storageBuffer16BitAccess; out_ext->uniformAndStorageBuffer16BitAccess = in_ext->uniformAndStorageBuffer16BitAccess; out_ext->storagePushConstant16 = in_ext->storagePushConstant16; out_ext->storageInputOutput16 = in_ext->storageInputOutput16; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: { VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *in_ext = (const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES; out_ext->pNext = NULL; out_ext->shaderSubgroupExtendedTypes = in_ext->shaderSubgroupExtendedTypes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: { VkPhysicalDeviceSamplerYcbcrConversionFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSamplerYcbcrConversionFeatures *in_ext = (const VkPhysicalDeviceSamplerYcbcrConversionFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES; out_ext->pNext = NULL; out_ext->samplerYcbcrConversion = in_ext->samplerYcbcrConversion; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: { VkPhysicalDeviceProtectedMemoryFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceProtectedMemoryFeatures *in_ext = (const VkPhysicalDeviceProtectedMemoryFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES; out_ext->pNext = NULL; out_ext->protectedMemory = in_ext->protectedMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: { VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *in_ext = (const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT; out_ext->pNext = NULL; out_ext->advancedBlendCoherentOperations = in_ext->advancedBlendCoherentOperations; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: { VkPhysicalDeviceMultiDrawFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultiDrawFeaturesEXT *in_ext = (const VkPhysicalDeviceMultiDrawFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT; out_ext->pNext = NULL; out_ext->multiDraw = in_ext->multiDraw; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: { VkPhysicalDeviceInlineUniformBlockFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInlineUniformBlockFeatures *in_ext = (const VkPhysicalDeviceInlineUniformBlockFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES; out_ext->pNext = NULL; out_ext->inlineUniformBlock = in_ext->inlineUniformBlock; out_ext->descriptorBindingInlineUniformBlockUpdateAfterBind = in_ext->descriptorBindingInlineUniformBlockUpdateAfterBind; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: { VkPhysicalDeviceMaintenance4Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMaintenance4Features *in_ext = (const VkPhysicalDeviceMaintenance4Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES; out_ext->pNext = NULL; out_ext->maintenance4 = in_ext->maintenance4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: { VkPhysicalDeviceShaderDrawParametersFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderDrawParametersFeatures *in_ext = (const VkPhysicalDeviceShaderDrawParametersFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES; out_ext->pNext = NULL; out_ext->shaderDrawParameters = in_ext->shaderDrawParameters; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: { VkPhysicalDeviceShaderFloat16Int8Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderFloat16Int8Features *in_ext = (const VkPhysicalDeviceShaderFloat16Int8Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES; out_ext->pNext = NULL; out_ext->shaderFloat16 = in_ext->shaderFloat16; out_ext->shaderInt8 = in_ext->shaderInt8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: { VkPhysicalDeviceHostQueryResetFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceHostQueryResetFeatures *in_ext = (const VkPhysicalDeviceHostQueryResetFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; out_ext->pNext = NULL; out_ext->hostQueryReset = in_ext->hostQueryReset; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR: { VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *in_ext = (const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->globalPriorityQuery = in_ext->globalPriorityQuery; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: { VkPhysicalDeviceDescriptorIndexingFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorIndexingFeatures *in_ext = (const VkPhysicalDeviceDescriptorIndexingFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES; out_ext->pNext = NULL; out_ext->shaderInputAttachmentArrayDynamicIndexing = in_ext->shaderInputAttachmentArrayDynamicIndexing; out_ext->shaderUniformTexelBufferArrayDynamicIndexing = in_ext->shaderUniformTexelBufferArrayDynamicIndexing; out_ext->shaderStorageTexelBufferArrayDynamicIndexing = in_ext->shaderStorageTexelBufferArrayDynamicIndexing; out_ext->shaderUniformBufferArrayNonUniformIndexing = in_ext->shaderUniformBufferArrayNonUniformIndexing; out_ext->shaderSampledImageArrayNonUniformIndexing = in_ext->shaderSampledImageArrayNonUniformIndexing; out_ext->shaderStorageBufferArrayNonUniformIndexing = in_ext->shaderStorageBufferArrayNonUniformIndexing; out_ext->shaderStorageImageArrayNonUniformIndexing = in_ext->shaderStorageImageArrayNonUniformIndexing; out_ext->shaderInputAttachmentArrayNonUniformIndexing = in_ext->shaderInputAttachmentArrayNonUniformIndexing; out_ext->shaderUniformTexelBufferArrayNonUniformIndexing = in_ext->shaderUniformTexelBufferArrayNonUniformIndexing; out_ext->shaderStorageTexelBufferArrayNonUniformIndexing = in_ext->shaderStorageTexelBufferArrayNonUniformIndexing; out_ext->descriptorBindingUniformBufferUpdateAfterBind = in_ext->descriptorBindingUniformBufferUpdateAfterBind; out_ext->descriptorBindingSampledImageUpdateAfterBind = in_ext->descriptorBindingSampledImageUpdateAfterBind; out_ext->descriptorBindingStorageImageUpdateAfterBind = in_ext->descriptorBindingStorageImageUpdateAfterBind; out_ext->descriptorBindingStorageBufferUpdateAfterBind = in_ext->descriptorBindingStorageBufferUpdateAfterBind; out_ext->descriptorBindingUniformTexelBufferUpdateAfterBind = in_ext->descriptorBindingUniformTexelBufferUpdateAfterBind; out_ext->descriptorBindingStorageTexelBufferUpdateAfterBind = in_ext->descriptorBindingStorageTexelBufferUpdateAfterBind; out_ext->descriptorBindingUpdateUnusedWhilePending = in_ext->descriptorBindingUpdateUnusedWhilePending; out_ext->descriptorBindingPartiallyBound = in_ext->descriptorBindingPartiallyBound; out_ext->descriptorBindingVariableDescriptorCount = in_ext->descriptorBindingVariableDescriptorCount; out_ext->runtimeDescriptorArray = in_ext->runtimeDescriptorArray; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: { VkPhysicalDeviceTimelineSemaphoreFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTimelineSemaphoreFeatures *in_ext = (const VkPhysicalDeviceTimelineSemaphoreFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES; out_ext->pNext = NULL; out_ext->timelineSemaphore = in_ext->timelineSemaphore; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: { VkPhysicalDevice8BitStorageFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice8BitStorageFeatures *in_ext = (const VkPhysicalDevice8BitStorageFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer8BitAccess = in_ext->storageBuffer8BitAccess; out_ext->uniformAndStorageBuffer8BitAccess = in_ext->uniformAndStorageBuffer8BitAccess; out_ext->storagePushConstant8 = in_ext->storagePushConstant8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: { VkPhysicalDeviceConditionalRenderingFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceConditionalRenderingFeaturesEXT *in_ext = (const VkPhysicalDeviceConditionalRenderingFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT; out_ext->pNext = NULL; out_ext->conditionalRendering = in_ext->conditionalRendering; out_ext->inheritedConditionalRendering = in_ext->inheritedConditionalRendering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: { VkPhysicalDeviceVulkanMemoryModelFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkanMemoryModelFeatures *in_ext = (const VkPhysicalDeviceVulkanMemoryModelFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES; out_ext->pNext = NULL; out_ext->vulkanMemoryModel = in_ext->vulkanMemoryModel; out_ext->vulkanMemoryModelDeviceScope = in_ext->vulkanMemoryModelDeviceScope; out_ext->vulkanMemoryModelAvailabilityVisibilityChains = in_ext->vulkanMemoryModelAvailabilityVisibilityChains; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: { VkPhysicalDeviceShaderAtomicInt64Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicInt64Features *in_ext = (const VkPhysicalDeviceShaderAtomicInt64Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES; out_ext->pNext = NULL; out_ext->shaderBufferInt64Atomics = in_ext->shaderBufferInt64Atomics; out_ext->shaderSharedInt64Atomics = in_ext->shaderSharedInt64Atomics; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *in_ext = (const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderBufferFloat32Atomics = in_ext->shaderBufferFloat32Atomics; out_ext->shaderBufferFloat32AtomicAdd = in_ext->shaderBufferFloat32AtomicAdd; out_ext->shaderBufferFloat64Atomics = in_ext->shaderBufferFloat64Atomics; out_ext->shaderBufferFloat64AtomicAdd = in_ext->shaderBufferFloat64AtomicAdd; out_ext->shaderSharedFloat32Atomics = in_ext->shaderSharedFloat32Atomics; out_ext->shaderSharedFloat32AtomicAdd = in_ext->shaderSharedFloat32AtomicAdd; out_ext->shaderSharedFloat64Atomics = in_ext->shaderSharedFloat64Atomics; out_ext->shaderSharedFloat64AtomicAdd = in_ext->shaderSharedFloat64AtomicAdd; out_ext->shaderImageFloat32Atomics = in_ext->shaderImageFloat32Atomics; out_ext->shaderImageFloat32AtomicAdd = in_ext->shaderImageFloat32AtomicAdd; out_ext->sparseImageFloat32Atomics = in_ext->sparseImageFloat32Atomics; out_ext->sparseImageFloat32AtomicAdd = in_ext->sparseImageFloat32AtomicAdd; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *in_ext = (const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderBufferFloat16Atomics = in_ext->shaderBufferFloat16Atomics; out_ext->shaderBufferFloat16AtomicAdd = in_ext->shaderBufferFloat16AtomicAdd; out_ext->shaderBufferFloat16AtomicMinMax = in_ext->shaderBufferFloat16AtomicMinMax; out_ext->shaderBufferFloat32AtomicMinMax = in_ext->shaderBufferFloat32AtomicMinMax; out_ext->shaderBufferFloat64AtomicMinMax = in_ext->shaderBufferFloat64AtomicMinMax; out_ext->shaderSharedFloat16Atomics = in_ext->shaderSharedFloat16Atomics; out_ext->shaderSharedFloat16AtomicAdd = in_ext->shaderSharedFloat16AtomicAdd; out_ext->shaderSharedFloat16AtomicMinMax = in_ext->shaderSharedFloat16AtomicMinMax; out_ext->shaderSharedFloat32AtomicMinMax = in_ext->shaderSharedFloat32AtomicMinMax; out_ext->shaderSharedFloat64AtomicMinMax = in_ext->shaderSharedFloat64AtomicMinMax; out_ext->shaderImageFloat32AtomicMinMax = in_ext->shaderImageFloat32AtomicMinMax; out_ext->sparseImageFloat32AtomicMinMax = in_ext->sparseImageFloat32AtomicMinMax; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: { VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *in_ext = (const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT; out_ext->pNext = NULL; out_ext->vertexAttributeInstanceRateDivisor = in_ext->vertexAttributeInstanceRateDivisor; out_ext->vertexAttributeInstanceRateZeroDivisor = in_ext->vertexAttributeInstanceRateZeroDivisor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: { VkPhysicalDeviceASTCDecodeFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceASTCDecodeFeaturesEXT *in_ext = (const VkPhysicalDeviceASTCDecodeFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->decodeModeSharedExponent = in_ext->decodeModeSharedExponent; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: { VkPhysicalDeviceTransformFeedbackFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTransformFeedbackFeaturesEXT *in_ext = (const VkPhysicalDeviceTransformFeedbackFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->transformFeedback = in_ext->transformFeedback; out_ext->geometryStreams = in_ext->geometryStreams; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: { VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *in_ext = (const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV; out_ext->pNext = NULL; out_ext->representativeFragmentTest = in_ext->representativeFragmentTest; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: { VkPhysicalDeviceExclusiveScissorFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExclusiveScissorFeaturesNV *in_ext = (const VkPhysicalDeviceExclusiveScissorFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV; out_ext->pNext = NULL; out_ext->exclusiveScissor = in_ext->exclusiveScissor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: { VkPhysicalDeviceCornerSampledImageFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCornerSampledImageFeaturesNV *in_ext = (const VkPhysicalDeviceCornerSampledImageFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV; out_ext->pNext = NULL; out_ext->cornerSampledImage = in_ext->cornerSampledImage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: { VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *in_ext = (const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV; out_ext->pNext = NULL; out_ext->computeDerivativeGroupQuads = in_ext->computeDerivativeGroupQuads; out_ext->computeDerivativeGroupLinear = in_ext->computeDerivativeGroupLinear; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: { VkPhysicalDeviceShaderImageFootprintFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderImageFootprintFeaturesNV *in_ext = (const VkPhysicalDeviceShaderImageFootprintFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV; out_ext->pNext = NULL; out_ext->imageFootprint = in_ext->imageFootprint; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: { VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *in_ext = (const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV; out_ext->pNext = NULL; out_ext->dedicatedAllocationImageAliasing = in_ext->dedicatedAllocationImageAliasing; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV: { VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *in_ext = (const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV; out_ext->pNext = NULL; out_ext->indirectCopy = in_ext->indirectCopy; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV: { VkPhysicalDeviceMemoryDecompressionFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMemoryDecompressionFeaturesNV *in_ext = (const VkPhysicalDeviceMemoryDecompressionFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV; out_ext->pNext = NULL; out_ext->memoryDecompression = in_ext->memoryDecompression; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: { VkPhysicalDeviceShadingRateImageFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShadingRateImageFeaturesNV *in_ext = (const VkPhysicalDeviceShadingRateImageFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV; out_ext->pNext = NULL; out_ext->shadingRateImage = in_ext->shadingRateImage; out_ext->shadingRateCoarseSampleOrder = in_ext->shadingRateCoarseSampleOrder; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI: { VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *in_ext = (const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI; out_ext->pNext = NULL; out_ext->invocationMask = in_ext->invocationMask; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: { VkPhysicalDeviceMeshShaderFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMeshShaderFeaturesNV *in_ext = (const VkPhysicalDeviceMeshShaderFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV; out_ext->pNext = NULL; out_ext->taskShader = in_ext->taskShader; out_ext->meshShader = in_ext->meshShader; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: { VkPhysicalDeviceMeshShaderFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMeshShaderFeaturesEXT *in_ext = (const VkPhysicalDeviceMeshShaderFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->taskShader = in_ext->taskShader; out_ext->meshShader = in_ext->meshShader; out_ext->multiviewMeshShader = in_ext->multiviewMeshShader; out_ext->primitiveFragmentShadingRateMeshShader = in_ext->primitiveFragmentShadingRateMeshShader; out_ext->meshShaderQueries = in_ext->meshShaderQueries; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: { VkPhysicalDeviceAccelerationStructureFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAccelerationStructureFeaturesKHR *in_ext = (const VkPhysicalDeviceAccelerationStructureFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->accelerationStructure = in_ext->accelerationStructure; out_ext->accelerationStructureCaptureReplay = in_ext->accelerationStructureCaptureReplay; out_ext->accelerationStructureIndirectBuild = in_ext->accelerationStructureIndirectBuild; out_ext->accelerationStructureHostCommands = in_ext->accelerationStructureHostCommands; out_ext->descriptorBindingAccelerationStructureUpdateAfterBind = in_ext->descriptorBindingAccelerationStructureUpdateAfterBind; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: { VkPhysicalDeviceRayTracingPipelineFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *in_ext = (const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayTracingPipeline = in_ext->rayTracingPipeline; out_ext->rayTracingPipelineShaderGroupHandleCaptureReplay = in_ext->rayTracingPipelineShaderGroupHandleCaptureReplay; out_ext->rayTracingPipelineShaderGroupHandleCaptureReplayMixed = in_ext->rayTracingPipelineShaderGroupHandleCaptureReplayMixed; out_ext->rayTracingPipelineTraceRaysIndirect = in_ext->rayTracingPipelineTraceRaysIndirect; out_ext->rayTraversalPrimitiveCulling = in_ext->rayTraversalPrimitiveCulling; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: { VkPhysicalDeviceRayQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayQueryFeaturesKHR *in_ext = (const VkPhysicalDeviceRayQueryFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayQuery = in_ext->rayQuery; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: { VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *in_ext = (const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayTracingMaintenance1 = in_ext->rayTracingMaintenance1; out_ext->rayTracingPipelineTraceRaysIndirect2 = in_ext->rayTracingPipelineTraceRaysIndirect2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: { VkDeviceMemoryOverallocationCreateInfoAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceMemoryOverallocationCreateInfoAMD *in_ext = (const VkDeviceMemoryOverallocationCreateInfoAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD; out_ext->pNext = NULL; out_ext->overallocationBehavior = in_ext->overallocationBehavior; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: { VkPhysicalDeviceFragmentDensityMapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *in_ext = (const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentDensityMap = in_ext->fragmentDensityMap; out_ext->fragmentDensityMapDynamic = in_ext->fragmentDensityMapDynamic; out_ext->fragmentDensityMapNonSubsampledImages = in_ext->fragmentDensityMapNonSubsampledImages; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT: { VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *in_ext = (const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentDensityMapDeferred = in_ext->fragmentDensityMapDeferred; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM: { VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *in_ext = (const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->fragmentDensityMapOffset = in_ext->fragmentDensityMapOffset; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: { VkPhysicalDeviceScalarBlockLayoutFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceScalarBlockLayoutFeatures *in_ext = (const VkPhysicalDeviceScalarBlockLayoutFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES; out_ext->pNext = NULL; out_ext->scalarBlockLayout = in_ext->scalarBlockLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: { VkPhysicalDeviceUniformBufferStandardLayoutFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *in_ext = (const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES; out_ext->pNext = NULL; out_ext->uniformBufferStandardLayout = in_ext->uniformBufferStandardLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: { VkPhysicalDeviceDepthClipEnableFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClipEnableFeaturesEXT *in_ext = (const VkPhysicalDeviceDepthClipEnableFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClipEnable = in_ext->depthClipEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: { VkPhysicalDeviceMemoryPriorityFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMemoryPriorityFeaturesEXT *in_ext = (const VkPhysicalDeviceMemoryPriorityFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->memoryPriority = in_ext->memoryPriority; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT: { VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *in_ext = (const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pageableDeviceLocalMemory = in_ext->pageableDeviceLocalMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: { VkPhysicalDeviceBufferDeviceAddressFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBufferDeviceAddressFeatures *in_ext = (const VkPhysicalDeviceBufferDeviceAddressFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES; out_ext->pNext = NULL; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: { VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *in_ext = (const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: { VkPhysicalDeviceImagelessFramebufferFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImagelessFramebufferFeatures *in_ext = (const VkPhysicalDeviceImagelessFramebufferFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES; out_ext->pNext = NULL; out_ext->imagelessFramebuffer = in_ext->imagelessFramebuffer; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: { VkPhysicalDeviceTextureCompressionASTCHDRFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTextureCompressionASTCHDRFeatures *in_ext = (const VkPhysicalDeviceTextureCompressionASTCHDRFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES; out_ext->pNext = NULL; out_ext->textureCompressionASTC_HDR = in_ext->textureCompressionASTC_HDR; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: { VkPhysicalDeviceCooperativeMatrixFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCooperativeMatrixFeaturesNV *in_ext = (const VkPhysicalDeviceCooperativeMatrixFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV; out_ext->pNext = NULL; out_ext->cooperativeMatrix = in_ext->cooperativeMatrix; out_ext->cooperativeMatrixRobustBufferAccess = in_ext->cooperativeMatrixRobustBufferAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: { VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *in_ext = (const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->ycbcrImageArrays = in_ext->ycbcrImageArrays; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV: { VkPhysicalDevicePresentBarrierFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentBarrierFeaturesNV *in_ext = (const VkPhysicalDevicePresentBarrierFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV; out_ext->pNext = NULL; out_ext->presentBarrier = in_ext->presentBarrier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: { VkPhysicalDevicePerformanceQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePerformanceQueryFeaturesKHR *in_ext = (const VkPhysicalDevicePerformanceQueryFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->performanceCounterQueryPools = in_ext->performanceCounterQueryPools; out_ext->performanceCounterMultipleQueryPools = in_ext->performanceCounterMultipleQueryPools; 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)); const VkPhysicalDeviceCoverageReductionModeFeaturesNV *in_ext = (const VkPhysicalDeviceCoverageReductionModeFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV; out_ext->pNext = NULL; out_ext->coverageReductionMode = in_ext->coverageReductionMode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: { VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *in_ext = (const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL; out_ext->pNext = NULL; out_ext->shaderIntegerFunctions2 = in_ext->shaderIntegerFunctions2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: { VkPhysicalDeviceShaderClockFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderClockFeaturesKHR *in_ext = (const VkPhysicalDeviceShaderClockFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR; out_ext->pNext = NULL; out_ext->shaderSubgroupClock = in_ext->shaderSubgroupClock; out_ext->shaderDeviceClock = in_ext->shaderDeviceClock; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: { VkPhysicalDeviceIndexTypeUint8FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceIndexTypeUint8FeaturesEXT *in_ext = (const VkPhysicalDeviceIndexTypeUint8FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT; out_ext->pNext = NULL; out_ext->indexTypeUint8 = in_ext->indexTypeUint8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: { VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *in_ext = (const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV; out_ext->pNext = NULL; out_ext->shaderSMBuiltins = in_ext->shaderSMBuiltins; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: { VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *in_ext = (const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentShaderSampleInterlock = in_ext->fragmentShaderSampleInterlock; out_ext->fragmentShaderPixelInterlock = in_ext->fragmentShaderPixelInterlock; out_ext->fragmentShaderShadingRateInterlock = in_ext->fragmentShaderShadingRateInterlock; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: { VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *in_ext = (const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES; out_ext->pNext = NULL; out_ext->separateDepthStencilLayouts = in_ext->separateDepthStencilLayouts; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: { VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *in_ext = (const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT; out_ext->pNext = NULL; out_ext->primitiveTopologyListRestart = in_ext->primitiveTopologyListRestart; out_ext->primitiveTopologyPatchListRestart = in_ext->primitiveTopologyPatchListRestart; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: { VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *in_ext = (const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR; out_ext->pNext = NULL; out_ext->pipelineExecutableInfo = in_ext->pipelineExecutableInfo; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: { VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *in_ext = (const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES; out_ext->pNext = NULL; out_ext->shaderDemoteToHelperInvocation = in_ext->shaderDemoteToHelperInvocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: { VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *in_ext = (const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->texelBufferAlignment = in_ext->texelBufferAlignment; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: { VkPhysicalDeviceSubgroupSizeControlFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubgroupSizeControlFeatures *in_ext = (const VkPhysicalDeviceSubgroupSizeControlFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES; out_ext->pNext = NULL; out_ext->subgroupSizeControl = in_ext->subgroupSizeControl; out_ext->computeFullSubgroups = in_ext->computeFullSubgroups; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: { VkPhysicalDeviceLineRasterizationFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLineRasterizationFeaturesEXT *in_ext = (const VkPhysicalDeviceLineRasterizationFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT; out_ext->pNext = NULL; out_ext->rectangularLines = in_ext->rectangularLines; out_ext->bresenhamLines = in_ext->bresenhamLines; out_ext->smoothLines = in_ext->smoothLines; out_ext->stippledRectangularLines = in_ext->stippledRectangularLines; out_ext->stippledBresenhamLines = in_ext->stippledBresenhamLines; out_ext->stippledSmoothLines = in_ext->stippledSmoothLines; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: { VkPhysicalDevicePipelineCreationCacheControlFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineCreationCacheControlFeatures *in_ext = (const VkPhysicalDevicePipelineCreationCacheControlFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES; out_ext->pNext = NULL; out_ext->pipelineCreationCacheControl = in_ext->pipelineCreationCacheControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: { VkPhysicalDeviceVulkan11Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan11Features *in_ext = (const VkPhysicalDeviceVulkan11Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer16BitAccess = in_ext->storageBuffer16BitAccess; out_ext->uniformAndStorageBuffer16BitAccess = in_ext->uniformAndStorageBuffer16BitAccess; out_ext->storagePushConstant16 = in_ext->storagePushConstant16; out_ext->storageInputOutput16 = in_ext->storageInputOutput16; out_ext->multiview = in_ext->multiview; out_ext->multiviewGeometryShader = in_ext->multiviewGeometryShader; out_ext->multiviewTessellationShader = in_ext->multiviewTessellationShader; out_ext->variablePointersStorageBuffer = in_ext->variablePointersStorageBuffer; out_ext->variablePointers = in_ext->variablePointers; out_ext->protectedMemory = in_ext->protectedMemory; out_ext->samplerYcbcrConversion = in_ext->samplerYcbcrConversion; out_ext->shaderDrawParameters = in_ext->shaderDrawParameters; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: { VkPhysicalDeviceVulkan12Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan12Features *in_ext = (const VkPhysicalDeviceVulkan12Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES; out_ext->pNext = NULL; out_ext->samplerMirrorClampToEdge = in_ext->samplerMirrorClampToEdge; out_ext->drawIndirectCount = in_ext->drawIndirectCount; out_ext->storageBuffer8BitAccess = in_ext->storageBuffer8BitAccess; out_ext->uniformAndStorageBuffer8BitAccess = in_ext->uniformAndStorageBuffer8BitAccess; out_ext->storagePushConstant8 = in_ext->storagePushConstant8; out_ext->shaderBufferInt64Atomics = in_ext->shaderBufferInt64Atomics; out_ext->shaderSharedInt64Atomics = in_ext->shaderSharedInt64Atomics; out_ext->shaderFloat16 = in_ext->shaderFloat16; out_ext->shaderInt8 = in_ext->shaderInt8; out_ext->descriptorIndexing = in_ext->descriptorIndexing; out_ext->shaderInputAttachmentArrayDynamicIndexing = in_ext->shaderInputAttachmentArrayDynamicIndexing; out_ext->shaderUniformTexelBufferArrayDynamicIndexing = in_ext->shaderUniformTexelBufferArrayDynamicIndexing; out_ext->shaderStorageTexelBufferArrayDynamicIndexing = in_ext->shaderStorageTexelBufferArrayDynamicIndexing; out_ext->shaderUniformBufferArrayNonUniformIndexing = in_ext->shaderUniformBufferArrayNonUniformIndexing; out_ext->shaderSampledImageArrayNonUniformIndexing = in_ext->shaderSampledImageArrayNonUniformIndexing; out_ext->shaderStorageBufferArrayNonUniformIndexing = in_ext->shaderStorageBufferArrayNonUniformIndexing; out_ext->shaderStorageImageArrayNonUniformIndexing = in_ext->shaderStorageImageArrayNonUniformIndexing; out_ext->shaderInputAttachmentArrayNonUniformIndexing = in_ext->shaderInputAttachmentArrayNonUniformIndexing; out_ext->shaderUniformTexelBufferArrayNonUniformIndexing = in_ext->shaderUniformTexelBufferArrayNonUniformIndexing; out_ext->shaderStorageTexelBufferArrayNonUniformIndexing = in_ext->shaderStorageTexelBufferArrayNonUniformIndexing; out_ext->descriptorBindingUniformBufferUpdateAfterBind = in_ext->descriptorBindingUniformBufferUpdateAfterBind; out_ext->descriptorBindingSampledImageUpdateAfterBind = in_ext->descriptorBindingSampledImageUpdateAfterBind; out_ext->descriptorBindingStorageImageUpdateAfterBind = in_ext->descriptorBindingStorageImageUpdateAfterBind; out_ext->descriptorBindingStorageBufferUpdateAfterBind = in_ext->descriptorBindingStorageBufferUpdateAfterBind; out_ext->descriptorBindingUniformTexelBufferUpdateAfterBind = in_ext->descriptorBindingUniformTexelBufferUpdateAfterBind; out_ext->descriptorBindingStorageTexelBufferUpdateAfterBind = in_ext->descriptorBindingStorageTexelBufferUpdateAfterBind; out_ext->descriptorBindingUpdateUnusedWhilePending = in_ext->descriptorBindingUpdateUnusedWhilePending; out_ext->descriptorBindingPartiallyBound = in_ext->descriptorBindingPartiallyBound; out_ext->descriptorBindingVariableDescriptorCount = in_ext->descriptorBindingVariableDescriptorCount; out_ext->runtimeDescriptorArray = in_ext->runtimeDescriptorArray; out_ext->samplerFilterMinmax = in_ext->samplerFilterMinmax; out_ext->scalarBlockLayout = in_ext->scalarBlockLayout; out_ext->imagelessFramebuffer = in_ext->imagelessFramebuffer; out_ext->uniformBufferStandardLayout = in_ext->uniformBufferStandardLayout; out_ext->shaderSubgroupExtendedTypes = in_ext->shaderSubgroupExtendedTypes; out_ext->separateDepthStencilLayouts = in_ext->separateDepthStencilLayouts; out_ext->hostQueryReset = in_ext->hostQueryReset; out_ext->timelineSemaphore = in_ext->timelineSemaphore; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_ext->vulkanMemoryModel = in_ext->vulkanMemoryModel; out_ext->vulkanMemoryModelDeviceScope = in_ext->vulkanMemoryModelDeviceScope; out_ext->vulkanMemoryModelAvailabilityVisibilityChains = in_ext->vulkanMemoryModelAvailabilityVisibilityChains; out_ext->shaderOutputViewportIndex = in_ext->shaderOutputViewportIndex; out_ext->shaderOutputLayer = in_ext->shaderOutputLayer; out_ext->subgroupBroadcastDynamicId = in_ext->subgroupBroadcastDynamicId; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: { VkPhysicalDeviceVulkan13Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan13Features *in_ext = (const VkPhysicalDeviceVulkan13Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; out_ext->pNext = NULL; out_ext->robustImageAccess = in_ext->robustImageAccess; out_ext->inlineUniformBlock = in_ext->inlineUniformBlock; out_ext->descriptorBindingInlineUniformBlockUpdateAfterBind = in_ext->descriptorBindingInlineUniformBlockUpdateAfterBind; out_ext->pipelineCreationCacheControl = in_ext->pipelineCreationCacheControl; out_ext->privateData = in_ext->privateData; out_ext->shaderDemoteToHelperInvocation = in_ext->shaderDemoteToHelperInvocation; out_ext->shaderTerminateInvocation = in_ext->shaderTerminateInvocation; out_ext->subgroupSizeControl = in_ext->subgroupSizeControl; out_ext->computeFullSubgroups = in_ext->computeFullSubgroups; out_ext->synchronization2 = in_ext->synchronization2; out_ext->textureCompressionASTC_HDR = in_ext->textureCompressionASTC_HDR; out_ext->shaderZeroInitializeWorkgroupMemory = in_ext->shaderZeroInitializeWorkgroupMemory; out_ext->dynamicRendering = in_ext->dynamicRendering; out_ext->shaderIntegerDotProduct = in_ext->shaderIntegerDotProduct; out_ext->maintenance4 = in_ext->maintenance4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: { VkPhysicalDeviceCoherentMemoryFeaturesAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCoherentMemoryFeaturesAMD *in_ext = (const VkPhysicalDeviceCoherentMemoryFeaturesAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD; out_ext->pNext = NULL; out_ext->deviceCoherentMemory = in_ext->deviceCoherentMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: { VkPhysicalDeviceCustomBorderColorFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCustomBorderColorFeaturesEXT *in_ext = (const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT; out_ext->pNext = NULL; out_ext->customBorderColors = in_ext->customBorderColors; out_ext->customBorderColorWithoutFormat = in_ext->customBorderColorWithoutFormat; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: { VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *in_ext = (const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->borderColorSwizzle = in_ext->borderColorSwizzle; out_ext->borderColorSwizzleFromImage = in_ext->borderColorSwizzleFromImage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *in_ext = (const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState = in_ext->extendedDynamicState; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *in_ext = (const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState2 = in_ext->extendedDynamicState2; out_ext->extendedDynamicState2LogicOp = in_ext->extendedDynamicState2LogicOp; out_ext->extendedDynamicState2PatchControlPoints = in_ext->extendedDynamicState2PatchControlPoints; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *in_ext = (const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState3TessellationDomainOrigin = in_ext->extendedDynamicState3TessellationDomainOrigin; out_ext->extendedDynamicState3DepthClampEnable = in_ext->extendedDynamicState3DepthClampEnable; out_ext->extendedDynamicState3PolygonMode = in_ext->extendedDynamicState3PolygonMode; out_ext->extendedDynamicState3RasterizationSamples = in_ext->extendedDynamicState3RasterizationSamples; out_ext->extendedDynamicState3SampleMask = in_ext->extendedDynamicState3SampleMask; out_ext->extendedDynamicState3AlphaToCoverageEnable = in_ext->extendedDynamicState3AlphaToCoverageEnable; out_ext->extendedDynamicState3AlphaToOneEnable = in_ext->extendedDynamicState3AlphaToOneEnable; out_ext->extendedDynamicState3LogicOpEnable = in_ext->extendedDynamicState3LogicOpEnable; out_ext->extendedDynamicState3ColorBlendEnable = in_ext->extendedDynamicState3ColorBlendEnable; out_ext->extendedDynamicState3ColorBlendEquation = in_ext->extendedDynamicState3ColorBlendEquation; out_ext->extendedDynamicState3ColorWriteMask = in_ext->extendedDynamicState3ColorWriteMask; out_ext->extendedDynamicState3RasterizationStream = in_ext->extendedDynamicState3RasterizationStream; out_ext->extendedDynamicState3ConservativeRasterizationMode = in_ext->extendedDynamicState3ConservativeRasterizationMode; out_ext->extendedDynamicState3ExtraPrimitiveOverestimationSize = in_ext->extendedDynamicState3ExtraPrimitiveOverestimationSize; out_ext->extendedDynamicState3DepthClipEnable = in_ext->extendedDynamicState3DepthClipEnable; out_ext->extendedDynamicState3SampleLocationsEnable = in_ext->extendedDynamicState3SampleLocationsEnable; out_ext->extendedDynamicState3ColorBlendAdvanced = in_ext->extendedDynamicState3ColorBlendAdvanced; out_ext->extendedDynamicState3ProvokingVertexMode = in_ext->extendedDynamicState3ProvokingVertexMode; out_ext->extendedDynamicState3LineRasterizationMode = in_ext->extendedDynamicState3LineRasterizationMode; out_ext->extendedDynamicState3LineStippleEnable = in_ext->extendedDynamicState3LineStippleEnable; out_ext->extendedDynamicState3DepthClipNegativeOneToOne = in_ext->extendedDynamicState3DepthClipNegativeOneToOne; out_ext->extendedDynamicState3ViewportWScalingEnable = in_ext->extendedDynamicState3ViewportWScalingEnable; out_ext->extendedDynamicState3ViewportSwizzle = in_ext->extendedDynamicState3ViewportSwizzle; out_ext->extendedDynamicState3CoverageToColorEnable = in_ext->extendedDynamicState3CoverageToColorEnable; out_ext->extendedDynamicState3CoverageToColorLocation = in_ext->extendedDynamicState3CoverageToColorLocation; out_ext->extendedDynamicState3CoverageModulationMode = in_ext->extendedDynamicState3CoverageModulationMode; out_ext->extendedDynamicState3CoverageModulationTableEnable = in_ext->extendedDynamicState3CoverageModulationTableEnable; out_ext->extendedDynamicState3CoverageModulationTable = in_ext->extendedDynamicState3CoverageModulationTable; out_ext->extendedDynamicState3CoverageReductionMode = in_ext->extendedDynamicState3CoverageReductionMode; out_ext->extendedDynamicState3RepresentativeFragmentTestEnable = in_ext->extendedDynamicState3RepresentativeFragmentTestEnable; out_ext->extendedDynamicState3ShadingRateImageEnable = in_ext->extendedDynamicState3ShadingRateImageEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV: { VkPhysicalDeviceDiagnosticsConfigFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDiagnosticsConfigFeaturesNV *in_ext = (const VkPhysicalDeviceDiagnosticsConfigFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV; out_ext->pNext = NULL; out_ext->diagnosticsConfig = in_ext->diagnosticsConfig; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: { VkDeviceDiagnosticsConfigCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceDiagnosticsConfigCreateInfoNV *in_ext = (const VkDeviceDiagnosticsConfigCreateInfoNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: { VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *in_ext = (const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES; out_ext->pNext = NULL; out_ext->shaderZeroInitializeWorkgroupMemory = in_ext->shaderZeroInitializeWorkgroupMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: { VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *in_ext = (const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR; out_ext->pNext = NULL; out_ext->shaderSubgroupUniformControlFlow = in_ext->shaderSubgroupUniformControlFlow; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: { VkPhysicalDeviceRobustness2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRobustness2FeaturesEXT *in_ext = (const VkPhysicalDeviceRobustness2FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->robustBufferAccess2 = in_ext->robustBufferAccess2; out_ext->robustImageAccess2 = in_ext->robustImageAccess2; out_ext->nullDescriptor = in_ext->nullDescriptor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: { VkPhysicalDeviceImageRobustnessFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageRobustnessFeatures *in_ext = (const VkPhysicalDeviceImageRobustnessFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES; out_ext->pNext = NULL; out_ext->robustImageAccess = in_ext->robustImageAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: { VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *in_ext = (const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR; out_ext->pNext = NULL; out_ext->workgroupMemoryExplicitLayout = in_ext->workgroupMemoryExplicitLayout; out_ext->workgroupMemoryExplicitLayoutScalarBlockLayout = in_ext->workgroupMemoryExplicitLayoutScalarBlockLayout; out_ext->workgroupMemoryExplicitLayout8BitAccess = in_ext->workgroupMemoryExplicitLayout8BitAccess; out_ext->workgroupMemoryExplicitLayout16BitAccess = in_ext->workgroupMemoryExplicitLayout16BitAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: { VkPhysicalDevice4444FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice4444FormatsFeaturesEXT *in_ext = (const VkPhysicalDevice4444FormatsFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->formatA4R4G4B4 = in_ext->formatA4R4G4B4; out_ext->formatA4B4G4R4 = in_ext->formatA4B4G4R4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI: { VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *in_ext = (const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI; out_ext->pNext = NULL; out_ext->subpassShading = in_ext->subpassShading; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: { VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *in_ext = (const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderImageInt64Atomics = in_ext->shaderImageInt64Atomics; out_ext->sparseImageInt64Atomics = in_ext->sparseImageInt64Atomics; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: { VkPhysicalDeviceFragmentShadingRateFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *in_ext = (const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->pipelineFragmentShadingRate = in_ext->pipelineFragmentShadingRate; out_ext->primitiveFragmentShadingRate = in_ext->primitiveFragmentShadingRate; out_ext->attachmentFragmentShadingRate = in_ext->attachmentFragmentShadingRate; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: { VkPhysicalDeviceShaderTerminateInvocationFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderTerminateInvocationFeatures *in_ext = (const VkPhysicalDeviceShaderTerminateInvocationFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES; out_ext->pNext = NULL; out_ext->shaderTerminateInvocation = in_ext->shaderTerminateInvocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV: { VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *in_ext = (const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV; out_ext->pNext = NULL; out_ext->fragmentShadingRateEnums = in_ext->fragmentShadingRateEnums; out_ext->supersampleFragmentShadingRates = in_ext->supersampleFragmentShadingRates; out_ext->noInvocationFragmentShadingRates = in_ext->noInvocationFragmentShadingRates; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT: { VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *in_ext = (const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT; out_ext->pNext = NULL; out_ext->image2DViewOf3D = in_ext->image2DViewOf3D; out_ext->sampler2DViewOf3D = in_ext->sampler2DViewOf3D; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT: { VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *in_ext = (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->mutableDescriptorType = in_ext->mutableDescriptorType; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: { VkPhysicalDeviceDepthClipControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClipControlFeaturesEXT *in_ext = (const VkPhysicalDeviceDepthClipControlFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClipControl = in_ext->depthClipControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *in_ext = (const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->vertexInputDynamicState = in_ext->vertexInputDynamicState; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: { VkPhysicalDeviceColorWriteEnableFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceColorWriteEnableFeaturesEXT *in_ext = (const VkPhysicalDeviceColorWriteEnableFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->colorWriteEnable = in_ext->colorWriteEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: { VkPhysicalDeviceSynchronization2Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSynchronization2Features *in_ext = (const VkPhysicalDeviceSynchronization2Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES; out_ext->pNext = NULL; out_ext->synchronization2 = in_ext->synchronization2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: { VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *in_ext = (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->primitivesGeneratedQuery = in_ext->primitivesGeneratedQuery; out_ext->primitivesGeneratedQueryWithRasterizerDiscard = in_ext->primitivesGeneratedQueryWithRasterizerDiscard; out_ext->primitivesGeneratedQueryWithNonZeroStreams = in_ext->primitivesGeneratedQueryWithNonZeroStreams; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT: { VkPhysicalDeviceLegacyDitheringFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLegacyDitheringFeaturesEXT *in_ext = (const VkPhysicalDeviceLegacyDitheringFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT; out_ext->pNext = NULL; out_ext->legacyDithering = in_ext->legacyDithering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT: { VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *in_ext = (const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT; out_ext->pNext = NULL; out_ext->multisampledRenderToSingleSampled = in_ext->multisampledRenderToSingleSampled; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT: { VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *in_ext = (const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelineProtectedAccess = in_ext->pipelineProtectedAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV: { VkPhysicalDeviceInheritedViewportScissorFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInheritedViewportScissorFeaturesNV *in_ext = (const VkPhysicalDeviceInheritedViewportScissorFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV; out_ext->pNext = NULL; out_ext->inheritedViewportScissor2D = in_ext->inheritedViewportScissor2D; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: { VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *in_ext = (const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->ycbcr2plane444Formats = in_ext->ycbcr2plane444Formats; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: { VkPhysicalDeviceProvokingVertexFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceProvokingVertexFeaturesEXT *in_ext = (const VkPhysicalDeviceProvokingVertexFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT; out_ext->pNext = NULL; out_ext->provokingVertexLast = in_ext->provokingVertexLast; out_ext->transformFeedbackPreservesProvokingVertex = in_ext->transformFeedbackPreservesProvokingVertex; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: { VkPhysicalDeviceDescriptorBufferFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorBufferFeaturesEXT *in_ext = (const VkPhysicalDeviceDescriptorBufferFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->descriptorBuffer = in_ext->descriptorBuffer; out_ext->descriptorBufferCaptureReplay = in_ext->descriptorBufferCaptureReplay; out_ext->descriptorBufferImageLayoutIgnored = in_ext->descriptorBufferImageLayoutIgnored; out_ext->descriptorBufferPushDescriptors = in_ext->descriptorBufferPushDescriptors; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: { VkPhysicalDeviceShaderIntegerDotProductFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderIntegerDotProductFeatures *in_ext = (const VkPhysicalDeviceShaderIntegerDotProductFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES; out_ext->pNext = NULL; out_ext->shaderIntegerDotProduct = in_ext->shaderIntegerDotProduct; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR: { VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *in_ext = (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR; out_ext->pNext = NULL; out_ext->fragmentShaderBarycentric = in_ext->fragmentShaderBarycentric; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV: { VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *in_ext = (const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV; out_ext->pNext = NULL; out_ext->rayTracingMotionBlur = in_ext->rayTracingMotionBlur; out_ext->rayTracingMotionBlurPipelineTraceRaysIndirect = in_ext->rayTracingMotionBlurPipelineTraceRaysIndirect; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: { VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *in_ext = (const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->formatRgba10x6WithoutYCbCrSampler = in_ext->formatRgba10x6WithoutYCbCrSampler; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: { VkPhysicalDeviceDynamicRenderingFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDynamicRenderingFeatures *in_ext = (const VkPhysicalDeviceDynamicRenderingFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES; out_ext->pNext = NULL; out_ext->dynamicRendering = in_ext->dynamicRendering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: { VkPhysicalDeviceImageViewMinLodFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageViewMinLodFeaturesEXT *in_ext = (const VkPhysicalDeviceImageViewMinLodFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT; out_ext->pNext = NULL; out_ext->minLod = in_ext->minLod; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT: { VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *in_ext = (const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->rasterizationOrderColorAttachmentAccess = in_ext->rasterizationOrderColorAttachmentAccess; out_ext->rasterizationOrderDepthAttachmentAccess = in_ext->rasterizationOrderDepthAttachmentAccess; out_ext->rasterizationOrderStencilAttachmentAccess = in_ext->rasterizationOrderStencilAttachmentAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV: { VkPhysicalDeviceLinearColorAttachmentFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLinearColorAttachmentFeaturesNV *in_ext = (const VkPhysicalDeviceLinearColorAttachmentFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV; out_ext->pNext = NULL; out_ext->linearColorAttachment = in_ext->linearColorAttachment; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: { VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *in_ext = (const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->graphicsPipelineLibrary = in_ext->graphicsPipelineLibrary; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE: { VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *in_ext = (const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE; out_ext->pNext = NULL; out_ext->descriptorSetHostMapping = in_ext->descriptorSetHostMapping; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: { VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *in_ext = (const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderModuleIdentifier = in_ext->shaderModuleIdentifier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: { VkPhysicalDeviceImageCompressionControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageCompressionControlFeaturesEXT *in_ext = (const VkPhysicalDeviceImageCompressionControlFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT; out_ext->pNext = NULL; out_ext->imageCompressionControl = in_ext->imageCompressionControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: { VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *in_ext = (const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT; out_ext->pNext = NULL; out_ext->imageCompressionControlSwapchain = in_ext->imageCompressionControlSwapchain; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: { VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *in_ext = (const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->subpassMergeFeedback = in_ext->subpassMergeFeedback; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT: { VkPhysicalDeviceOpacityMicromapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceOpacityMicromapFeaturesEXT *in_ext = (const VkPhysicalDeviceOpacityMicromapFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->micromap = in_ext->micromap; out_ext->micromapCaptureReplay = in_ext->micromapCaptureReplay; out_ext->micromapHostCommands = in_ext->micromapHostCommands; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: { VkPhysicalDevicePipelinePropertiesFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelinePropertiesFeaturesEXT *in_ext = (const VkPhysicalDevicePipelinePropertiesFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelinePropertiesIdentifier = in_ext->pipelinePropertiesIdentifier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD: { VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *in_ext = (const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD; out_ext->pNext = NULL; out_ext->shaderEarlyAndLateFragmentTests = in_ext->shaderEarlyAndLateFragmentTests; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: { VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *in_ext = (const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->nonSeamlessCubeMap = in_ext->nonSeamlessCubeMap; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT: { VkPhysicalDevicePipelineRobustnessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineRobustnessFeaturesEXT *in_ext = (const VkPhysicalDevicePipelineRobustnessFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelineRobustness = in_ext->pipelineRobustness; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM: { VkPhysicalDeviceImageProcessingFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageProcessingFeaturesQCOM *in_ext = (const VkPhysicalDeviceImageProcessingFeaturesQCOM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->textureSampleWeighted = in_ext->textureSampleWeighted; out_ext->textureBoxFilter = in_ext->textureBoxFilter; out_ext->textureBlockMatch = in_ext->textureBlockMatch; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM: { VkPhysicalDeviceTilePropertiesFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTilePropertiesFeaturesQCOM *in_ext = (const VkPhysicalDeviceTilePropertiesFeaturesQCOM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->tileProperties = in_ext->tileProperties; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT: { VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *in_ext = (const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->attachmentFeedbackLoopLayout = in_ext->attachmentFeedbackLoopLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT: { VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *in_ext = (const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClampZeroOne = in_ext->depthClampZeroOne; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT: { VkPhysicalDeviceAddressBindingReportFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAddressBindingReportFeaturesEXT *in_ext = (const VkPhysicalDeviceAddressBindingReportFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->reportAddressBinding = in_ext->reportAddressBinding; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV: { VkPhysicalDeviceOpticalFlowFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceOpticalFlowFeaturesNV *in_ext = (const VkPhysicalDeviceOpticalFlowFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV; out_ext->pNext = NULL; out_ext->opticalFlow = in_ext->opticalFlow; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT: { VkPhysicalDeviceFaultFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFaultFeaturesEXT *in_ext = (const VkPhysicalDeviceFaultFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->deviceFault = in_ext->deviceFault; out_ext->deviceFaultVendorBinary = in_ext->deviceFaultVendorBinary; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM: { VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *in_ext = (const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM; out_ext->pNext = NULL; out_ext->shaderCoreBuiltins = in_ext->shaderCoreBuiltins; 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)); const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *in_ext = (const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV; out_ext->pNext = NULL; out_ext->rayTracingInvocationReorder = in_ext->rayTracingInvocationReorder; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #endif /* _WIN64 */ static inline void convert_VkDeviceCreateInfo_win32_to_host(struct conversion_context *ctx, const VkDeviceCreateInfo32 *in, VkDeviceCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->queueCreateInfoCount = in->queueCreateInfoCount; out->pQueueCreateInfos = convert_VkDeviceQueueCreateInfo_array_win32_to_host(ctx, (const VkDeviceQueueCreateInfo32 *)UlongToPtr(in->pQueueCreateInfos), in->queueCreateInfoCount); out->enabledLayerCount = in->enabledLayerCount; out->ppEnabledLayerNames = convert_char_pointer_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in->ppEnabledLayerNames), in->enabledLayerCount); out->enabledExtensionCount = in->enabledExtensionCount; out->ppEnabledExtensionNames = convert_char_pointer_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in->ppEnabledExtensionNames), in->enabledExtensionCount); out->pEnabledFeatures = (const VkPhysicalDeviceFeatures *)UlongToPtr(in->pEnabledFeatures); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO: break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: { VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV32 *in_ext = (const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV; out_ext->pNext = NULL; out_ext->deviceGeneratedCommands = in_ext->deviceGeneratedCommands; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: { VkDevicePrivateDataCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDevicePrivateDataCreateInfo32 *in_ext = (const VkDevicePrivateDataCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO; out_ext->pNext = NULL; out_ext->privateDataSlotRequestCount = in_ext->privateDataSlotRequestCount; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: { VkPhysicalDevicePrivateDataFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrivateDataFeatures32 *in_ext = (const VkPhysicalDevicePrivateDataFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES; out_ext->pNext = NULL; out_ext->privateData = in_ext->privateData; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: { VkPhysicalDeviceFeatures2 *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFeatures232 *in_ext = (const VkPhysicalDeviceFeatures232 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; out_ext->pNext = NULL; out_ext->features = in_ext->features; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: { VkPhysicalDeviceVariablePointersFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVariablePointersFeatures32 *in_ext = (const VkPhysicalDeviceVariablePointersFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES; out_ext->pNext = NULL; out_ext->variablePointersStorageBuffer = in_ext->variablePointersStorageBuffer; out_ext->variablePointers = in_ext->variablePointers; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: { VkPhysicalDeviceMultiviewFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultiviewFeatures32 *in_ext = (const VkPhysicalDeviceMultiviewFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES; out_ext->pNext = NULL; out_ext->multiview = in_ext->multiview; out_ext->multiviewGeometryShader = in_ext->multiviewGeometryShader; out_ext->multiviewTessellationShader = in_ext->multiviewTessellationShader; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: { VkDeviceGroupDeviceCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupDeviceCreateInfo32 *in_ext = (const VkDeviceGroupDeviceCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO; out_ext->pNext = NULL; out_ext->physicalDeviceCount = in_ext->physicalDeviceCount; out_ext->pPhysicalDevices = convert_VkPhysicalDevice_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in_ext->pPhysicalDevices), in_ext->physicalDeviceCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: { VkPhysicalDevicePresentIdFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentIdFeaturesKHR32 *in_ext = (const VkPhysicalDevicePresentIdFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR; out_ext->pNext = NULL; out_ext->presentId = in_ext->presentId; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: { VkPhysicalDevicePresentWaitFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentWaitFeaturesKHR32 *in_ext = (const VkPhysicalDevicePresentWaitFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR; out_ext->pNext = NULL; out_ext->presentWait = in_ext->presentWait; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: { VkPhysicalDevice16BitStorageFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice16BitStorageFeatures32 *in_ext = (const VkPhysicalDevice16BitStorageFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer16BitAccess = in_ext->storageBuffer16BitAccess; out_ext->uniformAndStorageBuffer16BitAccess = in_ext->uniformAndStorageBuffer16BitAccess; out_ext->storagePushConstant16 = in_ext->storagePushConstant16; out_ext->storageInputOutput16 = in_ext->storageInputOutput16; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: { VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures32 *in_ext = (const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES; out_ext->pNext = NULL; out_ext->shaderSubgroupExtendedTypes = in_ext->shaderSubgroupExtendedTypes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: { VkPhysicalDeviceSamplerYcbcrConversionFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSamplerYcbcrConversionFeatures32 *in_ext = (const VkPhysicalDeviceSamplerYcbcrConversionFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES; out_ext->pNext = NULL; out_ext->samplerYcbcrConversion = in_ext->samplerYcbcrConversion; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: { VkPhysicalDeviceProtectedMemoryFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceProtectedMemoryFeatures32 *in_ext = (const VkPhysicalDeviceProtectedMemoryFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES; out_ext->pNext = NULL; out_ext->protectedMemory = in_ext->protectedMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: { VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT32 *in_ext = (const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT; out_ext->pNext = NULL; out_ext->advancedBlendCoherentOperations = in_ext->advancedBlendCoherentOperations; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: { VkPhysicalDeviceMultiDrawFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultiDrawFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMultiDrawFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT; out_ext->pNext = NULL; out_ext->multiDraw = in_ext->multiDraw; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: { VkPhysicalDeviceInlineUniformBlockFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInlineUniformBlockFeatures32 *in_ext = (const VkPhysicalDeviceInlineUniformBlockFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES; out_ext->pNext = NULL; out_ext->inlineUniformBlock = in_ext->inlineUniformBlock; out_ext->descriptorBindingInlineUniformBlockUpdateAfterBind = in_ext->descriptorBindingInlineUniformBlockUpdateAfterBind; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: { VkPhysicalDeviceMaintenance4Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMaintenance4Features32 *in_ext = (const VkPhysicalDeviceMaintenance4Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES; out_ext->pNext = NULL; out_ext->maintenance4 = in_ext->maintenance4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: { VkPhysicalDeviceShaderDrawParametersFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderDrawParametersFeatures32 *in_ext = (const VkPhysicalDeviceShaderDrawParametersFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES; out_ext->pNext = NULL; out_ext->shaderDrawParameters = in_ext->shaderDrawParameters; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: { VkPhysicalDeviceShaderFloat16Int8Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderFloat16Int8Features32 *in_ext = (const VkPhysicalDeviceShaderFloat16Int8Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES; out_ext->pNext = NULL; out_ext->shaderFloat16 = in_ext->shaderFloat16; out_ext->shaderInt8 = in_ext->shaderInt8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: { VkPhysicalDeviceHostQueryResetFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceHostQueryResetFeatures32 *in_ext = (const VkPhysicalDeviceHostQueryResetFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; out_ext->pNext = NULL; out_ext->hostQueryReset = in_ext->hostQueryReset; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR: { VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR32 *in_ext = (const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->globalPriorityQuery = in_ext->globalPriorityQuery; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: { VkPhysicalDeviceDescriptorIndexingFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorIndexingFeatures32 *in_ext = (const VkPhysicalDeviceDescriptorIndexingFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES; out_ext->pNext = NULL; out_ext->shaderInputAttachmentArrayDynamicIndexing = in_ext->shaderInputAttachmentArrayDynamicIndexing; out_ext->shaderUniformTexelBufferArrayDynamicIndexing = in_ext->shaderUniformTexelBufferArrayDynamicIndexing; out_ext->shaderStorageTexelBufferArrayDynamicIndexing = in_ext->shaderStorageTexelBufferArrayDynamicIndexing; out_ext->shaderUniformBufferArrayNonUniformIndexing = in_ext->shaderUniformBufferArrayNonUniformIndexing; out_ext->shaderSampledImageArrayNonUniformIndexing = in_ext->shaderSampledImageArrayNonUniformIndexing; out_ext->shaderStorageBufferArrayNonUniformIndexing = in_ext->shaderStorageBufferArrayNonUniformIndexing; out_ext->shaderStorageImageArrayNonUniformIndexing = in_ext->shaderStorageImageArrayNonUniformIndexing; out_ext->shaderInputAttachmentArrayNonUniformIndexing = in_ext->shaderInputAttachmentArrayNonUniformIndexing; out_ext->shaderUniformTexelBufferArrayNonUniformIndexing = in_ext->shaderUniformTexelBufferArrayNonUniformIndexing; out_ext->shaderStorageTexelBufferArrayNonUniformIndexing = in_ext->shaderStorageTexelBufferArrayNonUniformIndexing; out_ext->descriptorBindingUniformBufferUpdateAfterBind = in_ext->descriptorBindingUniformBufferUpdateAfterBind; out_ext->descriptorBindingSampledImageUpdateAfterBind = in_ext->descriptorBindingSampledImageUpdateAfterBind; out_ext->descriptorBindingStorageImageUpdateAfterBind = in_ext->descriptorBindingStorageImageUpdateAfterBind; out_ext->descriptorBindingStorageBufferUpdateAfterBind = in_ext->descriptorBindingStorageBufferUpdateAfterBind; out_ext->descriptorBindingUniformTexelBufferUpdateAfterBind = in_ext->descriptorBindingUniformTexelBufferUpdateAfterBind; out_ext->descriptorBindingStorageTexelBufferUpdateAfterBind = in_ext->descriptorBindingStorageTexelBufferUpdateAfterBind; out_ext->descriptorBindingUpdateUnusedWhilePending = in_ext->descriptorBindingUpdateUnusedWhilePending; out_ext->descriptorBindingPartiallyBound = in_ext->descriptorBindingPartiallyBound; out_ext->descriptorBindingVariableDescriptorCount = in_ext->descriptorBindingVariableDescriptorCount; out_ext->runtimeDescriptorArray = in_ext->runtimeDescriptorArray; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: { VkPhysicalDeviceTimelineSemaphoreFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTimelineSemaphoreFeatures32 *in_ext = (const VkPhysicalDeviceTimelineSemaphoreFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES; out_ext->pNext = NULL; out_ext->timelineSemaphore = in_ext->timelineSemaphore; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: { VkPhysicalDevice8BitStorageFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice8BitStorageFeatures32 *in_ext = (const VkPhysicalDevice8BitStorageFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer8BitAccess = in_ext->storageBuffer8BitAccess; out_ext->uniformAndStorageBuffer8BitAccess = in_ext->uniformAndStorageBuffer8BitAccess; out_ext->storagePushConstant8 = in_ext->storagePushConstant8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: { VkPhysicalDeviceConditionalRenderingFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceConditionalRenderingFeaturesEXT32 *in_ext = (const VkPhysicalDeviceConditionalRenderingFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT; out_ext->pNext = NULL; out_ext->conditionalRendering = in_ext->conditionalRendering; out_ext->inheritedConditionalRendering = in_ext->inheritedConditionalRendering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: { VkPhysicalDeviceVulkanMemoryModelFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkanMemoryModelFeatures32 *in_ext = (const VkPhysicalDeviceVulkanMemoryModelFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES; out_ext->pNext = NULL; out_ext->vulkanMemoryModel = in_ext->vulkanMemoryModel; out_ext->vulkanMemoryModelDeviceScope = in_ext->vulkanMemoryModelDeviceScope; out_ext->vulkanMemoryModelAvailabilityVisibilityChains = in_ext->vulkanMemoryModelAvailabilityVisibilityChains; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: { VkPhysicalDeviceShaderAtomicInt64Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicInt64Features32 *in_ext = (const VkPhysicalDeviceShaderAtomicInt64Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES; out_ext->pNext = NULL; out_ext->shaderBufferInt64Atomics = in_ext->shaderBufferInt64Atomics; out_ext->shaderSharedInt64Atomics = in_ext->shaderSharedInt64Atomics; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderBufferFloat32Atomics = in_ext->shaderBufferFloat32Atomics; out_ext->shaderBufferFloat32AtomicAdd = in_ext->shaderBufferFloat32AtomicAdd; out_ext->shaderBufferFloat64Atomics = in_ext->shaderBufferFloat64Atomics; out_ext->shaderBufferFloat64AtomicAdd = in_ext->shaderBufferFloat64AtomicAdd; out_ext->shaderSharedFloat32Atomics = in_ext->shaderSharedFloat32Atomics; out_ext->shaderSharedFloat32AtomicAdd = in_ext->shaderSharedFloat32AtomicAdd; out_ext->shaderSharedFloat64Atomics = in_ext->shaderSharedFloat64Atomics; out_ext->shaderSharedFloat64AtomicAdd = in_ext->shaderSharedFloat64AtomicAdd; out_ext->shaderImageFloat32Atomics = in_ext->shaderImageFloat32Atomics; out_ext->shaderImageFloat32AtomicAdd = in_ext->shaderImageFloat32AtomicAdd; out_ext->sparseImageFloat32Atomics = in_ext->sparseImageFloat32Atomics; out_ext->sparseImageFloat32AtomicAdd = in_ext->sparseImageFloat32AtomicAdd; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderBufferFloat16Atomics = in_ext->shaderBufferFloat16Atomics; out_ext->shaderBufferFloat16AtomicAdd = in_ext->shaderBufferFloat16AtomicAdd; out_ext->shaderBufferFloat16AtomicMinMax = in_ext->shaderBufferFloat16AtomicMinMax; out_ext->shaderBufferFloat32AtomicMinMax = in_ext->shaderBufferFloat32AtomicMinMax; out_ext->shaderBufferFloat64AtomicMinMax = in_ext->shaderBufferFloat64AtomicMinMax; out_ext->shaderSharedFloat16Atomics = in_ext->shaderSharedFloat16Atomics; out_ext->shaderSharedFloat16AtomicAdd = in_ext->shaderSharedFloat16AtomicAdd; out_ext->shaderSharedFloat16AtomicMinMax = in_ext->shaderSharedFloat16AtomicMinMax; out_ext->shaderSharedFloat32AtomicMinMax = in_ext->shaderSharedFloat32AtomicMinMax; out_ext->shaderSharedFloat64AtomicMinMax = in_ext->shaderSharedFloat64AtomicMinMax; out_ext->shaderImageFloat32AtomicMinMax = in_ext->shaderImageFloat32AtomicMinMax; out_ext->sparseImageFloat32AtomicMinMax = in_ext->sparseImageFloat32AtomicMinMax; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: { VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT32 *in_ext = (const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT; out_ext->pNext = NULL; out_ext->vertexAttributeInstanceRateDivisor = in_ext->vertexAttributeInstanceRateDivisor; out_ext->vertexAttributeInstanceRateZeroDivisor = in_ext->vertexAttributeInstanceRateZeroDivisor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: { VkPhysicalDeviceASTCDecodeFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceASTCDecodeFeaturesEXT32 *in_ext = (const VkPhysicalDeviceASTCDecodeFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->decodeModeSharedExponent = in_ext->decodeModeSharedExponent; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: { VkPhysicalDeviceTransformFeedbackFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTransformFeedbackFeaturesEXT32 *in_ext = (const VkPhysicalDeviceTransformFeedbackFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->transformFeedback = in_ext->transformFeedback; out_ext->geometryStreams = in_ext->geometryStreams; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: { VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV32 *in_ext = (const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV; out_ext->pNext = NULL; out_ext->representativeFragmentTest = in_ext->representativeFragmentTest; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: { VkPhysicalDeviceExclusiveScissorFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExclusiveScissorFeaturesNV32 *in_ext = (const VkPhysicalDeviceExclusiveScissorFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV; out_ext->pNext = NULL; out_ext->exclusiveScissor = in_ext->exclusiveScissor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: { VkPhysicalDeviceCornerSampledImageFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCornerSampledImageFeaturesNV32 *in_ext = (const VkPhysicalDeviceCornerSampledImageFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV; out_ext->pNext = NULL; out_ext->cornerSampledImage = in_ext->cornerSampledImage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: { VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV32 *in_ext = (const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV; out_ext->pNext = NULL; out_ext->computeDerivativeGroupQuads = in_ext->computeDerivativeGroupQuads; out_ext->computeDerivativeGroupLinear = in_ext->computeDerivativeGroupLinear; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: { VkPhysicalDeviceShaderImageFootprintFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderImageFootprintFeaturesNV32 *in_ext = (const VkPhysicalDeviceShaderImageFootprintFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV; out_ext->pNext = NULL; out_ext->imageFootprint = in_ext->imageFootprint; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: { VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV32 *in_ext = (const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV; out_ext->pNext = NULL; out_ext->dedicatedAllocationImageAliasing = in_ext->dedicatedAllocationImageAliasing; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV: { VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV32 *in_ext = (const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV; out_ext->pNext = NULL; out_ext->indirectCopy = in_ext->indirectCopy; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV: { VkPhysicalDeviceMemoryDecompressionFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMemoryDecompressionFeaturesNV32 *in_ext = (const VkPhysicalDeviceMemoryDecompressionFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV; out_ext->pNext = NULL; out_ext->memoryDecompression = in_ext->memoryDecompression; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: { VkPhysicalDeviceShadingRateImageFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShadingRateImageFeaturesNV32 *in_ext = (const VkPhysicalDeviceShadingRateImageFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV; out_ext->pNext = NULL; out_ext->shadingRateImage = in_ext->shadingRateImage; out_ext->shadingRateCoarseSampleOrder = in_ext->shadingRateCoarseSampleOrder; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI: { VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI32 *in_ext = (const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI; out_ext->pNext = NULL; out_ext->invocationMask = in_ext->invocationMask; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: { VkPhysicalDeviceMeshShaderFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMeshShaderFeaturesNV32 *in_ext = (const VkPhysicalDeviceMeshShaderFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV; out_ext->pNext = NULL; out_ext->taskShader = in_ext->taskShader; out_ext->meshShader = in_ext->meshShader; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: { VkPhysicalDeviceMeshShaderFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMeshShaderFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMeshShaderFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->taskShader = in_ext->taskShader; out_ext->meshShader = in_ext->meshShader; out_ext->multiviewMeshShader = in_ext->multiviewMeshShader; out_ext->primitiveFragmentShadingRateMeshShader = in_ext->primitiveFragmentShadingRateMeshShader; out_ext->meshShaderQueries = in_ext->meshShaderQueries; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: { VkPhysicalDeviceAccelerationStructureFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAccelerationStructureFeaturesKHR32 *in_ext = (const VkPhysicalDeviceAccelerationStructureFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->accelerationStructure = in_ext->accelerationStructure; out_ext->accelerationStructureCaptureReplay = in_ext->accelerationStructureCaptureReplay; out_ext->accelerationStructureIndirectBuild = in_ext->accelerationStructureIndirectBuild; out_ext->accelerationStructureHostCommands = in_ext->accelerationStructureHostCommands; out_ext->descriptorBindingAccelerationStructureUpdateAfterBind = in_ext->descriptorBindingAccelerationStructureUpdateAfterBind; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: { VkPhysicalDeviceRayTracingPipelineFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingPipelineFeaturesKHR32 *in_ext = (const VkPhysicalDeviceRayTracingPipelineFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayTracingPipeline = in_ext->rayTracingPipeline; out_ext->rayTracingPipelineShaderGroupHandleCaptureReplay = in_ext->rayTracingPipelineShaderGroupHandleCaptureReplay; out_ext->rayTracingPipelineShaderGroupHandleCaptureReplayMixed = in_ext->rayTracingPipelineShaderGroupHandleCaptureReplayMixed; out_ext->rayTracingPipelineTraceRaysIndirect = in_ext->rayTracingPipelineTraceRaysIndirect; out_ext->rayTraversalPrimitiveCulling = in_ext->rayTraversalPrimitiveCulling; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: { VkPhysicalDeviceRayQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayQueryFeaturesKHR32 *in_ext = (const VkPhysicalDeviceRayQueryFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayQuery = in_ext->rayQuery; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: { VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR32 *in_ext = (const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayTracingMaintenance1 = in_ext->rayTracingMaintenance1; out_ext->rayTracingPipelineTraceRaysIndirect2 = in_ext->rayTracingPipelineTraceRaysIndirect2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: { VkDeviceMemoryOverallocationCreateInfoAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceMemoryOverallocationCreateInfoAMD32 *in_ext = (const VkDeviceMemoryOverallocationCreateInfoAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD; out_ext->pNext = NULL; out_ext->overallocationBehavior = in_ext->overallocationBehavior; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: { VkPhysicalDeviceFragmentDensityMapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMapFeaturesEXT32 *in_ext = (const VkPhysicalDeviceFragmentDensityMapFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentDensityMap = in_ext->fragmentDensityMap; out_ext->fragmentDensityMapDynamic = in_ext->fragmentDensityMapDynamic; out_ext->fragmentDensityMapNonSubsampledImages = in_ext->fragmentDensityMapNonSubsampledImages; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT: { VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT32 *in_ext = (const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentDensityMapDeferred = in_ext->fragmentDensityMapDeferred; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM: { VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM32 *in_ext = (const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->fragmentDensityMapOffset = in_ext->fragmentDensityMapOffset; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: { VkPhysicalDeviceScalarBlockLayoutFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceScalarBlockLayoutFeatures32 *in_ext = (const VkPhysicalDeviceScalarBlockLayoutFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES; out_ext->pNext = NULL; out_ext->scalarBlockLayout = in_ext->scalarBlockLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: { VkPhysicalDeviceUniformBufferStandardLayoutFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceUniformBufferStandardLayoutFeatures32 *in_ext = (const VkPhysicalDeviceUniformBufferStandardLayoutFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES; out_ext->pNext = NULL; out_ext->uniformBufferStandardLayout = in_ext->uniformBufferStandardLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: { VkPhysicalDeviceDepthClipEnableFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClipEnableFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDepthClipEnableFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClipEnable = in_ext->depthClipEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: { VkPhysicalDeviceMemoryPriorityFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMemoryPriorityFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMemoryPriorityFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->memoryPriority = in_ext->memoryPriority; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT: { VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT32 *in_ext = (const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pageableDeviceLocalMemory = in_ext->pageableDeviceLocalMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: { VkPhysicalDeviceBufferDeviceAddressFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBufferDeviceAddressFeatures32 *in_ext = (const VkPhysicalDeviceBufferDeviceAddressFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES; out_ext->pNext = NULL; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: { VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT32 *in_ext = (const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: { VkPhysicalDeviceImagelessFramebufferFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImagelessFramebufferFeatures32 *in_ext = (const VkPhysicalDeviceImagelessFramebufferFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES; out_ext->pNext = NULL; out_ext->imagelessFramebuffer = in_ext->imagelessFramebuffer; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: { VkPhysicalDeviceTextureCompressionASTCHDRFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTextureCompressionASTCHDRFeatures32 *in_ext = (const VkPhysicalDeviceTextureCompressionASTCHDRFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES; out_ext->pNext = NULL; out_ext->textureCompressionASTC_HDR = in_ext->textureCompressionASTC_HDR; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: { VkPhysicalDeviceCooperativeMatrixFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCooperativeMatrixFeaturesNV32 *in_ext = (const VkPhysicalDeviceCooperativeMatrixFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV; out_ext->pNext = NULL; out_ext->cooperativeMatrix = in_ext->cooperativeMatrix; out_ext->cooperativeMatrixRobustBufferAccess = in_ext->cooperativeMatrixRobustBufferAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: { VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT32 *in_ext = (const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->ycbcrImageArrays = in_ext->ycbcrImageArrays; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV: { VkPhysicalDevicePresentBarrierFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentBarrierFeaturesNV32 *in_ext = (const VkPhysicalDevicePresentBarrierFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV; out_ext->pNext = NULL; out_ext->presentBarrier = in_ext->presentBarrier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: { VkPhysicalDevicePerformanceQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePerformanceQueryFeaturesKHR32 *in_ext = (const VkPhysicalDevicePerformanceQueryFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->performanceCounterQueryPools = in_ext->performanceCounterQueryPools; out_ext->performanceCounterMultipleQueryPools = in_ext->performanceCounterMultipleQueryPools; 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)); const VkPhysicalDeviceCoverageReductionModeFeaturesNV32 *in_ext = (const VkPhysicalDeviceCoverageReductionModeFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV; out_ext->pNext = NULL; out_ext->coverageReductionMode = in_ext->coverageReductionMode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: { VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL32 *in_ext = (const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL; out_ext->pNext = NULL; out_ext->shaderIntegerFunctions2 = in_ext->shaderIntegerFunctions2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: { VkPhysicalDeviceShaderClockFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderClockFeaturesKHR32 *in_ext = (const VkPhysicalDeviceShaderClockFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR; out_ext->pNext = NULL; out_ext->shaderSubgroupClock = in_ext->shaderSubgroupClock; out_ext->shaderDeviceClock = in_ext->shaderDeviceClock; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: { VkPhysicalDeviceIndexTypeUint8FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceIndexTypeUint8FeaturesEXT32 *in_ext = (const VkPhysicalDeviceIndexTypeUint8FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT; out_ext->pNext = NULL; out_ext->indexTypeUint8 = in_ext->indexTypeUint8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: { VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV32 *in_ext = (const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV; out_ext->pNext = NULL; out_ext->shaderSMBuiltins = in_ext->shaderSMBuiltins; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: { VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT32 *in_ext = (const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentShaderSampleInterlock = in_ext->fragmentShaderSampleInterlock; out_ext->fragmentShaderPixelInterlock = in_ext->fragmentShaderPixelInterlock; out_ext->fragmentShaderShadingRateInterlock = in_ext->fragmentShaderShadingRateInterlock; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: { VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures32 *in_ext = (const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES; out_ext->pNext = NULL; out_ext->separateDepthStencilLayouts = in_ext->separateDepthStencilLayouts; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: { VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT32 *in_ext = (const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT; out_ext->pNext = NULL; out_ext->primitiveTopologyListRestart = in_ext->primitiveTopologyListRestart; out_ext->primitiveTopologyPatchListRestart = in_ext->primitiveTopologyPatchListRestart; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: { VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR32 *in_ext = (const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR; out_ext->pNext = NULL; out_ext->pipelineExecutableInfo = in_ext->pipelineExecutableInfo; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: { VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures32 *in_ext = (const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES; out_ext->pNext = NULL; out_ext->shaderDemoteToHelperInvocation = in_ext->shaderDemoteToHelperInvocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: { VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT32 *in_ext = (const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->texelBufferAlignment = in_ext->texelBufferAlignment; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: { VkPhysicalDeviceSubgroupSizeControlFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubgroupSizeControlFeatures32 *in_ext = (const VkPhysicalDeviceSubgroupSizeControlFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES; out_ext->pNext = NULL; out_ext->subgroupSizeControl = in_ext->subgroupSizeControl; out_ext->computeFullSubgroups = in_ext->computeFullSubgroups; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: { VkPhysicalDeviceLineRasterizationFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLineRasterizationFeaturesEXT32 *in_ext = (const VkPhysicalDeviceLineRasterizationFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT; out_ext->pNext = NULL; out_ext->rectangularLines = in_ext->rectangularLines; out_ext->bresenhamLines = in_ext->bresenhamLines; out_ext->smoothLines = in_ext->smoothLines; out_ext->stippledRectangularLines = in_ext->stippledRectangularLines; out_ext->stippledBresenhamLines = in_ext->stippledBresenhamLines; out_ext->stippledSmoothLines = in_ext->stippledSmoothLines; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: { VkPhysicalDevicePipelineCreationCacheControlFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineCreationCacheControlFeatures32 *in_ext = (const VkPhysicalDevicePipelineCreationCacheControlFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES; out_ext->pNext = NULL; out_ext->pipelineCreationCacheControl = in_ext->pipelineCreationCacheControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: { VkPhysicalDeviceVulkan11Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan11Features32 *in_ext = (const VkPhysicalDeviceVulkan11Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer16BitAccess = in_ext->storageBuffer16BitAccess; out_ext->uniformAndStorageBuffer16BitAccess = in_ext->uniformAndStorageBuffer16BitAccess; out_ext->storagePushConstant16 = in_ext->storagePushConstant16; out_ext->storageInputOutput16 = in_ext->storageInputOutput16; out_ext->multiview = in_ext->multiview; out_ext->multiviewGeometryShader = in_ext->multiviewGeometryShader; out_ext->multiviewTessellationShader = in_ext->multiviewTessellationShader; out_ext->variablePointersStorageBuffer = in_ext->variablePointersStorageBuffer; out_ext->variablePointers = in_ext->variablePointers; out_ext->protectedMemory = in_ext->protectedMemory; out_ext->samplerYcbcrConversion = in_ext->samplerYcbcrConversion; out_ext->shaderDrawParameters = in_ext->shaderDrawParameters; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: { VkPhysicalDeviceVulkan12Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan12Features32 *in_ext = (const VkPhysicalDeviceVulkan12Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES; out_ext->pNext = NULL; out_ext->samplerMirrorClampToEdge = in_ext->samplerMirrorClampToEdge; out_ext->drawIndirectCount = in_ext->drawIndirectCount; out_ext->storageBuffer8BitAccess = in_ext->storageBuffer8BitAccess; out_ext->uniformAndStorageBuffer8BitAccess = in_ext->uniformAndStorageBuffer8BitAccess; out_ext->storagePushConstant8 = in_ext->storagePushConstant8; out_ext->shaderBufferInt64Atomics = in_ext->shaderBufferInt64Atomics; out_ext->shaderSharedInt64Atomics = in_ext->shaderSharedInt64Atomics; out_ext->shaderFloat16 = in_ext->shaderFloat16; out_ext->shaderInt8 = in_ext->shaderInt8; out_ext->descriptorIndexing = in_ext->descriptorIndexing; out_ext->shaderInputAttachmentArrayDynamicIndexing = in_ext->shaderInputAttachmentArrayDynamicIndexing; out_ext->shaderUniformTexelBufferArrayDynamicIndexing = in_ext->shaderUniformTexelBufferArrayDynamicIndexing; out_ext->shaderStorageTexelBufferArrayDynamicIndexing = in_ext->shaderStorageTexelBufferArrayDynamicIndexing; out_ext->shaderUniformBufferArrayNonUniformIndexing = in_ext->shaderUniformBufferArrayNonUniformIndexing; out_ext->shaderSampledImageArrayNonUniformIndexing = in_ext->shaderSampledImageArrayNonUniformIndexing; out_ext->shaderStorageBufferArrayNonUniformIndexing = in_ext->shaderStorageBufferArrayNonUniformIndexing; out_ext->shaderStorageImageArrayNonUniformIndexing = in_ext->shaderStorageImageArrayNonUniformIndexing; out_ext->shaderInputAttachmentArrayNonUniformIndexing = in_ext->shaderInputAttachmentArrayNonUniformIndexing; out_ext->shaderUniformTexelBufferArrayNonUniformIndexing = in_ext->shaderUniformTexelBufferArrayNonUniformIndexing; out_ext->shaderStorageTexelBufferArrayNonUniformIndexing = in_ext->shaderStorageTexelBufferArrayNonUniformIndexing; out_ext->descriptorBindingUniformBufferUpdateAfterBind = in_ext->descriptorBindingUniformBufferUpdateAfterBind; out_ext->descriptorBindingSampledImageUpdateAfterBind = in_ext->descriptorBindingSampledImageUpdateAfterBind; out_ext->descriptorBindingStorageImageUpdateAfterBind = in_ext->descriptorBindingStorageImageUpdateAfterBind; out_ext->descriptorBindingStorageBufferUpdateAfterBind = in_ext->descriptorBindingStorageBufferUpdateAfterBind; out_ext->descriptorBindingUniformTexelBufferUpdateAfterBind = in_ext->descriptorBindingUniformTexelBufferUpdateAfterBind; out_ext->descriptorBindingStorageTexelBufferUpdateAfterBind = in_ext->descriptorBindingStorageTexelBufferUpdateAfterBind; out_ext->descriptorBindingUpdateUnusedWhilePending = in_ext->descriptorBindingUpdateUnusedWhilePending; out_ext->descriptorBindingPartiallyBound = in_ext->descriptorBindingPartiallyBound; out_ext->descriptorBindingVariableDescriptorCount = in_ext->descriptorBindingVariableDescriptorCount; out_ext->runtimeDescriptorArray = in_ext->runtimeDescriptorArray; out_ext->samplerFilterMinmax = in_ext->samplerFilterMinmax; out_ext->scalarBlockLayout = in_ext->scalarBlockLayout; out_ext->imagelessFramebuffer = in_ext->imagelessFramebuffer; out_ext->uniformBufferStandardLayout = in_ext->uniformBufferStandardLayout; out_ext->shaderSubgroupExtendedTypes = in_ext->shaderSubgroupExtendedTypes; out_ext->separateDepthStencilLayouts = in_ext->separateDepthStencilLayouts; out_ext->hostQueryReset = in_ext->hostQueryReset; out_ext->timelineSemaphore = in_ext->timelineSemaphore; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_ext->vulkanMemoryModel = in_ext->vulkanMemoryModel; out_ext->vulkanMemoryModelDeviceScope = in_ext->vulkanMemoryModelDeviceScope; out_ext->vulkanMemoryModelAvailabilityVisibilityChains = in_ext->vulkanMemoryModelAvailabilityVisibilityChains; out_ext->shaderOutputViewportIndex = in_ext->shaderOutputViewportIndex; out_ext->shaderOutputLayer = in_ext->shaderOutputLayer; out_ext->subgroupBroadcastDynamicId = in_ext->subgroupBroadcastDynamicId; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: { VkPhysicalDeviceVulkan13Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan13Features32 *in_ext = (const VkPhysicalDeviceVulkan13Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; out_ext->pNext = NULL; out_ext->robustImageAccess = in_ext->robustImageAccess; out_ext->inlineUniformBlock = in_ext->inlineUniformBlock; out_ext->descriptorBindingInlineUniformBlockUpdateAfterBind = in_ext->descriptorBindingInlineUniformBlockUpdateAfterBind; out_ext->pipelineCreationCacheControl = in_ext->pipelineCreationCacheControl; out_ext->privateData = in_ext->privateData; out_ext->shaderDemoteToHelperInvocation = in_ext->shaderDemoteToHelperInvocation; out_ext->shaderTerminateInvocation = in_ext->shaderTerminateInvocation; out_ext->subgroupSizeControl = in_ext->subgroupSizeControl; out_ext->computeFullSubgroups = in_ext->computeFullSubgroups; out_ext->synchronization2 = in_ext->synchronization2; out_ext->textureCompressionASTC_HDR = in_ext->textureCompressionASTC_HDR; out_ext->shaderZeroInitializeWorkgroupMemory = in_ext->shaderZeroInitializeWorkgroupMemory; out_ext->dynamicRendering = in_ext->dynamicRendering; out_ext->shaderIntegerDotProduct = in_ext->shaderIntegerDotProduct; out_ext->maintenance4 = in_ext->maintenance4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: { VkPhysicalDeviceCoherentMemoryFeaturesAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCoherentMemoryFeaturesAMD32 *in_ext = (const VkPhysicalDeviceCoherentMemoryFeaturesAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD; out_ext->pNext = NULL; out_ext->deviceCoherentMemory = in_ext->deviceCoherentMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: { VkPhysicalDeviceCustomBorderColorFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCustomBorderColorFeaturesEXT32 *in_ext = (const VkPhysicalDeviceCustomBorderColorFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT; out_ext->pNext = NULL; out_ext->customBorderColors = in_ext->customBorderColors; out_ext->customBorderColorWithoutFormat = in_ext->customBorderColorWithoutFormat; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: { VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT32 *in_ext = (const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->borderColorSwizzle = in_ext->borderColorSwizzle; out_ext->borderColorSwizzleFromImage = in_ext->borderColorSwizzleFromImage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT32 *in_ext = (const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState = in_ext->extendedDynamicState; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT32 *in_ext = (const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState2 = in_ext->extendedDynamicState2; out_ext->extendedDynamicState2LogicOp = in_ext->extendedDynamicState2LogicOp; out_ext->extendedDynamicState2PatchControlPoints = in_ext->extendedDynamicState2PatchControlPoints; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT32 *in_ext = (const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState3TessellationDomainOrigin = in_ext->extendedDynamicState3TessellationDomainOrigin; out_ext->extendedDynamicState3DepthClampEnable = in_ext->extendedDynamicState3DepthClampEnable; out_ext->extendedDynamicState3PolygonMode = in_ext->extendedDynamicState3PolygonMode; out_ext->extendedDynamicState3RasterizationSamples = in_ext->extendedDynamicState3RasterizationSamples; out_ext->extendedDynamicState3SampleMask = in_ext->extendedDynamicState3SampleMask; out_ext->extendedDynamicState3AlphaToCoverageEnable = in_ext->extendedDynamicState3AlphaToCoverageEnable; out_ext->extendedDynamicState3AlphaToOneEnable = in_ext->extendedDynamicState3AlphaToOneEnable; out_ext->extendedDynamicState3LogicOpEnable = in_ext->extendedDynamicState3LogicOpEnable; out_ext->extendedDynamicState3ColorBlendEnable = in_ext->extendedDynamicState3ColorBlendEnable; out_ext->extendedDynamicState3ColorBlendEquation = in_ext->extendedDynamicState3ColorBlendEquation; out_ext->extendedDynamicState3ColorWriteMask = in_ext->extendedDynamicState3ColorWriteMask; out_ext->extendedDynamicState3RasterizationStream = in_ext->extendedDynamicState3RasterizationStream; out_ext->extendedDynamicState3ConservativeRasterizationMode = in_ext->extendedDynamicState3ConservativeRasterizationMode; out_ext->extendedDynamicState3ExtraPrimitiveOverestimationSize = in_ext->extendedDynamicState3ExtraPrimitiveOverestimationSize; out_ext->extendedDynamicState3DepthClipEnable = in_ext->extendedDynamicState3DepthClipEnable; out_ext->extendedDynamicState3SampleLocationsEnable = in_ext->extendedDynamicState3SampleLocationsEnable; out_ext->extendedDynamicState3ColorBlendAdvanced = in_ext->extendedDynamicState3ColorBlendAdvanced; out_ext->extendedDynamicState3ProvokingVertexMode = in_ext->extendedDynamicState3ProvokingVertexMode; out_ext->extendedDynamicState3LineRasterizationMode = in_ext->extendedDynamicState3LineRasterizationMode; out_ext->extendedDynamicState3LineStippleEnable = in_ext->extendedDynamicState3LineStippleEnable; out_ext->extendedDynamicState3DepthClipNegativeOneToOne = in_ext->extendedDynamicState3DepthClipNegativeOneToOne; out_ext->extendedDynamicState3ViewportWScalingEnable = in_ext->extendedDynamicState3ViewportWScalingEnable; out_ext->extendedDynamicState3ViewportSwizzle = in_ext->extendedDynamicState3ViewportSwizzle; out_ext->extendedDynamicState3CoverageToColorEnable = in_ext->extendedDynamicState3CoverageToColorEnable; out_ext->extendedDynamicState3CoverageToColorLocation = in_ext->extendedDynamicState3CoverageToColorLocation; out_ext->extendedDynamicState3CoverageModulationMode = in_ext->extendedDynamicState3CoverageModulationMode; out_ext->extendedDynamicState3CoverageModulationTableEnable = in_ext->extendedDynamicState3CoverageModulationTableEnable; out_ext->extendedDynamicState3CoverageModulationTable = in_ext->extendedDynamicState3CoverageModulationTable; out_ext->extendedDynamicState3CoverageReductionMode = in_ext->extendedDynamicState3CoverageReductionMode; out_ext->extendedDynamicState3RepresentativeFragmentTestEnable = in_ext->extendedDynamicState3RepresentativeFragmentTestEnable; out_ext->extendedDynamicState3ShadingRateImageEnable = in_ext->extendedDynamicState3ShadingRateImageEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV: { VkPhysicalDeviceDiagnosticsConfigFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDiagnosticsConfigFeaturesNV32 *in_ext = (const VkPhysicalDeviceDiagnosticsConfigFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV; out_ext->pNext = NULL; out_ext->diagnosticsConfig = in_ext->diagnosticsConfig; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: { VkDeviceDiagnosticsConfigCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceDiagnosticsConfigCreateInfoNV32 *in_ext = (const VkDeviceDiagnosticsConfigCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: { VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures32 *in_ext = (const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES; out_ext->pNext = NULL; out_ext->shaderZeroInitializeWorkgroupMemory = in_ext->shaderZeroInitializeWorkgroupMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: { VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR32 *in_ext = (const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR; out_ext->pNext = NULL; out_ext->shaderSubgroupUniformControlFlow = in_ext->shaderSubgroupUniformControlFlow; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: { VkPhysicalDeviceRobustness2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRobustness2FeaturesEXT32 *in_ext = (const VkPhysicalDeviceRobustness2FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->robustBufferAccess2 = in_ext->robustBufferAccess2; out_ext->robustImageAccess2 = in_ext->robustImageAccess2; out_ext->nullDescriptor = in_ext->nullDescriptor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: { VkPhysicalDeviceImageRobustnessFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageRobustnessFeatures32 *in_ext = (const VkPhysicalDeviceImageRobustnessFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES; out_ext->pNext = NULL; out_ext->robustImageAccess = in_ext->robustImageAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: { VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR32 *in_ext = (const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR; out_ext->pNext = NULL; out_ext->workgroupMemoryExplicitLayout = in_ext->workgroupMemoryExplicitLayout; out_ext->workgroupMemoryExplicitLayoutScalarBlockLayout = in_ext->workgroupMemoryExplicitLayoutScalarBlockLayout; out_ext->workgroupMemoryExplicitLayout8BitAccess = in_ext->workgroupMemoryExplicitLayout8BitAccess; out_ext->workgroupMemoryExplicitLayout16BitAccess = in_ext->workgroupMemoryExplicitLayout16BitAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: { VkPhysicalDevice4444FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice4444FormatsFeaturesEXT32 *in_ext = (const VkPhysicalDevice4444FormatsFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->formatA4R4G4B4 = in_ext->formatA4R4G4B4; out_ext->formatA4B4G4R4 = in_ext->formatA4B4G4R4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI: { VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI32 *in_ext = (const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI; out_ext->pNext = NULL; out_ext->subpassShading = in_ext->subpassShading; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: { VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderImageInt64Atomics = in_ext->shaderImageInt64Atomics; out_ext->sparseImageInt64Atomics = in_ext->sparseImageInt64Atomics; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: { VkPhysicalDeviceFragmentShadingRateFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShadingRateFeaturesKHR32 *in_ext = (const VkPhysicalDeviceFragmentShadingRateFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->pipelineFragmentShadingRate = in_ext->pipelineFragmentShadingRate; out_ext->primitiveFragmentShadingRate = in_ext->primitiveFragmentShadingRate; out_ext->attachmentFragmentShadingRate = in_ext->attachmentFragmentShadingRate; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: { VkPhysicalDeviceShaderTerminateInvocationFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderTerminateInvocationFeatures32 *in_ext = (const VkPhysicalDeviceShaderTerminateInvocationFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES; out_ext->pNext = NULL; out_ext->shaderTerminateInvocation = in_ext->shaderTerminateInvocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV: { VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV32 *in_ext = (const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV; out_ext->pNext = NULL; out_ext->fragmentShadingRateEnums = in_ext->fragmentShadingRateEnums; out_ext->supersampleFragmentShadingRates = in_ext->supersampleFragmentShadingRates; out_ext->noInvocationFragmentShadingRates = in_ext->noInvocationFragmentShadingRates; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT: { VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT32 *in_ext = (const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT; out_ext->pNext = NULL; out_ext->image2DViewOf3D = in_ext->image2DViewOf3D; out_ext->sampler2DViewOf3D = in_ext->sampler2DViewOf3D; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT: { VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->mutableDescriptorType = in_ext->mutableDescriptorType; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: { VkPhysicalDeviceDepthClipControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClipControlFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDepthClipControlFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClipControl = in_ext->depthClipControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT32 *in_ext = (const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->vertexInputDynamicState = in_ext->vertexInputDynamicState; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: { VkPhysicalDeviceColorWriteEnableFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceColorWriteEnableFeaturesEXT32 *in_ext = (const VkPhysicalDeviceColorWriteEnableFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->colorWriteEnable = in_ext->colorWriteEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: { VkPhysicalDeviceSynchronization2Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSynchronization2Features32 *in_ext = (const VkPhysicalDeviceSynchronization2Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES; out_ext->pNext = NULL; out_ext->synchronization2 = in_ext->synchronization2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: { VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT32 *in_ext = (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->primitivesGeneratedQuery = in_ext->primitivesGeneratedQuery; out_ext->primitivesGeneratedQueryWithRasterizerDiscard = in_ext->primitivesGeneratedQueryWithRasterizerDiscard; out_ext->primitivesGeneratedQueryWithNonZeroStreams = in_ext->primitivesGeneratedQueryWithNonZeroStreams; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT: { VkPhysicalDeviceLegacyDitheringFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLegacyDitheringFeaturesEXT32 *in_ext = (const VkPhysicalDeviceLegacyDitheringFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT; out_ext->pNext = NULL; out_ext->legacyDithering = in_ext->legacyDithering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT: { VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT; out_ext->pNext = NULL; out_ext->multisampledRenderToSingleSampled = in_ext->multisampledRenderToSingleSampled; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT: { VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT32 *in_ext = (const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelineProtectedAccess = in_ext->pipelineProtectedAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV: { VkPhysicalDeviceInheritedViewportScissorFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInheritedViewportScissorFeaturesNV32 *in_ext = (const VkPhysicalDeviceInheritedViewportScissorFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV; out_ext->pNext = NULL; out_ext->inheritedViewportScissor2D = in_ext->inheritedViewportScissor2D; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: { VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT32 *in_ext = (const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->ycbcr2plane444Formats = in_ext->ycbcr2plane444Formats; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: { VkPhysicalDeviceProvokingVertexFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceProvokingVertexFeaturesEXT32 *in_ext = (const VkPhysicalDeviceProvokingVertexFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT; out_ext->pNext = NULL; out_ext->provokingVertexLast = in_ext->provokingVertexLast; out_ext->transformFeedbackPreservesProvokingVertex = in_ext->transformFeedbackPreservesProvokingVertex; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: { VkPhysicalDeviceDescriptorBufferFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorBufferFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDescriptorBufferFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->descriptorBuffer = in_ext->descriptorBuffer; out_ext->descriptorBufferCaptureReplay = in_ext->descriptorBufferCaptureReplay; out_ext->descriptorBufferImageLayoutIgnored = in_ext->descriptorBufferImageLayoutIgnored; out_ext->descriptorBufferPushDescriptors = in_ext->descriptorBufferPushDescriptors; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: { VkPhysicalDeviceShaderIntegerDotProductFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderIntegerDotProductFeatures32 *in_ext = (const VkPhysicalDeviceShaderIntegerDotProductFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES; out_ext->pNext = NULL; out_ext->shaderIntegerDotProduct = in_ext->shaderIntegerDotProduct; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR: { VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR32 *in_ext = (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR; out_ext->pNext = NULL; out_ext->fragmentShaderBarycentric = in_ext->fragmentShaderBarycentric; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV: { VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV32 *in_ext = (const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV; out_ext->pNext = NULL; out_ext->rayTracingMotionBlur = in_ext->rayTracingMotionBlur; out_ext->rayTracingMotionBlurPipelineTraceRaysIndirect = in_ext->rayTracingMotionBlurPipelineTraceRaysIndirect; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: { VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT32 *in_ext = (const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->formatRgba10x6WithoutYCbCrSampler = in_ext->formatRgba10x6WithoutYCbCrSampler; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: { VkPhysicalDeviceDynamicRenderingFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDynamicRenderingFeatures32 *in_ext = (const VkPhysicalDeviceDynamicRenderingFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES; out_ext->pNext = NULL; out_ext->dynamicRendering = in_ext->dynamicRendering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: { VkPhysicalDeviceImageViewMinLodFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageViewMinLodFeaturesEXT32 *in_ext = (const VkPhysicalDeviceImageViewMinLodFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT; out_ext->pNext = NULL; out_ext->minLod = in_ext->minLod; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT: { VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT32 *in_ext = (const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->rasterizationOrderColorAttachmentAccess = in_ext->rasterizationOrderColorAttachmentAccess; out_ext->rasterizationOrderDepthAttachmentAccess = in_ext->rasterizationOrderDepthAttachmentAccess; out_ext->rasterizationOrderStencilAttachmentAccess = in_ext->rasterizationOrderStencilAttachmentAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV: { VkPhysicalDeviceLinearColorAttachmentFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLinearColorAttachmentFeaturesNV32 *in_ext = (const VkPhysicalDeviceLinearColorAttachmentFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV; out_ext->pNext = NULL; out_ext->linearColorAttachment = in_ext->linearColorAttachment; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: { VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT32 *in_ext = (const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->graphicsPipelineLibrary = in_ext->graphicsPipelineLibrary; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE: { VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE32 *in_ext = (const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE; out_ext->pNext = NULL; out_ext->descriptorSetHostMapping = in_ext->descriptorSetHostMapping; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: { VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderModuleIdentifier = in_ext->shaderModuleIdentifier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: { VkPhysicalDeviceImageCompressionControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageCompressionControlFeaturesEXT32 *in_ext = (const VkPhysicalDeviceImageCompressionControlFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT; out_ext->pNext = NULL; out_ext->imageCompressionControl = in_ext->imageCompressionControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: { VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT32 *in_ext = (const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT; out_ext->pNext = NULL; out_ext->imageCompressionControlSwapchain = in_ext->imageCompressionControlSwapchain; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: { VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT32 *in_ext = (const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->subpassMergeFeedback = in_ext->subpassMergeFeedback; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT: { VkPhysicalDeviceOpacityMicromapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceOpacityMicromapFeaturesEXT32 *in_ext = (const VkPhysicalDeviceOpacityMicromapFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->micromap = in_ext->micromap; out_ext->micromapCaptureReplay = in_ext->micromapCaptureReplay; out_ext->micromapHostCommands = in_ext->micromapHostCommands; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: { VkPhysicalDevicePipelinePropertiesFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelinePropertiesFeaturesEXT32 *in_ext = (const VkPhysicalDevicePipelinePropertiesFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelinePropertiesIdentifier = in_ext->pipelinePropertiesIdentifier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD: { VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD32 *in_ext = (const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD; out_ext->pNext = NULL; out_ext->shaderEarlyAndLateFragmentTests = in_ext->shaderEarlyAndLateFragmentTests; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: { VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT32 *in_ext = (const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->nonSeamlessCubeMap = in_ext->nonSeamlessCubeMap; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT: { VkPhysicalDevicePipelineRobustnessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineRobustnessFeaturesEXT32 *in_ext = (const VkPhysicalDevicePipelineRobustnessFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelineRobustness = in_ext->pipelineRobustness; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM: { VkPhysicalDeviceImageProcessingFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageProcessingFeaturesQCOM32 *in_ext = (const VkPhysicalDeviceImageProcessingFeaturesQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->textureSampleWeighted = in_ext->textureSampleWeighted; out_ext->textureBoxFilter = in_ext->textureBoxFilter; out_ext->textureBlockMatch = in_ext->textureBlockMatch; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM: { VkPhysicalDeviceTilePropertiesFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTilePropertiesFeaturesQCOM32 *in_ext = (const VkPhysicalDeviceTilePropertiesFeaturesQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->tileProperties = in_ext->tileProperties; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT: { VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT32 *in_ext = (const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->attachmentFeedbackLoopLayout = in_ext->attachmentFeedbackLoopLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT: { VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClampZeroOne = in_ext->depthClampZeroOne; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT: { VkPhysicalDeviceAddressBindingReportFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAddressBindingReportFeaturesEXT32 *in_ext = (const VkPhysicalDeviceAddressBindingReportFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->reportAddressBinding = in_ext->reportAddressBinding; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV: { VkPhysicalDeviceOpticalFlowFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceOpticalFlowFeaturesNV32 *in_ext = (const VkPhysicalDeviceOpticalFlowFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV; out_ext->pNext = NULL; out_ext->opticalFlow = in_ext->opticalFlow; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT: { VkPhysicalDeviceFaultFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFaultFeaturesEXT32 *in_ext = (const VkPhysicalDeviceFaultFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->deviceFault = in_ext->deviceFault; out_ext->deviceFaultVendorBinary = in_ext->deviceFaultVendorBinary; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM: { VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32 *in_ext = (const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM; out_ext->pNext = NULL; out_ext->shaderCoreBuiltins = in_ext->shaderCoreBuiltins; 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)); const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 *in_ext = (const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV; out_ext->pNext = NULL; out_ext->rayTracingInvocationReorder = in_ext->rayTracingInvocationReorder; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkEventCreateInfo_win32_to_host(const VkEventCreateInfo32 *in, VkEventCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkFenceCreateInfo_win32_to_host(struct conversion_context *ctx, const VkFenceCreateInfo32 *in, VkFenceCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: { VkExportFenceCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkExportFenceCreateInfo32 *in_ext = (const VkExportFenceCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO; out_ext->pNext = NULL; out_ext->handleTypes = in_ext->handleTypes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkFramebufferAttachmentImageInfo_win32_to_host(const VkFramebufferAttachmentImageInfo32 *in, VkFramebufferAttachmentImageInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->usage = in->usage; out->width = in->width; out->height = in->height; out->layerCount = in->layerCount; out->viewFormatCount = in->viewFormatCount; out->pViewFormats = (const VkFormat *)UlongToPtr(in->pViewFormats); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkFramebufferAttachmentImageInfo *convert_VkFramebufferAttachmentImageInfo_array_win32_to_host(struct conversion_context *ctx, const VkFramebufferAttachmentImageInfo32 *in, uint32_t count) { VkFramebufferAttachmentImageInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkFramebufferAttachmentImageInfo_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkFramebufferCreateInfo_win32_to_host(struct conversion_context *ctx, const VkFramebufferCreateInfo32 *in, VkFramebufferCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->renderPass = in->renderPass; out->attachmentCount = in->attachmentCount; out->pAttachments = (const VkImageView *)UlongToPtr(in->pAttachments); out->width = in->width; out->height = in->height; out->layers = in->layers; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: { VkFramebufferAttachmentsCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkFramebufferAttachmentsCreateInfo32 *in_ext = (const VkFramebufferAttachmentsCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO; out_ext->pNext = NULL; out_ext->attachmentImageInfoCount = in_ext->attachmentImageInfoCount; out_ext->pAttachmentImageInfos = convert_VkFramebufferAttachmentImageInfo_array_win32_to_host(ctx, (const VkFramebufferAttachmentImageInfo32 *)UlongToPtr(in_ext->pAttachmentImageInfos), in_ext->attachmentImageInfoCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline const VkPipelineShaderStageCreateInfo *convert_VkPipelineShaderStageCreateInfo_array_win64_to_host(struct conversion_context *ctx, const VkPipelineShaderStageCreateInfo *in, uint32_t count) { VkPipelineShaderStageCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineShaderStageCreateInfo_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkPipelineShaderStageCreateInfo *convert_VkPipelineShaderStageCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineShaderStageCreateInfo32 *in, uint32_t count) { VkPipelineShaderStageCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineShaderStageCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkPipelineVertexInputStateCreateInfo_win32_to_host(struct conversion_context *ctx, const VkPipelineVertexInputStateCreateInfo32 *in, VkPipelineVertexInputStateCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->vertexBindingDescriptionCount = in->vertexBindingDescriptionCount; out->pVertexBindingDescriptions = (const VkVertexInputBindingDescription *)UlongToPtr(in->pVertexBindingDescriptions); out->vertexAttributeDescriptionCount = in->vertexAttributeDescriptionCount; out->pVertexAttributeDescriptions = (const VkVertexInputAttributeDescription *)UlongToPtr(in->pVertexAttributeDescriptions); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: { VkPipelineVertexInputDivisorStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineVertexInputDivisorStateCreateInfoEXT32 *in_ext = (const VkPipelineVertexInputDivisorStateCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->vertexBindingDivisorCount = in_ext->vertexBindingDivisorCount; out_ext->pVertexBindingDivisors = (const VkVertexInputBindingDivisorDescriptionEXT *)UlongToPtr(in_ext->pVertexBindingDivisors); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkPipelineVertexInputStateCreateInfo *convert_VkPipelineVertexInputStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineVertexInputStateCreateInfo32 *in, uint32_t count) { VkPipelineVertexInputStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineVertexInputStateCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkPipelineTessellationStateCreateInfo_win32_to_host(struct conversion_context *ctx, const VkPipelineTessellationStateCreateInfo32 *in, VkPipelineTessellationStateCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->patchControlPoints = in->patchControlPoints; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: { VkPipelineTessellationDomainOriginStateCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineTessellationDomainOriginStateCreateInfo32 *in_ext = (const VkPipelineTessellationDomainOriginStateCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO; out_ext->pNext = NULL; out_ext->domainOrigin = in_ext->domainOrigin; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkPipelineTessellationStateCreateInfo *convert_VkPipelineTessellationStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineTessellationStateCreateInfo32 *in, uint32_t count) { VkPipelineTessellationStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineTessellationStateCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkGraphicsShaderGroupCreateInfoNV_win64_to_host(struct conversion_context *ctx, const VkGraphicsShaderGroupCreateInfoNV *in, VkGraphicsShaderGroupCreateInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->stageCount = in->stageCount; out->pStages = convert_VkPipelineShaderStageCreateInfo_array_win64_to_host(ctx, in->pStages, in->stageCount); out->pVertexInputState = in->pVertexInputState; out->pTessellationState = in->pTessellationState; } #endif /* _WIN64 */ static inline void convert_VkGraphicsShaderGroupCreateInfoNV_win32_to_host(struct conversion_context *ctx, const VkGraphicsShaderGroupCreateInfoNV32 *in, VkGraphicsShaderGroupCreateInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->stageCount = in->stageCount; out->pStages = convert_VkPipelineShaderStageCreateInfo_array_win32_to_host(ctx, (const VkPipelineShaderStageCreateInfo32 *)UlongToPtr(in->pStages), in->stageCount); out->pVertexInputState = convert_VkPipelineVertexInputStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineVertexInputStateCreateInfo32 *)UlongToPtr(in->pVertexInputState), 1); out->pTessellationState = convert_VkPipelineTessellationStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineTessellationStateCreateInfo32 *)UlongToPtr(in->pTessellationState), 1); if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline const VkGraphicsShaderGroupCreateInfoNV *convert_VkGraphicsShaderGroupCreateInfoNV_array_win64_to_host(struct conversion_context *ctx, const VkGraphicsShaderGroupCreateInfoNV *in, uint32_t count) { VkGraphicsShaderGroupCreateInfoNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkGraphicsShaderGroupCreateInfoNV_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkGraphicsShaderGroupCreateInfoNV *convert_VkGraphicsShaderGroupCreateInfoNV_array_win32_to_host(struct conversion_context *ctx, const VkGraphicsShaderGroupCreateInfoNV32 *in, uint32_t count) { VkGraphicsShaderGroupCreateInfoNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkGraphicsShaderGroupCreateInfoNV_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkPipelineInputAssemblyStateCreateInfo_win32_to_host(const VkPipelineInputAssemblyStateCreateInfo32 *in, VkPipelineInputAssemblyStateCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->topology = in->topology; out->primitiveRestartEnable = in->primitiveRestartEnable; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkPipelineInputAssemblyStateCreateInfo *convert_VkPipelineInputAssemblyStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineInputAssemblyStateCreateInfo32 *in, uint32_t count) { VkPipelineInputAssemblyStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineInputAssemblyStateCreateInfo_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPipelineViewportStateCreateInfo_win32_to_host(struct conversion_context *ctx, const VkPipelineViewportStateCreateInfo32 *in, VkPipelineViewportStateCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->viewportCount = in->viewportCount; out->pViewports = (const VkViewport *)UlongToPtr(in->pViewports); out->scissorCount = in->scissorCount; out->pScissors = (const VkRect2D *)UlongToPtr(in->pScissors); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: { VkPipelineViewportWScalingStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineViewportWScalingStateCreateInfoNV32 *in_ext = (const VkPipelineViewportWScalingStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->viewportWScalingEnable = in_ext->viewportWScalingEnable; out_ext->viewportCount = in_ext->viewportCount; out_ext->pViewportWScalings = (const VkViewportWScalingNV *)UlongToPtr(in_ext->pViewportWScalings); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: { VkPipelineViewportSwizzleStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineViewportSwizzleStateCreateInfoNV32 *in_ext = (const VkPipelineViewportSwizzleStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->viewportCount = in_ext->viewportCount; out_ext->pViewportSwizzles = (const VkViewportSwizzleNV *)UlongToPtr(in_ext->pViewportSwizzles); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: { VkPipelineViewportExclusiveScissorStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineViewportExclusiveScissorStateCreateInfoNV32 *in_ext = (const VkPipelineViewportExclusiveScissorStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->exclusiveScissorCount = in_ext->exclusiveScissorCount; out_ext->pExclusiveScissors = (const VkRect2D *)UlongToPtr(in_ext->pExclusiveScissors); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: { VkPipelineViewportShadingRateImageStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineViewportShadingRateImageStateCreateInfoNV32 *in_ext = (const VkPipelineViewportShadingRateImageStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->shadingRateImageEnable = in_ext->shadingRateImageEnable; out_ext->viewportCount = in_ext->viewportCount; out_ext->pShadingRatePalettes = convert_VkShadingRatePaletteNV_array_win32_to_host(ctx, (const VkShadingRatePaletteNV32 *)UlongToPtr(in_ext->pShadingRatePalettes), in_ext->viewportCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: { VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV32 *in_ext = (const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->sampleOrderType = in_ext->sampleOrderType; out_ext->customSampleOrderCount = in_ext->customSampleOrderCount; out_ext->pCustomSampleOrders = convert_VkCoarseSampleOrderCustomNV_array_win32_to_host(ctx, (const VkCoarseSampleOrderCustomNV32 *)UlongToPtr(in_ext->pCustomSampleOrders), in_ext->customSampleOrderCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT: { VkPipelineViewportDepthClipControlCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineViewportDepthClipControlCreateInfoEXT32 *in_ext = (const VkPipelineViewportDepthClipControlCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->negativeOneToOne = in_ext->negativeOneToOne; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkPipelineViewportStateCreateInfo *convert_VkPipelineViewportStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineViewportStateCreateInfo32 *in, uint32_t count) { VkPipelineViewportStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineViewportStateCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkPipelineRasterizationStateCreateInfo_win32_to_host(struct conversion_context *ctx, const VkPipelineRasterizationStateCreateInfo32 *in, VkPipelineRasterizationStateCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->depthClampEnable = in->depthClampEnable; out->rasterizerDiscardEnable = in->rasterizerDiscardEnable; out->polygonMode = in->polygonMode; out->cullMode = in->cullMode; out->frontFace = in->frontFace; out->depthBiasEnable = in->depthBiasEnable; out->depthBiasConstantFactor = in->depthBiasConstantFactor; out->depthBiasClamp = in->depthBiasClamp; out->depthBiasSlopeFactor = in->depthBiasSlopeFactor; out->lineWidth = in->lineWidth; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: { VkPipelineRasterizationStateRasterizationOrderAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRasterizationStateRasterizationOrderAMD32 *in_ext = (const VkPipelineRasterizationStateRasterizationOrderAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD; out_ext->pNext = NULL; out_ext->rasterizationOrder = in_ext->rasterizationOrder; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: { VkPipelineRasterizationConservativeStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRasterizationConservativeStateCreateInfoEXT32 *in_ext = (const VkPipelineRasterizationConservativeStateCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->conservativeRasterizationMode = in_ext->conservativeRasterizationMode; out_ext->extraPrimitiveOverestimationSize = in_ext->extraPrimitiveOverestimationSize; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: { VkPipelineRasterizationStateStreamCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRasterizationStateStreamCreateInfoEXT32 *in_ext = (const VkPipelineRasterizationStateStreamCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->rasterizationStream = in_ext->rasterizationStream; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: { VkPipelineRasterizationDepthClipStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRasterizationDepthClipStateCreateInfoEXT32 *in_ext = (const VkPipelineRasterizationDepthClipStateCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->depthClipEnable = in_ext->depthClipEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT: { VkPipelineRasterizationLineStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRasterizationLineStateCreateInfoEXT32 *in_ext = (const VkPipelineRasterizationLineStateCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->lineRasterizationMode = in_ext->lineRasterizationMode; out_ext->stippledLineEnable = in_ext->stippledLineEnable; out_ext->lineStippleFactor = in_ext->lineStippleFactor; out_ext->lineStipplePattern = in_ext->lineStipplePattern; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: { VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT32 *in_ext = (const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->provokingVertexMode = in_ext->provokingVertexMode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkPipelineRasterizationStateCreateInfo *convert_VkPipelineRasterizationStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineRasterizationStateCreateInfo32 *in, uint32_t count) { VkPipelineRasterizationStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineRasterizationStateCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkPipelineMultisampleStateCreateInfo_win32_to_host(struct conversion_context *ctx, const VkPipelineMultisampleStateCreateInfo32 *in, VkPipelineMultisampleStateCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->rasterizationSamples = in->rasterizationSamples; out->sampleShadingEnable = in->sampleShadingEnable; out->minSampleShading = in->minSampleShading; out->pSampleMask = (const VkSampleMask *)UlongToPtr(in->pSampleMask); out->alphaToCoverageEnable = in->alphaToCoverageEnable; out->alphaToOneEnable = in->alphaToOneEnable; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV: { VkPipelineCoverageToColorStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCoverageToColorStateCreateInfoNV32 *in_ext = (const VkPipelineCoverageToColorStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->coverageToColorEnable = in_ext->coverageToColorEnable; out_ext->coverageToColorLocation = in_ext->coverageToColorLocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT: { VkPipelineSampleLocationsStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineSampleLocationsStateCreateInfoEXT32 *in_ext = (const VkPipelineSampleLocationsStateCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->sampleLocationsEnable = in_ext->sampleLocationsEnable; convert_VkSampleLocationsInfoEXT_win32_to_host(&in_ext->sampleLocationsInfo, &out_ext->sampleLocationsInfo); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV: { VkPipelineCoverageModulationStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCoverageModulationStateCreateInfoNV32 *in_ext = (const VkPipelineCoverageModulationStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->coverageModulationMode = in_ext->coverageModulationMode; out_ext->coverageModulationTableEnable = in_ext->coverageModulationTableEnable; out_ext->coverageModulationTableCount = in_ext->coverageModulationTableCount; out_ext->pCoverageModulationTable = (const float *)UlongToPtr(in_ext->pCoverageModulationTable); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV: { VkPipelineCoverageReductionStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCoverageReductionStateCreateInfoNV32 *in_ext = (const VkPipelineCoverageReductionStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->coverageReductionMode = in_ext->coverageReductionMode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkPipelineMultisampleStateCreateInfo *convert_VkPipelineMultisampleStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineMultisampleStateCreateInfo32 *in, uint32_t count) { VkPipelineMultisampleStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineMultisampleStateCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkPipelineDepthStencilStateCreateInfo_win32_to_host(const VkPipelineDepthStencilStateCreateInfo32 *in, VkPipelineDepthStencilStateCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->depthTestEnable = in->depthTestEnable; out->depthWriteEnable = in->depthWriteEnable; out->depthCompareOp = in->depthCompareOp; out->depthBoundsTestEnable = in->depthBoundsTestEnable; out->stencilTestEnable = in->stencilTestEnable; out->front = in->front; out->back = in->back; out->minDepthBounds = in->minDepthBounds; out->maxDepthBounds = in->maxDepthBounds; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkPipelineDepthStencilStateCreateInfo *convert_VkPipelineDepthStencilStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineDepthStencilStateCreateInfo32 *in, uint32_t count) { VkPipelineDepthStencilStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineDepthStencilStateCreateInfo_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPipelineColorBlendStateCreateInfo_win32_to_host(struct conversion_context *ctx, const VkPipelineColorBlendStateCreateInfo32 *in, VkPipelineColorBlendStateCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->logicOpEnable = in->logicOpEnable; out->logicOp = in->logicOp; out->attachmentCount = in->attachmentCount; out->pAttachments = (const VkPipelineColorBlendAttachmentState *)UlongToPtr(in->pAttachments); memcpy(out->blendConstants, in->blendConstants, 4 * sizeof(float)); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: { VkPipelineColorBlendAdvancedStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineColorBlendAdvancedStateCreateInfoEXT32 *in_ext = (const VkPipelineColorBlendAdvancedStateCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->srcPremultiplied = in_ext->srcPremultiplied; out_ext->dstPremultiplied = in_ext->dstPremultiplied; out_ext->blendOverlap = in_ext->blendOverlap; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: { VkPipelineColorWriteCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineColorWriteCreateInfoEXT32 *in_ext = (const VkPipelineColorWriteCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->attachmentCount = in_ext->attachmentCount; out_ext->pColorWriteEnables = (const VkBool32 *)UlongToPtr(in_ext->pColorWriteEnables); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkPipelineColorBlendStateCreateInfo *convert_VkPipelineColorBlendStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineColorBlendStateCreateInfo32 *in, uint32_t count) { VkPipelineColorBlendStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineColorBlendStateCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkPipelineDynamicStateCreateInfo_win32_to_host(const VkPipelineDynamicStateCreateInfo32 *in, VkPipelineDynamicStateCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->dynamicStateCount = in->dynamicStateCount; out->pDynamicStates = (const VkDynamicState *)UlongToPtr(in->pDynamicStates); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkPipelineDynamicStateCreateInfo *convert_VkPipelineDynamicStateCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkPipelineDynamicStateCreateInfo32 *in, uint32_t count) { VkPipelineDynamicStateCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineDynamicStateCreateInfo_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkGraphicsPipelineCreateInfo_win64_to_host(struct conversion_context *ctx, const VkGraphicsPipelineCreateInfo *in, VkGraphicsPipelineCreateInfo *out) { const VkBaseInStructure *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->stageCount = in->stageCount; out->pStages = convert_VkPipelineShaderStageCreateInfo_array_win64_to_host(ctx, in->pStages, in->stageCount); out->pVertexInputState = in->pVertexInputState; out->pInputAssemblyState = in->pInputAssemblyState; out->pTessellationState = in->pTessellationState; out->pViewportState = in->pViewportState; out->pRasterizationState = in->pRasterizationState; out->pMultisampleState = in->pMultisampleState; out->pDepthStencilState = in->pDepthStencilState; out->pColorBlendState = in->pColorBlendState; out->pDynamicState = in->pDynamicState; out->layout = in->layout; out->renderPass = in->renderPass; out->subpass = in->subpass; out->basePipelineHandle = in->basePipelineHandle; out->basePipelineIndex = in->basePipelineIndex; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV: { VkGraphicsPipelineShaderGroupsCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkGraphicsPipelineShaderGroupsCreateInfoNV *in_ext = (const VkGraphicsPipelineShaderGroupsCreateInfoNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->groupCount = in_ext->groupCount; out_ext->pGroups = convert_VkGraphicsShaderGroupCreateInfoNV_array_win64_to_host(ctx, in_ext->pGroups, in_ext->groupCount); out_ext->pipelineCount = in_ext->pipelineCount; out_ext->pPipelines = in_ext->pPipelines; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT: { VkPipelineDiscardRectangleStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineDiscardRectangleStateCreateInfoEXT *in_ext = (const VkPipelineDiscardRectangleStateCreateInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->discardRectangleMode = in_ext->discardRectangleMode; out_ext->discardRectangleCount = in_ext->discardRectangleCount; out_ext->pDiscardRectangles = in_ext->pDiscardRectangles; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: { VkPipelineRepresentativeFragmentTestStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRepresentativeFragmentTestStateCreateInfoNV *in_ext = (const VkPipelineRepresentativeFragmentTestStateCreateInfoNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->representativeFragmentTestEnable = in_ext->representativeFragmentTestEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCreationFeedbackCreateInfo *in_ext = (const VkPipelineCreationFeedbackCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; out_ext->pNext = NULL; out_ext->pPipelineCreationFeedback = in_ext->pPipelineCreationFeedback; out_ext->pipelineStageCreationFeedbackCount = in_ext->pipelineStageCreationFeedbackCount; out_ext->pPipelineStageCreationFeedbacks = in_ext->pPipelineStageCreationFeedbacks; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: { VkPipelineCompilerControlCreateInfoAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCompilerControlCreateInfoAMD *in_ext = (const VkPipelineCompilerControlCreateInfoAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD; out_ext->pNext = NULL; out_ext->compilerControlFlags = in_ext->compilerControlFlags; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: { VkPipelineLibraryCreateInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineLibraryCreateInfoKHR *in_ext = (const VkPipelineLibraryCreateInfoKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR; out_ext->pNext = NULL; out_ext->libraryCount = in_ext->libraryCount; out_ext->pLibraries = in_ext->pLibraries; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR: { VkPipelineFragmentShadingRateStateCreateInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineFragmentShadingRateStateCreateInfoKHR *in_ext = (const VkPipelineFragmentShadingRateStateCreateInfoKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR; out_ext->pNext = NULL; out_ext->fragmentSize = in_ext->fragmentSize; memcpy(out_ext->combinerOps, in_ext->combinerOps, 2 * sizeof(VkFragmentShadingRateCombinerOpKHR)); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV: { VkPipelineFragmentShadingRateEnumStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineFragmentShadingRateEnumStateCreateInfoNV *in_ext = (const VkPipelineFragmentShadingRateEnumStateCreateInfoNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->shadingRateType = in_ext->shadingRateType; out_ext->shadingRate = in_ext->shadingRate; memcpy(out_ext->combinerOps, in_ext->combinerOps, 2 * sizeof(VkFragmentShadingRateCombinerOpKHR)); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: { VkPipelineRenderingCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRenderingCreateInfo *in_ext = (const VkPipelineRenderingCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO; out_ext->pNext = NULL; out_ext->viewMask = in_ext->viewMask; out_ext->colorAttachmentCount = in_ext->colorAttachmentCount; out_ext->pColorAttachmentFormats = in_ext->pColorAttachmentFormats; out_ext->depthAttachmentFormat = in_ext->depthAttachmentFormat; out_ext->stencilAttachmentFormat = in_ext->stencilAttachmentFormat; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: { VkAttachmentSampleCountInfoAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkAttachmentSampleCountInfoAMD *in_ext = (const VkAttachmentSampleCountInfoAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD; out_ext->pNext = NULL; out_ext->colorAttachmentCount = in_ext->colorAttachmentCount; out_ext->pColorAttachmentSamples = in_ext->pColorAttachmentSamples; out_ext->depthStencilAttachmentSamples = in_ext->depthStencilAttachmentSamples; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: { VkMultiviewPerViewAttributesInfoNVX *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMultiviewPerViewAttributesInfoNVX *in_ext = (const VkMultiviewPerViewAttributesInfoNVX *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX; out_ext->pNext = NULL; out_ext->perViewAttributes = in_ext->perViewAttributes; out_ext->perViewAttributesPositionXOnly = in_ext->perViewAttributesPositionXOnly; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: { VkGraphicsPipelineLibraryCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkGraphicsPipelineLibraryCreateInfoEXT *in_ext = (const VkGraphicsPipelineLibraryCreateInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: { VkPipelineRobustnessCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRobustnessCreateInfoEXT *in_ext = (const VkPipelineRobustnessCreateInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->storageBuffers = in_ext->storageBuffers; out_ext->uniformBuffers = in_ext->uniformBuffers; out_ext->vertexInputs = in_ext->vertexInputs; out_ext->images = in_ext->images; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #endif /* _WIN64 */ static inline void convert_VkGraphicsPipelineCreateInfo_win32_to_host(struct conversion_context *ctx, const VkGraphicsPipelineCreateInfo32 *in, VkGraphicsPipelineCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->stageCount = in->stageCount; out->pStages = convert_VkPipelineShaderStageCreateInfo_array_win32_to_host(ctx, (const VkPipelineShaderStageCreateInfo32 *)UlongToPtr(in->pStages), in->stageCount); out->pVertexInputState = convert_VkPipelineVertexInputStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineVertexInputStateCreateInfo32 *)UlongToPtr(in->pVertexInputState), 1); out->pInputAssemblyState = convert_VkPipelineInputAssemblyStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineInputAssemblyStateCreateInfo32 *)UlongToPtr(in->pInputAssemblyState), 1); out->pTessellationState = convert_VkPipelineTessellationStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineTessellationStateCreateInfo32 *)UlongToPtr(in->pTessellationState), 1); out->pViewportState = convert_VkPipelineViewportStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineViewportStateCreateInfo32 *)UlongToPtr(in->pViewportState), 1); out->pRasterizationState = convert_VkPipelineRasterizationStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineRasterizationStateCreateInfo32 *)UlongToPtr(in->pRasterizationState), 1); out->pMultisampleState = convert_VkPipelineMultisampleStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineMultisampleStateCreateInfo32 *)UlongToPtr(in->pMultisampleState), 1); out->pDepthStencilState = convert_VkPipelineDepthStencilStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineDepthStencilStateCreateInfo32 *)UlongToPtr(in->pDepthStencilState), 1); out->pColorBlendState = convert_VkPipelineColorBlendStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineColorBlendStateCreateInfo32 *)UlongToPtr(in->pColorBlendState), 1); out->pDynamicState = convert_VkPipelineDynamicStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineDynamicStateCreateInfo32 *)UlongToPtr(in->pDynamicState), 1); out->layout = in->layout; out->renderPass = in->renderPass; out->subpass = in->subpass; out->basePipelineHandle = in->basePipelineHandle; out->basePipelineIndex = in->basePipelineIndex; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV: { VkGraphicsPipelineShaderGroupsCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkGraphicsPipelineShaderGroupsCreateInfoNV32 *in_ext = (const VkGraphicsPipelineShaderGroupsCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->groupCount = in_ext->groupCount; out_ext->pGroups = convert_VkGraphicsShaderGroupCreateInfoNV_array_win32_to_host(ctx, (const VkGraphicsShaderGroupCreateInfoNV32 *)UlongToPtr(in_ext->pGroups), in_ext->groupCount); out_ext->pipelineCount = in_ext->pipelineCount; out_ext->pPipelines = (const VkPipeline *)UlongToPtr(in_ext->pPipelines); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT: { VkPipelineDiscardRectangleStateCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineDiscardRectangleStateCreateInfoEXT32 *in_ext = (const VkPipelineDiscardRectangleStateCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->discardRectangleMode = in_ext->discardRectangleMode; out_ext->discardRectangleCount = in_ext->discardRectangleCount; out_ext->pDiscardRectangles = (const VkRect2D *)UlongToPtr(in_ext->pDiscardRectangles); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: { VkPipelineRepresentativeFragmentTestStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRepresentativeFragmentTestStateCreateInfoNV32 *in_ext = (const VkPipelineRepresentativeFragmentTestStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->representativeFragmentTestEnable = in_ext->representativeFragmentTestEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCreationFeedbackCreateInfo32 *in_ext = (const VkPipelineCreationFeedbackCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; out_ext->pNext = NULL; out_ext->pPipelineCreationFeedback = convert_VkPipelineCreationFeedback_array_win32_to_host(ctx, (VkPipelineCreationFeedback32 *)UlongToPtr(in_ext->pPipelineCreationFeedback), 1); out_ext->pipelineStageCreationFeedbackCount = in_ext->pipelineStageCreationFeedbackCount; out_ext->pPipelineStageCreationFeedbacks = convert_VkPipelineCreationFeedback_array_win32_to_host(ctx, (VkPipelineCreationFeedback32 *)UlongToPtr(in_ext->pPipelineStageCreationFeedbacks), in_ext->pipelineStageCreationFeedbackCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: { VkPipelineCompilerControlCreateInfoAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCompilerControlCreateInfoAMD32 *in_ext = (const VkPipelineCompilerControlCreateInfoAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD; out_ext->pNext = NULL; out_ext->compilerControlFlags = in_ext->compilerControlFlags; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: { VkPipelineLibraryCreateInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineLibraryCreateInfoKHR32 *in_ext = (const VkPipelineLibraryCreateInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR; out_ext->pNext = NULL; out_ext->libraryCount = in_ext->libraryCount; out_ext->pLibraries = (const VkPipeline *)UlongToPtr(in_ext->pLibraries); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR: { VkPipelineFragmentShadingRateStateCreateInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineFragmentShadingRateStateCreateInfoKHR32 *in_ext = (const VkPipelineFragmentShadingRateStateCreateInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR; out_ext->pNext = NULL; out_ext->fragmentSize = in_ext->fragmentSize; memcpy(out_ext->combinerOps, in_ext->combinerOps, 2 * sizeof(VkFragmentShadingRateCombinerOpKHR)); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV: { VkPipelineFragmentShadingRateEnumStateCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineFragmentShadingRateEnumStateCreateInfoNV32 *in_ext = (const VkPipelineFragmentShadingRateEnumStateCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->shadingRateType = in_ext->shadingRateType; out_ext->shadingRate = in_ext->shadingRate; memcpy(out_ext->combinerOps, in_ext->combinerOps, 2 * sizeof(VkFragmentShadingRateCombinerOpKHR)); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: { VkPipelineRenderingCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRenderingCreateInfo32 *in_ext = (const VkPipelineRenderingCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO; out_ext->pNext = NULL; out_ext->viewMask = in_ext->viewMask; out_ext->colorAttachmentCount = in_ext->colorAttachmentCount; out_ext->pColorAttachmentFormats = (const VkFormat *)UlongToPtr(in_ext->pColorAttachmentFormats); out_ext->depthAttachmentFormat = in_ext->depthAttachmentFormat; out_ext->stencilAttachmentFormat = in_ext->stencilAttachmentFormat; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: { VkAttachmentSampleCountInfoAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkAttachmentSampleCountInfoAMD32 *in_ext = (const VkAttachmentSampleCountInfoAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD; out_ext->pNext = NULL; out_ext->colorAttachmentCount = in_ext->colorAttachmentCount; out_ext->pColorAttachmentSamples = (const VkSampleCountFlagBits *)UlongToPtr(in_ext->pColorAttachmentSamples); out_ext->depthStencilAttachmentSamples = in_ext->depthStencilAttachmentSamples; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: { VkMultiviewPerViewAttributesInfoNVX *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMultiviewPerViewAttributesInfoNVX32 *in_ext = (const VkMultiviewPerViewAttributesInfoNVX32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX; out_ext->pNext = NULL; out_ext->perViewAttributes = in_ext->perViewAttributes; out_ext->perViewAttributesPositionXOnly = in_ext->perViewAttributesPositionXOnly; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: { VkGraphicsPipelineLibraryCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkGraphicsPipelineLibraryCreateInfoEXT32 *in_ext = (const VkGraphicsPipelineLibraryCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: { VkPipelineRobustnessCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRobustnessCreateInfoEXT32 *in_ext = (const VkPipelineRobustnessCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->storageBuffers = in_ext->storageBuffers; out_ext->uniformBuffers = in_ext->uniformBuffers; out_ext->vertexInputs = in_ext->vertexInputs; out_ext->images = in_ext->images; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkGraphicsPipelineCreateInfo_host_to_win32(const VkGraphicsPipelineCreateInfo *in, const VkGraphicsPipelineCreateInfo32 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO); const VkPipelineCreationFeedbackCreateInfo *in_ext = (const VkPipelineCreationFeedbackCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; convert_VkPipelineCreationFeedback_array_host_to_win32(in_ext->pPipelineCreationFeedback, (VkPipelineCreationFeedback32 *)UlongToPtr(out_ext->pPipelineCreationFeedback), 1); convert_VkPipelineCreationFeedback_array_host_to_win32(in_ext->pPipelineStageCreationFeedbacks, (VkPipelineCreationFeedback32 *)UlongToPtr(out_ext->pPipelineStageCreationFeedbacks), in_ext->pipelineStageCreationFeedbackCount); out_header = (void *)out_ext; break; } default: break; } } } #ifdef _WIN64 static inline const VkGraphicsPipelineCreateInfo *convert_VkGraphicsPipelineCreateInfo_array_win64_to_host(struct conversion_context *ctx, const VkGraphicsPipelineCreateInfo *in, uint32_t count) { VkGraphicsPipelineCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkGraphicsPipelineCreateInfo_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkGraphicsPipelineCreateInfo *convert_VkGraphicsPipelineCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkGraphicsPipelineCreateInfo32 *in, uint32_t count) { VkGraphicsPipelineCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkGraphicsPipelineCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkGraphicsPipelineCreateInfo_array_host_to_win32(const VkGraphicsPipelineCreateInfo *in, const VkGraphicsPipelineCreateInfo32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkGraphicsPipelineCreateInfo_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkImageCreateInfo_win32_to_host(struct conversion_context *ctx, const VkImageCreateInfo32 *in, VkImageCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->imageType = in->imageType; out->format = in->format; out->extent = in->extent; out->mipLevels = in->mipLevels; out->arrayLayers = in->arrayLayers; out->samples = in->samples; out->tiling = in->tiling; out->usage = in->usage; out->sharingMode = in->sharingMode; out->queueFamilyIndexCount = in->queueFamilyIndexCount; out->pQueueFamilyIndices = (const uint32_t *)UlongToPtr(in->pQueueFamilyIndices); out->initialLayout = in->initialLayout; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: { VkDedicatedAllocationImageCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDedicatedAllocationImageCreateInfoNV32 *in_ext = (const VkDedicatedAllocationImageCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->dedicatedAllocation = in_ext->dedicatedAllocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: { VkExternalMemoryImageCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkExternalMemoryImageCreateInfo32 *in_ext = (const VkExternalMemoryImageCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO; out_ext->pNext = NULL; out_ext->handleTypes = in_ext->handleTypes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: { VkImageSwapchainCreateInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageSwapchainCreateInfoKHR32 *in_ext = (const VkImageSwapchainCreateInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR; out_ext->pNext = NULL; out_ext->swapchain = in_ext->swapchain; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: { VkImageFormatListCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageFormatListCreateInfo32 *in_ext = (const VkImageFormatListCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO; out_ext->pNext = NULL; out_ext->viewFormatCount = in_ext->viewFormatCount; out_ext->pViewFormats = (const VkFormat *)UlongToPtr(in_ext->pViewFormats); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: { VkImageStencilUsageCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageStencilUsageCreateInfo32 *in_ext = (const VkImageStencilUsageCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO; out_ext->pNext = NULL; out_ext->stencilUsage = in_ext->stencilUsage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT: { VkOpaqueCaptureDescriptorDataCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *in_ext = (const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->opaqueCaptureDescriptorData = (const void *)UlongToPtr(in_ext->opaqueCaptureDescriptorData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: { VkImageCompressionControlEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageCompressionControlEXT32 *in_ext = (const VkImageCompressionControlEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->compressionControlPlaneCount = in_ext->compressionControlPlaneCount; out_ext->pFixedRateFlags = (VkImageCompressionFixedRateFlagsEXT *)UlongToPtr(in_ext->pFixedRateFlags); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV: { VkOpticalFlowImageFormatInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpticalFlowImageFormatInfoNV32 *in_ext = (const VkOpticalFlowImageFormatInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV; out_ext->pNext = NULL; out_ext->usage = in_ext->usage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkImageViewCreateInfo_win32_to_host(struct conversion_context *ctx, const VkImageViewCreateInfo32 *in, VkImageViewCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->image = in->image; out->viewType = in->viewType; out->format = in->format; out->components = in->components; out->subresourceRange = in->subresourceRange; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: { VkImageViewUsageCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageViewUsageCreateInfo32 *in_ext = (const VkImageViewUsageCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO; out_ext->pNext = NULL; out_ext->usage = in_ext->usage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: { VkSamplerYcbcrConversionInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSamplerYcbcrConversionInfo32 *in_ext = (const VkSamplerYcbcrConversionInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO; out_ext->pNext = NULL; out_ext->conversion = in_ext->conversion; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT: { VkImageViewASTCDecodeModeEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageViewASTCDecodeModeEXT32 *in_ext = (const VkImageViewASTCDecodeModeEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT; out_ext->pNext = NULL; out_ext->decodeMode = in_ext->decodeMode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT: { VkOpaqueCaptureDescriptorDataCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *in_ext = (const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->opaqueCaptureDescriptorData = (const void *)UlongToPtr(in_ext->opaqueCaptureDescriptorData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT: { VkImageViewMinLodCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageViewMinLodCreateInfoEXT32 *in_ext = (const VkImageViewMinLodCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->minLod = in_ext->minLod; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM: { VkImageViewSampleWeightCreateInfoQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageViewSampleWeightCreateInfoQCOM32 *in_ext = (const VkImageViewSampleWeightCreateInfoQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM; out_ext->pNext = NULL; out_ext->filterCenter = in_ext->filterCenter; out_ext->filterSize = in_ext->filterSize; out_ext->numPhases = in_ext->numPhases; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkIndirectCommandsLayoutTokenNV_win32_to_host(const VkIndirectCommandsLayoutTokenNV32 *in, VkIndirectCommandsLayoutTokenNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->tokenType = in->tokenType; out->stream = in->stream; out->offset = in->offset; out->vertexBindingUnit = in->vertexBindingUnit; out->vertexDynamicStride = in->vertexDynamicStride; out->pushconstantPipelineLayout = in->pushconstantPipelineLayout; out->pushconstantShaderStageFlags = in->pushconstantShaderStageFlags; out->pushconstantOffset = in->pushconstantOffset; out->pushconstantSize = in->pushconstantSize; out->indirectStateFlags = in->indirectStateFlags; out->indexTypeCount = in->indexTypeCount; out->pIndexTypes = (const VkIndexType *)UlongToPtr(in->pIndexTypes); out->pIndexTypeValues = (const uint32_t *)UlongToPtr(in->pIndexTypeValues); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkIndirectCommandsLayoutTokenNV *convert_VkIndirectCommandsLayoutTokenNV_array_win32_to_host(struct conversion_context *ctx, const VkIndirectCommandsLayoutTokenNV32 *in, uint32_t count) { VkIndirectCommandsLayoutTokenNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkIndirectCommandsLayoutTokenNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkIndirectCommandsLayoutCreateInfoNV_win32_to_host(struct conversion_context *ctx, const VkIndirectCommandsLayoutCreateInfoNV32 *in, VkIndirectCommandsLayoutCreateInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->pipelineBindPoint = in->pipelineBindPoint; out->tokenCount = in->tokenCount; out->pTokens = convert_VkIndirectCommandsLayoutTokenNV_array_win32_to_host(ctx, (const VkIndirectCommandsLayoutTokenNV32 *)UlongToPtr(in->pTokens), in->tokenCount); out->streamCount = in->streamCount; out->pStreamStrides = (const uint32_t *)UlongToPtr(in->pStreamStrides); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkApplicationInfo_win32_to_host(const VkApplicationInfo32 *in, VkApplicationInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pApplicationName = (const char *)UlongToPtr(in->pApplicationName); out->applicationVersion = in->applicationVersion; out->pEngineName = (const char *)UlongToPtr(in->pEngineName); out->engineVersion = in->engineVersion; out->apiVersion = in->apiVersion; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkApplicationInfo *convert_VkApplicationInfo_array_win32_to_host(struct conversion_context *ctx, const VkApplicationInfo32 *in, uint32_t count) { VkApplicationInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkApplicationInfo_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkInstanceCreateInfo_win64_to_host(struct conversion_context *ctx, const VkInstanceCreateInfo *in, VkInstanceCreateInfo *out) { const VkBaseInStructure *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->pApplicationInfo = in->pApplicationInfo; out->enabledLayerCount = in->enabledLayerCount; out->ppEnabledLayerNames = in->ppEnabledLayerNames; out->enabledExtensionCount = in->enabledExtensionCount; out->ppEnabledExtensionNames = in->ppEnabledExtensionNames; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO: break; case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: { VkDebugReportCallbackCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDebugReportCallbackCreateInfoEXT *in_ext = (const VkDebugReportCallbackCreateInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->pfnCallback = in_ext->pfnCallback; out_ext->pUserData = in_ext->pUserData; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: { VkValidationFlagsEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkValidationFlagsEXT *in_ext = (const VkValidationFlagsEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT; out_ext->pNext = NULL; out_ext->disabledValidationCheckCount = in_ext->disabledValidationCheckCount; out_ext->pDisabledValidationChecks = in_ext->pDisabledValidationChecks; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: { VkValidationFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkValidationFeaturesEXT *in_ext = (const VkValidationFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT; out_ext->pNext = NULL; out_ext->enabledValidationFeatureCount = in_ext->enabledValidationFeatureCount; out_ext->pEnabledValidationFeatures = in_ext->pEnabledValidationFeatures; out_ext->disabledValidationFeatureCount = in_ext->disabledValidationFeatureCount; out_ext->pDisabledValidationFeatures = in_ext->pDisabledValidationFeatures; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: { VkDebugUtilsMessengerCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDebugUtilsMessengerCreateInfoEXT *in_ext = (const VkDebugUtilsMessengerCreateInfoEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->messageSeverity = in_ext->messageSeverity; out_ext->messageType = in_ext->messageType; out_ext->pfnUserCallback = in_ext->pfnUserCallback; out_ext->pUserData = in_ext->pUserData; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #endif /* _WIN64 */ static inline void convert_VkInstanceCreateInfo_win32_to_host(struct conversion_context *ctx, const VkInstanceCreateInfo32 *in, VkInstanceCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->pApplicationInfo = convert_VkApplicationInfo_array_win32_to_host(ctx, (const VkApplicationInfo32 *)UlongToPtr(in->pApplicationInfo), 1); out->enabledLayerCount = in->enabledLayerCount; out->ppEnabledLayerNames = convert_char_pointer_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in->ppEnabledLayerNames), in->enabledLayerCount); out->enabledExtensionCount = in->enabledExtensionCount; out->ppEnabledExtensionNames = convert_char_pointer_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in->ppEnabledExtensionNames), in->enabledExtensionCount); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO: break; case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: { VkDebugReportCallbackCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDebugReportCallbackCreateInfoEXT32 *in_ext = (const VkDebugReportCallbackCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->pfnCallback = in_ext->pfnCallback; out_ext->pUserData = (void *)UlongToPtr(in_ext->pUserData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: { VkValidationFlagsEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkValidationFlagsEXT32 *in_ext = (const VkValidationFlagsEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT; out_ext->pNext = NULL; out_ext->disabledValidationCheckCount = in_ext->disabledValidationCheckCount; out_ext->pDisabledValidationChecks = (const VkValidationCheckEXT *)UlongToPtr(in_ext->pDisabledValidationChecks); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: { VkValidationFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkValidationFeaturesEXT32 *in_ext = (const VkValidationFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT; out_ext->pNext = NULL; out_ext->enabledValidationFeatureCount = in_ext->enabledValidationFeatureCount; out_ext->pEnabledValidationFeatures = (const VkValidationFeatureEnableEXT *)UlongToPtr(in_ext->pEnabledValidationFeatures); out_ext->disabledValidationFeatureCount = in_ext->disabledValidationFeatureCount; out_ext->pDisabledValidationFeatures = (const VkValidationFeatureDisableEXT *)UlongToPtr(in_ext->pDisabledValidationFeatures); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: { VkDebugUtilsMessengerCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDebugUtilsMessengerCreateInfoEXT32 *in_ext = (const VkDebugUtilsMessengerCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->messageSeverity = in_ext->messageSeverity; out_ext->messageType = in_ext->messageType; out_ext->pfnUserCallback = in_ext->pfnUserCallback; out_ext->pUserData = (void *)UlongToPtr(in_ext->pUserData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkMicromapCreateInfoEXT_win32_to_host(const VkMicromapCreateInfoEXT32 *in, VkMicromapCreateInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->createFlags = in->createFlags; out->buffer = in->buffer; out->offset = in->offset; out->size = in->size; out->type = in->type; out->deviceAddress = in->deviceAddress; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkOpticalFlowSessionCreateInfoNV_win32_to_host(struct conversion_context *ctx, const VkOpticalFlowSessionCreateInfoNV32 *in, VkOpticalFlowSessionCreateInfoNV *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->width = in->width; out->height = in->height; out->imageFormat = in->imageFormat; out->flowVectorFormat = in->flowVectorFormat; out->costFormat = in->costFormat; out->outputGridSize = in->outputGridSize; out->hintGridSize = in->hintGridSize; out->performanceLevel = in->performanceLevel; out->flags = in->flags; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV: { VkOpticalFlowSessionCreatePrivateDataInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpticalFlowSessionCreatePrivateDataInfoNV32 *in_ext = (const VkOpticalFlowSessionCreatePrivateDataInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV; out_ext->pNext = NULL; out_ext->id = in_ext->id; out_ext->size = in_ext->size; out_ext->pPrivateData = (const void *)UlongToPtr(in_ext->pPrivateData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkPipelineCacheCreateInfo_win32_to_host(const VkPipelineCacheCreateInfo32 *in, VkPipelineCacheCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->initialDataSize = in->initialDataSize; out->pInitialData = (const void *)UlongToPtr(in->pInitialData); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPipelineLayoutCreateInfo_win32_to_host(const VkPipelineLayoutCreateInfo32 *in, VkPipelineLayoutCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->setLayoutCount = in->setLayoutCount; out->pSetLayouts = (const VkDescriptorSetLayout *)UlongToPtr(in->pSetLayouts); out->pushConstantRangeCount = in->pushConstantRangeCount; out->pPushConstantRanges = (const VkPushConstantRange *)UlongToPtr(in->pPushConstantRanges); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPrivateDataSlotCreateInfo_win32_to_host(const VkPrivateDataSlotCreateInfo32 *in, VkPrivateDataSlotCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkQueryPoolCreateInfo_win32_to_host(struct conversion_context *ctx, const VkQueryPoolCreateInfo32 *in, VkQueryPoolCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->queryType = in->queryType; out->queryCount = in->queryCount; out->pipelineStatistics = in->pipelineStatistics; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR: { VkQueryPoolPerformanceCreateInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkQueryPoolPerformanceCreateInfoKHR32 *in_ext = (const VkQueryPoolPerformanceCreateInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR; out_ext->pNext = NULL; out_ext->queueFamilyIndex = in_ext->queueFamilyIndex; out_ext->counterIndexCount = in_ext->counterIndexCount; out_ext->pCounterIndices = (const uint32_t *)UlongToPtr(in_ext->pCounterIndices); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL: { VkQueryPoolPerformanceQueryCreateInfoINTEL *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkQueryPoolPerformanceQueryCreateInfoINTEL32 *in_ext = (const VkQueryPoolPerformanceQueryCreateInfoINTEL32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL; out_ext->pNext = NULL; out_ext->performanceCountersSampling = in_ext->performanceCountersSampling; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkRayTracingShaderGroupCreateInfoKHR_win32_to_host(const VkRayTracingShaderGroupCreateInfoKHR32 *in, VkRayTracingShaderGroupCreateInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; out->generalShader = in->generalShader; out->closestHitShader = in->closestHitShader; out->anyHitShader = in->anyHitShader; out->intersectionShader = in->intersectionShader; out->pShaderGroupCaptureReplayHandle = (const void *)UlongToPtr(in->pShaderGroupCaptureReplayHandle); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkRayTracingShaderGroupCreateInfoKHR *convert_VkRayTracingShaderGroupCreateInfoKHR_array_win32_to_host(struct conversion_context *ctx, const VkRayTracingShaderGroupCreateInfoKHR32 *in, uint32_t count) { VkRayTracingShaderGroupCreateInfoKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkRayTracingShaderGroupCreateInfoKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPipelineLibraryCreateInfoKHR_win32_to_host(const VkPipelineLibraryCreateInfoKHR32 *in, VkPipelineLibraryCreateInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->libraryCount = in->libraryCount; out->pLibraries = (const VkPipeline *)UlongToPtr(in->pLibraries); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkPipelineLibraryCreateInfoKHR *convert_VkPipelineLibraryCreateInfoKHR_array_win32_to_host(struct conversion_context *ctx, const VkPipelineLibraryCreateInfoKHR32 *in, uint32_t count) { VkPipelineLibraryCreateInfoKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineLibraryCreateInfoKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkRayTracingPipelineInterfaceCreateInfoKHR_win32_to_host(const VkRayTracingPipelineInterfaceCreateInfoKHR32 *in, VkRayTracingPipelineInterfaceCreateInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->maxPipelineRayPayloadSize = in->maxPipelineRayPayloadSize; out->maxPipelineRayHitAttributeSize = in->maxPipelineRayHitAttributeSize; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkRayTracingPipelineInterfaceCreateInfoKHR *convert_VkRayTracingPipelineInterfaceCreateInfoKHR_array_win32_to_host(struct conversion_context *ctx, const VkRayTracingPipelineInterfaceCreateInfoKHR32 *in, uint32_t count) { VkRayTracingPipelineInterfaceCreateInfoKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkRayTracingPipelineInterfaceCreateInfoKHR_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkRayTracingPipelineCreateInfoKHR_win64_to_host(struct conversion_context *ctx, const VkRayTracingPipelineCreateInfoKHR *in, VkRayTracingPipelineCreateInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->flags = in->flags; out->stageCount = in->stageCount; out->pStages = convert_VkPipelineShaderStageCreateInfo_array_win64_to_host(ctx, in->pStages, in->stageCount); out->groupCount = in->groupCount; out->pGroups = in->pGroups; out->maxPipelineRayRecursionDepth = in->maxPipelineRayRecursionDepth; out->pLibraryInfo = in->pLibraryInfo; out->pLibraryInterface = in->pLibraryInterface; out->pDynamicState = in->pDynamicState; out->layout = in->layout; out->basePipelineHandle = in->basePipelineHandle; out->basePipelineIndex = in->basePipelineIndex; } #endif /* _WIN64 */ static inline void convert_VkRayTracingPipelineCreateInfoKHR_win32_to_host(struct conversion_context *ctx, const VkRayTracingPipelineCreateInfoKHR32 *in, VkRayTracingPipelineCreateInfoKHR *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->stageCount = in->stageCount; out->pStages = convert_VkPipelineShaderStageCreateInfo_array_win32_to_host(ctx, (const VkPipelineShaderStageCreateInfo32 *)UlongToPtr(in->pStages), in->stageCount); out->groupCount = in->groupCount; out->pGroups = convert_VkRayTracingShaderGroupCreateInfoKHR_array_win32_to_host(ctx, (const VkRayTracingShaderGroupCreateInfoKHR32 *)UlongToPtr(in->pGroups), in->groupCount); out->maxPipelineRayRecursionDepth = in->maxPipelineRayRecursionDepth; out->pLibraryInfo = convert_VkPipelineLibraryCreateInfoKHR_array_win32_to_host(ctx, (const VkPipelineLibraryCreateInfoKHR32 *)UlongToPtr(in->pLibraryInfo), 1); out->pLibraryInterface = convert_VkRayTracingPipelineInterfaceCreateInfoKHR_array_win32_to_host(ctx, (const VkRayTracingPipelineInterfaceCreateInfoKHR32 *)UlongToPtr(in->pLibraryInterface), 1); out->pDynamicState = convert_VkPipelineDynamicStateCreateInfo_array_win32_to_host(ctx, (const VkPipelineDynamicStateCreateInfo32 *)UlongToPtr(in->pDynamicState), 1); out->layout = in->layout; out->basePipelineHandle = in->basePipelineHandle; out->basePipelineIndex = in->basePipelineIndex; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCreationFeedbackCreateInfo32 *in_ext = (const VkPipelineCreationFeedbackCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; out_ext->pNext = NULL; out_ext->pPipelineCreationFeedback = convert_VkPipelineCreationFeedback_array_win32_to_host(ctx, (VkPipelineCreationFeedback32 *)UlongToPtr(in_ext->pPipelineCreationFeedback), 1); out_ext->pipelineStageCreationFeedbackCount = in_ext->pipelineStageCreationFeedbackCount; out_ext->pPipelineStageCreationFeedbacks = convert_VkPipelineCreationFeedback_array_win32_to_host(ctx, (VkPipelineCreationFeedback32 *)UlongToPtr(in_ext->pPipelineStageCreationFeedbacks), in_ext->pipelineStageCreationFeedbackCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: { VkPipelineRobustnessCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineRobustnessCreateInfoEXT32 *in_ext = (const VkPipelineRobustnessCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->storageBuffers = in_ext->storageBuffers; out_ext->uniformBuffers = in_ext->uniformBuffers; out_ext->vertexInputs = in_ext->vertexInputs; out_ext->images = in_ext->images; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkRayTracingPipelineCreateInfoKHR_host_to_win32(const VkRayTracingPipelineCreateInfoKHR *in, const VkRayTracingPipelineCreateInfoKHR32 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO); const VkPipelineCreationFeedbackCreateInfo *in_ext = (const VkPipelineCreationFeedbackCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; convert_VkPipelineCreationFeedback_array_host_to_win32(in_ext->pPipelineCreationFeedback, (VkPipelineCreationFeedback32 *)UlongToPtr(out_ext->pPipelineCreationFeedback), 1); convert_VkPipelineCreationFeedback_array_host_to_win32(in_ext->pPipelineStageCreationFeedbacks, (VkPipelineCreationFeedback32 *)UlongToPtr(out_ext->pPipelineStageCreationFeedbacks), in_ext->pipelineStageCreationFeedbackCount); out_header = (void *)out_ext; break; } default: break; } } } #ifdef _WIN64 static inline const VkRayTracingPipelineCreateInfoKHR *convert_VkRayTracingPipelineCreateInfoKHR_array_win64_to_host(struct conversion_context *ctx, const VkRayTracingPipelineCreateInfoKHR *in, uint32_t count) { VkRayTracingPipelineCreateInfoKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkRayTracingPipelineCreateInfoKHR_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkRayTracingPipelineCreateInfoKHR *convert_VkRayTracingPipelineCreateInfoKHR_array_win32_to_host(struct conversion_context *ctx, const VkRayTracingPipelineCreateInfoKHR32 *in, uint32_t count) { VkRayTracingPipelineCreateInfoKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkRayTracingPipelineCreateInfoKHR_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkRayTracingPipelineCreateInfoKHR_array_host_to_win32(const VkRayTracingPipelineCreateInfoKHR *in, const VkRayTracingPipelineCreateInfoKHR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkRayTracingPipelineCreateInfoKHR_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkRayTracingShaderGroupCreateInfoNV_win32_to_host(const VkRayTracingShaderGroupCreateInfoNV32 *in, VkRayTracingShaderGroupCreateInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; out->generalShader = in->generalShader; out->closestHitShader = in->closestHitShader; out->anyHitShader = in->anyHitShader; out->intersectionShader = in->intersectionShader; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkRayTracingShaderGroupCreateInfoNV *convert_VkRayTracingShaderGroupCreateInfoNV_array_win32_to_host(struct conversion_context *ctx, const VkRayTracingShaderGroupCreateInfoNV32 *in, uint32_t count) { VkRayTracingShaderGroupCreateInfoNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkRayTracingShaderGroupCreateInfoNV_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkRayTracingPipelineCreateInfoNV_win64_to_host(struct conversion_context *ctx, const VkRayTracingPipelineCreateInfoNV *in, VkRayTracingPipelineCreateInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->flags = in->flags; out->stageCount = in->stageCount; out->pStages = convert_VkPipelineShaderStageCreateInfo_array_win64_to_host(ctx, in->pStages, in->stageCount); out->groupCount = in->groupCount; out->pGroups = in->pGroups; out->maxRecursionDepth = in->maxRecursionDepth; out->layout = in->layout; out->basePipelineHandle = in->basePipelineHandle; out->basePipelineIndex = in->basePipelineIndex; } #endif /* _WIN64 */ static inline void convert_VkRayTracingPipelineCreateInfoNV_win32_to_host(struct conversion_context *ctx, const VkRayTracingPipelineCreateInfoNV32 *in, VkRayTracingPipelineCreateInfoNV *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->stageCount = in->stageCount; out->pStages = convert_VkPipelineShaderStageCreateInfo_array_win32_to_host(ctx, (const VkPipelineShaderStageCreateInfo32 *)UlongToPtr(in->pStages), in->stageCount); out->groupCount = in->groupCount; out->pGroups = convert_VkRayTracingShaderGroupCreateInfoNV_array_win32_to_host(ctx, (const VkRayTracingShaderGroupCreateInfoNV32 *)UlongToPtr(in->pGroups), in->groupCount); out->maxRecursionDepth = in->maxRecursionDepth; out->layout = in->layout; out->basePipelineHandle = in->basePipelineHandle; out->basePipelineIndex = in->basePipelineIndex; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPipelineCreationFeedbackCreateInfo32 *in_ext = (const VkPipelineCreationFeedbackCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; out_ext->pNext = NULL; out_ext->pPipelineCreationFeedback = convert_VkPipelineCreationFeedback_array_win32_to_host(ctx, (VkPipelineCreationFeedback32 *)UlongToPtr(in_ext->pPipelineCreationFeedback), 1); out_ext->pipelineStageCreationFeedbackCount = in_ext->pipelineStageCreationFeedbackCount; out_ext->pPipelineStageCreationFeedbacks = convert_VkPipelineCreationFeedback_array_win32_to_host(ctx, (VkPipelineCreationFeedback32 *)UlongToPtr(in_ext->pPipelineStageCreationFeedbacks), in_ext->pipelineStageCreationFeedbackCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkRayTracingPipelineCreateInfoNV_host_to_win32(const VkRayTracingPipelineCreateInfoNV *in, const VkRayTracingPipelineCreateInfoNV32 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: { VkPipelineCreationFeedbackCreateInfo32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO); const VkPipelineCreationFeedbackCreateInfo *in_ext = (const VkPipelineCreationFeedbackCreateInfo *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO; convert_VkPipelineCreationFeedback_array_host_to_win32(in_ext->pPipelineCreationFeedback, (VkPipelineCreationFeedback32 *)UlongToPtr(out_ext->pPipelineCreationFeedback), 1); convert_VkPipelineCreationFeedback_array_host_to_win32(in_ext->pPipelineStageCreationFeedbacks, (VkPipelineCreationFeedback32 *)UlongToPtr(out_ext->pPipelineStageCreationFeedbacks), in_ext->pipelineStageCreationFeedbackCount); out_header = (void *)out_ext; break; } default: break; } } } #ifdef _WIN64 static inline const VkRayTracingPipelineCreateInfoNV *convert_VkRayTracingPipelineCreateInfoNV_array_win64_to_host(struct conversion_context *ctx, const VkRayTracingPipelineCreateInfoNV *in, uint32_t count) { VkRayTracingPipelineCreateInfoNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkRayTracingPipelineCreateInfoNV_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkRayTracingPipelineCreateInfoNV *convert_VkRayTracingPipelineCreateInfoNV_array_win32_to_host(struct conversion_context *ctx, const VkRayTracingPipelineCreateInfoNV32 *in, uint32_t count) { VkRayTracingPipelineCreateInfoNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkRayTracingPipelineCreateInfoNV_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkRayTracingPipelineCreateInfoNV_array_host_to_win32(const VkRayTracingPipelineCreateInfoNV *in, const VkRayTracingPipelineCreateInfoNV32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkRayTracingPipelineCreateInfoNV_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkSubpassDescription_win32_to_host(const VkSubpassDescription32 *in, VkSubpassDescription *out) { if (!in) return; out->flags = in->flags; out->pipelineBindPoint = in->pipelineBindPoint; out->inputAttachmentCount = in->inputAttachmentCount; out->pInputAttachments = (const VkAttachmentReference *)UlongToPtr(in->pInputAttachments); out->colorAttachmentCount = in->colorAttachmentCount; out->pColorAttachments = (const VkAttachmentReference *)UlongToPtr(in->pColorAttachments); out->pResolveAttachments = (const VkAttachmentReference *)UlongToPtr(in->pResolveAttachments); out->pDepthStencilAttachment = (const VkAttachmentReference *)UlongToPtr(in->pDepthStencilAttachment); out->preserveAttachmentCount = in->preserveAttachmentCount; out->pPreserveAttachments = (const uint32_t *)UlongToPtr(in->pPreserveAttachments); } static inline const VkSubpassDescription *convert_VkSubpassDescription_array_win32_to_host(struct conversion_context *ctx, const VkSubpassDescription32 *in, uint32_t count) { VkSubpassDescription *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSubpassDescription_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkRenderPassCreateInfo_win32_to_host(struct conversion_context *ctx, const VkRenderPassCreateInfo32 *in, VkRenderPassCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->attachmentCount = in->attachmentCount; out->pAttachments = (const VkAttachmentDescription *)UlongToPtr(in->pAttachments); out->subpassCount = in->subpassCount; out->pSubpasses = convert_VkSubpassDescription_array_win32_to_host(ctx, (const VkSubpassDescription32 *)UlongToPtr(in->pSubpasses), in->subpassCount); out->dependencyCount = in->dependencyCount; out->pDependencies = (const VkSubpassDependency *)UlongToPtr(in->pDependencies); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: { VkRenderPassMultiviewCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassMultiviewCreateInfo32 *in_ext = (const VkRenderPassMultiviewCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO; out_ext->pNext = NULL; out_ext->subpassCount = in_ext->subpassCount; out_ext->pViewMasks = (const uint32_t *)UlongToPtr(in_ext->pViewMasks); out_ext->dependencyCount = in_ext->dependencyCount; out_ext->pViewOffsets = (const int32_t *)UlongToPtr(in_ext->pViewOffsets); out_ext->correlationMaskCount = in_ext->correlationMaskCount; out_ext->pCorrelationMasks = (const uint32_t *)UlongToPtr(in_ext->pCorrelationMasks); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: { VkRenderPassInputAttachmentAspectCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassInputAttachmentAspectCreateInfo32 *in_ext = (const VkRenderPassInputAttachmentAspectCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO; out_ext->pNext = NULL; out_ext->aspectReferenceCount = in_ext->aspectReferenceCount; out_ext->pAspectReferences = (const VkInputAttachmentAspectReference *)UlongToPtr(in_ext->pAspectReferences); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: { VkRenderPassFragmentDensityMapCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassFragmentDensityMapCreateInfoEXT32 *in_ext = (const VkRenderPassFragmentDensityMapCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->fragmentDensityMapAttachment = in_ext->fragmentDensityMapAttachment; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkAttachmentDescription2_win32_to_host(struct conversion_context *ctx, const VkAttachmentDescription232 *in, VkAttachmentDescription2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->format = in->format; out->samples = in->samples; out->loadOp = in->loadOp; out->storeOp = in->storeOp; out->stencilLoadOp = in->stencilLoadOp; out->stencilStoreOp = in->stencilStoreOp; out->initialLayout = in->initialLayout; out->finalLayout = in->finalLayout; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: { VkAttachmentDescriptionStencilLayout *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkAttachmentDescriptionStencilLayout32 *in_ext = (const VkAttachmentDescriptionStencilLayout32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT; out_ext->pNext = NULL; out_ext->stencilInitialLayout = in_ext->stencilInitialLayout; out_ext->stencilFinalLayout = in_ext->stencilFinalLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkAttachmentDescription2 *convert_VkAttachmentDescription2_array_win32_to_host(struct conversion_context *ctx, const VkAttachmentDescription232 *in, uint32_t count) { VkAttachmentDescription2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkAttachmentDescription2_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkAttachmentReference2_win32_to_host(struct conversion_context *ctx, const VkAttachmentReference232 *in, VkAttachmentReference2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->attachment = in->attachment; out->layout = in->layout; out->aspectMask = in->aspectMask; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: { VkAttachmentReferenceStencilLayout *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkAttachmentReferenceStencilLayout32 *in_ext = (const VkAttachmentReferenceStencilLayout32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT; out_ext->pNext = NULL; out_ext->stencilLayout = in_ext->stencilLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkAttachmentReference2 *convert_VkAttachmentReference2_array_win32_to_host(struct conversion_context *ctx, const VkAttachmentReference232 *in, uint32_t count) { VkAttachmentReference2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkAttachmentReference2_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkSubpassDescription2_win32_to_host(struct conversion_context *ctx, const VkSubpassDescription232 *in, VkSubpassDescription2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->pipelineBindPoint = in->pipelineBindPoint; out->viewMask = in->viewMask; out->inputAttachmentCount = in->inputAttachmentCount; out->pInputAttachments = convert_VkAttachmentReference2_array_win32_to_host(ctx, (const VkAttachmentReference232 *)UlongToPtr(in->pInputAttachments), in->inputAttachmentCount); out->colorAttachmentCount = in->colorAttachmentCount; out->pColorAttachments = convert_VkAttachmentReference2_array_win32_to_host(ctx, (const VkAttachmentReference232 *)UlongToPtr(in->pColorAttachments), in->colorAttachmentCount); out->pResolveAttachments = convert_VkAttachmentReference2_array_win32_to_host(ctx, (const VkAttachmentReference232 *)UlongToPtr(in->pResolveAttachments), in->colorAttachmentCount); out->pDepthStencilAttachment = convert_VkAttachmentReference2_array_win32_to_host(ctx, (const VkAttachmentReference232 *)UlongToPtr(in->pDepthStencilAttachment), 1); out->preserveAttachmentCount = in->preserveAttachmentCount; out->pPreserveAttachments = (const uint32_t *)UlongToPtr(in->pPreserveAttachments); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: { VkSubpassDescriptionDepthStencilResolve *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSubpassDescriptionDepthStencilResolve32 *in_ext = (const VkSubpassDescriptionDepthStencilResolve32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE; out_ext->pNext = NULL; out_ext->depthResolveMode = in_ext->depthResolveMode; out_ext->stencilResolveMode = in_ext->stencilResolveMode; out_ext->pDepthStencilResolveAttachment = convert_VkAttachmentReference2_array_win32_to_host(ctx, (const VkAttachmentReference232 *)UlongToPtr(in_ext->pDepthStencilResolveAttachment), 1); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: { VkFragmentShadingRateAttachmentInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkFragmentShadingRateAttachmentInfoKHR32 *in_ext = (const VkFragmentShadingRateAttachmentInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR; out_ext->pNext = NULL; out_ext->pFragmentShadingRateAttachment = convert_VkAttachmentReference2_array_win32_to_host(ctx, (const VkAttachmentReference232 *)UlongToPtr(in_ext->pFragmentShadingRateAttachment), 1); out_ext->shadingRateAttachmentTexelSize = in_ext->shadingRateAttachmentTexelSize; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT: { VkMultisampledRenderToSingleSampledInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMultisampledRenderToSingleSampledInfoEXT32 *in_ext = (const VkMultisampledRenderToSingleSampledInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT; out_ext->pNext = NULL; out_ext->multisampledRenderToSingleSampledEnable = in_ext->multisampledRenderToSingleSampledEnable; out_ext->rasterizationSamples = in_ext->rasterizationSamples; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT: { VkRenderPassCreationControlEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassCreationControlEXT32 *in_ext = (const VkRenderPassCreationControlEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT; out_ext->pNext = NULL; out_ext->disallowMerging = in_ext->disallowMerging; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT: { VkRenderPassSubpassFeedbackCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassSubpassFeedbackCreateInfoEXT32 *in_ext = (const VkRenderPassSubpassFeedbackCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->pSubpassFeedback = (VkRenderPassSubpassFeedbackInfoEXT *)UlongToPtr(in_ext->pSubpassFeedback); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkSubpassDescription2 *convert_VkSubpassDescription2_array_win32_to_host(struct conversion_context *ctx, const VkSubpassDescription232 *in, uint32_t count) { VkSubpassDescription2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSubpassDescription2_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkSubpassDependency2_win32_to_host(struct conversion_context *ctx, const VkSubpassDependency232 *in, VkSubpassDependency2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcSubpass = in->srcSubpass; out->dstSubpass = in->dstSubpass; out->srcStageMask = in->srcStageMask; out->dstStageMask = in->dstStageMask; out->srcAccessMask = in->srcAccessMask; out->dstAccessMask = in->dstAccessMask; out->dependencyFlags = in->dependencyFlags; out->viewOffset = in->viewOffset; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: { VkMemoryBarrier2 *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkMemoryBarrier232 *in_ext = (const VkMemoryBarrier232 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2; out_ext->pNext = NULL; out_ext->srcStageMask = in_ext->srcStageMask; out_ext->srcAccessMask = in_ext->srcAccessMask; out_ext->dstStageMask = in_ext->dstStageMask; out_ext->dstAccessMask = in_ext->dstAccessMask; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline const VkSubpassDependency2 *convert_VkSubpassDependency2_array_win32_to_host(struct conversion_context *ctx, const VkSubpassDependency232 *in, uint32_t count) { VkSubpassDependency2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSubpassDependency2_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkRenderPassCreateInfo2_win32_to_host(struct conversion_context *ctx, const VkRenderPassCreateInfo232 *in, VkRenderPassCreateInfo2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->attachmentCount = in->attachmentCount; out->pAttachments = convert_VkAttachmentDescription2_array_win32_to_host(ctx, (const VkAttachmentDescription232 *)UlongToPtr(in->pAttachments), in->attachmentCount); out->subpassCount = in->subpassCount; out->pSubpasses = convert_VkSubpassDescription2_array_win32_to_host(ctx, (const VkSubpassDescription232 *)UlongToPtr(in->pSubpasses), in->subpassCount); out->dependencyCount = in->dependencyCount; out->pDependencies = convert_VkSubpassDependency2_array_win32_to_host(ctx, (const VkSubpassDependency232 *)UlongToPtr(in->pDependencies), in->dependencyCount); out->correlatedViewMaskCount = in->correlatedViewMaskCount; out->pCorrelatedViewMasks = (const uint32_t *)UlongToPtr(in->pCorrelatedViewMasks); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: { VkRenderPassFragmentDensityMapCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassFragmentDensityMapCreateInfoEXT32 *in_ext = (const VkRenderPassFragmentDensityMapCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->fragmentDensityMapAttachment = in_ext->fragmentDensityMapAttachment; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT: { VkRenderPassCreationControlEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassCreationControlEXT32 *in_ext = (const VkRenderPassCreationControlEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT; out_ext->pNext = NULL; out_ext->disallowMerging = in_ext->disallowMerging; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT: { VkRenderPassCreationFeedbackCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkRenderPassCreationFeedbackCreateInfoEXT32 *in_ext = (const VkRenderPassCreationFeedbackCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->pRenderPassFeedback = (VkRenderPassCreationFeedbackInfoEXT *)UlongToPtr(in_ext->pRenderPassFeedback); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkSamplerCreateInfo_win32_to_host(struct conversion_context *ctx, const VkSamplerCreateInfo32 *in, VkSamplerCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->magFilter = in->magFilter; out->minFilter = in->minFilter; out->mipmapMode = in->mipmapMode; out->addressModeU = in->addressModeU; out->addressModeV = in->addressModeV; out->addressModeW = in->addressModeW; out->mipLodBias = in->mipLodBias; out->anisotropyEnable = in->anisotropyEnable; out->maxAnisotropy = in->maxAnisotropy; out->compareEnable = in->compareEnable; out->compareOp = in->compareOp; out->minLod = in->minLod; out->maxLod = in->maxLod; out->borderColor = in->borderColor; out->unnormalizedCoordinates = in->unnormalizedCoordinates; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: { VkSamplerYcbcrConversionInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSamplerYcbcrConversionInfo32 *in_ext = (const VkSamplerYcbcrConversionInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO; out_ext->pNext = NULL; out_ext->conversion = in_ext->conversion; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: { VkSamplerReductionModeCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSamplerReductionModeCreateInfo32 *in_ext = (const VkSamplerReductionModeCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO; out_ext->pNext = NULL; out_ext->reductionMode = in_ext->reductionMode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: { VkSamplerCustomBorderColorCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSamplerCustomBorderColorCreateInfoEXT32 *in_ext = (const VkSamplerCustomBorderColorCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->customBorderColor = in_ext->customBorderColor; out_ext->format = in_ext->format; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT: { VkSamplerBorderColorComponentMappingCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSamplerBorderColorComponentMappingCreateInfoEXT32 *in_ext = (const VkSamplerBorderColorComponentMappingCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->components = in_ext->components; out_ext->srgb = in_ext->srgb; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT: { VkOpaqueCaptureDescriptorDataCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *in_ext = (const VkOpaqueCaptureDescriptorDataCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->opaqueCaptureDescriptorData = (const void *)UlongToPtr(in_ext->opaqueCaptureDescriptorData); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkSamplerYcbcrConversionCreateInfo_win32_to_host(const VkSamplerYcbcrConversionCreateInfo32 *in, VkSamplerYcbcrConversionCreateInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->format = in->format; out->ycbcrModel = in->ycbcrModel; out->ycbcrRange = in->ycbcrRange; out->components = in->components; out->xChromaOffset = in->xChromaOffset; out->yChromaOffset = in->yChromaOffset; out->chromaFilter = in->chromaFilter; out->forceExplicitReconstruction = in->forceExplicitReconstruction; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSemaphoreCreateInfo_win32_to_host(struct conversion_context *ctx, const VkSemaphoreCreateInfo32 *in, VkSemaphoreCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: { VkExportSemaphoreCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkExportSemaphoreCreateInfo32 *in_ext = (const VkExportSemaphoreCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO; out_ext->pNext = NULL; out_ext->handleTypes = in_ext->handleTypes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: { VkSemaphoreTypeCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSemaphoreTypeCreateInfo32 *in_ext = (const VkSemaphoreTypeCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO; out_ext->pNext = NULL; out_ext->semaphoreType = in_ext->semaphoreType; out_ext->initialValue = in_ext->initialValue; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkShaderModuleCreateInfo_win32_to_host(struct conversion_context *ctx, const VkShaderModuleCreateInfo32 *in, VkShaderModuleCreateInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->codeSize = in->codeSize; out->pCode = (const uint32_t *)UlongToPtr(in->pCode); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: { VkShaderModuleValidationCacheCreateInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkShaderModuleValidationCacheCreateInfoEXT32 *in_ext = (const VkShaderModuleValidationCacheCreateInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT; out_ext->pNext = NULL; out_ext->validationCache = in_ext->validationCache; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline void convert_VkSwapchainCreateInfoKHR_win64_to_host(const VkSwapchainCreateInfoKHR *in, VkSwapchainCreateInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->flags = in->flags; out->surface = wine_surface_from_handle(in->surface)->driver_surface; out->minImageCount = in->minImageCount; out->imageFormat = in->imageFormat; out->imageColorSpace = in->imageColorSpace; out->imageExtent = in->imageExtent; out->imageArrayLayers = in->imageArrayLayers; out->imageUsage = in->imageUsage; out->imageSharingMode = in->imageSharingMode; out->queueFamilyIndexCount = in->queueFamilyIndexCount; out->pQueueFamilyIndices = in->pQueueFamilyIndices; out->preTransform = in->preTransform; out->compositeAlpha = in->compositeAlpha; out->presentMode = in->presentMode; out->clipped = in->clipped; out->oldSwapchain = in->oldSwapchain; } #endif /* _WIN64 */ static inline void convert_VkSwapchainCreateInfoKHR_win32_to_host(struct conversion_context *ctx, const VkSwapchainCreateInfoKHR32 *in, VkSwapchainCreateInfoKHR *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->surface = wine_surface_from_handle(in->surface)->driver_surface; out->minImageCount = in->minImageCount; out->imageFormat = in->imageFormat; out->imageColorSpace = in->imageColorSpace; out->imageExtent = in->imageExtent; out->imageArrayLayers = in->imageArrayLayers; out->imageUsage = in->imageUsage; out->imageSharingMode = in->imageSharingMode; out->queueFamilyIndexCount = in->queueFamilyIndexCount; out->pQueueFamilyIndices = (const uint32_t *)UlongToPtr(in->pQueueFamilyIndices); out->preTransform = in->preTransform; out->compositeAlpha = in->compositeAlpha; out->presentMode = in->presentMode; out->clipped = in->clipped; out->oldSwapchain = in->oldSwapchain; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: { VkDeviceGroupSwapchainCreateInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupSwapchainCreateInfoKHR32 *in_ext = (const VkDeviceGroupSwapchainCreateInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR; out_ext->pNext = NULL; out_ext->modes = in_ext->modes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: { VkImageFormatListCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageFormatListCreateInfo32 *in_ext = (const VkImageFormatListCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO; out_ext->pNext = NULL; out_ext->viewFormatCount = in_ext->viewFormatCount; out_ext->pViewFormats = (const VkFormat *)UlongToPtr(in_ext->pViewFormats); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV: { VkSwapchainPresentBarrierCreateInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSwapchainPresentBarrierCreateInfoNV32 *in_ext = (const VkSwapchainPresentBarrierCreateInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV; out_ext->pNext = NULL; out_ext->presentBarrierEnable = in_ext->presentBarrierEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: { VkImageCompressionControlEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageCompressionControlEXT32 *in_ext = (const VkImageCompressionControlEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->compressionControlPlaneCount = in_ext->compressionControlPlaneCount; out_ext->pFixedRateFlags = (VkImageCompressionFixedRateFlagsEXT *)UlongToPtr(in_ext->pFixedRateFlags); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkValidationCacheCreateInfoEXT_win32_to_host(const VkValidationCacheCreateInfoEXT32 *in, VkValidationCacheCreateInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->initialDataSize = in->initialDataSize; out->pInitialData = (const void *)UlongToPtr(in->pInitialData); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkWin32SurfaceCreateInfoKHR_win32_to_host(const VkWin32SurfaceCreateInfoKHR32 *in, VkWin32SurfaceCreateInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->hinstance = (HINSTANCE)UlongToPtr(in->hinstance); out->hwnd = (HWND)UlongToPtr(in->hwnd); if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline void convert_VkDebugMarkerObjectNameInfoEXT_win64_to_host(const VkDebugMarkerObjectNameInfoEXT *in, VkDebugMarkerObjectNameInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->objectType = in->objectType; out->object = wine_vk_unwrap_handle(in->objectType, in->object); out->pObjectName = in->pObjectName; } #endif /* _WIN64 */ static inline void convert_VkDebugMarkerObjectNameInfoEXT_win32_to_host(const VkDebugMarkerObjectNameInfoEXT32 *in, VkDebugMarkerObjectNameInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->objectType = in->objectType; out->object = wine_vk_unwrap_handle(in->objectType, in->object); out->pObjectName = (const char *)UlongToPtr(in->pObjectName); if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline void convert_VkDebugMarkerObjectTagInfoEXT_win64_to_host(const VkDebugMarkerObjectTagInfoEXT *in, VkDebugMarkerObjectTagInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->objectType = in->objectType; out->object = wine_vk_unwrap_handle(in->objectType, in->object); out->tagName = in->tagName; out->tagSize = in->tagSize; out->pTag = in->pTag; } #endif /* _WIN64 */ static inline void convert_VkDebugMarkerObjectTagInfoEXT_win32_to_host(const VkDebugMarkerObjectTagInfoEXT32 *in, VkDebugMarkerObjectTagInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->objectType = in->objectType; out->object = wine_vk_unwrap_handle(in->objectType, in->object); out->tagName = in->tagName; out->tagSize = in->tagSize; out->pTag = (const void *)UlongToPtr(in->pTag); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPhysicalDevice_array_unwrapped_host_to_win32(const VkPhysicalDevice *in, PTR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { out[i] = PtrToUlong(in[i]); } } static inline void convert_VkPhysicalDeviceGroupProperties_win32_to_unwrapped_host(const VkPhysicalDeviceGroupProperties32 *in, VkPhysicalDeviceGroupProperties *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPhysicalDeviceGroupProperties_unwrapped_host_to_win32(const VkPhysicalDeviceGroupProperties *in, VkPhysicalDeviceGroupProperties32 *out) { if (!in) return; out->physicalDeviceCount = in->physicalDeviceCount; convert_VkPhysicalDevice_array_unwrapped_host_to_win32(in->physicalDevices, out->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE); out->subsetAllocation = in->subsetAllocation; } static inline VkPhysicalDeviceGroupProperties *convert_VkPhysicalDeviceGroupProperties_array_win32_to_unwrapped_host(struct conversion_context *ctx, const VkPhysicalDeviceGroupProperties32 *in, uint32_t count) { VkPhysicalDeviceGroupProperties *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPhysicalDeviceGroupProperties_win32_to_unwrapped_host(&in[i], &out[i]); } return out; } static inline void convert_VkPhysicalDeviceGroupProperties_array_unwrapped_host_to_win32(const VkPhysicalDeviceGroupProperties *in, VkPhysicalDeviceGroupProperties32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPhysicalDeviceGroupProperties_unwrapped_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPerformanceCounterKHR_win32_to_host(const VkPerformanceCounterKHR32 *in, VkPerformanceCounterKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPerformanceCounterKHR_host_to_win32(const VkPerformanceCounterKHR *in, VkPerformanceCounterKHR32 *out) { if (!in) return; out->unit = in->unit; out->scope = in->scope; out->storage = in->storage; memcpy(out->uuid, in->uuid, VK_UUID_SIZE * sizeof(uint8_t)); } static inline VkPerformanceCounterKHR *convert_VkPerformanceCounterKHR_array_win32_to_host(struct conversion_context *ctx, const VkPerformanceCounterKHR32 *in, uint32_t count) { VkPerformanceCounterKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPerformanceCounterKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPerformanceCounterKHR_array_host_to_win32(const VkPerformanceCounterKHR *in, VkPerformanceCounterKHR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPerformanceCounterKHR_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPerformanceCounterDescriptionKHR_win32_to_host(const VkPerformanceCounterDescriptionKHR32 *in, VkPerformanceCounterDescriptionKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPerformanceCounterDescriptionKHR_host_to_win32(const VkPerformanceCounterDescriptionKHR *in, VkPerformanceCounterDescriptionKHR32 *out) { if (!in) return; out->flags = in->flags; memcpy(out->name, in->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); memcpy(out->category, in->category, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); } static inline VkPerformanceCounterDescriptionKHR *convert_VkPerformanceCounterDescriptionKHR_array_win32_to_host(struct conversion_context *ctx, const VkPerformanceCounterDescriptionKHR32 *in, uint32_t count) { VkPerformanceCounterDescriptionKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPerformanceCounterDescriptionKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPerformanceCounterDescriptionKHR_array_host_to_win32(const VkPerformanceCounterDescriptionKHR *in, VkPerformanceCounterDescriptionKHR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPerformanceCounterDescriptionKHR_host_to_win32(&in[i], &out[i]); } } #ifdef _WIN64 static inline void convert_VkMappedMemoryRange_win64_to_host(const VkMappedMemoryRange *in, VkMappedMemoryRange *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->memory = wine_device_memory_from_handle(in->memory)->memory; out->offset = in->offset; out->size = in->size; } #endif /* _WIN64 */ static inline void convert_VkMappedMemoryRange_win32_to_host(const VkMappedMemoryRange32 *in, VkMappedMemoryRange *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->memory = wine_device_memory_from_handle(in->memory)->memory; out->offset = in->offset; out->size = in->size; if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline const VkMappedMemoryRange *convert_VkMappedMemoryRange_array_win64_to_host(struct conversion_context *ctx, const VkMappedMemoryRange *in, uint32_t count) { VkMappedMemoryRange *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkMappedMemoryRange_win64_to_host(&in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkMappedMemoryRange *convert_VkMappedMemoryRange_array_win32_to_host(struct conversion_context *ctx, const VkMappedMemoryRange32 *in, uint32_t count) { VkMappedMemoryRange *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkMappedMemoryRange_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkAccelerationStructureBuildSizesInfoKHR_win32_to_host(const VkAccelerationStructureBuildSizesInfoKHR32 *in, VkAccelerationStructureBuildSizesInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->accelerationStructureSize = in->accelerationStructureSize; out->updateScratchSize = in->updateScratchSize; out->buildScratchSize = in->buildScratchSize; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkAccelerationStructureBuildSizesInfoKHR_host_to_win32(const VkAccelerationStructureBuildSizesInfoKHR *in, VkAccelerationStructureBuildSizesInfoKHR32 *out) { if (!in) return; out->accelerationStructureSize = in->accelerationStructureSize; out->updateScratchSize = in->updateScratchSize; out->buildScratchSize = in->buildScratchSize; } static inline void convert_VkAccelerationStructureDeviceAddressInfoKHR_win32_to_host(const VkAccelerationStructureDeviceAddressInfoKHR32 *in, VkAccelerationStructureDeviceAddressInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->accelerationStructure = in->accelerationStructure; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkAccelerationStructureMemoryRequirementsInfoNV_win32_to_host(const VkAccelerationStructureMemoryRequirementsInfoNV32 *in, VkAccelerationStructureMemoryRequirementsInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; out->accelerationStructure = in->accelerationStructure; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMemoryRequirements_host_to_win32(const VkMemoryRequirements *in, VkMemoryRequirements32 *out) { if (!in) return; out->size = in->size; out->alignment = in->alignment; out->memoryTypeBits = in->memoryTypeBits; } static inline void convert_VkMemoryRequirements2KHR_win32_to_host(const VkMemoryRequirements2KHR32 *in, VkMemoryRequirements2KHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMemoryRequirements2KHR_host_to_win32(const VkMemoryRequirements2KHR *in, VkMemoryRequirements2KHR32 *out) { if (!in) return; convert_VkMemoryRequirements_host_to_win32(&in->memoryRequirements, &out->memoryRequirements); } static inline void convert_VkAccelerationStructureCaptureDescriptorDataInfoEXT_win32_to_host(const VkAccelerationStructureCaptureDescriptorDataInfoEXT32 *in, VkAccelerationStructureCaptureDescriptorDataInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->accelerationStructure = in->accelerationStructure; out->accelerationStructureNV = in->accelerationStructureNV; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkBufferDeviceAddressInfo_win32_to_host(const VkBufferDeviceAddressInfo32 *in, VkBufferDeviceAddressInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->buffer = in->buffer; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkBufferMemoryRequirementsInfo2_win32_to_host(const VkBufferMemoryRequirementsInfo232 *in, VkBufferMemoryRequirementsInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->buffer = in->buffer; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMemoryRequirements2_win32_to_host(struct conversion_context *ctx, const VkMemoryRequirements232 *in, VkMemoryRequirements2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: { VkMemoryDedicatedRequirements *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkMemoryRequirements2_host_to_win32(const VkMemoryRequirements2 *in, VkMemoryRequirements232 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; convert_VkMemoryRequirements_host_to_win32(&in->memoryRequirements, &out->memoryRequirements); for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: { VkMemoryDedicatedRequirements32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS); const VkMemoryDedicatedRequirements *in_ext = (const VkMemoryDedicatedRequirements *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS; out_ext->prefersDedicatedAllocation = in_ext->prefersDedicatedAllocation; out_ext->requiresDedicatedAllocation = in_ext->requiresDedicatedAllocation; out_header = (void *)out_ext; break; } default: break; } } } static inline void convert_VkBufferCaptureDescriptorDataInfoEXT_win32_to_host(const VkBufferCaptureDescriptorDataInfoEXT32 *in, VkBufferCaptureDescriptorDataInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->buffer = in->buffer; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCalibratedTimestampInfoEXT_win32_to_host(const VkCalibratedTimestampInfoEXT32 *in, VkCalibratedTimestampInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->timeDomain = in->timeDomain; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkCalibratedTimestampInfoEXT *convert_VkCalibratedTimestampInfoEXT_array_win32_to_host(struct conversion_context *ctx, const VkCalibratedTimestampInfoEXT32 *in, uint32_t count) { VkCalibratedTimestampInfoEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCalibratedTimestampInfoEXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkDescriptorAddressInfoEXT_win32_to_host(const VkDescriptorAddressInfoEXT32 *in, VkDescriptorAddressInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->address = in->address; out->range = in->range; out->format = in->format; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkDescriptorAddressInfoEXT *convert_VkDescriptorAddressInfoEXT_array_win32_to_host(struct conversion_context *ctx, const VkDescriptorAddressInfoEXT32 *in, uint32_t count) { VkDescriptorAddressInfoEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDescriptorAddressInfoEXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkDescriptorDataEXT_win32_to_host(struct conversion_context *ctx, const VkDescriptorDataEXT32 *in, VkDescriptorDataEXT *out, VkFlags selector) { if (!in) return; if (selector == VK_DESCRIPTOR_TYPE_SAMPLER) out->pSampler = (const VkSampler *)UlongToPtr(in->pSampler); if (selector == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) out->pCombinedImageSampler = convert_VkDescriptorImageInfo_array_win32_to_host(ctx, (const VkDescriptorImageInfo32 *)UlongToPtr(in->pCombinedImageSampler), 1); if (selector == VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT) out->pInputAttachmentImage = convert_VkDescriptorImageInfo_array_win32_to_host(ctx, (const VkDescriptorImageInfo32 *)UlongToPtr(in->pInputAttachmentImage), 1); if (selector == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE) out->pSampledImage = convert_VkDescriptorImageInfo_array_win32_to_host(ctx, (const VkDescriptorImageInfo32 *)UlongToPtr(in->pSampledImage), 1); if (selector == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE) out->pStorageImage = convert_VkDescriptorImageInfo_array_win32_to_host(ctx, (const VkDescriptorImageInfo32 *)UlongToPtr(in->pStorageImage), 1); if (selector == VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER) out->pUniformTexelBuffer = convert_VkDescriptorAddressInfoEXT_array_win32_to_host(ctx, (const VkDescriptorAddressInfoEXT32 *)UlongToPtr(in->pUniformTexelBuffer), 1); if (selector == VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER) out->pStorageTexelBuffer = convert_VkDescriptorAddressInfoEXT_array_win32_to_host(ctx, (const VkDescriptorAddressInfoEXT32 *)UlongToPtr(in->pStorageTexelBuffer), 1); if (selector == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER) out->pUniformBuffer = convert_VkDescriptorAddressInfoEXT_array_win32_to_host(ctx, (const VkDescriptorAddressInfoEXT32 *)UlongToPtr(in->pUniformBuffer), 1); if (selector == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER) out->pStorageBuffer = convert_VkDescriptorAddressInfoEXT_array_win32_to_host(ctx, (const VkDescriptorAddressInfoEXT32 *)UlongToPtr(in->pStorageBuffer), 1); if (selector == VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR || selector == VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV) out->accelerationStructure = in->accelerationStructure; } static inline void convert_VkDescriptorGetInfoEXT_win32_to_host(struct conversion_context *ctx, const VkDescriptorGetInfoEXT32 *in, VkDescriptorGetInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->type = in->type; convert_VkDescriptorDataEXT_win32_to_host(ctx, &in->data, &out->data, in->type); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDescriptorSetBindingReferenceVALVE_win32_to_host(const VkDescriptorSetBindingReferenceVALVE32 *in, VkDescriptorSetBindingReferenceVALVE *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->descriptorSetLayout = in->descriptorSetLayout; out->binding = in->binding; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDescriptorSetLayoutHostMappingInfoVALVE_win32_to_host(const VkDescriptorSetLayoutHostMappingInfoVALVE32 *in, VkDescriptorSetLayoutHostMappingInfoVALVE *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->descriptorOffset = in->descriptorOffset; out->descriptorSize = in->descriptorSize; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDescriptorSetLayoutHostMappingInfoVALVE_host_to_win32(const VkDescriptorSetLayoutHostMappingInfoVALVE *in, VkDescriptorSetLayoutHostMappingInfoVALVE32 *out) { if (!in) return; out->descriptorOffset = in->descriptorOffset; out->descriptorSize = in->descriptorSize; } static inline void convert_VkDescriptorSetLayoutSupport_win32_to_host(struct conversion_context *ctx, const VkDescriptorSetLayoutSupport32 *in, VkDescriptorSetLayoutSupport *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: { VkDescriptorSetVariableDescriptorCountLayoutSupport *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkDescriptorSetLayoutSupport_host_to_win32(const VkDescriptorSetLayoutSupport *in, VkDescriptorSetLayoutSupport32 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; out->supported = in->supported; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: { VkDescriptorSetVariableDescriptorCountLayoutSupport32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT); const VkDescriptorSetVariableDescriptorCountLayoutSupport *in_ext = (const VkDescriptorSetVariableDescriptorCountLayoutSupport *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT; out_ext->maxVariableDescriptorCount = in_ext->maxVariableDescriptorCount; out_header = (void *)out_ext; break; } default: break; } } } static inline void convert_VkAccelerationStructureVersionInfoKHR_win32_to_host(const VkAccelerationStructureVersionInfoKHR32 *in, VkAccelerationStructureVersionInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pVersionData = (const uint8_t *)UlongToPtr(in->pVersionData); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkBufferCreateInfo *convert_VkBufferCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkBufferCreateInfo32 *in, uint32_t count) { VkBufferCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBufferCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkDeviceBufferMemoryRequirements_win32_to_host(struct conversion_context *ctx, const VkDeviceBufferMemoryRequirements32 *in, VkDeviceBufferMemoryRequirements *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pCreateInfo = convert_VkBufferCreateInfo_array_win32_to_host(ctx, (const VkBufferCreateInfo32 *)UlongToPtr(in->pCreateInfo), 1); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDeviceFaultCountsEXT_win32_to_host(const VkDeviceFaultCountsEXT32 *in, VkDeviceFaultCountsEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->addressInfoCount = in->addressInfoCount; out->vendorInfoCount = in->vendorInfoCount; out->vendorBinarySize = in->vendorBinarySize; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDeviceFaultCountsEXT_host_to_win32(const VkDeviceFaultCountsEXT *in, VkDeviceFaultCountsEXT32 *out) { if (!in) return; out->addressInfoCount = in->addressInfoCount; out->vendorInfoCount = in->vendorInfoCount; out->vendorBinarySize = in->vendorBinarySize; } static inline void convert_VkDeviceFaultAddressInfoEXT_win32_to_host(const VkDeviceFaultAddressInfoEXT32 *in, VkDeviceFaultAddressInfoEXT *out) { if (!in) return; out->addressType = in->addressType; out->reportedAddress = in->reportedAddress; out->addressPrecision = in->addressPrecision; } static inline void convert_VkDeviceFaultAddressInfoEXT_host_to_win32(const VkDeviceFaultAddressInfoEXT *in, VkDeviceFaultAddressInfoEXT32 *out) { if (!in) return; out->addressType = in->addressType; out->reportedAddress = in->reportedAddress; out->addressPrecision = in->addressPrecision; } static inline VkDeviceFaultAddressInfoEXT *convert_VkDeviceFaultAddressInfoEXT_array_win32_to_host(struct conversion_context *ctx, const VkDeviceFaultAddressInfoEXT32 *in, uint32_t count) { VkDeviceFaultAddressInfoEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDeviceFaultAddressInfoEXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkDeviceFaultAddressInfoEXT_array_host_to_win32(const VkDeviceFaultAddressInfoEXT *in, VkDeviceFaultAddressInfoEXT32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkDeviceFaultAddressInfoEXT_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkDeviceFaultVendorInfoEXT_win32_to_host(const VkDeviceFaultVendorInfoEXT32 *in, VkDeviceFaultVendorInfoEXT *out) { if (!in) return; memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); out->vendorFaultCode = in->vendorFaultCode; out->vendorFaultData = in->vendorFaultData; } static inline void convert_VkDeviceFaultVendorInfoEXT_host_to_win32(const VkDeviceFaultVendorInfoEXT *in, VkDeviceFaultVendorInfoEXT32 *out) { if (!in) return; memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); out->vendorFaultCode = in->vendorFaultCode; out->vendorFaultData = in->vendorFaultData; } static inline VkDeviceFaultVendorInfoEXT *convert_VkDeviceFaultVendorInfoEXT_array_win32_to_host(struct conversion_context *ctx, const VkDeviceFaultVendorInfoEXT32 *in, uint32_t count) { VkDeviceFaultVendorInfoEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDeviceFaultVendorInfoEXT_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkDeviceFaultVendorInfoEXT_array_host_to_win32(const VkDeviceFaultVendorInfoEXT *in, VkDeviceFaultVendorInfoEXT32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkDeviceFaultVendorInfoEXT_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkDeviceFaultInfoEXT_win32_to_host(struct conversion_context *ctx, const VkDeviceFaultInfoEXT32 *in, VkDeviceFaultInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); out->pAddressInfos = convert_VkDeviceFaultAddressInfoEXT_array_win32_to_host(ctx, (VkDeviceFaultAddressInfoEXT32 *)UlongToPtr(in->pAddressInfos), 1); out->pVendorInfos = convert_VkDeviceFaultVendorInfoEXT_array_win32_to_host(ctx, (VkDeviceFaultVendorInfoEXT32 *)UlongToPtr(in->pVendorInfos), 1); out->pVendorBinaryData = (void *)UlongToPtr(in->pVendorBinaryData); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDeviceFaultInfoEXT_host_to_win32(const VkDeviceFaultInfoEXT *in, VkDeviceFaultInfoEXT32 *out) { if (!in) return; memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); convert_VkDeviceFaultAddressInfoEXT_array_host_to_win32(in->pAddressInfos, (VkDeviceFaultAddressInfoEXT32 *)UlongToPtr(out->pAddressInfos), 1); convert_VkDeviceFaultVendorInfoEXT_array_host_to_win32(in->pVendorInfos, (VkDeviceFaultVendorInfoEXT32 *)UlongToPtr(out->pVendorInfos), 1); out->pVendorBinaryData = PtrToUlong(in->pVendorBinaryData); } static inline void convert_VkDeviceGroupPresentCapabilitiesKHR_win32_to_host(const VkDeviceGroupPresentCapabilitiesKHR32 *in, VkDeviceGroupPresentCapabilitiesKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDeviceGroupPresentCapabilitiesKHR_host_to_win32(const VkDeviceGroupPresentCapabilitiesKHR *in, VkDeviceGroupPresentCapabilitiesKHR32 *out) { if (!in) return; memcpy(out->presentMask, in->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t)); out->modes = in->modes; } static inline const VkImageCreateInfo *convert_VkImageCreateInfo_array_win32_to_host(struct conversion_context *ctx, const VkImageCreateInfo32 *in, uint32_t count) { VkImageCreateInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkImageCreateInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkDeviceImageMemoryRequirements_win32_to_host(struct conversion_context *ctx, const VkDeviceImageMemoryRequirements32 *in, VkDeviceImageMemoryRequirements *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pCreateInfo = convert_VkImageCreateInfo_array_win32_to_host(ctx, (const VkImageCreateInfo32 *)UlongToPtr(in->pCreateInfo), 1); out->planeAspect = in->planeAspect; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSparseImageMemoryRequirements_host_to_win32(const VkSparseImageMemoryRequirements *in, VkSparseImageMemoryRequirements32 *out) { if (!in) return; out->formatProperties = in->formatProperties; out->imageMipTailFirstLod = in->imageMipTailFirstLod; out->imageMipTailSize = in->imageMipTailSize; out->imageMipTailOffset = in->imageMipTailOffset; out->imageMipTailStride = in->imageMipTailStride; } static inline void convert_VkSparseImageMemoryRequirements2_win32_to_host(const VkSparseImageMemoryRequirements232 *in, VkSparseImageMemoryRequirements2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSparseImageMemoryRequirements2_host_to_win32(const VkSparseImageMemoryRequirements2 *in, VkSparseImageMemoryRequirements232 *out) { if (!in) return; convert_VkSparseImageMemoryRequirements_host_to_win32(&in->memoryRequirements, &out->memoryRequirements); } static inline VkSparseImageMemoryRequirements2 *convert_VkSparseImageMemoryRequirements2_array_win32_to_host(struct conversion_context *ctx, const VkSparseImageMemoryRequirements232 *in, uint32_t count) { VkSparseImageMemoryRequirements2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseImageMemoryRequirements2_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkSparseImageMemoryRequirements2_array_host_to_win32(const VkSparseImageMemoryRequirements2 *in, VkSparseImageMemoryRequirements232 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkSparseImageMemoryRequirements2_host_to_win32(&in[i], &out[i]); } } #ifdef _WIN64 static inline void convert_VkDeviceMemoryOpaqueCaptureAddressInfo_win64_to_host(const VkDeviceMemoryOpaqueCaptureAddressInfo *in, VkDeviceMemoryOpaqueCaptureAddressInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->memory = wine_device_memory_from_handle(in->memory)->memory; } #endif /* _WIN64 */ static inline void convert_VkDeviceMemoryOpaqueCaptureAddressInfo_win32_to_host(const VkDeviceMemoryOpaqueCaptureAddressInfo32 *in, VkDeviceMemoryOpaqueCaptureAddressInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->memory = wine_device_memory_from_handle(in->memory)->memory; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMicromapVersionInfoEXT_win32_to_host(const VkMicromapVersionInfoEXT32 *in, VkMicromapVersionInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pVersionData = (const uint8_t *)UlongToPtr(in->pVersionData); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkDeviceQueueInfo2_win32_to_host(const VkDeviceQueueInfo232 *in, VkDeviceQueueInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->queueFamilyIndex = in->queueFamilyIndex; out->queueIndex = in->queueIndex; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkTilePropertiesQCOM_win32_to_host(const VkTilePropertiesQCOM32 *in, VkTilePropertiesQCOM *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->tileSize = in->tileSize; out->apronSize = in->apronSize; out->origin = in->origin; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkTilePropertiesQCOM_host_to_win32(const VkTilePropertiesQCOM *in, VkTilePropertiesQCOM32 *out) { if (!in) return; out->tileSize = in->tileSize; out->apronSize = in->apronSize; out->origin = in->origin; } static inline VkTilePropertiesQCOM *convert_VkTilePropertiesQCOM_array_win32_to_host(struct conversion_context *ctx, const VkTilePropertiesQCOM32 *in, uint32_t count) { VkTilePropertiesQCOM *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkTilePropertiesQCOM_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkTilePropertiesQCOM_array_host_to_win32(const VkTilePropertiesQCOM *in, VkTilePropertiesQCOM32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkTilePropertiesQCOM_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkGeneratedCommandsMemoryRequirementsInfoNV_win32_to_host(const VkGeneratedCommandsMemoryRequirementsInfoNV32 *in, VkGeneratedCommandsMemoryRequirementsInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pipelineBindPoint = in->pipelineBindPoint; out->pipeline = in->pipeline; out->indirectCommandsLayout = in->indirectCommandsLayout; out->maxSequencesCount = in->maxSequencesCount; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkImageMemoryRequirementsInfo2_win32_to_host(struct conversion_context *ctx, const VkImageMemoryRequirementsInfo232 *in, VkImageMemoryRequirementsInfo2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->image = in->image; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: { VkImagePlaneMemoryRequirementsInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImagePlaneMemoryRequirementsInfo32 *in_ext = (const VkImagePlaneMemoryRequirementsInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO; out_ext->pNext = NULL; out_ext->planeAspect = in_ext->planeAspect; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkImageCaptureDescriptorDataInfoEXT_win32_to_host(const VkImageCaptureDescriptorDataInfoEXT32 *in, VkImageCaptureDescriptorDataInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->image = in->image; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSparseImageMemoryRequirements_array_host_to_win32(const VkSparseImageMemoryRequirements *in, VkSparseImageMemoryRequirements32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkSparseImageMemoryRequirements_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkImageSparseMemoryRequirementsInfo2_win32_to_host(const VkImageSparseMemoryRequirementsInfo232 *in, VkImageSparseMemoryRequirementsInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->image = in->image; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSubresourceLayout_host_to_win32(const VkSubresourceLayout *in, VkSubresourceLayout32 *out) { if (!in) return; out->offset = in->offset; out->size = in->size; out->rowPitch = in->rowPitch; out->arrayPitch = in->arrayPitch; out->depthPitch = in->depthPitch; } static inline void convert_VkImageSubresource2EXT_win32_to_host(const VkImageSubresource2EXT32 *in, VkImageSubresource2EXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->imageSubresource = in->imageSubresource; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSubresourceLayout2EXT_win32_to_host(struct conversion_context *ctx, const VkSubresourceLayout2EXT32 *in, VkSubresourceLayout2EXT *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: { VkImageCompressionPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkSubresourceLayout2EXT_host_to_win32(const VkSubresourceLayout2EXT *in, VkSubresourceLayout2EXT32 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; convert_VkSubresourceLayout_host_to_win32(&in->subresourceLayout, &out->subresourceLayout); for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: { VkImageCompressionPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT); const VkImageCompressionPropertiesEXT *in_ext = (const VkImageCompressionPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT; out_ext->imageCompressionFlags = in_ext->imageCompressionFlags; out_ext->imageCompressionFixedRateFlags = in_ext->imageCompressionFixedRateFlags; out_header = (void *)out_ext; break; } default: break; } } } static inline void convert_VkImageViewAddressPropertiesNVX_win32_to_host(const VkImageViewAddressPropertiesNVX32 *in, VkImageViewAddressPropertiesNVX *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkImageViewAddressPropertiesNVX_host_to_win32(const VkImageViewAddressPropertiesNVX *in, VkImageViewAddressPropertiesNVX32 *out) { if (!in) return; out->deviceAddress = in->deviceAddress; out->size = in->size; } static inline void convert_VkImageViewHandleInfoNVX_win32_to_host(const VkImageViewHandleInfoNVX32 *in, VkImageViewHandleInfoNVX *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->imageView = in->imageView; out->descriptorType = in->descriptorType; out->sampler = in->sampler; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkImageViewCaptureDescriptorDataInfoEXT_win32_to_host(const VkImageViewCaptureDescriptorDataInfoEXT32 *in, VkImageViewCaptureDescriptorDataInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->imageView = in->imageView; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMemoryHostPointerPropertiesEXT_win32_to_host(const VkMemoryHostPointerPropertiesEXT32 *in, VkMemoryHostPointerPropertiesEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMemoryHostPointerPropertiesEXT_host_to_win32(const VkMemoryHostPointerPropertiesEXT *in, VkMemoryHostPointerPropertiesEXT32 *out) { if (!in) return; out->memoryTypeBits = in->memoryTypeBits; } static inline void convert_VkMicromapBuildSizesInfoEXT_win32_to_host(const VkMicromapBuildSizesInfoEXT32 *in, VkMicromapBuildSizesInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->micromapSize = in->micromapSize; out->buildScratchSize = in->buildScratchSize; out->discardable = in->discardable; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMicromapBuildSizesInfoEXT_host_to_win32(const VkMicromapBuildSizesInfoEXT *in, VkMicromapBuildSizesInfoEXT32 *out) { if (!in) return; out->micromapSize = in->micromapSize; out->buildScratchSize = in->buildScratchSize; out->discardable = in->discardable; } static inline void convert_VkPerformanceValueDataINTEL_win32_to_host(const VkPerformanceValueDataINTEL32 *in, VkPerformanceValueDataINTEL *out, VkFlags selector) { if (!in) return; if (selector == VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL) out->value32 = in->value32; if (selector == VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL) out->value64 = in->value64; if (selector == VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL) out->valueFloat = in->valueFloat; if (selector == VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL) out->valueBool = in->valueBool; if (selector == VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL) out->valueString = (const char *)UlongToPtr(in->valueString); } static inline void convert_VkPerformanceValueDataINTEL_host_to_win32(const VkPerformanceValueDataINTEL *in, VkPerformanceValueDataINTEL32 *out, VkFlags selector) { if (!in) return; if (selector == VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL) out->value32 = in->value32; if (selector == VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL) out->value64 = in->value64; if (selector == VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL) out->valueFloat = in->valueFloat; if (selector == VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL) out->valueBool = in->valueBool; } static inline void convert_VkPerformanceValueINTEL_host_to_win32(const VkPerformanceValueINTEL *in, VkPerformanceValueINTEL32 *out) { if (!in) return; out->type = in->type; convert_VkPerformanceValueDataINTEL_host_to_win32(&in->data, &out->data, in->type); } static inline void convert_VkCooperativeMatrixPropertiesNV_win32_to_host(const VkCooperativeMatrixPropertiesNV32 *in, VkCooperativeMatrixPropertiesNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCooperativeMatrixPropertiesNV_host_to_win32(const VkCooperativeMatrixPropertiesNV *in, VkCooperativeMatrixPropertiesNV32 *out) { if (!in) return; out->MSize = in->MSize; out->NSize = in->NSize; out->KSize = in->KSize; out->AType = in->AType; out->BType = in->BType; out->CType = in->CType; out->DType = in->DType; out->scope = in->scope; } static inline VkCooperativeMatrixPropertiesNV *convert_VkCooperativeMatrixPropertiesNV_array_win32_to_host(struct conversion_context *ctx, const VkCooperativeMatrixPropertiesNV32 *in, uint32_t count) { VkCooperativeMatrixPropertiesNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCooperativeMatrixPropertiesNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkCooperativeMatrixPropertiesNV_array_host_to_win32(const VkCooperativeMatrixPropertiesNV *in, VkCooperativeMatrixPropertiesNV32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkCooperativeMatrixPropertiesNV_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPhysicalDeviceExternalBufferInfo_win32_to_host(const VkPhysicalDeviceExternalBufferInfo32 *in, VkPhysicalDeviceExternalBufferInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->usage = in->usage; out->handleType = in->handleType; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkExternalBufferProperties_win32_to_host(const VkExternalBufferProperties32 *in, VkExternalBufferProperties *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkExternalBufferProperties_host_to_win32(const VkExternalBufferProperties *in, VkExternalBufferProperties32 *out) { if (!in) return; out->externalMemoryProperties = in->externalMemoryProperties; } static inline void convert_VkPhysicalDeviceExternalFenceInfo_win32_to_host(const VkPhysicalDeviceExternalFenceInfo32 *in, VkPhysicalDeviceExternalFenceInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->handleType = in->handleType; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkExternalFenceProperties_win32_to_host(const VkExternalFenceProperties32 *in, VkExternalFenceProperties *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkExternalFenceProperties_host_to_win32(const VkExternalFenceProperties *in, VkExternalFenceProperties32 *out) { if (!in) return; out->exportFromImportedHandleTypes = in->exportFromImportedHandleTypes; out->compatibleHandleTypes = in->compatibleHandleTypes; out->externalFenceFeatures = in->externalFenceFeatures; } static inline void convert_VkPhysicalDeviceExternalSemaphoreInfo_win32_to_host(struct conversion_context *ctx, const VkPhysicalDeviceExternalSemaphoreInfo32 *in, VkPhysicalDeviceExternalSemaphoreInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->handleType = in->handleType; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: { VkSemaphoreTypeCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkSemaphoreTypeCreateInfo32 *in_ext = (const VkSemaphoreTypeCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO; out_ext->pNext = NULL; out_ext->semaphoreType = in_ext->semaphoreType; out_ext->initialValue = in_ext->initialValue; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkExternalSemaphoreProperties_win32_to_host(const VkExternalSemaphoreProperties32 *in, VkExternalSemaphoreProperties *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkExternalSemaphoreProperties_host_to_win32(const VkExternalSemaphoreProperties *in, VkExternalSemaphoreProperties32 *out) { if (!in) return; out->exportFromImportedHandleTypes = in->exportFromImportedHandleTypes; out->compatibleHandleTypes = in->compatibleHandleTypes; out->externalSemaphoreFeatures = in->externalSemaphoreFeatures; } static inline void convert_VkPhysicalDeviceFeatures2_win32_to_host(struct conversion_context *ctx, const VkPhysicalDeviceFeatures232 *in, VkPhysicalDeviceFeatures2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->features = in->features; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: { VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV32 *in_ext = (const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV; out_ext->pNext = NULL; out_ext->deviceGeneratedCommands = in_ext->deviceGeneratedCommands; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: { VkPhysicalDevicePrivateDataFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrivateDataFeatures32 *in_ext = (const VkPhysicalDevicePrivateDataFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES; out_ext->pNext = NULL; out_ext->privateData = in_ext->privateData; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: { VkPhysicalDeviceVariablePointersFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVariablePointersFeatures32 *in_ext = (const VkPhysicalDeviceVariablePointersFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES; out_ext->pNext = NULL; out_ext->variablePointersStorageBuffer = in_ext->variablePointersStorageBuffer; out_ext->variablePointers = in_ext->variablePointers; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: { VkPhysicalDeviceMultiviewFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultiviewFeatures32 *in_ext = (const VkPhysicalDeviceMultiviewFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES; out_ext->pNext = NULL; out_ext->multiview = in_ext->multiview; out_ext->multiviewGeometryShader = in_ext->multiviewGeometryShader; out_ext->multiviewTessellationShader = in_ext->multiviewTessellationShader; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: { VkPhysicalDevicePresentIdFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentIdFeaturesKHR32 *in_ext = (const VkPhysicalDevicePresentIdFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR; out_ext->pNext = NULL; out_ext->presentId = in_ext->presentId; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: { VkPhysicalDevicePresentWaitFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentWaitFeaturesKHR32 *in_ext = (const VkPhysicalDevicePresentWaitFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR; out_ext->pNext = NULL; out_ext->presentWait = in_ext->presentWait; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: { VkPhysicalDevice16BitStorageFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice16BitStorageFeatures32 *in_ext = (const VkPhysicalDevice16BitStorageFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer16BitAccess = in_ext->storageBuffer16BitAccess; out_ext->uniformAndStorageBuffer16BitAccess = in_ext->uniformAndStorageBuffer16BitAccess; out_ext->storagePushConstant16 = in_ext->storagePushConstant16; out_ext->storageInputOutput16 = in_ext->storageInputOutput16; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: { VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures32 *in_ext = (const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES; out_ext->pNext = NULL; out_ext->shaderSubgroupExtendedTypes = in_ext->shaderSubgroupExtendedTypes; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: { VkPhysicalDeviceSamplerYcbcrConversionFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSamplerYcbcrConversionFeatures32 *in_ext = (const VkPhysicalDeviceSamplerYcbcrConversionFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES; out_ext->pNext = NULL; out_ext->samplerYcbcrConversion = in_ext->samplerYcbcrConversion; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: { VkPhysicalDeviceProtectedMemoryFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceProtectedMemoryFeatures32 *in_ext = (const VkPhysicalDeviceProtectedMemoryFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES; out_ext->pNext = NULL; out_ext->protectedMemory = in_ext->protectedMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: { VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT32 *in_ext = (const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT; out_ext->pNext = NULL; out_ext->advancedBlendCoherentOperations = in_ext->advancedBlendCoherentOperations; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: { VkPhysicalDeviceMultiDrawFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultiDrawFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMultiDrawFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT; out_ext->pNext = NULL; out_ext->multiDraw = in_ext->multiDraw; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: { VkPhysicalDeviceInlineUniformBlockFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInlineUniformBlockFeatures32 *in_ext = (const VkPhysicalDeviceInlineUniformBlockFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES; out_ext->pNext = NULL; out_ext->inlineUniformBlock = in_ext->inlineUniformBlock; out_ext->descriptorBindingInlineUniformBlockUpdateAfterBind = in_ext->descriptorBindingInlineUniformBlockUpdateAfterBind; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: { VkPhysicalDeviceMaintenance4Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMaintenance4Features32 *in_ext = (const VkPhysicalDeviceMaintenance4Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES; out_ext->pNext = NULL; out_ext->maintenance4 = in_ext->maintenance4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: { VkPhysicalDeviceShaderDrawParametersFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderDrawParametersFeatures32 *in_ext = (const VkPhysicalDeviceShaderDrawParametersFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES; out_ext->pNext = NULL; out_ext->shaderDrawParameters = in_ext->shaderDrawParameters; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: { VkPhysicalDeviceShaderFloat16Int8Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderFloat16Int8Features32 *in_ext = (const VkPhysicalDeviceShaderFloat16Int8Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES; out_ext->pNext = NULL; out_ext->shaderFloat16 = in_ext->shaderFloat16; out_ext->shaderInt8 = in_ext->shaderInt8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: { VkPhysicalDeviceHostQueryResetFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceHostQueryResetFeatures32 *in_ext = (const VkPhysicalDeviceHostQueryResetFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; out_ext->pNext = NULL; out_ext->hostQueryReset = in_ext->hostQueryReset; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR: { VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR32 *in_ext = (const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->globalPriorityQuery = in_ext->globalPriorityQuery; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: { VkPhysicalDeviceDescriptorIndexingFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorIndexingFeatures32 *in_ext = (const VkPhysicalDeviceDescriptorIndexingFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES; out_ext->pNext = NULL; out_ext->shaderInputAttachmentArrayDynamicIndexing = in_ext->shaderInputAttachmentArrayDynamicIndexing; out_ext->shaderUniformTexelBufferArrayDynamicIndexing = in_ext->shaderUniformTexelBufferArrayDynamicIndexing; out_ext->shaderStorageTexelBufferArrayDynamicIndexing = in_ext->shaderStorageTexelBufferArrayDynamicIndexing; out_ext->shaderUniformBufferArrayNonUniformIndexing = in_ext->shaderUniformBufferArrayNonUniformIndexing; out_ext->shaderSampledImageArrayNonUniformIndexing = in_ext->shaderSampledImageArrayNonUniformIndexing; out_ext->shaderStorageBufferArrayNonUniformIndexing = in_ext->shaderStorageBufferArrayNonUniformIndexing; out_ext->shaderStorageImageArrayNonUniformIndexing = in_ext->shaderStorageImageArrayNonUniformIndexing; out_ext->shaderInputAttachmentArrayNonUniformIndexing = in_ext->shaderInputAttachmentArrayNonUniformIndexing; out_ext->shaderUniformTexelBufferArrayNonUniformIndexing = in_ext->shaderUniformTexelBufferArrayNonUniformIndexing; out_ext->shaderStorageTexelBufferArrayNonUniformIndexing = in_ext->shaderStorageTexelBufferArrayNonUniformIndexing; out_ext->descriptorBindingUniformBufferUpdateAfterBind = in_ext->descriptorBindingUniformBufferUpdateAfterBind; out_ext->descriptorBindingSampledImageUpdateAfterBind = in_ext->descriptorBindingSampledImageUpdateAfterBind; out_ext->descriptorBindingStorageImageUpdateAfterBind = in_ext->descriptorBindingStorageImageUpdateAfterBind; out_ext->descriptorBindingStorageBufferUpdateAfterBind = in_ext->descriptorBindingStorageBufferUpdateAfterBind; out_ext->descriptorBindingUniformTexelBufferUpdateAfterBind = in_ext->descriptorBindingUniformTexelBufferUpdateAfterBind; out_ext->descriptorBindingStorageTexelBufferUpdateAfterBind = in_ext->descriptorBindingStorageTexelBufferUpdateAfterBind; out_ext->descriptorBindingUpdateUnusedWhilePending = in_ext->descriptorBindingUpdateUnusedWhilePending; out_ext->descriptorBindingPartiallyBound = in_ext->descriptorBindingPartiallyBound; out_ext->descriptorBindingVariableDescriptorCount = in_ext->descriptorBindingVariableDescriptorCount; out_ext->runtimeDescriptorArray = in_ext->runtimeDescriptorArray; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: { VkPhysicalDeviceTimelineSemaphoreFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTimelineSemaphoreFeatures32 *in_ext = (const VkPhysicalDeviceTimelineSemaphoreFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES; out_ext->pNext = NULL; out_ext->timelineSemaphore = in_ext->timelineSemaphore; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: { VkPhysicalDevice8BitStorageFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice8BitStorageFeatures32 *in_ext = (const VkPhysicalDevice8BitStorageFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer8BitAccess = in_ext->storageBuffer8BitAccess; out_ext->uniformAndStorageBuffer8BitAccess = in_ext->uniformAndStorageBuffer8BitAccess; out_ext->storagePushConstant8 = in_ext->storagePushConstant8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: { VkPhysicalDeviceConditionalRenderingFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceConditionalRenderingFeaturesEXT32 *in_ext = (const VkPhysicalDeviceConditionalRenderingFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT; out_ext->pNext = NULL; out_ext->conditionalRendering = in_ext->conditionalRendering; out_ext->inheritedConditionalRendering = in_ext->inheritedConditionalRendering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: { VkPhysicalDeviceVulkanMemoryModelFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkanMemoryModelFeatures32 *in_ext = (const VkPhysicalDeviceVulkanMemoryModelFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES; out_ext->pNext = NULL; out_ext->vulkanMemoryModel = in_ext->vulkanMemoryModel; out_ext->vulkanMemoryModelDeviceScope = in_ext->vulkanMemoryModelDeviceScope; out_ext->vulkanMemoryModelAvailabilityVisibilityChains = in_ext->vulkanMemoryModelAvailabilityVisibilityChains; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: { VkPhysicalDeviceShaderAtomicInt64Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicInt64Features32 *in_ext = (const VkPhysicalDeviceShaderAtomicInt64Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES; out_ext->pNext = NULL; out_ext->shaderBufferInt64Atomics = in_ext->shaderBufferInt64Atomics; out_ext->shaderSharedInt64Atomics = in_ext->shaderSharedInt64Atomics; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderBufferFloat32Atomics = in_ext->shaderBufferFloat32Atomics; out_ext->shaderBufferFloat32AtomicAdd = in_ext->shaderBufferFloat32AtomicAdd; out_ext->shaderBufferFloat64Atomics = in_ext->shaderBufferFloat64Atomics; out_ext->shaderBufferFloat64AtomicAdd = in_ext->shaderBufferFloat64AtomicAdd; out_ext->shaderSharedFloat32Atomics = in_ext->shaderSharedFloat32Atomics; out_ext->shaderSharedFloat32AtomicAdd = in_ext->shaderSharedFloat32AtomicAdd; out_ext->shaderSharedFloat64Atomics = in_ext->shaderSharedFloat64Atomics; out_ext->shaderSharedFloat64AtomicAdd = in_ext->shaderSharedFloat64AtomicAdd; out_ext->shaderImageFloat32Atomics = in_ext->shaderImageFloat32Atomics; out_ext->shaderImageFloat32AtomicAdd = in_ext->shaderImageFloat32AtomicAdd; out_ext->sparseImageFloat32Atomics = in_ext->sparseImageFloat32Atomics; out_ext->sparseImageFloat32AtomicAdd = in_ext->sparseImageFloat32AtomicAdd; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderBufferFloat16Atomics = in_ext->shaderBufferFloat16Atomics; out_ext->shaderBufferFloat16AtomicAdd = in_ext->shaderBufferFloat16AtomicAdd; out_ext->shaderBufferFloat16AtomicMinMax = in_ext->shaderBufferFloat16AtomicMinMax; out_ext->shaderBufferFloat32AtomicMinMax = in_ext->shaderBufferFloat32AtomicMinMax; out_ext->shaderBufferFloat64AtomicMinMax = in_ext->shaderBufferFloat64AtomicMinMax; out_ext->shaderSharedFloat16Atomics = in_ext->shaderSharedFloat16Atomics; out_ext->shaderSharedFloat16AtomicAdd = in_ext->shaderSharedFloat16AtomicAdd; out_ext->shaderSharedFloat16AtomicMinMax = in_ext->shaderSharedFloat16AtomicMinMax; out_ext->shaderSharedFloat32AtomicMinMax = in_ext->shaderSharedFloat32AtomicMinMax; out_ext->shaderSharedFloat64AtomicMinMax = in_ext->shaderSharedFloat64AtomicMinMax; out_ext->shaderImageFloat32AtomicMinMax = in_ext->shaderImageFloat32AtomicMinMax; out_ext->sparseImageFloat32AtomicMinMax = in_ext->sparseImageFloat32AtomicMinMax; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: { VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT32 *in_ext = (const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT; out_ext->pNext = NULL; out_ext->vertexAttributeInstanceRateDivisor = in_ext->vertexAttributeInstanceRateDivisor; out_ext->vertexAttributeInstanceRateZeroDivisor = in_ext->vertexAttributeInstanceRateZeroDivisor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: { VkPhysicalDeviceASTCDecodeFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceASTCDecodeFeaturesEXT32 *in_ext = (const VkPhysicalDeviceASTCDecodeFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->decodeModeSharedExponent = in_ext->decodeModeSharedExponent; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: { VkPhysicalDeviceTransformFeedbackFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTransformFeedbackFeaturesEXT32 *in_ext = (const VkPhysicalDeviceTransformFeedbackFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->transformFeedback = in_ext->transformFeedback; out_ext->geometryStreams = in_ext->geometryStreams; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: { VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV32 *in_ext = (const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV; out_ext->pNext = NULL; out_ext->representativeFragmentTest = in_ext->representativeFragmentTest; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: { VkPhysicalDeviceExclusiveScissorFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExclusiveScissorFeaturesNV32 *in_ext = (const VkPhysicalDeviceExclusiveScissorFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV; out_ext->pNext = NULL; out_ext->exclusiveScissor = in_ext->exclusiveScissor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: { VkPhysicalDeviceCornerSampledImageFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCornerSampledImageFeaturesNV32 *in_ext = (const VkPhysicalDeviceCornerSampledImageFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV; out_ext->pNext = NULL; out_ext->cornerSampledImage = in_ext->cornerSampledImage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: { VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV32 *in_ext = (const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV; out_ext->pNext = NULL; out_ext->computeDerivativeGroupQuads = in_ext->computeDerivativeGroupQuads; out_ext->computeDerivativeGroupLinear = in_ext->computeDerivativeGroupLinear; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: { VkPhysicalDeviceShaderImageFootprintFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderImageFootprintFeaturesNV32 *in_ext = (const VkPhysicalDeviceShaderImageFootprintFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV; out_ext->pNext = NULL; out_ext->imageFootprint = in_ext->imageFootprint; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: { VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV32 *in_ext = (const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV; out_ext->pNext = NULL; out_ext->dedicatedAllocationImageAliasing = in_ext->dedicatedAllocationImageAliasing; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV: { VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV32 *in_ext = (const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV; out_ext->pNext = NULL; out_ext->indirectCopy = in_ext->indirectCopy; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV: { VkPhysicalDeviceMemoryDecompressionFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMemoryDecompressionFeaturesNV32 *in_ext = (const VkPhysicalDeviceMemoryDecompressionFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV; out_ext->pNext = NULL; out_ext->memoryDecompression = in_ext->memoryDecompression; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: { VkPhysicalDeviceShadingRateImageFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShadingRateImageFeaturesNV32 *in_ext = (const VkPhysicalDeviceShadingRateImageFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV; out_ext->pNext = NULL; out_ext->shadingRateImage = in_ext->shadingRateImage; out_ext->shadingRateCoarseSampleOrder = in_ext->shadingRateCoarseSampleOrder; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI: { VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI32 *in_ext = (const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI; out_ext->pNext = NULL; out_ext->invocationMask = in_ext->invocationMask; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: { VkPhysicalDeviceMeshShaderFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMeshShaderFeaturesNV32 *in_ext = (const VkPhysicalDeviceMeshShaderFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV; out_ext->pNext = NULL; out_ext->taskShader = in_ext->taskShader; out_ext->meshShader = in_ext->meshShader; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: { VkPhysicalDeviceMeshShaderFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMeshShaderFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMeshShaderFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->taskShader = in_ext->taskShader; out_ext->meshShader = in_ext->meshShader; out_ext->multiviewMeshShader = in_ext->multiviewMeshShader; out_ext->primitiveFragmentShadingRateMeshShader = in_ext->primitiveFragmentShadingRateMeshShader; out_ext->meshShaderQueries = in_ext->meshShaderQueries; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: { VkPhysicalDeviceAccelerationStructureFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAccelerationStructureFeaturesKHR32 *in_ext = (const VkPhysicalDeviceAccelerationStructureFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->accelerationStructure = in_ext->accelerationStructure; out_ext->accelerationStructureCaptureReplay = in_ext->accelerationStructureCaptureReplay; out_ext->accelerationStructureIndirectBuild = in_ext->accelerationStructureIndirectBuild; out_ext->accelerationStructureHostCommands = in_ext->accelerationStructureHostCommands; out_ext->descriptorBindingAccelerationStructureUpdateAfterBind = in_ext->descriptorBindingAccelerationStructureUpdateAfterBind; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: { VkPhysicalDeviceRayTracingPipelineFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingPipelineFeaturesKHR32 *in_ext = (const VkPhysicalDeviceRayTracingPipelineFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayTracingPipeline = in_ext->rayTracingPipeline; out_ext->rayTracingPipelineShaderGroupHandleCaptureReplay = in_ext->rayTracingPipelineShaderGroupHandleCaptureReplay; out_ext->rayTracingPipelineShaderGroupHandleCaptureReplayMixed = in_ext->rayTracingPipelineShaderGroupHandleCaptureReplayMixed; out_ext->rayTracingPipelineTraceRaysIndirect = in_ext->rayTracingPipelineTraceRaysIndirect; out_ext->rayTraversalPrimitiveCulling = in_ext->rayTraversalPrimitiveCulling; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: { VkPhysicalDeviceRayQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayQueryFeaturesKHR32 *in_ext = (const VkPhysicalDeviceRayQueryFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayQuery = in_ext->rayQuery; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: { VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR32 *in_ext = (const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR; out_ext->pNext = NULL; out_ext->rayTracingMaintenance1 = in_ext->rayTracingMaintenance1; out_ext->rayTracingPipelineTraceRaysIndirect2 = in_ext->rayTracingPipelineTraceRaysIndirect2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: { VkPhysicalDeviceFragmentDensityMapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMapFeaturesEXT32 *in_ext = (const VkPhysicalDeviceFragmentDensityMapFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentDensityMap = in_ext->fragmentDensityMap; out_ext->fragmentDensityMapDynamic = in_ext->fragmentDensityMapDynamic; out_ext->fragmentDensityMapNonSubsampledImages = in_ext->fragmentDensityMapNonSubsampledImages; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT: { VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT32 *in_ext = (const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentDensityMapDeferred = in_ext->fragmentDensityMapDeferred; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM: { VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM32 *in_ext = (const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->fragmentDensityMapOffset = in_ext->fragmentDensityMapOffset; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: { VkPhysicalDeviceScalarBlockLayoutFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceScalarBlockLayoutFeatures32 *in_ext = (const VkPhysicalDeviceScalarBlockLayoutFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES; out_ext->pNext = NULL; out_ext->scalarBlockLayout = in_ext->scalarBlockLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: { VkPhysicalDeviceUniformBufferStandardLayoutFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceUniformBufferStandardLayoutFeatures32 *in_ext = (const VkPhysicalDeviceUniformBufferStandardLayoutFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES; out_ext->pNext = NULL; out_ext->uniformBufferStandardLayout = in_ext->uniformBufferStandardLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: { VkPhysicalDeviceDepthClipEnableFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClipEnableFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDepthClipEnableFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClipEnable = in_ext->depthClipEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: { VkPhysicalDeviceMemoryPriorityFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMemoryPriorityFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMemoryPriorityFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->memoryPriority = in_ext->memoryPriority; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT: { VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT32 *in_ext = (const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pageableDeviceLocalMemory = in_ext->pageableDeviceLocalMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: { VkPhysicalDeviceBufferDeviceAddressFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBufferDeviceAddressFeatures32 *in_ext = (const VkPhysicalDeviceBufferDeviceAddressFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES; out_ext->pNext = NULL; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: { VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT32 *in_ext = (const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: { VkPhysicalDeviceImagelessFramebufferFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImagelessFramebufferFeatures32 *in_ext = (const VkPhysicalDeviceImagelessFramebufferFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES; out_ext->pNext = NULL; out_ext->imagelessFramebuffer = in_ext->imagelessFramebuffer; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: { VkPhysicalDeviceTextureCompressionASTCHDRFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTextureCompressionASTCHDRFeatures32 *in_ext = (const VkPhysicalDeviceTextureCompressionASTCHDRFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES; out_ext->pNext = NULL; out_ext->textureCompressionASTC_HDR = in_ext->textureCompressionASTC_HDR; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: { VkPhysicalDeviceCooperativeMatrixFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCooperativeMatrixFeaturesNV32 *in_ext = (const VkPhysicalDeviceCooperativeMatrixFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV; out_ext->pNext = NULL; out_ext->cooperativeMatrix = in_ext->cooperativeMatrix; out_ext->cooperativeMatrixRobustBufferAccess = in_ext->cooperativeMatrixRobustBufferAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: { VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT32 *in_ext = (const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->ycbcrImageArrays = in_ext->ycbcrImageArrays; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV: { VkPhysicalDevicePresentBarrierFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePresentBarrierFeaturesNV32 *in_ext = (const VkPhysicalDevicePresentBarrierFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV; out_ext->pNext = NULL; out_ext->presentBarrier = in_ext->presentBarrier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: { VkPhysicalDevicePerformanceQueryFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePerformanceQueryFeaturesKHR32 *in_ext = (const VkPhysicalDevicePerformanceQueryFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR; out_ext->pNext = NULL; out_ext->performanceCounterQueryPools = in_ext->performanceCounterQueryPools; out_ext->performanceCounterMultipleQueryPools = in_ext->performanceCounterMultipleQueryPools; 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)); const VkPhysicalDeviceCoverageReductionModeFeaturesNV32 *in_ext = (const VkPhysicalDeviceCoverageReductionModeFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV; out_ext->pNext = NULL; out_ext->coverageReductionMode = in_ext->coverageReductionMode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: { VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL32 *in_ext = (const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL; out_ext->pNext = NULL; out_ext->shaderIntegerFunctions2 = in_ext->shaderIntegerFunctions2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: { VkPhysicalDeviceShaderClockFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderClockFeaturesKHR32 *in_ext = (const VkPhysicalDeviceShaderClockFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR; out_ext->pNext = NULL; out_ext->shaderSubgroupClock = in_ext->shaderSubgroupClock; out_ext->shaderDeviceClock = in_ext->shaderDeviceClock; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: { VkPhysicalDeviceIndexTypeUint8FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceIndexTypeUint8FeaturesEXT32 *in_ext = (const VkPhysicalDeviceIndexTypeUint8FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT; out_ext->pNext = NULL; out_ext->indexTypeUint8 = in_ext->indexTypeUint8; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: { VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV32 *in_ext = (const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV; out_ext->pNext = NULL; out_ext->shaderSMBuiltins = in_ext->shaderSMBuiltins; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: { VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT32 *in_ext = (const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->fragmentShaderSampleInterlock = in_ext->fragmentShaderSampleInterlock; out_ext->fragmentShaderPixelInterlock = in_ext->fragmentShaderPixelInterlock; out_ext->fragmentShaderShadingRateInterlock = in_ext->fragmentShaderShadingRateInterlock; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: { VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures32 *in_ext = (const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES; out_ext->pNext = NULL; out_ext->separateDepthStencilLayouts = in_ext->separateDepthStencilLayouts; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: { VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT32 *in_ext = (const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT; out_ext->pNext = NULL; out_ext->primitiveTopologyListRestart = in_ext->primitiveTopologyListRestart; out_ext->primitiveTopologyPatchListRestart = in_ext->primitiveTopologyPatchListRestart; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: { VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR32 *in_ext = (const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR; out_ext->pNext = NULL; out_ext->pipelineExecutableInfo = in_ext->pipelineExecutableInfo; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: { VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures32 *in_ext = (const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES; out_ext->pNext = NULL; out_ext->shaderDemoteToHelperInvocation = in_ext->shaderDemoteToHelperInvocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: { VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT32 *in_ext = (const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->texelBufferAlignment = in_ext->texelBufferAlignment; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: { VkPhysicalDeviceSubgroupSizeControlFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubgroupSizeControlFeatures32 *in_ext = (const VkPhysicalDeviceSubgroupSizeControlFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES; out_ext->pNext = NULL; out_ext->subgroupSizeControl = in_ext->subgroupSizeControl; out_ext->computeFullSubgroups = in_ext->computeFullSubgroups; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: { VkPhysicalDeviceLineRasterizationFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLineRasterizationFeaturesEXT32 *in_ext = (const VkPhysicalDeviceLineRasterizationFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT; out_ext->pNext = NULL; out_ext->rectangularLines = in_ext->rectangularLines; out_ext->bresenhamLines = in_ext->bresenhamLines; out_ext->smoothLines = in_ext->smoothLines; out_ext->stippledRectangularLines = in_ext->stippledRectangularLines; out_ext->stippledBresenhamLines = in_ext->stippledBresenhamLines; out_ext->stippledSmoothLines = in_ext->stippledSmoothLines; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: { VkPhysicalDevicePipelineCreationCacheControlFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineCreationCacheControlFeatures32 *in_ext = (const VkPhysicalDevicePipelineCreationCacheControlFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES; out_ext->pNext = NULL; out_ext->pipelineCreationCacheControl = in_ext->pipelineCreationCacheControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: { VkPhysicalDeviceVulkan11Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan11Features32 *in_ext = (const VkPhysicalDeviceVulkan11Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES; out_ext->pNext = NULL; out_ext->storageBuffer16BitAccess = in_ext->storageBuffer16BitAccess; out_ext->uniformAndStorageBuffer16BitAccess = in_ext->uniformAndStorageBuffer16BitAccess; out_ext->storagePushConstant16 = in_ext->storagePushConstant16; out_ext->storageInputOutput16 = in_ext->storageInputOutput16; out_ext->multiview = in_ext->multiview; out_ext->multiviewGeometryShader = in_ext->multiviewGeometryShader; out_ext->multiviewTessellationShader = in_ext->multiviewTessellationShader; out_ext->variablePointersStorageBuffer = in_ext->variablePointersStorageBuffer; out_ext->variablePointers = in_ext->variablePointers; out_ext->protectedMemory = in_ext->protectedMemory; out_ext->samplerYcbcrConversion = in_ext->samplerYcbcrConversion; out_ext->shaderDrawParameters = in_ext->shaderDrawParameters; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: { VkPhysicalDeviceVulkan12Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan12Features32 *in_ext = (const VkPhysicalDeviceVulkan12Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES; out_ext->pNext = NULL; out_ext->samplerMirrorClampToEdge = in_ext->samplerMirrorClampToEdge; out_ext->drawIndirectCount = in_ext->drawIndirectCount; out_ext->storageBuffer8BitAccess = in_ext->storageBuffer8BitAccess; out_ext->uniformAndStorageBuffer8BitAccess = in_ext->uniformAndStorageBuffer8BitAccess; out_ext->storagePushConstant8 = in_ext->storagePushConstant8; out_ext->shaderBufferInt64Atomics = in_ext->shaderBufferInt64Atomics; out_ext->shaderSharedInt64Atomics = in_ext->shaderSharedInt64Atomics; out_ext->shaderFloat16 = in_ext->shaderFloat16; out_ext->shaderInt8 = in_ext->shaderInt8; out_ext->descriptorIndexing = in_ext->descriptorIndexing; out_ext->shaderInputAttachmentArrayDynamicIndexing = in_ext->shaderInputAttachmentArrayDynamicIndexing; out_ext->shaderUniformTexelBufferArrayDynamicIndexing = in_ext->shaderUniformTexelBufferArrayDynamicIndexing; out_ext->shaderStorageTexelBufferArrayDynamicIndexing = in_ext->shaderStorageTexelBufferArrayDynamicIndexing; out_ext->shaderUniformBufferArrayNonUniformIndexing = in_ext->shaderUniformBufferArrayNonUniformIndexing; out_ext->shaderSampledImageArrayNonUniformIndexing = in_ext->shaderSampledImageArrayNonUniformIndexing; out_ext->shaderStorageBufferArrayNonUniformIndexing = in_ext->shaderStorageBufferArrayNonUniformIndexing; out_ext->shaderStorageImageArrayNonUniformIndexing = in_ext->shaderStorageImageArrayNonUniformIndexing; out_ext->shaderInputAttachmentArrayNonUniformIndexing = in_ext->shaderInputAttachmentArrayNonUniformIndexing; out_ext->shaderUniformTexelBufferArrayNonUniformIndexing = in_ext->shaderUniformTexelBufferArrayNonUniformIndexing; out_ext->shaderStorageTexelBufferArrayNonUniformIndexing = in_ext->shaderStorageTexelBufferArrayNonUniformIndexing; out_ext->descriptorBindingUniformBufferUpdateAfterBind = in_ext->descriptorBindingUniformBufferUpdateAfterBind; out_ext->descriptorBindingSampledImageUpdateAfterBind = in_ext->descriptorBindingSampledImageUpdateAfterBind; out_ext->descriptorBindingStorageImageUpdateAfterBind = in_ext->descriptorBindingStorageImageUpdateAfterBind; out_ext->descriptorBindingStorageBufferUpdateAfterBind = in_ext->descriptorBindingStorageBufferUpdateAfterBind; out_ext->descriptorBindingUniformTexelBufferUpdateAfterBind = in_ext->descriptorBindingUniformTexelBufferUpdateAfterBind; out_ext->descriptorBindingStorageTexelBufferUpdateAfterBind = in_ext->descriptorBindingStorageTexelBufferUpdateAfterBind; out_ext->descriptorBindingUpdateUnusedWhilePending = in_ext->descriptorBindingUpdateUnusedWhilePending; out_ext->descriptorBindingPartiallyBound = in_ext->descriptorBindingPartiallyBound; out_ext->descriptorBindingVariableDescriptorCount = in_ext->descriptorBindingVariableDescriptorCount; out_ext->runtimeDescriptorArray = in_ext->runtimeDescriptorArray; out_ext->samplerFilterMinmax = in_ext->samplerFilterMinmax; out_ext->scalarBlockLayout = in_ext->scalarBlockLayout; out_ext->imagelessFramebuffer = in_ext->imagelessFramebuffer; out_ext->uniformBufferStandardLayout = in_ext->uniformBufferStandardLayout; out_ext->shaderSubgroupExtendedTypes = in_ext->shaderSubgroupExtendedTypes; out_ext->separateDepthStencilLayouts = in_ext->separateDepthStencilLayouts; out_ext->hostQueryReset = in_ext->hostQueryReset; out_ext->timelineSemaphore = in_ext->timelineSemaphore; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_ext->vulkanMemoryModel = in_ext->vulkanMemoryModel; out_ext->vulkanMemoryModelDeviceScope = in_ext->vulkanMemoryModelDeviceScope; out_ext->vulkanMemoryModelAvailabilityVisibilityChains = in_ext->vulkanMemoryModelAvailabilityVisibilityChains; out_ext->shaderOutputViewportIndex = in_ext->shaderOutputViewportIndex; out_ext->shaderOutputLayer = in_ext->shaderOutputLayer; out_ext->subgroupBroadcastDynamicId = in_ext->subgroupBroadcastDynamicId; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: { VkPhysicalDeviceVulkan13Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVulkan13Features32 *in_ext = (const VkPhysicalDeviceVulkan13Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; out_ext->pNext = NULL; out_ext->robustImageAccess = in_ext->robustImageAccess; out_ext->inlineUniformBlock = in_ext->inlineUniformBlock; out_ext->descriptorBindingInlineUniformBlockUpdateAfterBind = in_ext->descriptorBindingInlineUniformBlockUpdateAfterBind; out_ext->pipelineCreationCacheControl = in_ext->pipelineCreationCacheControl; out_ext->privateData = in_ext->privateData; out_ext->shaderDemoteToHelperInvocation = in_ext->shaderDemoteToHelperInvocation; out_ext->shaderTerminateInvocation = in_ext->shaderTerminateInvocation; out_ext->subgroupSizeControl = in_ext->subgroupSizeControl; out_ext->computeFullSubgroups = in_ext->computeFullSubgroups; out_ext->synchronization2 = in_ext->synchronization2; out_ext->textureCompressionASTC_HDR = in_ext->textureCompressionASTC_HDR; out_ext->shaderZeroInitializeWorkgroupMemory = in_ext->shaderZeroInitializeWorkgroupMemory; out_ext->dynamicRendering = in_ext->dynamicRendering; out_ext->shaderIntegerDotProduct = in_ext->shaderIntegerDotProduct; out_ext->maintenance4 = in_ext->maintenance4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: { VkPhysicalDeviceCoherentMemoryFeaturesAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCoherentMemoryFeaturesAMD32 *in_ext = (const VkPhysicalDeviceCoherentMemoryFeaturesAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD; out_ext->pNext = NULL; out_ext->deviceCoherentMemory = in_ext->deviceCoherentMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: { VkPhysicalDeviceCustomBorderColorFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceCustomBorderColorFeaturesEXT32 *in_ext = (const VkPhysicalDeviceCustomBorderColorFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT; out_ext->pNext = NULL; out_ext->customBorderColors = in_ext->customBorderColors; out_ext->customBorderColorWithoutFormat = in_ext->customBorderColorWithoutFormat; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: { VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT32 *in_ext = (const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->borderColorSwizzle = in_ext->borderColorSwizzle; out_ext->borderColorSwizzleFromImage = in_ext->borderColorSwizzleFromImage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT32 *in_ext = (const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState = in_ext->extendedDynamicState; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT32 *in_ext = (const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState2 = in_ext->extendedDynamicState2; out_ext->extendedDynamicState2LogicOp = in_ext->extendedDynamicState2LogicOp; out_ext->extendedDynamicState2PatchControlPoints = in_ext->extendedDynamicState2PatchControlPoints; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT32 *in_ext = (const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT; out_ext->pNext = NULL; out_ext->extendedDynamicState3TessellationDomainOrigin = in_ext->extendedDynamicState3TessellationDomainOrigin; out_ext->extendedDynamicState3DepthClampEnable = in_ext->extendedDynamicState3DepthClampEnable; out_ext->extendedDynamicState3PolygonMode = in_ext->extendedDynamicState3PolygonMode; out_ext->extendedDynamicState3RasterizationSamples = in_ext->extendedDynamicState3RasterizationSamples; out_ext->extendedDynamicState3SampleMask = in_ext->extendedDynamicState3SampleMask; out_ext->extendedDynamicState3AlphaToCoverageEnable = in_ext->extendedDynamicState3AlphaToCoverageEnable; out_ext->extendedDynamicState3AlphaToOneEnable = in_ext->extendedDynamicState3AlphaToOneEnable; out_ext->extendedDynamicState3LogicOpEnable = in_ext->extendedDynamicState3LogicOpEnable; out_ext->extendedDynamicState3ColorBlendEnable = in_ext->extendedDynamicState3ColorBlendEnable; out_ext->extendedDynamicState3ColorBlendEquation = in_ext->extendedDynamicState3ColorBlendEquation; out_ext->extendedDynamicState3ColorWriteMask = in_ext->extendedDynamicState3ColorWriteMask; out_ext->extendedDynamicState3RasterizationStream = in_ext->extendedDynamicState3RasterizationStream; out_ext->extendedDynamicState3ConservativeRasterizationMode = in_ext->extendedDynamicState3ConservativeRasterizationMode; out_ext->extendedDynamicState3ExtraPrimitiveOverestimationSize = in_ext->extendedDynamicState3ExtraPrimitiveOverestimationSize; out_ext->extendedDynamicState3DepthClipEnable = in_ext->extendedDynamicState3DepthClipEnable; out_ext->extendedDynamicState3SampleLocationsEnable = in_ext->extendedDynamicState3SampleLocationsEnable; out_ext->extendedDynamicState3ColorBlendAdvanced = in_ext->extendedDynamicState3ColorBlendAdvanced; out_ext->extendedDynamicState3ProvokingVertexMode = in_ext->extendedDynamicState3ProvokingVertexMode; out_ext->extendedDynamicState3LineRasterizationMode = in_ext->extendedDynamicState3LineRasterizationMode; out_ext->extendedDynamicState3LineStippleEnable = in_ext->extendedDynamicState3LineStippleEnable; out_ext->extendedDynamicState3DepthClipNegativeOneToOne = in_ext->extendedDynamicState3DepthClipNegativeOneToOne; out_ext->extendedDynamicState3ViewportWScalingEnable = in_ext->extendedDynamicState3ViewportWScalingEnable; out_ext->extendedDynamicState3ViewportSwizzle = in_ext->extendedDynamicState3ViewportSwizzle; out_ext->extendedDynamicState3CoverageToColorEnable = in_ext->extendedDynamicState3CoverageToColorEnable; out_ext->extendedDynamicState3CoverageToColorLocation = in_ext->extendedDynamicState3CoverageToColorLocation; out_ext->extendedDynamicState3CoverageModulationMode = in_ext->extendedDynamicState3CoverageModulationMode; out_ext->extendedDynamicState3CoverageModulationTableEnable = in_ext->extendedDynamicState3CoverageModulationTableEnable; out_ext->extendedDynamicState3CoverageModulationTable = in_ext->extendedDynamicState3CoverageModulationTable; out_ext->extendedDynamicState3CoverageReductionMode = in_ext->extendedDynamicState3CoverageReductionMode; out_ext->extendedDynamicState3RepresentativeFragmentTestEnable = in_ext->extendedDynamicState3RepresentativeFragmentTestEnable; out_ext->extendedDynamicState3ShadingRateImageEnable = in_ext->extendedDynamicState3ShadingRateImageEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV: { VkPhysicalDeviceDiagnosticsConfigFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDiagnosticsConfigFeaturesNV32 *in_ext = (const VkPhysicalDeviceDiagnosticsConfigFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV; out_ext->pNext = NULL; out_ext->diagnosticsConfig = in_ext->diagnosticsConfig; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: { VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures32 *in_ext = (const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES; out_ext->pNext = NULL; out_ext->shaderZeroInitializeWorkgroupMemory = in_ext->shaderZeroInitializeWorkgroupMemory; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: { VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR32 *in_ext = (const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR; out_ext->pNext = NULL; out_ext->shaderSubgroupUniformControlFlow = in_ext->shaderSubgroupUniformControlFlow; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: { VkPhysicalDeviceRobustness2FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRobustness2FeaturesEXT32 *in_ext = (const VkPhysicalDeviceRobustness2FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT; out_ext->pNext = NULL; out_ext->robustBufferAccess2 = in_ext->robustBufferAccess2; out_ext->robustImageAccess2 = in_ext->robustImageAccess2; out_ext->nullDescriptor = in_ext->nullDescriptor; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: { VkPhysicalDeviceImageRobustnessFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageRobustnessFeatures32 *in_ext = (const VkPhysicalDeviceImageRobustnessFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES; out_ext->pNext = NULL; out_ext->robustImageAccess = in_ext->robustImageAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: { VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR32 *in_ext = (const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR; out_ext->pNext = NULL; out_ext->workgroupMemoryExplicitLayout = in_ext->workgroupMemoryExplicitLayout; out_ext->workgroupMemoryExplicitLayoutScalarBlockLayout = in_ext->workgroupMemoryExplicitLayoutScalarBlockLayout; out_ext->workgroupMemoryExplicitLayout8BitAccess = in_ext->workgroupMemoryExplicitLayout8BitAccess; out_ext->workgroupMemoryExplicitLayout16BitAccess = in_ext->workgroupMemoryExplicitLayout16BitAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: { VkPhysicalDevice4444FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevice4444FormatsFeaturesEXT32 *in_ext = (const VkPhysicalDevice4444FormatsFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->formatA4R4G4B4 = in_ext->formatA4R4G4B4; out_ext->formatA4B4G4R4 = in_ext->formatA4B4G4R4; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI: { VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI32 *in_ext = (const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI; out_ext->pNext = NULL; out_ext->subpassShading = in_ext->subpassShading; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: { VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderImageInt64Atomics = in_ext->shaderImageInt64Atomics; out_ext->sparseImageInt64Atomics = in_ext->sparseImageInt64Atomics; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: { VkPhysicalDeviceFragmentShadingRateFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShadingRateFeaturesKHR32 *in_ext = (const VkPhysicalDeviceFragmentShadingRateFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR; out_ext->pNext = NULL; out_ext->pipelineFragmentShadingRate = in_ext->pipelineFragmentShadingRate; out_ext->primitiveFragmentShadingRate = in_ext->primitiveFragmentShadingRate; out_ext->attachmentFragmentShadingRate = in_ext->attachmentFragmentShadingRate; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: { VkPhysicalDeviceShaderTerminateInvocationFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderTerminateInvocationFeatures32 *in_ext = (const VkPhysicalDeviceShaderTerminateInvocationFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES; out_ext->pNext = NULL; out_ext->shaderTerminateInvocation = in_ext->shaderTerminateInvocation; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV: { VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV32 *in_ext = (const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV; out_ext->pNext = NULL; out_ext->fragmentShadingRateEnums = in_ext->fragmentShadingRateEnums; out_ext->supersampleFragmentShadingRates = in_ext->supersampleFragmentShadingRates; out_ext->noInvocationFragmentShadingRates = in_ext->noInvocationFragmentShadingRates; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT: { VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT32 *in_ext = (const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT; out_ext->pNext = NULL; out_ext->image2DViewOf3D = in_ext->image2DViewOf3D; out_ext->sampler2DViewOf3D = in_ext->sampler2DViewOf3D; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT: { VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->mutableDescriptorType = in_ext->mutableDescriptorType; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: { VkPhysicalDeviceDepthClipControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClipControlFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDepthClipControlFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClipControl = in_ext->depthClipControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT32 *in_ext = (const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->vertexInputDynamicState = in_ext->vertexInputDynamicState; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: { VkPhysicalDeviceColorWriteEnableFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceColorWriteEnableFeaturesEXT32 *in_ext = (const VkPhysicalDeviceColorWriteEnableFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->colorWriteEnable = in_ext->colorWriteEnable; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: { VkPhysicalDeviceSynchronization2Features *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSynchronization2Features32 *in_ext = (const VkPhysicalDeviceSynchronization2Features32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES; out_ext->pNext = NULL; out_ext->synchronization2 = in_ext->synchronization2; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: { VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT32 *in_ext = (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->primitivesGeneratedQuery = in_ext->primitivesGeneratedQuery; out_ext->primitivesGeneratedQueryWithRasterizerDiscard = in_ext->primitivesGeneratedQueryWithRasterizerDiscard; out_ext->primitivesGeneratedQueryWithNonZeroStreams = in_ext->primitivesGeneratedQueryWithNonZeroStreams; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT: { VkPhysicalDeviceLegacyDitheringFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLegacyDitheringFeaturesEXT32 *in_ext = (const VkPhysicalDeviceLegacyDitheringFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT; out_ext->pNext = NULL; out_ext->legacyDithering = in_ext->legacyDithering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT: { VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT32 *in_ext = (const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT; out_ext->pNext = NULL; out_ext->multisampledRenderToSingleSampled = in_ext->multisampledRenderToSingleSampled; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT: { VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT32 *in_ext = (const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelineProtectedAccess = in_ext->pipelineProtectedAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV: { VkPhysicalDeviceInheritedViewportScissorFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceInheritedViewportScissorFeaturesNV32 *in_ext = (const VkPhysicalDeviceInheritedViewportScissorFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV; out_ext->pNext = NULL; out_ext->inheritedViewportScissor2D = in_ext->inheritedViewportScissor2D; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: { VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT32 *in_ext = (const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->ycbcr2plane444Formats = in_ext->ycbcr2plane444Formats; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: { VkPhysicalDeviceProvokingVertexFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceProvokingVertexFeaturesEXT32 *in_ext = (const VkPhysicalDeviceProvokingVertexFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT; out_ext->pNext = NULL; out_ext->provokingVertexLast = in_ext->provokingVertexLast; out_ext->transformFeedbackPreservesProvokingVertex = in_ext->transformFeedbackPreservesProvokingVertex; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: { VkPhysicalDeviceDescriptorBufferFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorBufferFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDescriptorBufferFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->descriptorBuffer = in_ext->descriptorBuffer; out_ext->descriptorBufferCaptureReplay = in_ext->descriptorBufferCaptureReplay; out_ext->descriptorBufferImageLayoutIgnored = in_ext->descriptorBufferImageLayoutIgnored; out_ext->descriptorBufferPushDescriptors = in_ext->descriptorBufferPushDescriptors; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: { VkPhysicalDeviceShaderIntegerDotProductFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderIntegerDotProductFeatures32 *in_ext = (const VkPhysicalDeviceShaderIntegerDotProductFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES; out_ext->pNext = NULL; out_ext->shaderIntegerDotProduct = in_ext->shaderIntegerDotProduct; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR: { VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR32 *in_ext = (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR; out_ext->pNext = NULL; out_ext->fragmentShaderBarycentric = in_ext->fragmentShaderBarycentric; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV: { VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV32 *in_ext = (const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV; out_ext->pNext = NULL; out_ext->rayTracingMotionBlur = in_ext->rayTracingMotionBlur; out_ext->rayTracingMotionBlurPipelineTraceRaysIndirect = in_ext->rayTracingMotionBlurPipelineTraceRaysIndirect; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: { VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT32 *in_ext = (const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->formatRgba10x6WithoutYCbCrSampler = in_ext->formatRgba10x6WithoutYCbCrSampler; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: { VkPhysicalDeviceDynamicRenderingFeatures *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDynamicRenderingFeatures32 *in_ext = (const VkPhysicalDeviceDynamicRenderingFeatures32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES; out_ext->pNext = NULL; out_ext->dynamicRendering = in_ext->dynamicRendering; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: { VkPhysicalDeviceImageViewMinLodFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageViewMinLodFeaturesEXT32 *in_ext = (const VkPhysicalDeviceImageViewMinLodFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT; out_ext->pNext = NULL; out_ext->minLod = in_ext->minLod; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT: { VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT32 *in_ext = (const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->rasterizationOrderColorAttachmentAccess = in_ext->rasterizationOrderColorAttachmentAccess; out_ext->rasterizationOrderDepthAttachmentAccess = in_ext->rasterizationOrderDepthAttachmentAccess; out_ext->rasterizationOrderStencilAttachmentAccess = in_ext->rasterizationOrderStencilAttachmentAccess; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV: { VkPhysicalDeviceLinearColorAttachmentFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceLinearColorAttachmentFeaturesNV32 *in_ext = (const VkPhysicalDeviceLinearColorAttachmentFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV; out_ext->pNext = NULL; out_ext->linearColorAttachment = in_ext->linearColorAttachment; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: { VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT32 *in_ext = (const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT; out_ext->pNext = NULL; out_ext->graphicsPipelineLibrary = in_ext->graphicsPipelineLibrary; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE: { VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE32 *in_ext = (const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE; out_ext->pNext = NULL; out_ext->descriptorSetHostMapping = in_ext->descriptorSetHostMapping; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: { VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT; out_ext->pNext = NULL; out_ext->shaderModuleIdentifier = in_ext->shaderModuleIdentifier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: { VkPhysicalDeviceImageCompressionControlFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageCompressionControlFeaturesEXT32 *in_ext = (const VkPhysicalDeviceImageCompressionControlFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT; out_ext->pNext = NULL; out_ext->imageCompressionControl = in_ext->imageCompressionControl; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: { VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT32 *in_ext = (const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT; out_ext->pNext = NULL; out_ext->imageCompressionControlSwapchain = in_ext->imageCompressionControlSwapchain; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: { VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT32 *in_ext = (const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT; out_ext->pNext = NULL; out_ext->subpassMergeFeedback = in_ext->subpassMergeFeedback; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT: { VkPhysicalDeviceOpacityMicromapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceOpacityMicromapFeaturesEXT32 *in_ext = (const VkPhysicalDeviceOpacityMicromapFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->micromap = in_ext->micromap; out_ext->micromapCaptureReplay = in_ext->micromapCaptureReplay; out_ext->micromapHostCommands = in_ext->micromapHostCommands; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: { VkPhysicalDevicePipelinePropertiesFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelinePropertiesFeaturesEXT32 *in_ext = (const VkPhysicalDevicePipelinePropertiesFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelinePropertiesIdentifier = in_ext->pipelinePropertiesIdentifier; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD: { VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD32 *in_ext = (const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD; out_ext->pNext = NULL; out_ext->shaderEarlyAndLateFragmentTests = in_ext->shaderEarlyAndLateFragmentTests; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: { VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT32 *in_ext = (const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT; out_ext->pNext = NULL; out_ext->nonSeamlessCubeMap = in_ext->nonSeamlessCubeMap; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT: { VkPhysicalDevicePipelineRobustnessFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDevicePipelineRobustnessFeaturesEXT32 *in_ext = (const VkPhysicalDevicePipelineRobustnessFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT; out_ext->pNext = NULL; out_ext->pipelineRobustness = in_ext->pipelineRobustness; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM: { VkPhysicalDeviceImageProcessingFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageProcessingFeaturesQCOM32 *in_ext = (const VkPhysicalDeviceImageProcessingFeaturesQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->textureSampleWeighted = in_ext->textureSampleWeighted; out_ext->textureBoxFilter = in_ext->textureBoxFilter; out_ext->textureBlockMatch = in_ext->textureBlockMatch; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM: { VkPhysicalDeviceTilePropertiesFeaturesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceTilePropertiesFeaturesQCOM32 *in_ext = (const VkPhysicalDeviceTilePropertiesFeaturesQCOM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM; out_ext->pNext = NULL; out_ext->tileProperties = in_ext->tileProperties; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT: { VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT32 *in_ext = (const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->attachmentFeedbackLoopLayout = in_ext->attachmentFeedbackLoopLayout; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT: { VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT32 *in_ext = (const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT; out_ext->pNext = NULL; out_ext->depthClampZeroOne = in_ext->depthClampZeroOne; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT: { VkPhysicalDeviceAddressBindingReportFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceAddressBindingReportFeaturesEXT32 *in_ext = (const VkPhysicalDeviceAddressBindingReportFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->reportAddressBinding = in_ext->reportAddressBinding; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV: { VkPhysicalDeviceOpticalFlowFeaturesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceOpticalFlowFeaturesNV32 *in_ext = (const VkPhysicalDeviceOpticalFlowFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV; out_ext->pNext = NULL; out_ext->opticalFlow = in_ext->opticalFlow; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT: { VkPhysicalDeviceFaultFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFaultFeaturesEXT32 *in_ext = (const VkPhysicalDeviceFaultFeaturesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT; out_ext->pNext = NULL; out_ext->deviceFault = in_ext->deviceFault; out_ext->deviceFaultVendorBinary = in_ext->deviceFaultVendorBinary; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM: { VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32 *in_ext = (const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM; out_ext->pNext = NULL; out_ext->shaderCoreBuiltins = in_ext->shaderCoreBuiltins; 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)); const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 *in_ext = (const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV; out_ext->pNext = NULL; out_ext->rayTracingInvocationReorder = in_ext->rayTracingInvocationReorder; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkPhysicalDeviceFeatures2_host_to_win32(const VkPhysicalDeviceFeatures2 *in, VkPhysicalDeviceFeatures232 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; out->features = in->features; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: { VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV); const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *in_ext = (const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV; out_ext->deviceGeneratedCommands = in_ext->deviceGeneratedCommands; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: { VkPhysicalDevicePrivateDataFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES); const VkPhysicalDevicePrivateDataFeatures *in_ext = (const VkPhysicalDevicePrivateDataFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES; out_ext->privateData = in_ext->privateData; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: { VkPhysicalDeviceVariablePointersFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES); const VkPhysicalDeviceVariablePointersFeatures *in_ext = (const VkPhysicalDeviceVariablePointersFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES; out_ext->variablePointersStorageBuffer = in_ext->variablePointersStorageBuffer; out_ext->variablePointers = in_ext->variablePointers; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: { VkPhysicalDeviceMultiviewFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES); const VkPhysicalDeviceMultiviewFeatures *in_ext = (const VkPhysicalDeviceMultiviewFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES; out_ext->multiview = in_ext->multiview; out_ext->multiviewGeometryShader = in_ext->multiviewGeometryShader; out_ext->multiviewTessellationShader = in_ext->multiviewTessellationShader; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: { VkPhysicalDevicePresentIdFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR); const VkPhysicalDevicePresentIdFeaturesKHR *in_ext = (const VkPhysicalDevicePresentIdFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR; out_ext->presentId = in_ext->presentId; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: { VkPhysicalDevicePresentWaitFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR); const VkPhysicalDevicePresentWaitFeaturesKHR *in_ext = (const VkPhysicalDevicePresentWaitFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR; out_ext->presentWait = in_ext->presentWait; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: { VkPhysicalDevice16BitStorageFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES); const VkPhysicalDevice16BitStorageFeatures *in_ext = (const VkPhysicalDevice16BitStorageFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES; out_ext->storageBuffer16BitAccess = in_ext->storageBuffer16BitAccess; out_ext->uniformAndStorageBuffer16BitAccess = in_ext->uniformAndStorageBuffer16BitAccess; out_ext->storagePushConstant16 = in_ext->storagePushConstant16; out_ext->storageInputOutput16 = in_ext->storageInputOutput16; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: { VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES); const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *in_ext = (const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES; out_ext->shaderSubgroupExtendedTypes = in_ext->shaderSubgroupExtendedTypes; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: { VkPhysicalDeviceSamplerYcbcrConversionFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES); const VkPhysicalDeviceSamplerYcbcrConversionFeatures *in_ext = (const VkPhysicalDeviceSamplerYcbcrConversionFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES; out_ext->samplerYcbcrConversion = in_ext->samplerYcbcrConversion; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: { VkPhysicalDeviceProtectedMemoryFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES); const VkPhysicalDeviceProtectedMemoryFeatures *in_ext = (const VkPhysicalDeviceProtectedMemoryFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES; out_ext->protectedMemory = in_ext->protectedMemory; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: { VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT); const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *in_ext = (const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT; out_ext->advancedBlendCoherentOperations = in_ext->advancedBlendCoherentOperations; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: { VkPhysicalDeviceMultiDrawFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT); const VkPhysicalDeviceMultiDrawFeaturesEXT *in_ext = (const VkPhysicalDeviceMultiDrawFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT; out_ext->multiDraw = in_ext->multiDraw; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: { VkPhysicalDeviceInlineUniformBlockFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES); const VkPhysicalDeviceInlineUniformBlockFeatures *in_ext = (const VkPhysicalDeviceInlineUniformBlockFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES; out_ext->inlineUniformBlock = in_ext->inlineUniformBlock; out_ext->descriptorBindingInlineUniformBlockUpdateAfterBind = in_ext->descriptorBindingInlineUniformBlockUpdateAfterBind; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: { VkPhysicalDeviceMaintenance4Features32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES); const VkPhysicalDeviceMaintenance4Features *in_ext = (const VkPhysicalDeviceMaintenance4Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES; out_ext->maintenance4 = in_ext->maintenance4; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: { VkPhysicalDeviceShaderDrawParametersFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES); const VkPhysicalDeviceShaderDrawParametersFeatures *in_ext = (const VkPhysicalDeviceShaderDrawParametersFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES; out_ext->shaderDrawParameters = in_ext->shaderDrawParameters; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: { VkPhysicalDeviceShaderFloat16Int8Features32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES); const VkPhysicalDeviceShaderFloat16Int8Features *in_ext = (const VkPhysicalDeviceShaderFloat16Int8Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES; out_ext->shaderFloat16 = in_ext->shaderFloat16; out_ext->shaderInt8 = in_ext->shaderInt8; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: { VkPhysicalDeviceHostQueryResetFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES); const VkPhysicalDeviceHostQueryResetFeatures *in_ext = (const VkPhysicalDeviceHostQueryResetFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; out_ext->hostQueryReset = in_ext->hostQueryReset; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR: { VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR); const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *in_ext = (const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR; out_ext->globalPriorityQuery = in_ext->globalPriorityQuery; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: { VkPhysicalDeviceDescriptorIndexingFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES); const VkPhysicalDeviceDescriptorIndexingFeatures *in_ext = (const VkPhysicalDeviceDescriptorIndexingFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES; out_ext->shaderInputAttachmentArrayDynamicIndexing = in_ext->shaderInputAttachmentArrayDynamicIndexing; out_ext->shaderUniformTexelBufferArrayDynamicIndexing = in_ext->shaderUniformTexelBufferArrayDynamicIndexing; out_ext->shaderStorageTexelBufferArrayDynamicIndexing = in_ext->shaderStorageTexelBufferArrayDynamicIndexing; out_ext->shaderUniformBufferArrayNonUniformIndexing = in_ext->shaderUniformBufferArrayNonUniformIndexing; out_ext->shaderSampledImageArrayNonUniformIndexing = in_ext->shaderSampledImageArrayNonUniformIndexing; out_ext->shaderStorageBufferArrayNonUniformIndexing = in_ext->shaderStorageBufferArrayNonUniformIndexing; out_ext->shaderStorageImageArrayNonUniformIndexing = in_ext->shaderStorageImageArrayNonUniformIndexing; out_ext->shaderInputAttachmentArrayNonUniformIndexing = in_ext->shaderInputAttachmentArrayNonUniformIndexing; out_ext->shaderUniformTexelBufferArrayNonUniformIndexing = in_ext->shaderUniformTexelBufferArrayNonUniformIndexing; out_ext->shaderStorageTexelBufferArrayNonUniformIndexing = in_ext->shaderStorageTexelBufferArrayNonUniformIndexing; out_ext->descriptorBindingUniformBufferUpdateAfterBind = in_ext->descriptorBindingUniformBufferUpdateAfterBind; out_ext->descriptorBindingSampledImageUpdateAfterBind = in_ext->descriptorBindingSampledImageUpdateAfterBind; out_ext->descriptorBindingStorageImageUpdateAfterBind = in_ext->descriptorBindingStorageImageUpdateAfterBind; out_ext->descriptorBindingStorageBufferUpdateAfterBind = in_ext->descriptorBindingStorageBufferUpdateAfterBind; out_ext->descriptorBindingUniformTexelBufferUpdateAfterBind = in_ext->descriptorBindingUniformTexelBufferUpdateAfterBind; out_ext->descriptorBindingStorageTexelBufferUpdateAfterBind = in_ext->descriptorBindingStorageTexelBufferUpdateAfterBind; out_ext->descriptorBindingUpdateUnusedWhilePending = in_ext->descriptorBindingUpdateUnusedWhilePending; out_ext->descriptorBindingPartiallyBound = in_ext->descriptorBindingPartiallyBound; out_ext->descriptorBindingVariableDescriptorCount = in_ext->descriptorBindingVariableDescriptorCount; out_ext->runtimeDescriptorArray = in_ext->runtimeDescriptorArray; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: { VkPhysicalDeviceTimelineSemaphoreFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES); const VkPhysicalDeviceTimelineSemaphoreFeatures *in_ext = (const VkPhysicalDeviceTimelineSemaphoreFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES; out_ext->timelineSemaphore = in_ext->timelineSemaphore; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: { VkPhysicalDevice8BitStorageFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES); const VkPhysicalDevice8BitStorageFeatures *in_ext = (const VkPhysicalDevice8BitStorageFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES; out_ext->storageBuffer8BitAccess = in_ext->storageBuffer8BitAccess; out_ext->uniformAndStorageBuffer8BitAccess = in_ext->uniformAndStorageBuffer8BitAccess; out_ext->storagePushConstant8 = in_ext->storagePushConstant8; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: { VkPhysicalDeviceConditionalRenderingFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT); const VkPhysicalDeviceConditionalRenderingFeaturesEXT *in_ext = (const VkPhysicalDeviceConditionalRenderingFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT; out_ext->conditionalRendering = in_ext->conditionalRendering; out_ext->inheritedConditionalRendering = in_ext->inheritedConditionalRendering; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: { VkPhysicalDeviceVulkanMemoryModelFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES); const VkPhysicalDeviceVulkanMemoryModelFeatures *in_ext = (const VkPhysicalDeviceVulkanMemoryModelFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES; out_ext->vulkanMemoryModel = in_ext->vulkanMemoryModel; out_ext->vulkanMemoryModelDeviceScope = in_ext->vulkanMemoryModelDeviceScope; out_ext->vulkanMemoryModelAvailabilityVisibilityChains = in_ext->vulkanMemoryModelAvailabilityVisibilityChains; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: { VkPhysicalDeviceShaderAtomicInt64Features32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES); const VkPhysicalDeviceShaderAtomicInt64Features *in_ext = (const VkPhysicalDeviceShaderAtomicInt64Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES; out_ext->shaderBufferInt64Atomics = in_ext->shaderBufferInt64Atomics; out_ext->shaderSharedInt64Atomics = in_ext->shaderSharedInt64Atomics; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloatFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT); const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *in_ext = (const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT; out_ext->shaderBufferFloat32Atomics = in_ext->shaderBufferFloat32Atomics; out_ext->shaderBufferFloat32AtomicAdd = in_ext->shaderBufferFloat32AtomicAdd; out_ext->shaderBufferFloat64Atomics = in_ext->shaderBufferFloat64Atomics; out_ext->shaderBufferFloat64AtomicAdd = in_ext->shaderBufferFloat64AtomicAdd; out_ext->shaderSharedFloat32Atomics = in_ext->shaderSharedFloat32Atomics; out_ext->shaderSharedFloat32AtomicAdd = in_ext->shaderSharedFloat32AtomicAdd; out_ext->shaderSharedFloat64Atomics = in_ext->shaderSharedFloat64Atomics; out_ext->shaderSharedFloat64AtomicAdd = in_ext->shaderSharedFloat64AtomicAdd; out_ext->shaderImageFloat32Atomics = in_ext->shaderImageFloat32Atomics; out_ext->shaderImageFloat32AtomicAdd = in_ext->shaderImageFloat32AtomicAdd; out_ext->sparseImageFloat32Atomics = in_ext->sparseImageFloat32Atomics; out_ext->sparseImageFloat32AtomicAdd = in_ext->sparseImageFloat32AtomicAdd; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT); const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *in_ext = (const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT; out_ext->shaderBufferFloat16Atomics = in_ext->shaderBufferFloat16Atomics; out_ext->shaderBufferFloat16AtomicAdd = in_ext->shaderBufferFloat16AtomicAdd; out_ext->shaderBufferFloat16AtomicMinMax = in_ext->shaderBufferFloat16AtomicMinMax; out_ext->shaderBufferFloat32AtomicMinMax = in_ext->shaderBufferFloat32AtomicMinMax; out_ext->shaderBufferFloat64AtomicMinMax = in_ext->shaderBufferFloat64AtomicMinMax; out_ext->shaderSharedFloat16Atomics = in_ext->shaderSharedFloat16Atomics; out_ext->shaderSharedFloat16AtomicAdd = in_ext->shaderSharedFloat16AtomicAdd; out_ext->shaderSharedFloat16AtomicMinMax = in_ext->shaderSharedFloat16AtomicMinMax; out_ext->shaderSharedFloat32AtomicMinMax = in_ext->shaderSharedFloat32AtomicMinMax; out_ext->shaderSharedFloat64AtomicMinMax = in_ext->shaderSharedFloat64AtomicMinMax; out_ext->shaderImageFloat32AtomicMinMax = in_ext->shaderImageFloat32AtomicMinMax; out_ext->sparseImageFloat32AtomicMinMax = in_ext->sparseImageFloat32AtomicMinMax; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: { VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT); const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *in_ext = (const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT; out_ext->vertexAttributeInstanceRateDivisor = in_ext->vertexAttributeInstanceRateDivisor; out_ext->vertexAttributeInstanceRateZeroDivisor = in_ext->vertexAttributeInstanceRateZeroDivisor; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: { VkPhysicalDeviceASTCDecodeFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT); const VkPhysicalDeviceASTCDecodeFeaturesEXT *in_ext = (const VkPhysicalDeviceASTCDecodeFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT; out_ext->decodeModeSharedExponent = in_ext->decodeModeSharedExponent; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: { VkPhysicalDeviceTransformFeedbackFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT); const VkPhysicalDeviceTransformFeedbackFeaturesEXT *in_ext = (const VkPhysicalDeviceTransformFeedbackFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT; out_ext->transformFeedback = in_ext->transformFeedback; out_ext->geometryStreams = in_ext->geometryStreams; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: { VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV); const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *in_ext = (const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV; out_ext->representativeFragmentTest = in_ext->representativeFragmentTest; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: { VkPhysicalDeviceExclusiveScissorFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV); const VkPhysicalDeviceExclusiveScissorFeaturesNV *in_ext = (const VkPhysicalDeviceExclusiveScissorFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV; out_ext->exclusiveScissor = in_ext->exclusiveScissor; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: { VkPhysicalDeviceCornerSampledImageFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV); const VkPhysicalDeviceCornerSampledImageFeaturesNV *in_ext = (const VkPhysicalDeviceCornerSampledImageFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV; out_ext->cornerSampledImage = in_ext->cornerSampledImage; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: { VkPhysicalDeviceComputeShaderDerivativesFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV); const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *in_ext = (const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV; out_ext->computeDerivativeGroupQuads = in_ext->computeDerivativeGroupQuads; out_ext->computeDerivativeGroupLinear = in_ext->computeDerivativeGroupLinear; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: { VkPhysicalDeviceShaderImageFootprintFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV); const VkPhysicalDeviceShaderImageFootprintFeaturesNV *in_ext = (const VkPhysicalDeviceShaderImageFootprintFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV; out_ext->imageFootprint = in_ext->imageFootprint; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: { VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV); const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *in_ext = (const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV; out_ext->dedicatedAllocationImageAliasing = in_ext->dedicatedAllocationImageAliasing; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV: { VkPhysicalDeviceCopyMemoryIndirectFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV); const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *in_ext = (const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV; out_ext->indirectCopy = in_ext->indirectCopy; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV: { VkPhysicalDeviceMemoryDecompressionFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV); const VkPhysicalDeviceMemoryDecompressionFeaturesNV *in_ext = (const VkPhysicalDeviceMemoryDecompressionFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV; out_ext->memoryDecompression = in_ext->memoryDecompression; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: { VkPhysicalDeviceShadingRateImageFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV); const VkPhysicalDeviceShadingRateImageFeaturesNV *in_ext = (const VkPhysicalDeviceShadingRateImageFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV; out_ext->shadingRateImage = in_ext->shadingRateImage; out_ext->shadingRateCoarseSampleOrder = in_ext->shadingRateCoarseSampleOrder; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI: { VkPhysicalDeviceInvocationMaskFeaturesHUAWEI32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI); const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *in_ext = (const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI; out_ext->invocationMask = in_ext->invocationMask; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: { VkPhysicalDeviceMeshShaderFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV); const VkPhysicalDeviceMeshShaderFeaturesNV *in_ext = (const VkPhysicalDeviceMeshShaderFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV; out_ext->taskShader = in_ext->taskShader; out_ext->meshShader = in_ext->meshShader; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: { VkPhysicalDeviceMeshShaderFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT); const VkPhysicalDeviceMeshShaderFeaturesEXT *in_ext = (const VkPhysicalDeviceMeshShaderFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT; out_ext->taskShader = in_ext->taskShader; out_ext->meshShader = in_ext->meshShader; out_ext->multiviewMeshShader = in_ext->multiviewMeshShader; out_ext->primitiveFragmentShadingRateMeshShader = in_ext->primitiveFragmentShadingRateMeshShader; out_ext->meshShaderQueries = in_ext->meshShaderQueries; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: { VkPhysicalDeviceAccelerationStructureFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR); const VkPhysicalDeviceAccelerationStructureFeaturesKHR *in_ext = (const VkPhysicalDeviceAccelerationStructureFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR; out_ext->accelerationStructure = in_ext->accelerationStructure; out_ext->accelerationStructureCaptureReplay = in_ext->accelerationStructureCaptureReplay; out_ext->accelerationStructureIndirectBuild = in_ext->accelerationStructureIndirectBuild; out_ext->accelerationStructureHostCommands = in_ext->accelerationStructureHostCommands; out_ext->descriptorBindingAccelerationStructureUpdateAfterBind = in_ext->descriptorBindingAccelerationStructureUpdateAfterBind; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: { VkPhysicalDeviceRayTracingPipelineFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR); const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *in_ext = (const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR; out_ext->rayTracingPipeline = in_ext->rayTracingPipeline; out_ext->rayTracingPipelineShaderGroupHandleCaptureReplay = in_ext->rayTracingPipelineShaderGroupHandleCaptureReplay; out_ext->rayTracingPipelineShaderGroupHandleCaptureReplayMixed = in_ext->rayTracingPipelineShaderGroupHandleCaptureReplayMixed; out_ext->rayTracingPipelineTraceRaysIndirect = in_ext->rayTracingPipelineTraceRaysIndirect; out_ext->rayTraversalPrimitiveCulling = in_ext->rayTraversalPrimitiveCulling; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: { VkPhysicalDeviceRayQueryFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR); const VkPhysicalDeviceRayQueryFeaturesKHR *in_ext = (const VkPhysicalDeviceRayQueryFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR; out_ext->rayQuery = in_ext->rayQuery; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: { VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR); const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *in_ext = (const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR; out_ext->rayTracingMaintenance1 = in_ext->rayTracingMaintenance1; out_ext->rayTracingPipelineTraceRaysIndirect2 = in_ext->rayTracingPipelineTraceRaysIndirect2; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: { VkPhysicalDeviceFragmentDensityMapFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT); const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *in_ext = (const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT; out_ext->fragmentDensityMap = in_ext->fragmentDensityMap; out_ext->fragmentDensityMapDynamic = in_ext->fragmentDensityMapDynamic; out_ext->fragmentDensityMapNonSubsampledImages = in_ext->fragmentDensityMapNonSubsampledImages; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT: { VkPhysicalDeviceFragmentDensityMap2FeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT); const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *in_ext = (const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT; out_ext->fragmentDensityMapDeferred = in_ext->fragmentDensityMapDeferred; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM: { VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM); const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *in_ext = (const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM; out_ext->fragmentDensityMapOffset = in_ext->fragmentDensityMapOffset; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: { VkPhysicalDeviceScalarBlockLayoutFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES); const VkPhysicalDeviceScalarBlockLayoutFeatures *in_ext = (const VkPhysicalDeviceScalarBlockLayoutFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES; out_ext->scalarBlockLayout = in_ext->scalarBlockLayout; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: { VkPhysicalDeviceUniformBufferStandardLayoutFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES); const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *in_ext = (const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES; out_ext->uniformBufferStandardLayout = in_ext->uniformBufferStandardLayout; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: { VkPhysicalDeviceDepthClipEnableFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT); const VkPhysicalDeviceDepthClipEnableFeaturesEXT *in_ext = (const VkPhysicalDeviceDepthClipEnableFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT; out_ext->depthClipEnable = in_ext->depthClipEnable; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: { VkPhysicalDeviceMemoryPriorityFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT); const VkPhysicalDeviceMemoryPriorityFeaturesEXT *in_ext = (const VkPhysicalDeviceMemoryPriorityFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT; out_ext->memoryPriority = in_ext->memoryPriority; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT: { VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT); const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *in_ext = (const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT; out_ext->pageableDeviceLocalMemory = in_ext->pageableDeviceLocalMemory; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: { VkPhysicalDeviceBufferDeviceAddressFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES); const VkPhysicalDeviceBufferDeviceAddressFeatures *in_ext = (const VkPhysicalDeviceBufferDeviceAddressFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: { VkPhysicalDeviceBufferDeviceAddressFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT); const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *in_ext = (const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: { VkPhysicalDeviceImagelessFramebufferFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES); const VkPhysicalDeviceImagelessFramebufferFeatures *in_ext = (const VkPhysicalDeviceImagelessFramebufferFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES; out_ext->imagelessFramebuffer = in_ext->imagelessFramebuffer; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: { VkPhysicalDeviceTextureCompressionASTCHDRFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES); const VkPhysicalDeviceTextureCompressionASTCHDRFeatures *in_ext = (const VkPhysicalDeviceTextureCompressionASTCHDRFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES; out_ext->textureCompressionASTC_HDR = in_ext->textureCompressionASTC_HDR; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: { VkPhysicalDeviceCooperativeMatrixFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV); const VkPhysicalDeviceCooperativeMatrixFeaturesNV *in_ext = (const VkPhysicalDeviceCooperativeMatrixFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV; out_ext->cooperativeMatrix = in_ext->cooperativeMatrix; out_ext->cooperativeMatrixRobustBufferAccess = in_ext->cooperativeMatrixRobustBufferAccess; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: { VkPhysicalDeviceYcbcrImageArraysFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT); const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *in_ext = (const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT; out_ext->ycbcrImageArrays = in_ext->ycbcrImageArrays; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV: { VkPhysicalDevicePresentBarrierFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV); const VkPhysicalDevicePresentBarrierFeaturesNV *in_ext = (const VkPhysicalDevicePresentBarrierFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV; out_ext->presentBarrier = in_ext->presentBarrier; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: { VkPhysicalDevicePerformanceQueryFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR); const VkPhysicalDevicePerformanceQueryFeaturesKHR *in_ext = (const VkPhysicalDevicePerformanceQueryFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR; out_ext->performanceCounterQueryPools = in_ext->performanceCounterQueryPools; out_ext->performanceCounterMultipleQueryPools = in_ext->performanceCounterMultipleQueryPools; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: { VkPhysicalDeviceCoverageReductionModeFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV); const VkPhysicalDeviceCoverageReductionModeFeaturesNV *in_ext = (const VkPhysicalDeviceCoverageReductionModeFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV; out_ext->coverageReductionMode = in_ext->coverageReductionMode; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: { VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL); const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *in_ext = (const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL; out_ext->shaderIntegerFunctions2 = in_ext->shaderIntegerFunctions2; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: { VkPhysicalDeviceShaderClockFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR); const VkPhysicalDeviceShaderClockFeaturesKHR *in_ext = (const VkPhysicalDeviceShaderClockFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR; out_ext->shaderSubgroupClock = in_ext->shaderSubgroupClock; out_ext->shaderDeviceClock = in_ext->shaderDeviceClock; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: { VkPhysicalDeviceIndexTypeUint8FeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT); const VkPhysicalDeviceIndexTypeUint8FeaturesEXT *in_ext = (const VkPhysicalDeviceIndexTypeUint8FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT; out_ext->indexTypeUint8 = in_ext->indexTypeUint8; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: { VkPhysicalDeviceShaderSMBuiltinsFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV); const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *in_ext = (const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV; out_ext->shaderSMBuiltins = in_ext->shaderSMBuiltins; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: { VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT); const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *in_ext = (const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT; out_ext->fragmentShaderSampleInterlock = in_ext->fragmentShaderSampleInterlock; out_ext->fragmentShaderPixelInterlock = in_ext->fragmentShaderPixelInterlock; out_ext->fragmentShaderShadingRateInterlock = in_ext->fragmentShaderShadingRateInterlock; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: { VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES); const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *in_ext = (const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES; out_ext->separateDepthStencilLayouts = in_ext->separateDepthStencilLayouts; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: { VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT); const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *in_ext = (const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT; out_ext->primitiveTopologyListRestart = in_ext->primitiveTopologyListRestart; out_ext->primitiveTopologyPatchListRestart = in_ext->primitiveTopologyPatchListRestart; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: { VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR); const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *in_ext = (const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR; out_ext->pipelineExecutableInfo = in_ext->pipelineExecutableInfo; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: { VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES); const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *in_ext = (const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES; out_ext->shaderDemoteToHelperInvocation = in_ext->shaderDemoteToHelperInvocation; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: { VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT); const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *in_ext = (const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT; out_ext->texelBufferAlignment = in_ext->texelBufferAlignment; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: { VkPhysicalDeviceSubgroupSizeControlFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES); const VkPhysicalDeviceSubgroupSizeControlFeatures *in_ext = (const VkPhysicalDeviceSubgroupSizeControlFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES; out_ext->subgroupSizeControl = in_ext->subgroupSizeControl; out_ext->computeFullSubgroups = in_ext->computeFullSubgroups; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: { VkPhysicalDeviceLineRasterizationFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT); const VkPhysicalDeviceLineRasterizationFeaturesEXT *in_ext = (const VkPhysicalDeviceLineRasterizationFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT; out_ext->rectangularLines = in_ext->rectangularLines; out_ext->bresenhamLines = in_ext->bresenhamLines; out_ext->smoothLines = in_ext->smoothLines; out_ext->stippledRectangularLines = in_ext->stippledRectangularLines; out_ext->stippledBresenhamLines = in_ext->stippledBresenhamLines; out_ext->stippledSmoothLines = in_ext->stippledSmoothLines; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: { VkPhysicalDevicePipelineCreationCacheControlFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES); const VkPhysicalDevicePipelineCreationCacheControlFeatures *in_ext = (const VkPhysicalDevicePipelineCreationCacheControlFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES; out_ext->pipelineCreationCacheControl = in_ext->pipelineCreationCacheControl; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: { VkPhysicalDeviceVulkan11Features32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES); const VkPhysicalDeviceVulkan11Features *in_ext = (const VkPhysicalDeviceVulkan11Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES; out_ext->storageBuffer16BitAccess = in_ext->storageBuffer16BitAccess; out_ext->uniformAndStorageBuffer16BitAccess = in_ext->uniformAndStorageBuffer16BitAccess; out_ext->storagePushConstant16 = in_ext->storagePushConstant16; out_ext->storageInputOutput16 = in_ext->storageInputOutput16; out_ext->multiview = in_ext->multiview; out_ext->multiviewGeometryShader = in_ext->multiviewGeometryShader; out_ext->multiviewTessellationShader = in_ext->multiviewTessellationShader; out_ext->variablePointersStorageBuffer = in_ext->variablePointersStorageBuffer; out_ext->variablePointers = in_ext->variablePointers; out_ext->protectedMemory = in_ext->protectedMemory; out_ext->samplerYcbcrConversion = in_ext->samplerYcbcrConversion; out_ext->shaderDrawParameters = in_ext->shaderDrawParameters; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: { VkPhysicalDeviceVulkan12Features32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES); const VkPhysicalDeviceVulkan12Features *in_ext = (const VkPhysicalDeviceVulkan12Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES; out_ext->samplerMirrorClampToEdge = in_ext->samplerMirrorClampToEdge; out_ext->drawIndirectCount = in_ext->drawIndirectCount; out_ext->storageBuffer8BitAccess = in_ext->storageBuffer8BitAccess; out_ext->uniformAndStorageBuffer8BitAccess = in_ext->uniformAndStorageBuffer8BitAccess; out_ext->storagePushConstant8 = in_ext->storagePushConstant8; out_ext->shaderBufferInt64Atomics = in_ext->shaderBufferInt64Atomics; out_ext->shaderSharedInt64Atomics = in_ext->shaderSharedInt64Atomics; out_ext->shaderFloat16 = in_ext->shaderFloat16; out_ext->shaderInt8 = in_ext->shaderInt8; out_ext->descriptorIndexing = in_ext->descriptorIndexing; out_ext->shaderInputAttachmentArrayDynamicIndexing = in_ext->shaderInputAttachmentArrayDynamicIndexing; out_ext->shaderUniformTexelBufferArrayDynamicIndexing = in_ext->shaderUniformTexelBufferArrayDynamicIndexing; out_ext->shaderStorageTexelBufferArrayDynamicIndexing = in_ext->shaderStorageTexelBufferArrayDynamicIndexing; out_ext->shaderUniformBufferArrayNonUniformIndexing = in_ext->shaderUniformBufferArrayNonUniformIndexing; out_ext->shaderSampledImageArrayNonUniformIndexing = in_ext->shaderSampledImageArrayNonUniformIndexing; out_ext->shaderStorageBufferArrayNonUniformIndexing = in_ext->shaderStorageBufferArrayNonUniformIndexing; out_ext->shaderStorageImageArrayNonUniformIndexing = in_ext->shaderStorageImageArrayNonUniformIndexing; out_ext->shaderInputAttachmentArrayNonUniformIndexing = in_ext->shaderInputAttachmentArrayNonUniformIndexing; out_ext->shaderUniformTexelBufferArrayNonUniformIndexing = in_ext->shaderUniformTexelBufferArrayNonUniformIndexing; out_ext->shaderStorageTexelBufferArrayNonUniformIndexing = in_ext->shaderStorageTexelBufferArrayNonUniformIndexing; out_ext->descriptorBindingUniformBufferUpdateAfterBind = in_ext->descriptorBindingUniformBufferUpdateAfterBind; out_ext->descriptorBindingSampledImageUpdateAfterBind = in_ext->descriptorBindingSampledImageUpdateAfterBind; out_ext->descriptorBindingStorageImageUpdateAfterBind = in_ext->descriptorBindingStorageImageUpdateAfterBind; out_ext->descriptorBindingStorageBufferUpdateAfterBind = in_ext->descriptorBindingStorageBufferUpdateAfterBind; out_ext->descriptorBindingUniformTexelBufferUpdateAfterBind = in_ext->descriptorBindingUniformTexelBufferUpdateAfterBind; out_ext->descriptorBindingStorageTexelBufferUpdateAfterBind = in_ext->descriptorBindingStorageTexelBufferUpdateAfterBind; out_ext->descriptorBindingUpdateUnusedWhilePending = in_ext->descriptorBindingUpdateUnusedWhilePending; out_ext->descriptorBindingPartiallyBound = in_ext->descriptorBindingPartiallyBound; out_ext->descriptorBindingVariableDescriptorCount = in_ext->descriptorBindingVariableDescriptorCount; out_ext->runtimeDescriptorArray = in_ext->runtimeDescriptorArray; out_ext->samplerFilterMinmax = in_ext->samplerFilterMinmax; out_ext->scalarBlockLayout = in_ext->scalarBlockLayout; out_ext->imagelessFramebuffer = in_ext->imagelessFramebuffer; out_ext->uniformBufferStandardLayout = in_ext->uniformBufferStandardLayout; out_ext->shaderSubgroupExtendedTypes = in_ext->shaderSubgroupExtendedTypes; out_ext->separateDepthStencilLayouts = in_ext->separateDepthStencilLayouts; out_ext->hostQueryReset = in_ext->hostQueryReset; out_ext->timelineSemaphore = in_ext->timelineSemaphore; out_ext->bufferDeviceAddress = in_ext->bufferDeviceAddress; out_ext->bufferDeviceAddressCaptureReplay = in_ext->bufferDeviceAddressCaptureReplay; out_ext->bufferDeviceAddressMultiDevice = in_ext->bufferDeviceAddressMultiDevice; out_ext->vulkanMemoryModel = in_ext->vulkanMemoryModel; out_ext->vulkanMemoryModelDeviceScope = in_ext->vulkanMemoryModelDeviceScope; out_ext->vulkanMemoryModelAvailabilityVisibilityChains = in_ext->vulkanMemoryModelAvailabilityVisibilityChains; out_ext->shaderOutputViewportIndex = in_ext->shaderOutputViewportIndex; out_ext->shaderOutputLayer = in_ext->shaderOutputLayer; out_ext->subgroupBroadcastDynamicId = in_ext->subgroupBroadcastDynamicId; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: { VkPhysicalDeviceVulkan13Features32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES); const VkPhysicalDeviceVulkan13Features *in_ext = (const VkPhysicalDeviceVulkan13Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; out_ext->robustImageAccess = in_ext->robustImageAccess; out_ext->inlineUniformBlock = in_ext->inlineUniformBlock; out_ext->descriptorBindingInlineUniformBlockUpdateAfterBind = in_ext->descriptorBindingInlineUniformBlockUpdateAfterBind; out_ext->pipelineCreationCacheControl = in_ext->pipelineCreationCacheControl; out_ext->privateData = in_ext->privateData; out_ext->shaderDemoteToHelperInvocation = in_ext->shaderDemoteToHelperInvocation; out_ext->shaderTerminateInvocation = in_ext->shaderTerminateInvocation; out_ext->subgroupSizeControl = in_ext->subgroupSizeControl; out_ext->computeFullSubgroups = in_ext->computeFullSubgroups; out_ext->synchronization2 = in_ext->synchronization2; out_ext->textureCompressionASTC_HDR = in_ext->textureCompressionASTC_HDR; out_ext->shaderZeroInitializeWorkgroupMemory = in_ext->shaderZeroInitializeWorkgroupMemory; out_ext->dynamicRendering = in_ext->dynamicRendering; out_ext->shaderIntegerDotProduct = in_ext->shaderIntegerDotProduct; out_ext->maintenance4 = in_ext->maintenance4; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: { VkPhysicalDeviceCoherentMemoryFeaturesAMD32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD); const VkPhysicalDeviceCoherentMemoryFeaturesAMD *in_ext = (const VkPhysicalDeviceCoherentMemoryFeaturesAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD; out_ext->deviceCoherentMemory = in_ext->deviceCoherentMemory; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: { VkPhysicalDeviceCustomBorderColorFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT); const VkPhysicalDeviceCustomBorderColorFeaturesEXT *in_ext = (const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT; out_ext->customBorderColors = in_ext->customBorderColors; out_ext->customBorderColorWithoutFormat = in_ext->customBorderColorWithoutFormat; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: { VkPhysicalDeviceBorderColorSwizzleFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT); const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *in_ext = (const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT; out_ext->borderColorSwizzle = in_ext->borderColorSwizzle; out_ext->borderColorSwizzleFromImage = in_ext->borderColorSwizzleFromImage; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicStateFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT); const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *in_ext = (const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; out_ext->extendedDynamicState = in_ext->extendedDynamicState; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicState2FeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT); const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *in_ext = (const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT; out_ext->extendedDynamicState2 = in_ext->extendedDynamicState2; out_ext->extendedDynamicState2LogicOp = in_ext->extendedDynamicState2LogicOp; out_ext->extendedDynamicState2PatchControlPoints = in_ext->extendedDynamicState2PatchControlPoints; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicState3FeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT); const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *in_ext = (const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT; out_ext->extendedDynamicState3TessellationDomainOrigin = in_ext->extendedDynamicState3TessellationDomainOrigin; out_ext->extendedDynamicState3DepthClampEnable = in_ext->extendedDynamicState3DepthClampEnable; out_ext->extendedDynamicState3PolygonMode = in_ext->extendedDynamicState3PolygonMode; out_ext->extendedDynamicState3RasterizationSamples = in_ext->extendedDynamicState3RasterizationSamples; out_ext->extendedDynamicState3SampleMask = in_ext->extendedDynamicState3SampleMask; out_ext->extendedDynamicState3AlphaToCoverageEnable = in_ext->extendedDynamicState3AlphaToCoverageEnable; out_ext->extendedDynamicState3AlphaToOneEnable = in_ext->extendedDynamicState3AlphaToOneEnable; out_ext->extendedDynamicState3LogicOpEnable = in_ext->extendedDynamicState3LogicOpEnable; out_ext->extendedDynamicState3ColorBlendEnable = in_ext->extendedDynamicState3ColorBlendEnable; out_ext->extendedDynamicState3ColorBlendEquation = in_ext->extendedDynamicState3ColorBlendEquation; out_ext->extendedDynamicState3ColorWriteMask = in_ext->extendedDynamicState3ColorWriteMask; out_ext->extendedDynamicState3RasterizationStream = in_ext->extendedDynamicState3RasterizationStream; out_ext->extendedDynamicState3ConservativeRasterizationMode = in_ext->extendedDynamicState3ConservativeRasterizationMode; out_ext->extendedDynamicState3ExtraPrimitiveOverestimationSize = in_ext->extendedDynamicState3ExtraPrimitiveOverestimationSize; out_ext->extendedDynamicState3DepthClipEnable = in_ext->extendedDynamicState3DepthClipEnable; out_ext->extendedDynamicState3SampleLocationsEnable = in_ext->extendedDynamicState3SampleLocationsEnable; out_ext->extendedDynamicState3ColorBlendAdvanced = in_ext->extendedDynamicState3ColorBlendAdvanced; out_ext->extendedDynamicState3ProvokingVertexMode = in_ext->extendedDynamicState3ProvokingVertexMode; out_ext->extendedDynamicState3LineRasterizationMode = in_ext->extendedDynamicState3LineRasterizationMode; out_ext->extendedDynamicState3LineStippleEnable = in_ext->extendedDynamicState3LineStippleEnable; out_ext->extendedDynamicState3DepthClipNegativeOneToOne = in_ext->extendedDynamicState3DepthClipNegativeOneToOne; out_ext->extendedDynamicState3ViewportWScalingEnable = in_ext->extendedDynamicState3ViewportWScalingEnable; out_ext->extendedDynamicState3ViewportSwizzle = in_ext->extendedDynamicState3ViewportSwizzle; out_ext->extendedDynamicState3CoverageToColorEnable = in_ext->extendedDynamicState3CoverageToColorEnable; out_ext->extendedDynamicState3CoverageToColorLocation = in_ext->extendedDynamicState3CoverageToColorLocation; out_ext->extendedDynamicState3CoverageModulationMode = in_ext->extendedDynamicState3CoverageModulationMode; out_ext->extendedDynamicState3CoverageModulationTableEnable = in_ext->extendedDynamicState3CoverageModulationTableEnable; out_ext->extendedDynamicState3CoverageModulationTable = in_ext->extendedDynamicState3CoverageModulationTable; out_ext->extendedDynamicState3CoverageReductionMode = in_ext->extendedDynamicState3CoverageReductionMode; out_ext->extendedDynamicState3RepresentativeFragmentTestEnable = in_ext->extendedDynamicState3RepresentativeFragmentTestEnable; out_ext->extendedDynamicState3ShadingRateImageEnable = in_ext->extendedDynamicState3ShadingRateImageEnable; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV: { VkPhysicalDeviceDiagnosticsConfigFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV); const VkPhysicalDeviceDiagnosticsConfigFeaturesNV *in_ext = (const VkPhysicalDeviceDiagnosticsConfigFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV; out_ext->diagnosticsConfig = in_ext->diagnosticsConfig; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: { VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES); const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *in_ext = (const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES; out_ext->shaderZeroInitializeWorkgroupMemory = in_ext->shaderZeroInitializeWorkgroupMemory; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: { VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR); const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *in_ext = (const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR; out_ext->shaderSubgroupUniformControlFlow = in_ext->shaderSubgroupUniformControlFlow; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: { VkPhysicalDeviceRobustness2FeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT); const VkPhysicalDeviceRobustness2FeaturesEXT *in_ext = (const VkPhysicalDeviceRobustness2FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT; out_ext->robustBufferAccess2 = in_ext->robustBufferAccess2; out_ext->robustImageAccess2 = in_ext->robustImageAccess2; out_ext->nullDescriptor = in_ext->nullDescriptor; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: { VkPhysicalDeviceImageRobustnessFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES); const VkPhysicalDeviceImageRobustnessFeatures *in_ext = (const VkPhysicalDeviceImageRobustnessFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES; out_ext->robustImageAccess = in_ext->robustImageAccess; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: { VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR); const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *in_ext = (const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR; out_ext->workgroupMemoryExplicitLayout = in_ext->workgroupMemoryExplicitLayout; out_ext->workgroupMemoryExplicitLayoutScalarBlockLayout = in_ext->workgroupMemoryExplicitLayoutScalarBlockLayout; out_ext->workgroupMemoryExplicitLayout8BitAccess = in_ext->workgroupMemoryExplicitLayout8BitAccess; out_ext->workgroupMemoryExplicitLayout16BitAccess = in_ext->workgroupMemoryExplicitLayout16BitAccess; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: { VkPhysicalDevice4444FormatsFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT); const VkPhysicalDevice4444FormatsFeaturesEXT *in_ext = (const VkPhysicalDevice4444FormatsFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT; out_ext->formatA4R4G4B4 = in_ext->formatA4R4G4B4; out_ext->formatA4B4G4R4 = in_ext->formatA4B4G4R4; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI: { VkPhysicalDeviceSubpassShadingFeaturesHUAWEI32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI); const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *in_ext = (const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI; out_ext->subpassShading = in_ext->subpassShading; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: { VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT); const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *in_ext = (const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT; out_ext->shaderImageInt64Atomics = in_ext->shaderImageInt64Atomics; out_ext->sparseImageInt64Atomics = in_ext->sparseImageInt64Atomics; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: { VkPhysicalDeviceFragmentShadingRateFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR); const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *in_ext = (const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR; out_ext->pipelineFragmentShadingRate = in_ext->pipelineFragmentShadingRate; out_ext->primitiveFragmentShadingRate = in_ext->primitiveFragmentShadingRate; out_ext->attachmentFragmentShadingRate = in_ext->attachmentFragmentShadingRate; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: { VkPhysicalDeviceShaderTerminateInvocationFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES); const VkPhysicalDeviceShaderTerminateInvocationFeatures *in_ext = (const VkPhysicalDeviceShaderTerminateInvocationFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES; out_ext->shaderTerminateInvocation = in_ext->shaderTerminateInvocation; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV: { VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV); const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *in_ext = (const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV; out_ext->fragmentShadingRateEnums = in_ext->fragmentShadingRateEnums; out_ext->supersampleFragmentShadingRates = in_ext->supersampleFragmentShadingRates; out_ext->noInvocationFragmentShadingRates = in_ext->noInvocationFragmentShadingRates; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT: { VkPhysicalDeviceImage2DViewOf3DFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT); const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *in_ext = (const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT; out_ext->image2DViewOf3D = in_ext->image2DViewOf3D; out_ext->sampler2DViewOf3D = in_ext->sampler2DViewOf3D; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT: { VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT); const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *in_ext = (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT; out_ext->mutableDescriptorType = in_ext->mutableDescriptorType; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: { VkPhysicalDeviceDepthClipControlFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT); const VkPhysicalDeviceDepthClipControlFeaturesEXT *in_ext = (const VkPhysicalDeviceDepthClipControlFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT; out_ext->depthClipControl = in_ext->depthClipControl; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT); const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *in_ext = (const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT; out_ext->vertexInputDynamicState = in_ext->vertexInputDynamicState; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: { VkPhysicalDeviceColorWriteEnableFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT); const VkPhysicalDeviceColorWriteEnableFeaturesEXT *in_ext = (const VkPhysicalDeviceColorWriteEnableFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT; out_ext->colorWriteEnable = in_ext->colorWriteEnable; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: { VkPhysicalDeviceSynchronization2Features32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES); const VkPhysicalDeviceSynchronization2Features *in_ext = (const VkPhysicalDeviceSynchronization2Features *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES; out_ext->synchronization2 = in_ext->synchronization2; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: { VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT); const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *in_ext = (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT; out_ext->primitivesGeneratedQuery = in_ext->primitivesGeneratedQuery; out_ext->primitivesGeneratedQueryWithRasterizerDiscard = in_ext->primitivesGeneratedQueryWithRasterizerDiscard; out_ext->primitivesGeneratedQueryWithNonZeroStreams = in_ext->primitivesGeneratedQueryWithNonZeroStreams; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT: { VkPhysicalDeviceLegacyDitheringFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT); const VkPhysicalDeviceLegacyDitheringFeaturesEXT *in_ext = (const VkPhysicalDeviceLegacyDitheringFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT; out_ext->legacyDithering = in_ext->legacyDithering; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT: { VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT); const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *in_ext = (const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT; out_ext->multisampledRenderToSingleSampled = in_ext->multisampledRenderToSingleSampled; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT: { VkPhysicalDevicePipelineProtectedAccessFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT); const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *in_ext = (const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT; out_ext->pipelineProtectedAccess = in_ext->pipelineProtectedAccess; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV: { VkPhysicalDeviceInheritedViewportScissorFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV); const VkPhysicalDeviceInheritedViewportScissorFeaturesNV *in_ext = (const VkPhysicalDeviceInheritedViewportScissorFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV; out_ext->inheritedViewportScissor2D = in_ext->inheritedViewportScissor2D; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: { VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT); const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *in_ext = (const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT; out_ext->ycbcr2plane444Formats = in_ext->ycbcr2plane444Formats; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: { VkPhysicalDeviceProvokingVertexFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT); const VkPhysicalDeviceProvokingVertexFeaturesEXT *in_ext = (const VkPhysicalDeviceProvokingVertexFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT; out_ext->provokingVertexLast = in_ext->provokingVertexLast; out_ext->transformFeedbackPreservesProvokingVertex = in_ext->transformFeedbackPreservesProvokingVertex; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: { VkPhysicalDeviceDescriptorBufferFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT); const VkPhysicalDeviceDescriptorBufferFeaturesEXT *in_ext = (const VkPhysicalDeviceDescriptorBufferFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT; out_ext->descriptorBuffer = in_ext->descriptorBuffer; out_ext->descriptorBufferCaptureReplay = in_ext->descriptorBufferCaptureReplay; out_ext->descriptorBufferImageLayoutIgnored = in_ext->descriptorBufferImageLayoutIgnored; out_ext->descriptorBufferPushDescriptors = in_ext->descriptorBufferPushDescriptors; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: { VkPhysicalDeviceShaderIntegerDotProductFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES); const VkPhysicalDeviceShaderIntegerDotProductFeatures *in_ext = (const VkPhysicalDeviceShaderIntegerDotProductFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES; out_ext->shaderIntegerDotProduct = in_ext->shaderIntegerDotProduct; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR: { VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR); const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *in_ext = (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR; out_ext->fragmentShaderBarycentric = in_ext->fragmentShaderBarycentric; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV: { VkPhysicalDeviceRayTracingMotionBlurFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV); const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *in_ext = (const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV; out_ext->rayTracingMotionBlur = in_ext->rayTracingMotionBlur; out_ext->rayTracingMotionBlurPipelineTraceRaysIndirect = in_ext->rayTracingMotionBlurPipelineTraceRaysIndirect; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: { VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT); const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *in_ext = (const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT; out_ext->formatRgba10x6WithoutYCbCrSampler = in_ext->formatRgba10x6WithoutYCbCrSampler; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: { VkPhysicalDeviceDynamicRenderingFeatures32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES); const VkPhysicalDeviceDynamicRenderingFeatures *in_ext = (const VkPhysicalDeviceDynamicRenderingFeatures *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES; out_ext->dynamicRendering = in_ext->dynamicRendering; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: { VkPhysicalDeviceImageViewMinLodFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT); const VkPhysicalDeviceImageViewMinLodFeaturesEXT *in_ext = (const VkPhysicalDeviceImageViewMinLodFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT; out_ext->minLod = in_ext->minLod; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT: { VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT); const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *in_ext = (const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT; out_ext->rasterizationOrderColorAttachmentAccess = in_ext->rasterizationOrderColorAttachmentAccess; out_ext->rasterizationOrderDepthAttachmentAccess = in_ext->rasterizationOrderDepthAttachmentAccess; out_ext->rasterizationOrderStencilAttachmentAccess = in_ext->rasterizationOrderStencilAttachmentAccess; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV: { VkPhysicalDeviceLinearColorAttachmentFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV); const VkPhysicalDeviceLinearColorAttachmentFeaturesNV *in_ext = (const VkPhysicalDeviceLinearColorAttachmentFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV; out_ext->linearColorAttachment = in_ext->linearColorAttachment; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: { VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT); const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *in_ext = (const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT; out_ext->graphicsPipelineLibrary = in_ext->graphicsPipelineLibrary; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE: { VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE); const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *in_ext = (const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE; out_ext->descriptorSetHostMapping = in_ext->descriptorSetHostMapping; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: { VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT); const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *in_ext = (const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT; out_ext->shaderModuleIdentifier = in_ext->shaderModuleIdentifier; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: { VkPhysicalDeviceImageCompressionControlFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT); const VkPhysicalDeviceImageCompressionControlFeaturesEXT *in_ext = (const VkPhysicalDeviceImageCompressionControlFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT; out_ext->imageCompressionControl = in_ext->imageCompressionControl; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: { VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT); const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *in_ext = (const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT; out_ext->imageCompressionControlSwapchain = in_ext->imageCompressionControlSwapchain; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: { VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT); const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *in_ext = (const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT; out_ext->subpassMergeFeedback = in_ext->subpassMergeFeedback; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT: { VkPhysicalDeviceOpacityMicromapFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT); const VkPhysicalDeviceOpacityMicromapFeaturesEXT *in_ext = (const VkPhysicalDeviceOpacityMicromapFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT; out_ext->micromap = in_ext->micromap; out_ext->micromapCaptureReplay = in_ext->micromapCaptureReplay; out_ext->micromapHostCommands = in_ext->micromapHostCommands; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: { VkPhysicalDevicePipelinePropertiesFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT); const VkPhysicalDevicePipelinePropertiesFeaturesEXT *in_ext = (const VkPhysicalDevicePipelinePropertiesFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT; out_ext->pipelinePropertiesIdentifier = in_ext->pipelinePropertiesIdentifier; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD: { VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD); const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *in_ext = (const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD; out_ext->shaderEarlyAndLateFragmentTests = in_ext->shaderEarlyAndLateFragmentTests; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: { VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT); const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *in_ext = (const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT; out_ext->nonSeamlessCubeMap = in_ext->nonSeamlessCubeMap; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT: { VkPhysicalDevicePipelineRobustnessFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT); const VkPhysicalDevicePipelineRobustnessFeaturesEXT *in_ext = (const VkPhysicalDevicePipelineRobustnessFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT; out_ext->pipelineRobustness = in_ext->pipelineRobustness; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM: { VkPhysicalDeviceImageProcessingFeaturesQCOM32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM); const VkPhysicalDeviceImageProcessingFeaturesQCOM *in_ext = (const VkPhysicalDeviceImageProcessingFeaturesQCOM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM; out_ext->textureSampleWeighted = in_ext->textureSampleWeighted; out_ext->textureBoxFilter = in_ext->textureBoxFilter; out_ext->textureBlockMatch = in_ext->textureBlockMatch; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM: { VkPhysicalDeviceTilePropertiesFeaturesQCOM32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM); const VkPhysicalDeviceTilePropertiesFeaturesQCOM *in_ext = (const VkPhysicalDeviceTilePropertiesFeaturesQCOM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM; out_ext->tileProperties = in_ext->tileProperties; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT: { VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT); const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *in_ext = (const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT; out_ext->attachmentFeedbackLoopLayout = in_ext->attachmentFeedbackLoopLayout; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT: { VkPhysicalDeviceDepthClampZeroOneFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT); const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *in_ext = (const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT; out_ext->depthClampZeroOne = in_ext->depthClampZeroOne; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT: { VkPhysicalDeviceAddressBindingReportFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT); const VkPhysicalDeviceAddressBindingReportFeaturesEXT *in_ext = (const VkPhysicalDeviceAddressBindingReportFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT; out_ext->reportAddressBinding = in_ext->reportAddressBinding; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV: { VkPhysicalDeviceOpticalFlowFeaturesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV); const VkPhysicalDeviceOpticalFlowFeaturesNV *in_ext = (const VkPhysicalDeviceOpticalFlowFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV; out_ext->opticalFlow = in_ext->opticalFlow; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT: { VkPhysicalDeviceFaultFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT); const VkPhysicalDeviceFaultFeaturesEXT *in_ext = (const VkPhysicalDeviceFaultFeaturesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT; out_ext->deviceFault = in_ext->deviceFault; out_ext->deviceFaultVendorBinary = in_ext->deviceFaultVendorBinary; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM: { VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM); const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *in_ext = (const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM; out_ext->shaderCoreBuiltins = in_ext->shaderCoreBuiltins; 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); const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *in_ext = (const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV; out_ext->rayTracingInvocationReorder = in_ext->rayTracingInvocationReorder; out_header = (void *)out_ext; break; } default: break; } } } static inline void convert_VkFormatProperties2_win32_to_host(struct conversion_context *ctx, const VkFormatProperties232 *in, VkFormatProperties2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT: { VkSubpassResolvePerformanceQueryEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: { VkFormatProperties3 *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkFormatProperties2_host_to_win32(const VkFormatProperties2 *in, VkFormatProperties232 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; out->formatProperties = in->formatProperties; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT: { VkSubpassResolvePerformanceQueryEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT); const VkSubpassResolvePerformanceQueryEXT *in_ext = (const VkSubpassResolvePerformanceQueryEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT; out_ext->optimal = in_ext->optimal; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: { VkFormatProperties332 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3); const VkFormatProperties3 *in_ext = (const VkFormatProperties3 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3; out_ext->linearTilingFeatures = in_ext->linearTilingFeatures; out_ext->optimalTilingFeatures = in_ext->optimalTilingFeatures; out_ext->bufferFeatures = in_ext->bufferFeatures; out_header = (void *)out_ext; break; } default: break; } } } static inline void convert_VkPhysicalDeviceFragmentShadingRateKHR_win32_to_host(const VkPhysicalDeviceFragmentShadingRateKHR32 *in, VkPhysicalDeviceFragmentShadingRateKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPhysicalDeviceFragmentShadingRateKHR_host_to_win32(const VkPhysicalDeviceFragmentShadingRateKHR *in, VkPhysicalDeviceFragmentShadingRateKHR32 *out) { if (!in) return; out->sampleCounts = in->sampleCounts; out->fragmentSize = in->fragmentSize; } static inline VkPhysicalDeviceFragmentShadingRateKHR *convert_VkPhysicalDeviceFragmentShadingRateKHR_array_win32_to_host(struct conversion_context *ctx, const VkPhysicalDeviceFragmentShadingRateKHR32 *in, uint32_t count) { VkPhysicalDeviceFragmentShadingRateKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPhysicalDeviceFragmentShadingRateKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPhysicalDeviceFragmentShadingRateKHR_array_host_to_win32(const VkPhysicalDeviceFragmentShadingRateKHR *in, VkPhysicalDeviceFragmentShadingRateKHR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPhysicalDeviceFragmentShadingRateKHR_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkImageFormatProperties_host_to_win32(const VkImageFormatProperties *in, VkImageFormatProperties32 *out) { if (!in) return; out->maxExtent = in->maxExtent; out->maxMipLevels = in->maxMipLevels; out->maxArrayLayers = in->maxArrayLayers; out->sampleCounts = in->sampleCounts; out->maxResourceSize = in->maxResourceSize; } static inline void convert_VkPhysicalDeviceImageFormatInfo2_win32_to_host(struct conversion_context *ctx, const VkPhysicalDeviceImageFormatInfo232 *in, VkPhysicalDeviceImageFormatInfo2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->format = in->format; out->type = in->type; out->tiling = in->tiling; out->usage = in->usage; out->flags = in->flags; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: { VkPhysicalDeviceExternalImageFormatInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExternalImageFormatInfo32 *in_ext = (const VkPhysicalDeviceExternalImageFormatInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO; out_ext->pNext = NULL; out_ext->handleType = in_ext->handleType; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: { VkImageFormatListCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageFormatListCreateInfo32 *in_ext = (const VkImageFormatListCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO; out_ext->pNext = NULL; out_ext->viewFormatCount = in_ext->viewFormatCount; out_ext->pViewFormats = (const VkFormat *)UlongToPtr(in_ext->pViewFormats); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: { VkImageStencilUsageCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageStencilUsageCreateInfo32 *in_ext = (const VkImageStencilUsageCreateInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO; out_ext->pNext = NULL; out_ext->stencilUsage = in_ext->stencilUsage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT: { VkPhysicalDeviceImageViewImageFormatInfoEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceImageViewImageFormatInfoEXT32 *in_ext = (const VkPhysicalDeviceImageViewImageFormatInfoEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT; out_ext->pNext = NULL; out_ext->imageViewType = in_ext->imageViewType; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: { VkImageCompressionControlEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkImageCompressionControlEXT32 *in_ext = (const VkImageCompressionControlEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->compressionControlPlaneCount = in_ext->compressionControlPlaneCount; out_ext->pFixedRateFlags = (VkImageCompressionFixedRateFlagsEXT *)UlongToPtr(in_ext->pFixedRateFlags); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV: { VkOpticalFlowImageFormatInfoNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkOpticalFlowImageFormatInfoNV32 *in_ext = (const VkOpticalFlowImageFormatInfoNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV; out_ext->pNext = NULL; out_ext->usage = in_ext->usage; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkImageFormatProperties2_win32_to_host(struct conversion_context *ctx, const VkImageFormatProperties232 *in, VkImageFormatProperties2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: { VkExternalImageFormatProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: { VkSamplerYcbcrConversionImageFormatProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: { VkTextureLODGatherFormatPropertiesAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT: { VkFilterCubicImageViewImageFormatPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: { VkImageCompressionPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkImageFormatProperties2_host_to_win32(const VkImageFormatProperties2 *in, VkImageFormatProperties232 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; convert_VkImageFormatProperties_host_to_win32(&in->imageFormatProperties, &out->imageFormatProperties); for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: { VkExternalImageFormatProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES); const VkExternalImageFormatProperties *in_ext = (const VkExternalImageFormatProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES; out_ext->externalMemoryProperties = in_ext->externalMemoryProperties; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: { VkSamplerYcbcrConversionImageFormatProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES); const VkSamplerYcbcrConversionImageFormatProperties *in_ext = (const VkSamplerYcbcrConversionImageFormatProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES; out_ext->combinedImageSamplerDescriptorCount = in_ext->combinedImageSamplerDescriptorCount; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: { VkTextureLODGatherFormatPropertiesAMD32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD); const VkTextureLODGatherFormatPropertiesAMD *in_ext = (const VkTextureLODGatherFormatPropertiesAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD; out_ext->supportsTextureGatherLODBiasAMD = in_ext->supportsTextureGatherLODBiasAMD; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT: { VkFilterCubicImageViewImageFormatPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT); const VkFilterCubicImageViewImageFormatPropertiesEXT *in_ext = (const VkFilterCubicImageViewImageFormatPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT; out_ext->filterCubic = in_ext->filterCubic; out_ext->filterCubicMinmax = in_ext->filterCubicMinmax; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: { VkImageCompressionPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT); const VkImageCompressionPropertiesEXT *in_ext = (const VkImageCompressionPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT; out_ext->imageCompressionFlags = in_ext->imageCompressionFlags; out_ext->imageCompressionFixedRateFlags = in_ext->imageCompressionFixedRateFlags; out_header = (void *)out_ext; break; } default: break; } } } static inline void convert_VkMemoryHeap_host_to_win32(const VkMemoryHeap *in, VkMemoryHeap32 *out) { if (!in) return; out->size = in->size; out->flags = in->flags; } static inline void convert_VkMemoryHeap_array_host_to_win32(const VkMemoryHeap *in, VkMemoryHeap32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkMemoryHeap_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPhysicalDeviceMemoryProperties_host_to_win32(const VkPhysicalDeviceMemoryProperties *in, VkPhysicalDeviceMemoryProperties32 *out) { if (!in) return; out->memoryTypeCount = in->memoryTypeCount; memcpy(out->memoryTypes, in->memoryTypes, VK_MAX_MEMORY_TYPES * sizeof(VkMemoryType)); out->memoryHeapCount = in->memoryHeapCount; convert_VkMemoryHeap_array_host_to_win32(in->memoryHeaps, out->memoryHeaps, VK_MAX_MEMORY_HEAPS); } static inline void convert_VkPhysicalDeviceMemoryProperties2_win32_to_host(struct conversion_context *ctx, const VkPhysicalDeviceMemoryProperties232 *in, VkPhysicalDeviceMemoryProperties2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT: { VkPhysicalDeviceMemoryBudgetPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkPhysicalDeviceMemoryProperties2_host_to_win32(const VkPhysicalDeviceMemoryProperties2 *in, VkPhysicalDeviceMemoryProperties232 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; convert_VkPhysicalDeviceMemoryProperties_host_to_win32(&in->memoryProperties, &out->memoryProperties); for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT: { VkPhysicalDeviceMemoryBudgetPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT); const VkPhysicalDeviceMemoryBudgetPropertiesEXT *in_ext = (const VkPhysicalDeviceMemoryBudgetPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT; memcpy(out_ext->heapBudget, in_ext->heapBudget, VK_MAX_MEMORY_HEAPS * sizeof(VkDeviceSize)); memcpy(out_ext->heapUsage, in_ext->heapUsage, VK_MAX_MEMORY_HEAPS * sizeof(VkDeviceSize)); out_header = (void *)out_ext; break; } default: break; } } } static inline void convert_VkMultisamplePropertiesEXT_win32_to_host(const VkMultisamplePropertiesEXT32 *in, VkMultisamplePropertiesEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkMultisamplePropertiesEXT_host_to_win32(const VkMultisamplePropertiesEXT *in, VkMultisamplePropertiesEXT32 *out) { if (!in) return; out->maxSampleLocationGridSize = in->maxSampleLocationGridSize; } static inline void convert_VkOpticalFlowImageFormatInfoNV_win32_to_host(const VkOpticalFlowImageFormatInfoNV32 *in, VkOpticalFlowImageFormatInfoNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->usage = in->usage; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkOpticalFlowImageFormatPropertiesNV_win32_to_host(const VkOpticalFlowImageFormatPropertiesNV32 *in, VkOpticalFlowImageFormatPropertiesNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkOpticalFlowImageFormatPropertiesNV_host_to_win32(const VkOpticalFlowImageFormatPropertiesNV *in, VkOpticalFlowImageFormatPropertiesNV32 *out) { if (!in) return; out->format = in->format; } static inline VkOpticalFlowImageFormatPropertiesNV *convert_VkOpticalFlowImageFormatPropertiesNV_array_win32_to_host(struct conversion_context *ctx, const VkOpticalFlowImageFormatPropertiesNV32 *in, uint32_t count) { VkOpticalFlowImageFormatPropertiesNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkOpticalFlowImageFormatPropertiesNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkOpticalFlowImageFormatPropertiesNV_array_host_to_win32(const VkOpticalFlowImageFormatPropertiesNV *in, VkOpticalFlowImageFormatPropertiesNV32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkOpticalFlowImageFormatPropertiesNV_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPhysicalDeviceLimits_host_to_win32(const VkPhysicalDeviceLimits *in, VkPhysicalDeviceLimits32 *out) { if (!in) return; out->maxImageDimension1D = in->maxImageDimension1D; out->maxImageDimension2D = in->maxImageDimension2D; out->maxImageDimension3D = in->maxImageDimension3D; out->maxImageDimensionCube = in->maxImageDimensionCube; out->maxImageArrayLayers = in->maxImageArrayLayers; out->maxTexelBufferElements = in->maxTexelBufferElements; out->maxUniformBufferRange = in->maxUniformBufferRange; out->maxStorageBufferRange = in->maxStorageBufferRange; out->maxPushConstantsSize = in->maxPushConstantsSize; out->maxMemoryAllocationCount = in->maxMemoryAllocationCount; out->maxSamplerAllocationCount = in->maxSamplerAllocationCount; out->bufferImageGranularity = in->bufferImageGranularity; out->sparseAddressSpaceSize = in->sparseAddressSpaceSize; out->maxBoundDescriptorSets = in->maxBoundDescriptorSets; out->maxPerStageDescriptorSamplers = in->maxPerStageDescriptorSamplers; out->maxPerStageDescriptorUniformBuffers = in->maxPerStageDescriptorUniformBuffers; out->maxPerStageDescriptorStorageBuffers = in->maxPerStageDescriptorStorageBuffers; out->maxPerStageDescriptorSampledImages = in->maxPerStageDescriptorSampledImages; out->maxPerStageDescriptorStorageImages = in->maxPerStageDescriptorStorageImages; out->maxPerStageDescriptorInputAttachments = in->maxPerStageDescriptorInputAttachments; out->maxPerStageResources = in->maxPerStageResources; out->maxDescriptorSetSamplers = in->maxDescriptorSetSamplers; out->maxDescriptorSetUniformBuffers = in->maxDescriptorSetUniformBuffers; out->maxDescriptorSetUniformBuffersDynamic = in->maxDescriptorSetUniformBuffersDynamic; out->maxDescriptorSetStorageBuffers = in->maxDescriptorSetStorageBuffers; out->maxDescriptorSetStorageBuffersDynamic = in->maxDescriptorSetStorageBuffersDynamic; out->maxDescriptorSetSampledImages = in->maxDescriptorSetSampledImages; out->maxDescriptorSetStorageImages = in->maxDescriptorSetStorageImages; out->maxDescriptorSetInputAttachments = in->maxDescriptorSetInputAttachments; out->maxVertexInputAttributes = in->maxVertexInputAttributes; out->maxVertexInputBindings = in->maxVertexInputBindings; out->maxVertexInputAttributeOffset = in->maxVertexInputAttributeOffset; out->maxVertexInputBindingStride = in->maxVertexInputBindingStride; out->maxVertexOutputComponents = in->maxVertexOutputComponents; out->maxTessellationGenerationLevel = in->maxTessellationGenerationLevel; out->maxTessellationPatchSize = in->maxTessellationPatchSize; out->maxTessellationControlPerVertexInputComponents = in->maxTessellationControlPerVertexInputComponents; out->maxTessellationControlPerVertexOutputComponents = in->maxTessellationControlPerVertexOutputComponents; out->maxTessellationControlPerPatchOutputComponents = in->maxTessellationControlPerPatchOutputComponents; out->maxTessellationControlTotalOutputComponents = in->maxTessellationControlTotalOutputComponents; out->maxTessellationEvaluationInputComponents = in->maxTessellationEvaluationInputComponents; out->maxTessellationEvaluationOutputComponents = in->maxTessellationEvaluationOutputComponents; out->maxGeometryShaderInvocations = in->maxGeometryShaderInvocations; out->maxGeometryInputComponents = in->maxGeometryInputComponents; out->maxGeometryOutputComponents = in->maxGeometryOutputComponents; out->maxGeometryOutputVertices = in->maxGeometryOutputVertices; out->maxGeometryTotalOutputComponents = in->maxGeometryTotalOutputComponents; out->maxFragmentInputComponents = in->maxFragmentInputComponents; out->maxFragmentOutputAttachments = in->maxFragmentOutputAttachments; out->maxFragmentDualSrcAttachments = in->maxFragmentDualSrcAttachments; out->maxFragmentCombinedOutputResources = in->maxFragmentCombinedOutputResources; out->maxComputeSharedMemorySize = in->maxComputeSharedMemorySize; memcpy(out->maxComputeWorkGroupCount, in->maxComputeWorkGroupCount, 3 * sizeof(uint32_t)); out->maxComputeWorkGroupInvocations = in->maxComputeWorkGroupInvocations; memcpy(out->maxComputeWorkGroupSize, in->maxComputeWorkGroupSize, 3 * sizeof(uint32_t)); out->subPixelPrecisionBits = in->subPixelPrecisionBits; out->subTexelPrecisionBits = in->subTexelPrecisionBits; out->mipmapPrecisionBits = in->mipmapPrecisionBits; out->maxDrawIndexedIndexValue = in->maxDrawIndexedIndexValue; out->maxDrawIndirectCount = in->maxDrawIndirectCount; out->maxSamplerLodBias = in->maxSamplerLodBias; out->maxSamplerAnisotropy = in->maxSamplerAnisotropy; out->maxViewports = in->maxViewports; memcpy(out->maxViewportDimensions, in->maxViewportDimensions, 2 * sizeof(uint32_t)); memcpy(out->viewportBoundsRange, in->viewportBoundsRange, 2 * sizeof(float)); out->viewportSubPixelBits = in->viewportSubPixelBits; out->minMemoryMapAlignment = in->minMemoryMapAlignment; out->minTexelBufferOffsetAlignment = in->minTexelBufferOffsetAlignment; out->minUniformBufferOffsetAlignment = in->minUniformBufferOffsetAlignment; out->minStorageBufferOffsetAlignment = in->minStorageBufferOffsetAlignment; out->minTexelOffset = in->minTexelOffset; out->maxTexelOffset = in->maxTexelOffset; out->minTexelGatherOffset = in->minTexelGatherOffset; out->maxTexelGatherOffset = in->maxTexelGatherOffset; out->minInterpolationOffset = in->minInterpolationOffset; out->maxInterpolationOffset = in->maxInterpolationOffset; out->subPixelInterpolationOffsetBits = in->subPixelInterpolationOffsetBits; out->maxFramebufferWidth = in->maxFramebufferWidth; out->maxFramebufferHeight = in->maxFramebufferHeight; out->maxFramebufferLayers = in->maxFramebufferLayers; out->framebufferColorSampleCounts = in->framebufferColorSampleCounts; out->framebufferDepthSampleCounts = in->framebufferDepthSampleCounts; out->framebufferStencilSampleCounts = in->framebufferStencilSampleCounts; out->framebufferNoAttachmentsSampleCounts = in->framebufferNoAttachmentsSampleCounts; out->maxColorAttachments = in->maxColorAttachments; out->sampledImageColorSampleCounts = in->sampledImageColorSampleCounts; out->sampledImageIntegerSampleCounts = in->sampledImageIntegerSampleCounts; out->sampledImageDepthSampleCounts = in->sampledImageDepthSampleCounts; out->sampledImageStencilSampleCounts = in->sampledImageStencilSampleCounts; out->storageImageSampleCounts = in->storageImageSampleCounts; out->maxSampleMaskWords = in->maxSampleMaskWords; out->timestampComputeAndGraphics = in->timestampComputeAndGraphics; out->timestampPeriod = in->timestampPeriod; out->maxClipDistances = in->maxClipDistances; out->maxCullDistances = in->maxCullDistances; out->maxCombinedClipAndCullDistances = in->maxCombinedClipAndCullDistances; out->discreteQueuePriorities = in->discreteQueuePriorities; memcpy(out->pointSizeRange, in->pointSizeRange, 2 * sizeof(float)); memcpy(out->lineWidthRange, in->lineWidthRange, 2 * sizeof(float)); out->pointSizeGranularity = in->pointSizeGranularity; out->lineWidthGranularity = in->lineWidthGranularity; out->strictLines = in->strictLines; out->standardSampleLocations = in->standardSampleLocations; out->optimalBufferCopyOffsetAlignment = in->optimalBufferCopyOffsetAlignment; out->optimalBufferCopyRowPitchAlignment = in->optimalBufferCopyRowPitchAlignment; out->nonCoherentAtomSize = in->nonCoherentAtomSize; } static inline void convert_VkPhysicalDeviceProperties_host_to_win32(const VkPhysicalDeviceProperties *in, VkPhysicalDeviceProperties32 *out) { if (!in) return; out->apiVersion = in->apiVersion; out->driverVersion = in->driverVersion; out->vendorID = in->vendorID; out->deviceID = in->deviceID; out->deviceType = in->deviceType; memcpy(out->deviceName, in->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char)); memcpy(out->pipelineCacheUUID, in->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t)); convert_VkPhysicalDeviceLimits_host_to_win32(&in->limits, &out->limits); out->sparseProperties = in->sparseProperties; } static inline void convert_VkPhysicalDeviceProperties2_win32_to_host(struct conversion_context *ctx, const VkPhysicalDeviceProperties232 *in, VkPhysicalDeviceProperties2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV: { VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT: { VkPhysicalDeviceMultiDrawPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: { VkPhysicalDevicePushDescriptorPropertiesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: { VkPhysicalDeviceDriverProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: { VkPhysicalDeviceIDProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: { VkPhysicalDeviceMultiviewProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT: { VkPhysicalDeviceDiscardRectanglePropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: { VkPhysicalDeviceSubgroupProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: { VkPhysicalDevicePointClippingProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: { VkPhysicalDeviceProtectedMemoryProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: { VkPhysicalDeviceSamplerFilterMinmaxProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: { VkPhysicalDeviceSampleLocationsPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: { VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: { VkPhysicalDeviceInlineUniformBlockProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: { VkPhysicalDeviceMaintenance3Properties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: { VkPhysicalDeviceMaintenance4Properties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: { VkPhysicalDeviceFloatControlsProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: { VkPhysicalDeviceExternalMemoryHostPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT: { VkPhysicalDeviceConservativeRasterizationPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD: { VkPhysicalDeviceShaderCorePropertiesAMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD: { VkPhysicalDeviceShaderCoreProperties2AMD *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: { VkPhysicalDeviceDescriptorIndexingProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: { VkPhysicalDeviceTimelineSemaphoreProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: { VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: { VkPhysicalDevicePCIBusInfoPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: { VkPhysicalDeviceDepthStencilResolveProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: { VkPhysicalDeviceTransformFeedbackPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV: { VkPhysicalDeviceCopyMemoryIndirectPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV: { VkPhysicalDeviceMemoryDecompressionPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV: { VkPhysicalDeviceShadingRateImagePropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: { VkPhysicalDeviceMeshShaderPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT: { VkPhysicalDeviceMeshShaderPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR: { VkPhysicalDeviceAccelerationStructurePropertiesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR: { VkPhysicalDeviceRayTracingPipelinePropertiesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: { VkPhysicalDeviceRayTracingPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: { VkPhysicalDeviceFragmentDensityMapPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT: { VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM: { VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV: { VkPhysicalDeviceCooperativeMatrixPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR: { VkPhysicalDevicePerformanceQueryPropertiesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV: { VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: { VkPhysicalDeviceTexelBufferAlignmentProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: { VkPhysicalDeviceSubgroupSizeControlProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI: { VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT: { VkPhysicalDeviceLineRasterizationPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: { VkPhysicalDeviceVulkan11Properties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: { VkPhysicalDeviceVulkan12Properties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: { VkPhysicalDeviceVulkan13Properties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: { VkPhysicalDeviceCustomBorderColorPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT: { VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT32 *in_ext = (const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT; out_ext->pNext = NULL; out_ext->dynamicPrimitiveTopologyUnrestricted = in_ext->dynamicPrimitiveTopologyUnrestricted; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: { VkPhysicalDeviceRobustness2PropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR: { VkPhysicalDeviceFragmentShadingRatePropertiesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV: { VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV32 *in_ext = (const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV; out_ext->pNext = NULL; out_ext->maxFragmentShadingRateInvocationCount = in_ext->maxFragmentShadingRateInvocationCount; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: { VkPhysicalDeviceProvokingVertexPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT: { VkPhysicalDeviceDescriptorBufferPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT: { VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: { VkPhysicalDeviceShaderIntegerDotProductProperties *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR: { VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: { VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT32 *in_ext = (const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT; out_ext->pNext = NULL; out_ext->graphicsPipelineLibraryFastLinking = in_ext->graphicsPipelineLibraryFastLinking; out_ext->graphicsPipelineLibraryIndependentInterpolationDecoration = in_ext->graphicsPipelineLibraryIndependentInterpolationDecoration; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT: { VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT: { VkPhysicalDeviceOpacityMicromapPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT: { VkPhysicalDevicePipelineRobustnessPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM: { VkPhysicalDeviceImageProcessingPropertiesQCOM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV: { VkPhysicalDeviceOpticalFlowPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM: { VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV: { VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkPhysicalDeviceProperties2_host_to_win32(const VkPhysicalDeviceProperties2 *in, VkPhysicalDeviceProperties232 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; convert_VkPhysicalDeviceProperties_host_to_win32(&in->properties, &out->properties); for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV: { VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV); const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *in_ext = (const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV; out_ext->maxGraphicsShaderGroupCount = in_ext->maxGraphicsShaderGroupCount; out_ext->maxIndirectSequenceCount = in_ext->maxIndirectSequenceCount; out_ext->maxIndirectCommandsTokenCount = in_ext->maxIndirectCommandsTokenCount; out_ext->maxIndirectCommandsStreamCount = in_ext->maxIndirectCommandsStreamCount; out_ext->maxIndirectCommandsTokenOffset = in_ext->maxIndirectCommandsTokenOffset; out_ext->maxIndirectCommandsStreamStride = in_ext->maxIndirectCommandsStreamStride; out_ext->minSequencesCountBufferOffsetAlignment = in_ext->minSequencesCountBufferOffsetAlignment; out_ext->minSequencesIndexBufferOffsetAlignment = in_ext->minSequencesIndexBufferOffsetAlignment; out_ext->minIndirectCommandsBufferOffsetAlignment = in_ext->minIndirectCommandsBufferOffsetAlignment; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT: { VkPhysicalDeviceMultiDrawPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT); const VkPhysicalDeviceMultiDrawPropertiesEXT *in_ext = (const VkPhysicalDeviceMultiDrawPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT; out_ext->maxMultiDrawCount = in_ext->maxMultiDrawCount; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: { VkPhysicalDevicePushDescriptorPropertiesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR); const VkPhysicalDevicePushDescriptorPropertiesKHR *in_ext = (const VkPhysicalDevicePushDescriptorPropertiesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR; out_ext->maxPushDescriptors = in_ext->maxPushDescriptors; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: { VkPhysicalDeviceDriverProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES); const VkPhysicalDeviceDriverProperties *in_ext = (const VkPhysicalDeviceDriverProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES; out_ext->driverID = in_ext->driverID; memcpy(out_ext->driverName, in_ext->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char)); memcpy(out_ext->driverInfo, in_ext->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char)); out_ext->conformanceVersion = in_ext->conformanceVersion; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: { VkPhysicalDeviceIDProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES); const VkPhysicalDeviceIDProperties *in_ext = (const VkPhysicalDeviceIDProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES; memcpy(out_ext->deviceUUID, in_ext->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t)); memcpy(out_ext->driverUUID, in_ext->driverUUID, VK_UUID_SIZE * sizeof(uint8_t)); memcpy(out_ext->deviceLUID, in_ext->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t)); out_ext->deviceNodeMask = in_ext->deviceNodeMask; out_ext->deviceLUIDValid = in_ext->deviceLUIDValid; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: { VkPhysicalDeviceMultiviewProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES); const VkPhysicalDeviceMultiviewProperties *in_ext = (const VkPhysicalDeviceMultiviewProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES; out_ext->maxMultiviewViewCount = in_ext->maxMultiviewViewCount; out_ext->maxMultiviewInstanceIndex = in_ext->maxMultiviewInstanceIndex; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT: { VkPhysicalDeviceDiscardRectanglePropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT); const VkPhysicalDeviceDiscardRectanglePropertiesEXT *in_ext = (const VkPhysicalDeviceDiscardRectanglePropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT; out_ext->maxDiscardRectangles = in_ext->maxDiscardRectangles; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: { VkPhysicalDeviceSubgroupProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES); const VkPhysicalDeviceSubgroupProperties *in_ext = (const VkPhysicalDeviceSubgroupProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES; out_ext->subgroupSize = in_ext->subgroupSize; out_ext->supportedStages = in_ext->supportedStages; out_ext->supportedOperations = in_ext->supportedOperations; out_ext->quadOperationsInAllStages = in_ext->quadOperationsInAllStages; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: { VkPhysicalDevicePointClippingProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES); const VkPhysicalDevicePointClippingProperties *in_ext = (const VkPhysicalDevicePointClippingProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES; out_ext->pointClippingBehavior = in_ext->pointClippingBehavior; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: { VkPhysicalDeviceProtectedMemoryProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES); const VkPhysicalDeviceProtectedMemoryProperties *in_ext = (const VkPhysicalDeviceProtectedMemoryProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES; out_ext->protectedNoFault = in_ext->protectedNoFault; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: { VkPhysicalDeviceSamplerFilterMinmaxProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES); const VkPhysicalDeviceSamplerFilterMinmaxProperties *in_ext = (const VkPhysicalDeviceSamplerFilterMinmaxProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES; out_ext->filterMinmaxSingleComponentFormats = in_ext->filterMinmaxSingleComponentFormats; out_ext->filterMinmaxImageComponentMapping = in_ext->filterMinmaxImageComponentMapping; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: { VkPhysicalDeviceSampleLocationsPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT); const VkPhysicalDeviceSampleLocationsPropertiesEXT *in_ext = (const VkPhysicalDeviceSampleLocationsPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT; out_ext->sampleLocationSampleCounts = in_ext->sampleLocationSampleCounts; out_ext->maxSampleLocationGridSize = in_ext->maxSampleLocationGridSize; memcpy(out_ext->sampleLocationCoordinateRange, in_ext->sampleLocationCoordinateRange, 2 * sizeof(float)); out_ext->sampleLocationSubPixelBits = in_ext->sampleLocationSubPixelBits; out_ext->variableSampleLocations = in_ext->variableSampleLocations; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: { VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT); const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *in_ext = (const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT; out_ext->advancedBlendMaxColorAttachments = in_ext->advancedBlendMaxColorAttachments; out_ext->advancedBlendIndependentBlend = in_ext->advancedBlendIndependentBlend; out_ext->advancedBlendNonPremultipliedSrcColor = in_ext->advancedBlendNonPremultipliedSrcColor; out_ext->advancedBlendNonPremultipliedDstColor = in_ext->advancedBlendNonPremultipliedDstColor; out_ext->advancedBlendCorrelatedOverlap = in_ext->advancedBlendCorrelatedOverlap; out_ext->advancedBlendAllOperations = in_ext->advancedBlendAllOperations; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: { VkPhysicalDeviceInlineUniformBlockProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES); const VkPhysicalDeviceInlineUniformBlockProperties *in_ext = (const VkPhysicalDeviceInlineUniformBlockProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES; out_ext->maxInlineUniformBlockSize = in_ext->maxInlineUniformBlockSize; out_ext->maxPerStageDescriptorInlineUniformBlocks = in_ext->maxPerStageDescriptorInlineUniformBlocks; out_ext->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = in_ext->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; out_ext->maxDescriptorSetInlineUniformBlocks = in_ext->maxDescriptorSetInlineUniformBlocks; out_ext->maxDescriptorSetUpdateAfterBindInlineUniformBlocks = in_ext->maxDescriptorSetUpdateAfterBindInlineUniformBlocks; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: { VkPhysicalDeviceMaintenance3Properties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES); const VkPhysicalDeviceMaintenance3Properties *in_ext = (const VkPhysicalDeviceMaintenance3Properties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES; out_ext->maxPerSetDescriptors = in_ext->maxPerSetDescriptors; out_ext->maxMemoryAllocationSize = in_ext->maxMemoryAllocationSize; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: { VkPhysicalDeviceMaintenance4Properties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES); const VkPhysicalDeviceMaintenance4Properties *in_ext = (const VkPhysicalDeviceMaintenance4Properties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES; out_ext->maxBufferSize = in_ext->maxBufferSize; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: { VkPhysicalDeviceFloatControlsProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES); const VkPhysicalDeviceFloatControlsProperties *in_ext = (const VkPhysicalDeviceFloatControlsProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES; out_ext->denormBehaviorIndependence = in_ext->denormBehaviorIndependence; out_ext->roundingModeIndependence = in_ext->roundingModeIndependence; out_ext->shaderSignedZeroInfNanPreserveFloat16 = in_ext->shaderSignedZeroInfNanPreserveFloat16; out_ext->shaderSignedZeroInfNanPreserveFloat32 = in_ext->shaderSignedZeroInfNanPreserveFloat32; out_ext->shaderSignedZeroInfNanPreserveFloat64 = in_ext->shaderSignedZeroInfNanPreserveFloat64; out_ext->shaderDenormPreserveFloat16 = in_ext->shaderDenormPreserveFloat16; out_ext->shaderDenormPreserveFloat32 = in_ext->shaderDenormPreserveFloat32; out_ext->shaderDenormPreserveFloat64 = in_ext->shaderDenormPreserveFloat64; out_ext->shaderDenormFlushToZeroFloat16 = in_ext->shaderDenormFlushToZeroFloat16; out_ext->shaderDenormFlushToZeroFloat32 = in_ext->shaderDenormFlushToZeroFloat32; out_ext->shaderDenormFlushToZeroFloat64 = in_ext->shaderDenormFlushToZeroFloat64; out_ext->shaderRoundingModeRTEFloat16 = in_ext->shaderRoundingModeRTEFloat16; out_ext->shaderRoundingModeRTEFloat32 = in_ext->shaderRoundingModeRTEFloat32; out_ext->shaderRoundingModeRTEFloat64 = in_ext->shaderRoundingModeRTEFloat64; out_ext->shaderRoundingModeRTZFloat16 = in_ext->shaderRoundingModeRTZFloat16; out_ext->shaderRoundingModeRTZFloat32 = in_ext->shaderRoundingModeRTZFloat32; out_ext->shaderRoundingModeRTZFloat64 = in_ext->shaderRoundingModeRTZFloat64; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: { VkPhysicalDeviceExternalMemoryHostPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT); const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *in_ext = (const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT; out_ext->minImportedHostPointerAlignment = in_ext->minImportedHostPointerAlignment; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT: { VkPhysicalDeviceConservativeRasterizationPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT); const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *in_ext = (const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT; out_ext->primitiveOverestimationSize = in_ext->primitiveOverestimationSize; out_ext->maxExtraPrimitiveOverestimationSize = in_ext->maxExtraPrimitiveOverestimationSize; out_ext->extraPrimitiveOverestimationSizeGranularity = in_ext->extraPrimitiveOverestimationSizeGranularity; out_ext->primitiveUnderestimation = in_ext->primitiveUnderestimation; out_ext->conservativePointAndLineRasterization = in_ext->conservativePointAndLineRasterization; out_ext->degenerateTrianglesRasterized = in_ext->degenerateTrianglesRasterized; out_ext->degenerateLinesRasterized = in_ext->degenerateLinesRasterized; out_ext->fullyCoveredFragmentShaderInputVariable = in_ext->fullyCoveredFragmentShaderInputVariable; out_ext->conservativeRasterizationPostDepthCoverage = in_ext->conservativeRasterizationPostDepthCoverage; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD: { VkPhysicalDeviceShaderCorePropertiesAMD32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD); const VkPhysicalDeviceShaderCorePropertiesAMD *in_ext = (const VkPhysicalDeviceShaderCorePropertiesAMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD; out_ext->shaderEngineCount = in_ext->shaderEngineCount; out_ext->shaderArraysPerEngineCount = in_ext->shaderArraysPerEngineCount; out_ext->computeUnitsPerShaderArray = in_ext->computeUnitsPerShaderArray; out_ext->simdPerComputeUnit = in_ext->simdPerComputeUnit; out_ext->wavefrontsPerSimd = in_ext->wavefrontsPerSimd; out_ext->wavefrontSize = in_ext->wavefrontSize; out_ext->sgprsPerSimd = in_ext->sgprsPerSimd; out_ext->minSgprAllocation = in_ext->minSgprAllocation; out_ext->maxSgprAllocation = in_ext->maxSgprAllocation; out_ext->sgprAllocationGranularity = in_ext->sgprAllocationGranularity; out_ext->vgprsPerSimd = in_ext->vgprsPerSimd; out_ext->minVgprAllocation = in_ext->minVgprAllocation; out_ext->maxVgprAllocation = in_ext->maxVgprAllocation; out_ext->vgprAllocationGranularity = in_ext->vgprAllocationGranularity; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD: { VkPhysicalDeviceShaderCoreProperties2AMD32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD); const VkPhysicalDeviceShaderCoreProperties2AMD *in_ext = (const VkPhysicalDeviceShaderCoreProperties2AMD *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD; out_ext->shaderCoreFeatures = in_ext->shaderCoreFeatures; out_ext->activeComputeUnitCount = in_ext->activeComputeUnitCount; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: { VkPhysicalDeviceDescriptorIndexingProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES); const VkPhysicalDeviceDescriptorIndexingProperties *in_ext = (const VkPhysicalDeviceDescriptorIndexingProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES; out_ext->maxUpdateAfterBindDescriptorsInAllPools = in_ext->maxUpdateAfterBindDescriptorsInAllPools; out_ext->shaderUniformBufferArrayNonUniformIndexingNative = in_ext->shaderUniformBufferArrayNonUniformIndexingNative; out_ext->shaderSampledImageArrayNonUniformIndexingNative = in_ext->shaderSampledImageArrayNonUniformIndexingNative; out_ext->shaderStorageBufferArrayNonUniformIndexingNative = in_ext->shaderStorageBufferArrayNonUniformIndexingNative; out_ext->shaderStorageImageArrayNonUniformIndexingNative = in_ext->shaderStorageImageArrayNonUniformIndexingNative; out_ext->shaderInputAttachmentArrayNonUniformIndexingNative = in_ext->shaderInputAttachmentArrayNonUniformIndexingNative; out_ext->robustBufferAccessUpdateAfterBind = in_ext->robustBufferAccessUpdateAfterBind; out_ext->quadDivergentImplicitLod = in_ext->quadDivergentImplicitLod; out_ext->maxPerStageDescriptorUpdateAfterBindSamplers = in_ext->maxPerStageDescriptorUpdateAfterBindSamplers; out_ext->maxPerStageDescriptorUpdateAfterBindUniformBuffers = in_ext->maxPerStageDescriptorUpdateAfterBindUniformBuffers; out_ext->maxPerStageDescriptorUpdateAfterBindStorageBuffers = in_ext->maxPerStageDescriptorUpdateAfterBindStorageBuffers; out_ext->maxPerStageDescriptorUpdateAfterBindSampledImages = in_ext->maxPerStageDescriptorUpdateAfterBindSampledImages; out_ext->maxPerStageDescriptorUpdateAfterBindStorageImages = in_ext->maxPerStageDescriptorUpdateAfterBindStorageImages; out_ext->maxPerStageDescriptorUpdateAfterBindInputAttachments = in_ext->maxPerStageDescriptorUpdateAfterBindInputAttachments; out_ext->maxPerStageUpdateAfterBindResources = in_ext->maxPerStageUpdateAfterBindResources; out_ext->maxDescriptorSetUpdateAfterBindSamplers = in_ext->maxDescriptorSetUpdateAfterBindSamplers; out_ext->maxDescriptorSetUpdateAfterBindUniformBuffers = in_ext->maxDescriptorSetUpdateAfterBindUniformBuffers; out_ext->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = in_ext->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; out_ext->maxDescriptorSetUpdateAfterBindStorageBuffers = in_ext->maxDescriptorSetUpdateAfterBindStorageBuffers; out_ext->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = in_ext->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; out_ext->maxDescriptorSetUpdateAfterBindSampledImages = in_ext->maxDescriptorSetUpdateAfterBindSampledImages; out_ext->maxDescriptorSetUpdateAfterBindStorageImages = in_ext->maxDescriptorSetUpdateAfterBindStorageImages; out_ext->maxDescriptorSetUpdateAfterBindInputAttachments = in_ext->maxDescriptorSetUpdateAfterBindInputAttachments; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: { VkPhysicalDeviceTimelineSemaphoreProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES); const VkPhysicalDeviceTimelineSemaphoreProperties *in_ext = (const VkPhysicalDeviceTimelineSemaphoreProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES; out_ext->maxTimelineSemaphoreValueDifference = in_ext->maxTimelineSemaphoreValueDifference; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: { VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT); const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *in_ext = (const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT; out_ext->maxVertexAttribDivisor = in_ext->maxVertexAttribDivisor; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: { VkPhysicalDevicePCIBusInfoPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT); const VkPhysicalDevicePCIBusInfoPropertiesEXT *in_ext = (const VkPhysicalDevicePCIBusInfoPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT; out_ext->pciDomain = in_ext->pciDomain; out_ext->pciBus = in_ext->pciBus; out_ext->pciDevice = in_ext->pciDevice; out_ext->pciFunction = in_ext->pciFunction; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: { VkPhysicalDeviceDepthStencilResolveProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES); const VkPhysicalDeviceDepthStencilResolveProperties *in_ext = (const VkPhysicalDeviceDepthStencilResolveProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES; out_ext->supportedDepthResolveModes = in_ext->supportedDepthResolveModes; out_ext->supportedStencilResolveModes = in_ext->supportedStencilResolveModes; out_ext->independentResolveNone = in_ext->independentResolveNone; out_ext->independentResolve = in_ext->independentResolve; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: { VkPhysicalDeviceTransformFeedbackPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT); const VkPhysicalDeviceTransformFeedbackPropertiesEXT *in_ext = (const VkPhysicalDeviceTransformFeedbackPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT; out_ext->maxTransformFeedbackStreams = in_ext->maxTransformFeedbackStreams; out_ext->maxTransformFeedbackBuffers = in_ext->maxTransformFeedbackBuffers; out_ext->maxTransformFeedbackBufferSize = in_ext->maxTransformFeedbackBufferSize; out_ext->maxTransformFeedbackStreamDataSize = in_ext->maxTransformFeedbackStreamDataSize; out_ext->maxTransformFeedbackBufferDataSize = in_ext->maxTransformFeedbackBufferDataSize; out_ext->maxTransformFeedbackBufferDataStride = in_ext->maxTransformFeedbackBufferDataStride; out_ext->transformFeedbackQueries = in_ext->transformFeedbackQueries; out_ext->transformFeedbackStreamsLinesTriangles = in_ext->transformFeedbackStreamsLinesTriangles; out_ext->transformFeedbackRasterizationStreamSelect = in_ext->transformFeedbackRasterizationStreamSelect; out_ext->transformFeedbackDraw = in_ext->transformFeedbackDraw; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV: { VkPhysicalDeviceCopyMemoryIndirectPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV); const VkPhysicalDeviceCopyMemoryIndirectPropertiesNV *in_ext = (const VkPhysicalDeviceCopyMemoryIndirectPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV; out_ext->supportedQueues = in_ext->supportedQueues; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV: { VkPhysicalDeviceMemoryDecompressionPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV); const VkPhysicalDeviceMemoryDecompressionPropertiesNV *in_ext = (const VkPhysicalDeviceMemoryDecompressionPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV; out_ext->decompressionMethods = in_ext->decompressionMethods; out_ext->maxDecompressionIndirectCount = in_ext->maxDecompressionIndirectCount; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV: { VkPhysicalDeviceShadingRateImagePropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV); const VkPhysicalDeviceShadingRateImagePropertiesNV *in_ext = (const VkPhysicalDeviceShadingRateImagePropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV; out_ext->shadingRateTexelSize = in_ext->shadingRateTexelSize; out_ext->shadingRatePaletteSize = in_ext->shadingRatePaletteSize; out_ext->shadingRateMaxCoarseSamples = in_ext->shadingRateMaxCoarseSamples; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: { VkPhysicalDeviceMeshShaderPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV); const VkPhysicalDeviceMeshShaderPropertiesNV *in_ext = (const VkPhysicalDeviceMeshShaderPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV; out_ext->maxDrawMeshTasksCount = in_ext->maxDrawMeshTasksCount; out_ext->maxTaskWorkGroupInvocations = in_ext->maxTaskWorkGroupInvocations; memcpy(out_ext->maxTaskWorkGroupSize, in_ext->maxTaskWorkGroupSize, 3 * sizeof(uint32_t)); out_ext->maxTaskTotalMemorySize = in_ext->maxTaskTotalMemorySize; out_ext->maxTaskOutputCount = in_ext->maxTaskOutputCount; out_ext->maxMeshWorkGroupInvocations = in_ext->maxMeshWorkGroupInvocations; memcpy(out_ext->maxMeshWorkGroupSize, in_ext->maxMeshWorkGroupSize, 3 * sizeof(uint32_t)); out_ext->maxMeshTotalMemorySize = in_ext->maxMeshTotalMemorySize; out_ext->maxMeshOutputVertices = in_ext->maxMeshOutputVertices; out_ext->maxMeshOutputPrimitives = in_ext->maxMeshOutputPrimitives; out_ext->maxMeshMultiviewViewCount = in_ext->maxMeshMultiviewViewCount; out_ext->meshOutputPerVertexGranularity = in_ext->meshOutputPerVertexGranularity; out_ext->meshOutputPerPrimitiveGranularity = in_ext->meshOutputPerPrimitiveGranularity; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT: { VkPhysicalDeviceMeshShaderPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT); const VkPhysicalDeviceMeshShaderPropertiesEXT *in_ext = (const VkPhysicalDeviceMeshShaderPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT; out_ext->maxTaskWorkGroupTotalCount = in_ext->maxTaskWorkGroupTotalCount; memcpy(out_ext->maxTaskWorkGroupCount, in_ext->maxTaskWorkGroupCount, 3 * sizeof(uint32_t)); out_ext->maxTaskWorkGroupInvocations = in_ext->maxTaskWorkGroupInvocations; memcpy(out_ext->maxTaskWorkGroupSize, in_ext->maxTaskWorkGroupSize, 3 * sizeof(uint32_t)); out_ext->maxTaskPayloadSize = in_ext->maxTaskPayloadSize; out_ext->maxTaskSharedMemorySize = in_ext->maxTaskSharedMemorySize; out_ext->maxTaskPayloadAndSharedMemorySize = in_ext->maxTaskPayloadAndSharedMemorySize; out_ext->maxMeshWorkGroupTotalCount = in_ext->maxMeshWorkGroupTotalCount; memcpy(out_ext->maxMeshWorkGroupCount, in_ext->maxMeshWorkGroupCount, 3 * sizeof(uint32_t)); out_ext->maxMeshWorkGroupInvocations = in_ext->maxMeshWorkGroupInvocations; memcpy(out_ext->maxMeshWorkGroupSize, in_ext->maxMeshWorkGroupSize, 3 * sizeof(uint32_t)); out_ext->maxMeshSharedMemorySize = in_ext->maxMeshSharedMemorySize; out_ext->maxMeshPayloadAndSharedMemorySize = in_ext->maxMeshPayloadAndSharedMemorySize; out_ext->maxMeshOutputMemorySize = in_ext->maxMeshOutputMemorySize; out_ext->maxMeshPayloadAndOutputMemorySize = in_ext->maxMeshPayloadAndOutputMemorySize; out_ext->maxMeshOutputComponents = in_ext->maxMeshOutputComponents; out_ext->maxMeshOutputVertices = in_ext->maxMeshOutputVertices; out_ext->maxMeshOutputPrimitives = in_ext->maxMeshOutputPrimitives; out_ext->maxMeshOutputLayers = in_ext->maxMeshOutputLayers; out_ext->maxMeshMultiviewViewCount = in_ext->maxMeshMultiviewViewCount; out_ext->meshOutputPerVertexGranularity = in_ext->meshOutputPerVertexGranularity; out_ext->meshOutputPerPrimitiveGranularity = in_ext->meshOutputPerPrimitiveGranularity; out_ext->maxPreferredTaskWorkGroupInvocations = in_ext->maxPreferredTaskWorkGroupInvocations; out_ext->maxPreferredMeshWorkGroupInvocations = in_ext->maxPreferredMeshWorkGroupInvocations; out_ext->prefersLocalInvocationVertexOutput = in_ext->prefersLocalInvocationVertexOutput; out_ext->prefersLocalInvocationPrimitiveOutput = in_ext->prefersLocalInvocationPrimitiveOutput; out_ext->prefersCompactVertexOutput = in_ext->prefersCompactVertexOutput; out_ext->prefersCompactPrimitiveOutput = in_ext->prefersCompactPrimitiveOutput; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR: { VkPhysicalDeviceAccelerationStructurePropertiesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR); const VkPhysicalDeviceAccelerationStructurePropertiesKHR *in_ext = (const VkPhysicalDeviceAccelerationStructurePropertiesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR; out_ext->maxGeometryCount = in_ext->maxGeometryCount; out_ext->maxInstanceCount = in_ext->maxInstanceCount; out_ext->maxPrimitiveCount = in_ext->maxPrimitiveCount; out_ext->maxPerStageDescriptorAccelerationStructures = in_ext->maxPerStageDescriptorAccelerationStructures; out_ext->maxPerStageDescriptorUpdateAfterBindAccelerationStructures = in_ext->maxPerStageDescriptorUpdateAfterBindAccelerationStructures; out_ext->maxDescriptorSetAccelerationStructures = in_ext->maxDescriptorSetAccelerationStructures; out_ext->maxDescriptorSetUpdateAfterBindAccelerationStructures = in_ext->maxDescriptorSetUpdateAfterBindAccelerationStructures; out_ext->minAccelerationStructureScratchOffsetAlignment = in_ext->minAccelerationStructureScratchOffsetAlignment; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR: { VkPhysicalDeviceRayTracingPipelinePropertiesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR); const VkPhysicalDeviceRayTracingPipelinePropertiesKHR *in_ext = (const VkPhysicalDeviceRayTracingPipelinePropertiesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR; out_ext->shaderGroupHandleSize = in_ext->shaderGroupHandleSize; out_ext->maxRayRecursionDepth = in_ext->maxRayRecursionDepth; out_ext->maxShaderGroupStride = in_ext->maxShaderGroupStride; out_ext->shaderGroupBaseAlignment = in_ext->shaderGroupBaseAlignment; out_ext->shaderGroupHandleCaptureReplaySize = in_ext->shaderGroupHandleCaptureReplaySize; out_ext->maxRayDispatchInvocationCount = in_ext->maxRayDispatchInvocationCount; out_ext->shaderGroupHandleAlignment = in_ext->shaderGroupHandleAlignment; out_ext->maxRayHitAttributeSize = in_ext->maxRayHitAttributeSize; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: { VkPhysicalDeviceRayTracingPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV); const VkPhysicalDeviceRayTracingPropertiesNV *in_ext = (const VkPhysicalDeviceRayTracingPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV; out_ext->shaderGroupHandleSize = in_ext->shaderGroupHandleSize; out_ext->maxRecursionDepth = in_ext->maxRecursionDepth; out_ext->maxShaderGroupStride = in_ext->maxShaderGroupStride; out_ext->shaderGroupBaseAlignment = in_ext->shaderGroupBaseAlignment; out_ext->maxGeometryCount = in_ext->maxGeometryCount; out_ext->maxInstanceCount = in_ext->maxInstanceCount; out_ext->maxTriangleCount = in_ext->maxTriangleCount; out_ext->maxDescriptorSetAccelerationStructures = in_ext->maxDescriptorSetAccelerationStructures; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: { VkPhysicalDeviceFragmentDensityMapPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT); const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *in_ext = (const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT; out_ext->minFragmentDensityTexelSize = in_ext->minFragmentDensityTexelSize; out_ext->maxFragmentDensityTexelSize = in_ext->maxFragmentDensityTexelSize; out_ext->fragmentDensityInvocations = in_ext->fragmentDensityInvocations; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT: { VkPhysicalDeviceFragmentDensityMap2PropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT); const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *in_ext = (const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT; out_ext->subsampledLoads = in_ext->subsampledLoads; out_ext->subsampledCoarseReconstructionEarlyAccess = in_ext->subsampledCoarseReconstructionEarlyAccess; out_ext->maxSubsampledArrayLayers = in_ext->maxSubsampledArrayLayers; out_ext->maxDescriptorSetSubsampledSamplers = in_ext->maxDescriptorSetSubsampledSamplers; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM: { VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM); const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *in_ext = (const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM; out_ext->fragmentDensityOffsetGranularity = in_ext->fragmentDensityOffsetGranularity; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV: { VkPhysicalDeviceCooperativeMatrixPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV); const VkPhysicalDeviceCooperativeMatrixPropertiesNV *in_ext = (const VkPhysicalDeviceCooperativeMatrixPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV; out_ext->cooperativeMatrixSupportedStages = in_ext->cooperativeMatrixSupportedStages; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR: { VkPhysicalDevicePerformanceQueryPropertiesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR); const VkPhysicalDevicePerformanceQueryPropertiesKHR *in_ext = (const VkPhysicalDevicePerformanceQueryPropertiesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR; out_ext->allowCommandBufferQueryCopies = in_ext->allowCommandBufferQueryCopies; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV: { VkPhysicalDeviceShaderSMBuiltinsPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV); const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *in_ext = (const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV; out_ext->shaderSMCount = in_ext->shaderSMCount; out_ext->shaderWarpsPerSM = in_ext->shaderWarpsPerSM; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: { VkPhysicalDeviceTexelBufferAlignmentProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES); const VkPhysicalDeviceTexelBufferAlignmentProperties *in_ext = (const VkPhysicalDeviceTexelBufferAlignmentProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES; out_ext->storageTexelBufferOffsetAlignmentBytes = in_ext->storageTexelBufferOffsetAlignmentBytes; out_ext->storageTexelBufferOffsetSingleTexelAlignment = in_ext->storageTexelBufferOffsetSingleTexelAlignment; out_ext->uniformTexelBufferOffsetAlignmentBytes = in_ext->uniformTexelBufferOffsetAlignmentBytes; out_ext->uniformTexelBufferOffsetSingleTexelAlignment = in_ext->uniformTexelBufferOffsetSingleTexelAlignment; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: { VkPhysicalDeviceSubgroupSizeControlProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES); const VkPhysicalDeviceSubgroupSizeControlProperties *in_ext = (const VkPhysicalDeviceSubgroupSizeControlProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES; out_ext->minSubgroupSize = in_ext->minSubgroupSize; out_ext->maxSubgroupSize = in_ext->maxSubgroupSize; out_ext->maxComputeWorkgroupSubgroups = in_ext->maxComputeWorkgroupSubgroups; out_ext->requiredSubgroupSizeStages = in_ext->requiredSubgroupSizeStages; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI: { VkPhysicalDeviceSubpassShadingPropertiesHUAWEI32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI); const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *in_ext = (const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI; out_ext->maxSubpassShadingWorkgroupSizeAspectRatio = in_ext->maxSubpassShadingWorkgroupSizeAspectRatio; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT: { VkPhysicalDeviceLineRasterizationPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT); const VkPhysicalDeviceLineRasterizationPropertiesEXT *in_ext = (const VkPhysicalDeviceLineRasterizationPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT; out_ext->lineSubPixelPrecisionBits = in_ext->lineSubPixelPrecisionBits; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: { VkPhysicalDeviceVulkan11Properties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES); const VkPhysicalDeviceVulkan11Properties *in_ext = (const VkPhysicalDeviceVulkan11Properties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES; memcpy(out_ext->deviceUUID, in_ext->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t)); memcpy(out_ext->driverUUID, in_ext->driverUUID, VK_UUID_SIZE * sizeof(uint8_t)); memcpy(out_ext->deviceLUID, in_ext->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t)); out_ext->deviceNodeMask = in_ext->deviceNodeMask; out_ext->deviceLUIDValid = in_ext->deviceLUIDValid; out_ext->subgroupSize = in_ext->subgroupSize; out_ext->subgroupSupportedStages = in_ext->subgroupSupportedStages; out_ext->subgroupSupportedOperations = in_ext->subgroupSupportedOperations; out_ext->subgroupQuadOperationsInAllStages = in_ext->subgroupQuadOperationsInAllStages; out_ext->pointClippingBehavior = in_ext->pointClippingBehavior; out_ext->maxMultiviewViewCount = in_ext->maxMultiviewViewCount; out_ext->maxMultiviewInstanceIndex = in_ext->maxMultiviewInstanceIndex; out_ext->protectedNoFault = in_ext->protectedNoFault; out_ext->maxPerSetDescriptors = in_ext->maxPerSetDescriptors; out_ext->maxMemoryAllocationSize = in_ext->maxMemoryAllocationSize; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: { VkPhysicalDeviceVulkan12Properties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES); const VkPhysicalDeviceVulkan12Properties *in_ext = (const VkPhysicalDeviceVulkan12Properties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES; out_ext->driverID = in_ext->driverID; memcpy(out_ext->driverName, in_ext->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char)); memcpy(out_ext->driverInfo, in_ext->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char)); out_ext->conformanceVersion = in_ext->conformanceVersion; out_ext->denormBehaviorIndependence = in_ext->denormBehaviorIndependence; out_ext->roundingModeIndependence = in_ext->roundingModeIndependence; out_ext->shaderSignedZeroInfNanPreserveFloat16 = in_ext->shaderSignedZeroInfNanPreserveFloat16; out_ext->shaderSignedZeroInfNanPreserveFloat32 = in_ext->shaderSignedZeroInfNanPreserveFloat32; out_ext->shaderSignedZeroInfNanPreserveFloat64 = in_ext->shaderSignedZeroInfNanPreserveFloat64; out_ext->shaderDenormPreserveFloat16 = in_ext->shaderDenormPreserveFloat16; out_ext->shaderDenormPreserveFloat32 = in_ext->shaderDenormPreserveFloat32; out_ext->shaderDenormPreserveFloat64 = in_ext->shaderDenormPreserveFloat64; out_ext->shaderDenormFlushToZeroFloat16 = in_ext->shaderDenormFlushToZeroFloat16; out_ext->shaderDenormFlushToZeroFloat32 = in_ext->shaderDenormFlushToZeroFloat32; out_ext->shaderDenormFlushToZeroFloat64 = in_ext->shaderDenormFlushToZeroFloat64; out_ext->shaderRoundingModeRTEFloat16 = in_ext->shaderRoundingModeRTEFloat16; out_ext->shaderRoundingModeRTEFloat32 = in_ext->shaderRoundingModeRTEFloat32; out_ext->shaderRoundingModeRTEFloat64 = in_ext->shaderRoundingModeRTEFloat64; out_ext->shaderRoundingModeRTZFloat16 = in_ext->shaderRoundingModeRTZFloat16; out_ext->shaderRoundingModeRTZFloat32 = in_ext->shaderRoundingModeRTZFloat32; out_ext->shaderRoundingModeRTZFloat64 = in_ext->shaderRoundingModeRTZFloat64; out_ext->maxUpdateAfterBindDescriptorsInAllPools = in_ext->maxUpdateAfterBindDescriptorsInAllPools; out_ext->shaderUniformBufferArrayNonUniformIndexingNative = in_ext->shaderUniformBufferArrayNonUniformIndexingNative; out_ext->shaderSampledImageArrayNonUniformIndexingNative = in_ext->shaderSampledImageArrayNonUniformIndexingNative; out_ext->shaderStorageBufferArrayNonUniformIndexingNative = in_ext->shaderStorageBufferArrayNonUniformIndexingNative; out_ext->shaderStorageImageArrayNonUniformIndexingNative = in_ext->shaderStorageImageArrayNonUniformIndexingNative; out_ext->shaderInputAttachmentArrayNonUniformIndexingNative = in_ext->shaderInputAttachmentArrayNonUniformIndexingNative; out_ext->robustBufferAccessUpdateAfterBind = in_ext->robustBufferAccessUpdateAfterBind; out_ext->quadDivergentImplicitLod = in_ext->quadDivergentImplicitLod; out_ext->maxPerStageDescriptorUpdateAfterBindSamplers = in_ext->maxPerStageDescriptorUpdateAfterBindSamplers; out_ext->maxPerStageDescriptorUpdateAfterBindUniformBuffers = in_ext->maxPerStageDescriptorUpdateAfterBindUniformBuffers; out_ext->maxPerStageDescriptorUpdateAfterBindStorageBuffers = in_ext->maxPerStageDescriptorUpdateAfterBindStorageBuffers; out_ext->maxPerStageDescriptorUpdateAfterBindSampledImages = in_ext->maxPerStageDescriptorUpdateAfterBindSampledImages; out_ext->maxPerStageDescriptorUpdateAfterBindStorageImages = in_ext->maxPerStageDescriptorUpdateAfterBindStorageImages; out_ext->maxPerStageDescriptorUpdateAfterBindInputAttachments = in_ext->maxPerStageDescriptorUpdateAfterBindInputAttachments; out_ext->maxPerStageUpdateAfterBindResources = in_ext->maxPerStageUpdateAfterBindResources; out_ext->maxDescriptorSetUpdateAfterBindSamplers = in_ext->maxDescriptorSetUpdateAfterBindSamplers; out_ext->maxDescriptorSetUpdateAfterBindUniformBuffers = in_ext->maxDescriptorSetUpdateAfterBindUniformBuffers; out_ext->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = in_ext->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; out_ext->maxDescriptorSetUpdateAfterBindStorageBuffers = in_ext->maxDescriptorSetUpdateAfterBindStorageBuffers; out_ext->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = in_ext->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; out_ext->maxDescriptorSetUpdateAfterBindSampledImages = in_ext->maxDescriptorSetUpdateAfterBindSampledImages; out_ext->maxDescriptorSetUpdateAfterBindStorageImages = in_ext->maxDescriptorSetUpdateAfterBindStorageImages; out_ext->maxDescriptorSetUpdateAfterBindInputAttachments = in_ext->maxDescriptorSetUpdateAfterBindInputAttachments; out_ext->supportedDepthResolveModes = in_ext->supportedDepthResolveModes; out_ext->supportedStencilResolveModes = in_ext->supportedStencilResolveModes; out_ext->independentResolveNone = in_ext->independentResolveNone; out_ext->independentResolve = in_ext->independentResolve; out_ext->filterMinmaxSingleComponentFormats = in_ext->filterMinmaxSingleComponentFormats; out_ext->filterMinmaxImageComponentMapping = in_ext->filterMinmaxImageComponentMapping; out_ext->maxTimelineSemaphoreValueDifference = in_ext->maxTimelineSemaphoreValueDifference; out_ext->framebufferIntegerColorSampleCounts = in_ext->framebufferIntegerColorSampleCounts; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: { VkPhysicalDeviceVulkan13Properties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES); const VkPhysicalDeviceVulkan13Properties *in_ext = (const VkPhysicalDeviceVulkan13Properties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES; out_ext->minSubgroupSize = in_ext->minSubgroupSize; out_ext->maxSubgroupSize = in_ext->maxSubgroupSize; out_ext->maxComputeWorkgroupSubgroups = in_ext->maxComputeWorkgroupSubgroups; out_ext->requiredSubgroupSizeStages = in_ext->requiredSubgroupSizeStages; out_ext->maxInlineUniformBlockSize = in_ext->maxInlineUniformBlockSize; out_ext->maxPerStageDescriptorInlineUniformBlocks = in_ext->maxPerStageDescriptorInlineUniformBlocks; out_ext->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = in_ext->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; out_ext->maxDescriptorSetInlineUniformBlocks = in_ext->maxDescriptorSetInlineUniformBlocks; out_ext->maxDescriptorSetUpdateAfterBindInlineUniformBlocks = in_ext->maxDescriptorSetUpdateAfterBindInlineUniformBlocks; out_ext->maxInlineUniformTotalSize = in_ext->maxInlineUniformTotalSize; out_ext->integerDotProduct8BitUnsignedAccelerated = in_ext->integerDotProduct8BitUnsignedAccelerated; out_ext->integerDotProduct8BitSignedAccelerated = in_ext->integerDotProduct8BitSignedAccelerated; out_ext->integerDotProduct8BitMixedSignednessAccelerated = in_ext->integerDotProduct8BitMixedSignednessAccelerated; out_ext->integerDotProduct4x8BitPackedUnsignedAccelerated = in_ext->integerDotProduct4x8BitPackedUnsignedAccelerated; out_ext->integerDotProduct4x8BitPackedSignedAccelerated = in_ext->integerDotProduct4x8BitPackedSignedAccelerated; out_ext->integerDotProduct4x8BitPackedMixedSignednessAccelerated = in_ext->integerDotProduct4x8BitPackedMixedSignednessAccelerated; out_ext->integerDotProduct16BitUnsignedAccelerated = in_ext->integerDotProduct16BitUnsignedAccelerated; out_ext->integerDotProduct16BitSignedAccelerated = in_ext->integerDotProduct16BitSignedAccelerated; out_ext->integerDotProduct16BitMixedSignednessAccelerated = in_ext->integerDotProduct16BitMixedSignednessAccelerated; out_ext->integerDotProduct32BitUnsignedAccelerated = in_ext->integerDotProduct32BitUnsignedAccelerated; out_ext->integerDotProduct32BitSignedAccelerated = in_ext->integerDotProduct32BitSignedAccelerated; out_ext->integerDotProduct32BitMixedSignednessAccelerated = in_ext->integerDotProduct32BitMixedSignednessAccelerated; out_ext->integerDotProduct64BitUnsignedAccelerated = in_ext->integerDotProduct64BitUnsignedAccelerated; out_ext->integerDotProduct64BitSignedAccelerated = in_ext->integerDotProduct64BitSignedAccelerated; out_ext->integerDotProduct64BitMixedSignednessAccelerated = in_ext->integerDotProduct64BitMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating8BitSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating8BitSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating16BitSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating16BitSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating32BitSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating32BitSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating64BitSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating64BitSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; out_ext->storageTexelBufferOffsetAlignmentBytes = in_ext->storageTexelBufferOffsetAlignmentBytes; out_ext->storageTexelBufferOffsetSingleTexelAlignment = in_ext->storageTexelBufferOffsetSingleTexelAlignment; out_ext->uniformTexelBufferOffsetAlignmentBytes = in_ext->uniformTexelBufferOffsetAlignmentBytes; out_ext->uniformTexelBufferOffsetSingleTexelAlignment = in_ext->uniformTexelBufferOffsetSingleTexelAlignment; out_ext->maxBufferSize = in_ext->maxBufferSize; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: { VkPhysicalDeviceCustomBorderColorPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT); const VkPhysicalDeviceCustomBorderColorPropertiesEXT *in_ext = (const VkPhysicalDeviceCustomBorderColorPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT; out_ext->maxCustomBorderColorSamplers = in_ext->maxCustomBorderColorSamplers; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT: { VkPhysicalDeviceExtendedDynamicState3PropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT); const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *in_ext = (const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT; out_ext->dynamicPrimitiveTopologyUnrestricted = in_ext->dynamicPrimitiveTopologyUnrestricted; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: { VkPhysicalDeviceRobustness2PropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT); const VkPhysicalDeviceRobustness2PropertiesEXT *in_ext = (const VkPhysicalDeviceRobustness2PropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT; out_ext->robustStorageBufferAccessSizeAlignment = in_ext->robustStorageBufferAccessSizeAlignment; out_ext->robustUniformBufferAccessSizeAlignment = in_ext->robustUniformBufferAccessSizeAlignment; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR: { VkPhysicalDeviceFragmentShadingRatePropertiesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR); const VkPhysicalDeviceFragmentShadingRatePropertiesKHR *in_ext = (const VkPhysicalDeviceFragmentShadingRatePropertiesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR; out_ext->minFragmentShadingRateAttachmentTexelSize = in_ext->minFragmentShadingRateAttachmentTexelSize; out_ext->maxFragmentShadingRateAttachmentTexelSize = in_ext->maxFragmentShadingRateAttachmentTexelSize; out_ext->maxFragmentShadingRateAttachmentTexelSizeAspectRatio = in_ext->maxFragmentShadingRateAttachmentTexelSizeAspectRatio; out_ext->primitiveFragmentShadingRateWithMultipleViewports = in_ext->primitiveFragmentShadingRateWithMultipleViewports; out_ext->layeredShadingRateAttachments = in_ext->layeredShadingRateAttachments; out_ext->fragmentShadingRateNonTrivialCombinerOps = in_ext->fragmentShadingRateNonTrivialCombinerOps; out_ext->maxFragmentSize = in_ext->maxFragmentSize; out_ext->maxFragmentSizeAspectRatio = in_ext->maxFragmentSizeAspectRatio; out_ext->maxFragmentShadingRateCoverageSamples = in_ext->maxFragmentShadingRateCoverageSamples; out_ext->maxFragmentShadingRateRasterizationSamples = in_ext->maxFragmentShadingRateRasterizationSamples; out_ext->fragmentShadingRateWithShaderDepthStencilWrites = in_ext->fragmentShadingRateWithShaderDepthStencilWrites; out_ext->fragmentShadingRateWithSampleMask = in_ext->fragmentShadingRateWithSampleMask; out_ext->fragmentShadingRateWithShaderSampleMask = in_ext->fragmentShadingRateWithShaderSampleMask; out_ext->fragmentShadingRateWithConservativeRasterization = in_ext->fragmentShadingRateWithConservativeRasterization; out_ext->fragmentShadingRateWithFragmentShaderInterlock = in_ext->fragmentShadingRateWithFragmentShaderInterlock; out_ext->fragmentShadingRateWithCustomSampleLocations = in_ext->fragmentShadingRateWithCustomSampleLocations; out_ext->fragmentShadingRateStrictMultiplyCombiner = in_ext->fragmentShadingRateStrictMultiplyCombiner; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV: { VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV); const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *in_ext = (const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV; out_ext->maxFragmentShadingRateInvocationCount = in_ext->maxFragmentShadingRateInvocationCount; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: { VkPhysicalDeviceProvokingVertexPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT); const VkPhysicalDeviceProvokingVertexPropertiesEXT *in_ext = (const VkPhysicalDeviceProvokingVertexPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT; out_ext->provokingVertexModePerPipeline = in_ext->provokingVertexModePerPipeline; out_ext->transformFeedbackPreservesTriangleFanProvokingVertex = in_ext->transformFeedbackPreservesTriangleFanProvokingVertex; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT: { VkPhysicalDeviceDescriptorBufferPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT); const VkPhysicalDeviceDescriptorBufferPropertiesEXT *in_ext = (const VkPhysicalDeviceDescriptorBufferPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT; out_ext->combinedImageSamplerDescriptorSingleArray = in_ext->combinedImageSamplerDescriptorSingleArray; out_ext->bufferlessPushDescriptors = in_ext->bufferlessPushDescriptors; out_ext->allowSamplerImageViewPostSubmitCreation = in_ext->allowSamplerImageViewPostSubmitCreation; out_ext->descriptorBufferOffsetAlignment = in_ext->descriptorBufferOffsetAlignment; out_ext->maxDescriptorBufferBindings = in_ext->maxDescriptorBufferBindings; out_ext->maxResourceDescriptorBufferBindings = in_ext->maxResourceDescriptorBufferBindings; out_ext->maxSamplerDescriptorBufferBindings = in_ext->maxSamplerDescriptorBufferBindings; out_ext->maxEmbeddedImmutableSamplerBindings = in_ext->maxEmbeddedImmutableSamplerBindings; out_ext->maxEmbeddedImmutableSamplers = in_ext->maxEmbeddedImmutableSamplers; out_ext->bufferCaptureReplayDescriptorDataSize = in_ext->bufferCaptureReplayDescriptorDataSize; out_ext->imageCaptureReplayDescriptorDataSize = in_ext->imageCaptureReplayDescriptorDataSize; out_ext->imageViewCaptureReplayDescriptorDataSize = in_ext->imageViewCaptureReplayDescriptorDataSize; out_ext->samplerCaptureReplayDescriptorDataSize = in_ext->samplerCaptureReplayDescriptorDataSize; out_ext->accelerationStructureCaptureReplayDescriptorDataSize = in_ext->accelerationStructureCaptureReplayDescriptorDataSize; out_ext->samplerDescriptorSize = in_ext->samplerDescriptorSize; out_ext->combinedImageSamplerDescriptorSize = in_ext->combinedImageSamplerDescriptorSize; out_ext->sampledImageDescriptorSize = in_ext->sampledImageDescriptorSize; out_ext->storageImageDescriptorSize = in_ext->storageImageDescriptorSize; out_ext->uniformTexelBufferDescriptorSize = in_ext->uniformTexelBufferDescriptorSize; out_ext->robustUniformTexelBufferDescriptorSize = in_ext->robustUniformTexelBufferDescriptorSize; out_ext->storageTexelBufferDescriptorSize = in_ext->storageTexelBufferDescriptorSize; out_ext->robustStorageTexelBufferDescriptorSize = in_ext->robustStorageTexelBufferDescriptorSize; out_ext->uniformBufferDescriptorSize = in_ext->uniformBufferDescriptorSize; out_ext->robustUniformBufferDescriptorSize = in_ext->robustUniformBufferDescriptorSize; out_ext->storageBufferDescriptorSize = in_ext->storageBufferDescriptorSize; out_ext->robustStorageBufferDescriptorSize = in_ext->robustStorageBufferDescriptorSize; out_ext->inputAttachmentDescriptorSize = in_ext->inputAttachmentDescriptorSize; out_ext->accelerationStructureDescriptorSize = in_ext->accelerationStructureDescriptorSize; out_ext->maxSamplerDescriptorBufferRange = in_ext->maxSamplerDescriptorBufferRange; out_ext->maxResourceDescriptorBufferRange = in_ext->maxResourceDescriptorBufferRange; out_ext->samplerDescriptorBufferAddressSpaceSize = in_ext->samplerDescriptorBufferAddressSpaceSize; out_ext->resourceDescriptorBufferAddressSpaceSize = in_ext->resourceDescriptorBufferAddressSpaceSize; out_ext->descriptorBufferAddressSpaceSize = in_ext->descriptorBufferAddressSpaceSize; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT: { VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT); const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *in_ext = (const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT; out_ext->combinedImageSamplerDensityMapDescriptorSize = in_ext->combinedImageSamplerDensityMapDescriptorSize; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: { VkPhysicalDeviceShaderIntegerDotProductProperties32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES); const VkPhysicalDeviceShaderIntegerDotProductProperties *in_ext = (const VkPhysicalDeviceShaderIntegerDotProductProperties *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES; out_ext->integerDotProduct8BitUnsignedAccelerated = in_ext->integerDotProduct8BitUnsignedAccelerated; out_ext->integerDotProduct8BitSignedAccelerated = in_ext->integerDotProduct8BitSignedAccelerated; out_ext->integerDotProduct8BitMixedSignednessAccelerated = in_ext->integerDotProduct8BitMixedSignednessAccelerated; out_ext->integerDotProduct4x8BitPackedUnsignedAccelerated = in_ext->integerDotProduct4x8BitPackedUnsignedAccelerated; out_ext->integerDotProduct4x8BitPackedSignedAccelerated = in_ext->integerDotProduct4x8BitPackedSignedAccelerated; out_ext->integerDotProduct4x8BitPackedMixedSignednessAccelerated = in_ext->integerDotProduct4x8BitPackedMixedSignednessAccelerated; out_ext->integerDotProduct16BitUnsignedAccelerated = in_ext->integerDotProduct16BitUnsignedAccelerated; out_ext->integerDotProduct16BitSignedAccelerated = in_ext->integerDotProduct16BitSignedAccelerated; out_ext->integerDotProduct16BitMixedSignednessAccelerated = in_ext->integerDotProduct16BitMixedSignednessAccelerated; out_ext->integerDotProduct32BitUnsignedAccelerated = in_ext->integerDotProduct32BitUnsignedAccelerated; out_ext->integerDotProduct32BitSignedAccelerated = in_ext->integerDotProduct32BitSignedAccelerated; out_ext->integerDotProduct32BitMixedSignednessAccelerated = in_ext->integerDotProduct32BitMixedSignednessAccelerated; out_ext->integerDotProduct64BitUnsignedAccelerated = in_ext->integerDotProduct64BitUnsignedAccelerated; out_ext->integerDotProduct64BitSignedAccelerated = in_ext->integerDotProduct64BitSignedAccelerated; out_ext->integerDotProduct64BitMixedSignednessAccelerated = in_ext->integerDotProduct64BitMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating8BitSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating8BitSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating16BitSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating16BitSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating32BitSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating32BitSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; out_ext->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = in_ext->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; out_ext->integerDotProductAccumulatingSaturating64BitSignedAccelerated = in_ext->integerDotProductAccumulatingSaturating64BitSignedAccelerated; out_ext->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = in_ext->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR: { VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR); const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *in_ext = (const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR; out_ext->triStripVertexOrderIndependentOfProvokingVertex = in_ext->triStripVertexOrderIndependentOfProvokingVertex; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: { VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT); const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *in_ext = (const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT; out_ext->graphicsPipelineLibraryFastLinking = in_ext->graphicsPipelineLibraryFastLinking; out_ext->graphicsPipelineLibraryIndependentInterpolationDecoration = in_ext->graphicsPipelineLibraryIndependentInterpolationDecoration; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT: { VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT); const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *in_ext = (const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT; memcpy(out_ext->shaderModuleIdentifierAlgorithmUUID, in_ext->shaderModuleIdentifierAlgorithmUUID, VK_UUID_SIZE * sizeof(uint8_t)); out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT: { VkPhysicalDeviceOpacityMicromapPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT); const VkPhysicalDeviceOpacityMicromapPropertiesEXT *in_ext = (const VkPhysicalDeviceOpacityMicromapPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT; out_ext->maxOpacity2StateSubdivisionLevel = in_ext->maxOpacity2StateSubdivisionLevel; out_ext->maxOpacity4StateSubdivisionLevel = in_ext->maxOpacity4StateSubdivisionLevel; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT: { VkPhysicalDevicePipelineRobustnessPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT); const VkPhysicalDevicePipelineRobustnessPropertiesEXT *in_ext = (const VkPhysicalDevicePipelineRobustnessPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT; 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_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM: { VkPhysicalDeviceImageProcessingPropertiesQCOM32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM); const VkPhysicalDeviceImageProcessingPropertiesQCOM *in_ext = (const VkPhysicalDeviceImageProcessingPropertiesQCOM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM; out_ext->maxWeightFilterPhases = in_ext->maxWeightFilterPhases; out_ext->maxWeightFilterDimension = in_ext->maxWeightFilterDimension; out_ext->maxBlockMatchRegion = in_ext->maxBlockMatchRegion; out_ext->maxBoxFilterBlockSize = in_ext->maxBoxFilterBlockSize; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV: { VkPhysicalDeviceOpticalFlowPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV); const VkPhysicalDeviceOpticalFlowPropertiesNV *in_ext = (const VkPhysicalDeviceOpticalFlowPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV; out_ext->supportedOutputGridSizes = in_ext->supportedOutputGridSizes; out_ext->supportedHintGridSizes = in_ext->supportedHintGridSizes; out_ext->hintSupported = in_ext->hintSupported; out_ext->costSupported = in_ext->costSupported; out_ext->bidirectionalFlowSupported = in_ext->bidirectionalFlowSupported; out_ext->globalFlowSupported = in_ext->globalFlowSupported; out_ext->minWidth = in_ext->minWidth; out_ext->minHeight = in_ext->minHeight; out_ext->maxWidth = in_ext->maxWidth; out_ext->maxHeight = in_ext->maxHeight; out_ext->maxNumRegionsOfInterest = in_ext->maxNumRegionsOfInterest; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM: { VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM); const VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM *in_ext = (const VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM; out_ext->shaderCoreMask = in_ext->shaderCoreMask; out_ext->shaderCoreCount = in_ext->shaderCoreCount; out_ext->shaderWarpsPerCore = in_ext->shaderWarpsPerCore; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV: { VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV); const VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV *in_ext = (const VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV; out_ext->rayTracingInvocationReorderReorderingHint = in_ext->rayTracingInvocationReorderReorderingHint; out_header = (void *)out_ext; break; } default: break; } } } static inline void convert_VkQueryPoolPerformanceCreateInfoKHR_win32_to_host(const VkQueryPoolPerformanceCreateInfoKHR32 *in, VkQueryPoolPerformanceCreateInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->queueFamilyIndex = in->queueFamilyIndex; out->counterIndexCount = in->counterIndexCount; out->pCounterIndices = (const uint32_t *)UlongToPtr(in->pCounterIndices); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkQueueFamilyProperties2_win32_to_host(struct conversion_context *ctx, const VkQueueFamilyProperties232 *in, VkQueueFamilyProperties2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR: { VkQueueFamilyGlobalPriorityPropertiesKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkQueueFamilyGlobalPriorityPropertiesKHR32 *in_ext = (const VkQueueFamilyGlobalPriorityPropertiesKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR; out_ext->pNext = NULL; out_ext->priorityCount = in_ext->priorityCount; memcpy(out_ext->priorities, in_ext->priorities, VK_MAX_GLOBAL_PRIORITY_SIZE_KHR * sizeof(VkQueueGlobalPriorityKHR)); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: { VkQueueFamilyCheckpointPropertiesNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: { VkQueueFamilyCheckpointProperties2NV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkQueueFamilyProperties2_host_to_win32(const VkQueueFamilyProperties2 *in, VkQueueFamilyProperties232 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; out->queueFamilyProperties = in->queueFamilyProperties; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR: { VkQueueFamilyGlobalPriorityPropertiesKHR32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR); const VkQueueFamilyGlobalPriorityPropertiesKHR *in_ext = (const VkQueueFamilyGlobalPriorityPropertiesKHR *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR; out_ext->priorityCount = in_ext->priorityCount; memcpy(out_ext->priorities, in_ext->priorities, VK_MAX_GLOBAL_PRIORITY_SIZE_KHR * sizeof(VkQueueGlobalPriorityKHR)); out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: { VkQueueFamilyCheckpointPropertiesNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV); const VkQueueFamilyCheckpointPropertiesNV *in_ext = (const VkQueueFamilyCheckpointPropertiesNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV; out_ext->checkpointExecutionStageMask = in_ext->checkpointExecutionStageMask; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: { VkQueueFamilyCheckpointProperties2NV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV); const VkQueueFamilyCheckpointProperties2NV *in_ext = (const VkQueueFamilyCheckpointProperties2NV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV; out_ext->checkpointExecutionStageMask = in_ext->checkpointExecutionStageMask; out_header = (void *)out_ext; break; } default: break; } } } static inline VkQueueFamilyProperties2 *convert_VkQueueFamilyProperties2_array_win32_to_host(struct conversion_context *ctx, const VkQueueFamilyProperties232 *in, uint32_t count) { VkQueueFamilyProperties2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkQueueFamilyProperties2_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkQueueFamilyProperties2_array_host_to_win32(const VkQueueFamilyProperties2 *in, VkQueueFamilyProperties232 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkQueueFamilyProperties2_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPhysicalDeviceSparseImageFormatInfo2_win32_to_host(const VkPhysicalDeviceSparseImageFormatInfo232 *in, VkPhysicalDeviceSparseImageFormatInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->format = in->format; out->type = in->type; out->samples = in->samples; out->usage = in->usage; out->tiling = in->tiling; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSparseImageFormatProperties2_win32_to_host(const VkSparseImageFormatProperties232 *in, VkSparseImageFormatProperties2 *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSparseImageFormatProperties2_host_to_win32(const VkSparseImageFormatProperties2 *in, VkSparseImageFormatProperties232 *out) { if (!in) return; out->properties = in->properties; } static inline VkSparseImageFormatProperties2 *convert_VkSparseImageFormatProperties2_array_win32_to_host(struct conversion_context *ctx, const VkSparseImageFormatProperties232 *in, uint32_t count) { VkSparseImageFormatProperties2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseImageFormatProperties2_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkSparseImageFormatProperties2_array_host_to_win32(const VkSparseImageFormatProperties2 *in, VkSparseImageFormatProperties232 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkSparseImageFormatProperties2_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkFramebufferMixedSamplesCombinationNV_win32_to_host(const VkFramebufferMixedSamplesCombinationNV32 *in, VkFramebufferMixedSamplesCombinationNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkFramebufferMixedSamplesCombinationNV_host_to_win32(const VkFramebufferMixedSamplesCombinationNV *in, VkFramebufferMixedSamplesCombinationNV32 *out) { if (!in) return; out->coverageReductionMode = in->coverageReductionMode; out->rasterizationSamples = in->rasterizationSamples; out->depthStencilSamples = in->depthStencilSamples; out->colorSamples = in->colorSamples; } static inline VkFramebufferMixedSamplesCombinationNV *convert_VkFramebufferMixedSamplesCombinationNV_array_win32_to_host(struct conversion_context *ctx, const VkFramebufferMixedSamplesCombinationNV32 *in, uint32_t count) { VkFramebufferMixedSamplesCombinationNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkFramebufferMixedSamplesCombinationNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkFramebufferMixedSamplesCombinationNV_array_host_to_win32(const VkFramebufferMixedSamplesCombinationNV *in, VkFramebufferMixedSamplesCombinationNV32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkFramebufferMixedSamplesCombinationNV_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_unwrapped_host(const VkPhysicalDeviceSurfaceInfo2KHR32 *in, VkPhysicalDeviceSurfaceInfo2KHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->surface = in->surface; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSurfaceCapabilities2KHR_win32_to_host(struct conversion_context *ctx, const VkSurfaceCapabilities2KHR32 *in, VkSurfaceCapabilities2KHR *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV: { VkSurfaceCapabilitiesPresentBarrierNV *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkSurfaceCapabilities2KHR_host_to_win32(const VkSurfaceCapabilities2KHR *in, VkSurfaceCapabilities2KHR32 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; out->surfaceCapabilities = in->surfaceCapabilities; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV: { VkSurfaceCapabilitiesPresentBarrierNV32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV); const VkSurfaceCapabilitiesPresentBarrierNV *in_ext = (const VkSurfaceCapabilitiesPresentBarrierNV *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV; out_ext->presentBarrierSupported = in_ext->presentBarrierSupported; out_header = (void *)out_ext; break; } default: break; } } } #ifdef _WIN64 static inline void convert_VkPhysicalDeviceSurfaceInfo2KHR_win64_to_host(const VkPhysicalDeviceSurfaceInfo2KHR *in, VkPhysicalDeviceSurfaceInfo2KHR *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->surface = in->surface ? wine_surface_from_handle(in->surface)->driver_surface : 0; } #endif /* _WIN64 */ static inline void convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_host(const VkPhysicalDeviceSurfaceInfo2KHR32 *in, VkPhysicalDeviceSurfaceInfo2KHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->surface = in->surface ? wine_surface_from_handle(in->surface)->driver_surface : 0; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSurfaceFormat2KHR_win32_to_host(struct conversion_context *ctx, const VkSurfaceFormat2KHR32 *in, VkSurfaceFormat2KHR *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: { VkImageCompressionPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT; out_ext->pNext = NULL; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkSurfaceFormat2KHR_host_to_win32(const VkSurfaceFormat2KHR *in, VkSurfaceFormat2KHR32 *out) { const VkBaseInStructure *in_header; VkBaseOutStructure32 *out_header = (void *)out; if (!in) return; out->surfaceFormat = in->surfaceFormat; for (in_header = (void *)in->pNext; in_header; in_header = (void *)in_header->pNext) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: { VkImageCompressionPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT); const VkImageCompressionPropertiesEXT *in_ext = (const VkImageCompressionPropertiesEXT *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT; out_ext->imageCompressionFlags = in_ext->imageCompressionFlags; out_ext->imageCompressionFixedRateFlags = in_ext->imageCompressionFixedRateFlags; out_header = (void *)out_ext; break; } default: break; } } } static inline VkSurfaceFormat2KHR *convert_VkSurfaceFormat2KHR_array_win32_to_host(struct conversion_context *ctx, const VkSurfaceFormat2KHR32 *in, uint32_t count) { VkSurfaceFormat2KHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSurfaceFormat2KHR_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkSurfaceFormat2KHR_array_host_to_win32(const VkSurfaceFormat2KHR *in, VkSurfaceFormat2KHR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkSurfaceFormat2KHR_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPhysicalDeviceToolProperties_win32_to_host(const VkPhysicalDeviceToolProperties32 *in, VkPhysicalDeviceToolProperties *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPhysicalDeviceToolProperties_host_to_win32(const VkPhysicalDeviceToolProperties *in, VkPhysicalDeviceToolProperties32 *out) { if (!in) return; memcpy(out->name, in->name, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char)); memcpy(out->version, in->version, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char)); out->purposes = in->purposes; memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); memcpy(out->layer, in->layer, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char)); } static inline VkPhysicalDeviceToolProperties *convert_VkPhysicalDeviceToolProperties_array_win32_to_host(struct conversion_context *ctx, const VkPhysicalDeviceToolProperties32 *in, uint32_t count) { VkPhysicalDeviceToolProperties *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPhysicalDeviceToolProperties_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPhysicalDeviceToolProperties_array_host_to_win32(const VkPhysicalDeviceToolProperties *in, VkPhysicalDeviceToolProperties32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPhysicalDeviceToolProperties_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPipelineExecutableInfoKHR_win32_to_host(const VkPipelineExecutableInfoKHR32 *in, VkPipelineExecutableInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pipeline = in->pipeline; out->executableIndex = in->executableIndex; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPipelineExecutableInternalRepresentationKHR_win32_to_host(const VkPipelineExecutableInternalRepresentationKHR32 *in, VkPipelineExecutableInternalRepresentationKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPipelineExecutableInternalRepresentationKHR_host_to_win32(const VkPipelineExecutableInternalRepresentationKHR *in, VkPipelineExecutableInternalRepresentationKHR32 *out) { if (!in) return; memcpy(out->name, in->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); out->isText = in->isText; out->dataSize = in->dataSize; out->pData = PtrToUlong(in->pData); } static inline VkPipelineExecutableInternalRepresentationKHR *convert_VkPipelineExecutableInternalRepresentationKHR_array_win32_to_host(struct conversion_context *ctx, const VkPipelineExecutableInternalRepresentationKHR32 *in, uint32_t count) { VkPipelineExecutableInternalRepresentationKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineExecutableInternalRepresentationKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPipelineExecutableInternalRepresentationKHR_array_host_to_win32(const VkPipelineExecutableInternalRepresentationKHR *in, VkPipelineExecutableInternalRepresentationKHR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPipelineExecutableInternalRepresentationKHR_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPipelineInfoKHR_win32_to_host(const VkPipelineInfoKHR32 *in, VkPipelineInfoKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pipeline = in->pipeline; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPipelineExecutablePropertiesKHR_win32_to_host(const VkPipelineExecutablePropertiesKHR32 *in, VkPipelineExecutablePropertiesKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPipelineExecutablePropertiesKHR_host_to_win32(const VkPipelineExecutablePropertiesKHR *in, VkPipelineExecutablePropertiesKHR32 *out) { if (!in) return; out->stages = in->stages; memcpy(out->name, in->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); out->subgroupSize = in->subgroupSize; } static inline VkPipelineExecutablePropertiesKHR *convert_VkPipelineExecutablePropertiesKHR_array_win32_to_host(struct conversion_context *ctx, const VkPipelineExecutablePropertiesKHR32 *in, uint32_t count) { VkPipelineExecutablePropertiesKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineExecutablePropertiesKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPipelineExecutablePropertiesKHR_array_host_to_win32(const VkPipelineExecutablePropertiesKHR *in, VkPipelineExecutablePropertiesKHR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPipelineExecutablePropertiesKHR_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPipelineExecutableStatisticValueKHR_host_to_win32(const VkPipelineExecutableStatisticValueKHR *in, VkPipelineExecutableStatisticValueKHR32 *out, VkFlags selector) { if (!in) return; if (selector == VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR) out->b32 = in->b32; if (selector == VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR) out->i64 = in->i64; if (selector == VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR) out->u64 = in->u64; if (selector == VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR) out->f64 = in->f64; } static inline void convert_VkPipelineExecutableStatisticKHR_win32_to_host(const VkPipelineExecutableStatisticKHR32 *in, VkPipelineExecutableStatisticKHR *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkPipelineExecutableStatisticKHR_host_to_win32(const VkPipelineExecutableStatisticKHR *in, VkPipelineExecutableStatisticKHR32 *out) { if (!in) return; memcpy(out->name, in->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); memcpy(out->description, in->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)); out->format = in->format; convert_VkPipelineExecutableStatisticValueKHR_host_to_win32(&in->value, &out->value, in->format); } static inline VkPipelineExecutableStatisticKHR *convert_VkPipelineExecutableStatisticKHR_array_win32_to_host(struct conversion_context *ctx, const VkPipelineExecutableStatisticKHR32 *in, uint32_t count) { VkPipelineExecutableStatisticKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPipelineExecutableStatisticKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPipelineExecutableStatisticKHR_array_host_to_win32(const VkPipelineExecutableStatisticKHR *in, VkPipelineExecutableStatisticKHR32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkPipelineExecutableStatisticKHR_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkPipelineInfoEXT_win32_to_host(const VkPipelineInfoEXT32 *in, VkPipelineInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pipeline = in->pipeline; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCheckpointData2NV_win32_to_host(const VkCheckpointData2NV32 *in, VkCheckpointData2NV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCheckpointData2NV_host_to_win32(const VkCheckpointData2NV *in, VkCheckpointData2NV32 *out) { if (!in) return; out->stage = in->stage; out->pCheckpointMarker = PtrToUlong(in->pCheckpointMarker); } static inline VkCheckpointData2NV *convert_VkCheckpointData2NV_array_win32_to_host(struct conversion_context *ctx, const VkCheckpointData2NV32 *in, uint32_t count) { VkCheckpointData2NV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCheckpointData2NV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkCheckpointData2NV_array_host_to_win32(const VkCheckpointData2NV *in, VkCheckpointData2NV32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkCheckpointData2NV_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkCheckpointDataNV_win32_to_host(const VkCheckpointDataNV32 *in, VkCheckpointDataNV *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkCheckpointDataNV_host_to_win32(const VkCheckpointDataNV *in, VkCheckpointDataNV32 *out) { if (!in) return; out->stage = in->stage; out->pCheckpointMarker = PtrToUlong(in->pCheckpointMarker); } static inline VkCheckpointDataNV *convert_VkCheckpointDataNV_array_win32_to_host(struct conversion_context *ctx, const VkCheckpointDataNV32 *in, uint32_t count) { VkCheckpointDataNV *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCheckpointDataNV_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkCheckpointDataNV_array_host_to_win32(const VkCheckpointDataNV *in, VkCheckpointDataNV32 *out, uint32_t count) { unsigned int i; if (!in) return; for (i = 0; i < count; i++) { convert_VkCheckpointDataNV_host_to_win32(&in[i], &out[i]); } } static inline void convert_VkSamplerCaptureDescriptorDataInfoEXT_win32_to_host(const VkSamplerCaptureDescriptorDataInfoEXT32 *in, VkSamplerCaptureDescriptorDataInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->sampler = in->sampler; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkShaderModuleIdentifierEXT_win32_to_host(const VkShaderModuleIdentifierEXT32 *in, VkShaderModuleIdentifierEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkShaderModuleIdentifierEXT_host_to_win32(const VkShaderModuleIdentifierEXT *in, VkShaderModuleIdentifierEXT32 *out) { if (!in) return; out->identifierSize = in->identifierSize; memcpy(out->identifier, in->identifier, VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT * sizeof(uint8_t)); } static inline void convert_VkInitializePerformanceApiInfoINTEL_win32_to_host(const VkInitializePerformanceApiInfoINTEL32 *in, VkInitializePerformanceApiInfoINTEL *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->pUserData = (void *)UlongToPtr(in->pUserData); if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline void convert_VkSparseMemoryBind_win64_to_host(const VkSparseMemoryBind *in, VkSparseMemoryBind *out) { if (!in) return; out->resourceOffset = in->resourceOffset; out->size = in->size; out->memory = in->memory ? wine_device_memory_from_handle(in->memory)->memory : 0; out->memoryOffset = in->memoryOffset; out->flags = in->flags; } #endif /* _WIN64 */ static inline void convert_VkSparseMemoryBind_win32_to_host(const VkSparseMemoryBind32 *in, VkSparseMemoryBind *out) { if (!in) return; out->resourceOffset = in->resourceOffset; out->size = in->size; out->memory = in->memory ? wine_device_memory_from_handle(in->memory)->memory : 0; out->memoryOffset = in->memoryOffset; out->flags = in->flags; } #ifdef _WIN64 static inline const VkSparseMemoryBind *convert_VkSparseMemoryBind_array_win64_to_host(struct conversion_context *ctx, const VkSparseMemoryBind *in, uint32_t count) { VkSparseMemoryBind *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseMemoryBind_win64_to_host(&in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkSparseMemoryBind *convert_VkSparseMemoryBind_array_win32_to_host(struct conversion_context *ctx, const VkSparseMemoryBind32 *in, uint32_t count) { VkSparseMemoryBind *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseMemoryBind_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkSparseBufferMemoryBindInfo_win64_to_host(struct conversion_context *ctx, const VkSparseBufferMemoryBindInfo *in, VkSparseBufferMemoryBindInfo *out) { if (!in) return; out->buffer = in->buffer; out->bindCount = in->bindCount; out->pBinds = convert_VkSparseMemoryBind_array_win64_to_host(ctx, in->pBinds, in->bindCount); } #endif /* _WIN64 */ static inline void convert_VkSparseBufferMemoryBindInfo_win32_to_host(struct conversion_context *ctx, const VkSparseBufferMemoryBindInfo32 *in, VkSparseBufferMemoryBindInfo *out) { if (!in) return; out->buffer = in->buffer; out->bindCount = in->bindCount; out->pBinds = convert_VkSparseMemoryBind_array_win32_to_host(ctx, (const VkSparseMemoryBind32 *)UlongToPtr(in->pBinds), in->bindCount); } #ifdef _WIN64 static inline const VkSparseBufferMemoryBindInfo *convert_VkSparseBufferMemoryBindInfo_array_win64_to_host(struct conversion_context *ctx, const VkSparseBufferMemoryBindInfo *in, uint32_t count) { VkSparseBufferMemoryBindInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseBufferMemoryBindInfo_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkSparseBufferMemoryBindInfo *convert_VkSparseBufferMemoryBindInfo_array_win32_to_host(struct conversion_context *ctx, const VkSparseBufferMemoryBindInfo32 *in, uint32_t count) { VkSparseBufferMemoryBindInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseBufferMemoryBindInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkSparseImageOpaqueMemoryBindInfo_win64_to_host(struct conversion_context *ctx, const VkSparseImageOpaqueMemoryBindInfo *in, VkSparseImageOpaqueMemoryBindInfo *out) { if (!in) return; out->image = in->image; out->bindCount = in->bindCount; out->pBinds = convert_VkSparseMemoryBind_array_win64_to_host(ctx, in->pBinds, in->bindCount); } #endif /* _WIN64 */ static inline void convert_VkSparseImageOpaqueMemoryBindInfo_win32_to_host(struct conversion_context *ctx, const VkSparseImageOpaqueMemoryBindInfo32 *in, VkSparseImageOpaqueMemoryBindInfo *out) { if (!in) return; out->image = in->image; out->bindCount = in->bindCount; out->pBinds = convert_VkSparseMemoryBind_array_win32_to_host(ctx, (const VkSparseMemoryBind32 *)UlongToPtr(in->pBinds), in->bindCount); } #ifdef _WIN64 static inline const VkSparseImageOpaqueMemoryBindInfo *convert_VkSparseImageOpaqueMemoryBindInfo_array_win64_to_host(struct conversion_context *ctx, const VkSparseImageOpaqueMemoryBindInfo *in, uint32_t count) { VkSparseImageOpaqueMemoryBindInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseImageOpaqueMemoryBindInfo_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkSparseImageOpaqueMemoryBindInfo *convert_VkSparseImageOpaqueMemoryBindInfo_array_win32_to_host(struct conversion_context *ctx, const VkSparseImageOpaqueMemoryBindInfo32 *in, uint32_t count) { VkSparseImageOpaqueMemoryBindInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseImageOpaqueMemoryBindInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkSparseImageMemoryBind_win64_to_host(const VkSparseImageMemoryBind *in, VkSparseImageMemoryBind *out) { if (!in) return; out->subresource = in->subresource; out->offset = in->offset; out->extent = in->extent; out->memory = in->memory ? wine_device_memory_from_handle(in->memory)->memory : 0; out->memoryOffset = in->memoryOffset; out->flags = in->flags; } #endif /* _WIN64 */ static inline void convert_VkSparseImageMemoryBind_win32_to_host(const VkSparseImageMemoryBind32 *in, VkSparseImageMemoryBind *out) { if (!in) return; out->subresource = in->subresource; out->offset = in->offset; out->extent = in->extent; out->memory = in->memory ? wine_device_memory_from_handle(in->memory)->memory : 0; out->memoryOffset = in->memoryOffset; out->flags = in->flags; } #ifdef _WIN64 static inline const VkSparseImageMemoryBind *convert_VkSparseImageMemoryBind_array_win64_to_host(struct conversion_context *ctx, const VkSparseImageMemoryBind *in, uint32_t count) { VkSparseImageMemoryBind *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseImageMemoryBind_win64_to_host(&in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkSparseImageMemoryBind *convert_VkSparseImageMemoryBind_array_win32_to_host(struct conversion_context *ctx, const VkSparseImageMemoryBind32 *in, uint32_t count) { VkSparseImageMemoryBind *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseImageMemoryBind_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkSparseImageMemoryBindInfo_win64_to_host(struct conversion_context *ctx, const VkSparseImageMemoryBindInfo *in, VkSparseImageMemoryBindInfo *out) { if (!in) return; out->image = in->image; out->bindCount = in->bindCount; out->pBinds = convert_VkSparseImageMemoryBind_array_win64_to_host(ctx, in->pBinds, in->bindCount); } #endif /* _WIN64 */ static inline void convert_VkSparseImageMemoryBindInfo_win32_to_host(struct conversion_context *ctx, const VkSparseImageMemoryBindInfo32 *in, VkSparseImageMemoryBindInfo *out) { if (!in) return; out->image = in->image; out->bindCount = in->bindCount; out->pBinds = convert_VkSparseImageMemoryBind_array_win32_to_host(ctx, (const VkSparseImageMemoryBind32 *)UlongToPtr(in->pBinds), in->bindCount); } #ifdef _WIN64 static inline const VkSparseImageMemoryBindInfo *convert_VkSparseImageMemoryBindInfo_array_win64_to_host(struct conversion_context *ctx, const VkSparseImageMemoryBindInfo *in, uint32_t count) { VkSparseImageMemoryBindInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseImageMemoryBindInfo_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkSparseImageMemoryBindInfo *convert_VkSparseImageMemoryBindInfo_array_win32_to_host(struct conversion_context *ctx, const VkSparseImageMemoryBindInfo32 *in, uint32_t count) { VkSparseImageMemoryBindInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSparseImageMemoryBindInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkBindSparseInfo_win64_to_host(struct conversion_context *ctx, const VkBindSparseInfo *in, VkBindSparseInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->waitSemaphoreCount = in->waitSemaphoreCount; out->pWaitSemaphores = in->pWaitSemaphores; out->bufferBindCount = in->bufferBindCount; out->pBufferBinds = convert_VkSparseBufferMemoryBindInfo_array_win64_to_host(ctx, in->pBufferBinds, in->bufferBindCount); out->imageOpaqueBindCount = in->imageOpaqueBindCount; out->pImageOpaqueBinds = convert_VkSparseImageOpaqueMemoryBindInfo_array_win64_to_host(ctx, in->pImageOpaqueBinds, in->imageOpaqueBindCount); out->imageBindCount = in->imageBindCount; out->pImageBinds = convert_VkSparseImageMemoryBindInfo_array_win64_to_host(ctx, in->pImageBinds, in->imageBindCount); out->signalSemaphoreCount = in->signalSemaphoreCount; out->pSignalSemaphores = in->pSignalSemaphores; } #endif /* _WIN64 */ static inline void convert_VkBindSparseInfo_win32_to_host(struct conversion_context *ctx, const VkBindSparseInfo32 *in, VkBindSparseInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->waitSemaphoreCount = in->waitSemaphoreCount; out->pWaitSemaphores = (const VkSemaphore *)UlongToPtr(in->pWaitSemaphores); out->bufferBindCount = in->bufferBindCount; out->pBufferBinds = convert_VkSparseBufferMemoryBindInfo_array_win32_to_host(ctx, (const VkSparseBufferMemoryBindInfo32 *)UlongToPtr(in->pBufferBinds), in->bufferBindCount); out->imageOpaqueBindCount = in->imageOpaqueBindCount; out->pImageOpaqueBinds = convert_VkSparseImageOpaqueMemoryBindInfo_array_win32_to_host(ctx, (const VkSparseImageOpaqueMemoryBindInfo32 *)UlongToPtr(in->pImageOpaqueBinds), in->imageOpaqueBindCount); out->imageBindCount = in->imageBindCount; out->pImageBinds = convert_VkSparseImageMemoryBindInfo_array_win32_to_host(ctx, (const VkSparseImageMemoryBindInfo32 *)UlongToPtr(in->pImageBinds), in->imageBindCount); out->signalSemaphoreCount = in->signalSemaphoreCount; out->pSignalSemaphores = (const VkSemaphore *)UlongToPtr(in->pSignalSemaphores); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: { VkDeviceGroupBindSparseInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupBindSparseInfo32 *in_ext = (const VkDeviceGroupBindSparseInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO; out_ext->pNext = NULL; out_ext->resourceDeviceIndex = in_ext->resourceDeviceIndex; out_ext->memoryDeviceIndex = in_ext->memoryDeviceIndex; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: { VkTimelineSemaphoreSubmitInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkTimelineSemaphoreSubmitInfo32 *in_ext = (const VkTimelineSemaphoreSubmitInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO; out_ext->pNext = NULL; out_ext->waitSemaphoreValueCount = in_ext->waitSemaphoreValueCount; out_ext->pWaitSemaphoreValues = (const uint64_t *)UlongToPtr(in_ext->pWaitSemaphoreValues); out_ext->signalSemaphoreValueCount = in_ext->signalSemaphoreValueCount; out_ext->pSignalSemaphoreValues = (const uint64_t *)UlongToPtr(in_ext->pSignalSemaphoreValues); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline const VkBindSparseInfo *convert_VkBindSparseInfo_array_win64_to_host(struct conversion_context *ctx, const VkBindSparseInfo *in, uint32_t count) { VkBindSparseInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBindSparseInfo_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkBindSparseInfo *convert_VkBindSparseInfo_array_win32_to_host(struct conversion_context *ctx, const VkBindSparseInfo32 *in, uint32_t count) { VkBindSparseInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkBindSparseInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkPresentRegionKHR_win32_to_host(const VkPresentRegionKHR32 *in, VkPresentRegionKHR *out) { if (!in) return; out->rectangleCount = in->rectangleCount; out->pRectangles = (const VkRectLayerKHR *)UlongToPtr(in->pRectangles); } static inline const VkPresentRegionKHR *convert_VkPresentRegionKHR_array_win32_to_host(struct conversion_context *ctx, const VkPresentRegionKHR32 *in, uint32_t count) { VkPresentRegionKHR *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkPresentRegionKHR_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkPresentInfoKHR_win32_to_host(struct conversion_context *ctx, const VkPresentInfoKHR32 *in, VkPresentInfoKHR *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->waitSemaphoreCount = in->waitSemaphoreCount; out->pWaitSemaphores = (const VkSemaphore *)UlongToPtr(in->pWaitSemaphores); out->swapchainCount = in->swapchainCount; out->pSwapchains = (const VkSwapchainKHR *)UlongToPtr(in->pSwapchains); out->pImageIndices = (const uint32_t *)UlongToPtr(in->pImageIndices); out->pResults = (VkResult *)UlongToPtr(in->pResults); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: { VkPresentRegionsKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPresentRegionsKHR32 *in_ext = (const VkPresentRegionsKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR; out_ext->pNext = NULL; out_ext->swapchainCount = in_ext->swapchainCount; out_ext->pRegions = convert_VkPresentRegionKHR_array_win32_to_host(ctx, (const VkPresentRegionKHR32 *)UlongToPtr(in_ext->pRegions), in_ext->swapchainCount); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: { VkDeviceGroupPresentInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupPresentInfoKHR32 *in_ext = (const VkDeviceGroupPresentInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR; out_ext->pNext = NULL; out_ext->swapchainCount = in_ext->swapchainCount; out_ext->pDeviceMasks = (const uint32_t *)UlongToPtr(in_ext->pDeviceMasks); out_ext->mode = in_ext->mode; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PRESENT_ID_KHR: { VkPresentIdKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPresentIdKHR32 *in_ext = (const VkPresentIdKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PRESENT_ID_KHR; out_ext->pNext = NULL; out_ext->swapchainCount = in_ext->swapchainCount; out_ext->pPresentIds = (const uint64_t *)UlongToPtr(in_ext->pPresentIds); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline void convert_VkSubmitInfo_win64_to_host(struct conversion_context *ctx, const VkSubmitInfo *in, VkSubmitInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->waitSemaphoreCount = in->waitSemaphoreCount; out->pWaitSemaphores = in->pWaitSemaphores; out->pWaitDstStageMask = in->pWaitDstStageMask; out->commandBufferCount = in->commandBufferCount; out->pCommandBuffers = convert_VkCommandBuffer_array_win64_to_host(ctx, in->pCommandBuffers, in->commandBufferCount); out->signalSemaphoreCount = in->signalSemaphoreCount; out->pSignalSemaphores = in->pSignalSemaphores; } #endif /* _WIN64 */ static inline void convert_VkSubmitInfo_win32_to_host(struct conversion_context *ctx, const VkSubmitInfo32 *in, VkSubmitInfo *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->waitSemaphoreCount = in->waitSemaphoreCount; out->pWaitSemaphores = (const VkSemaphore *)UlongToPtr(in->pWaitSemaphores); out->pWaitDstStageMask = (const VkPipelineStageFlags *)UlongToPtr(in->pWaitDstStageMask); out->commandBufferCount = in->commandBufferCount; out->pCommandBuffers = convert_VkCommandBuffer_array_win32_to_host(ctx, (const PTR32 *)UlongToPtr(in->pCommandBuffers), in->commandBufferCount); out->signalSemaphoreCount = in->signalSemaphoreCount; out->pSignalSemaphores = (const VkSemaphore *)UlongToPtr(in->pSignalSemaphores); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: { VkDeviceGroupSubmitInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceGroupSubmitInfo32 *in_ext = (const VkDeviceGroupSubmitInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO; out_ext->pNext = NULL; out_ext->waitSemaphoreCount = in_ext->waitSemaphoreCount; out_ext->pWaitSemaphoreDeviceIndices = (const uint32_t *)UlongToPtr(in_ext->pWaitSemaphoreDeviceIndices); out_ext->commandBufferCount = in_ext->commandBufferCount; out_ext->pCommandBufferDeviceMasks = (const uint32_t *)UlongToPtr(in_ext->pCommandBufferDeviceMasks); out_ext->signalSemaphoreCount = in_ext->signalSemaphoreCount; out_ext->pSignalSemaphoreDeviceIndices = (const uint32_t *)UlongToPtr(in_ext->pSignalSemaphoreDeviceIndices); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: { VkProtectedSubmitInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkProtectedSubmitInfo32 *in_ext = (const VkProtectedSubmitInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO; out_ext->pNext = NULL; out_ext->protectedSubmit = in_ext->protectedSubmit; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: { VkTimelineSemaphoreSubmitInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkTimelineSemaphoreSubmitInfo32 *in_ext = (const VkTimelineSemaphoreSubmitInfo32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO; out_ext->pNext = NULL; out_ext->waitSemaphoreValueCount = in_ext->waitSemaphoreValueCount; out_ext->pWaitSemaphoreValues = (const uint64_t *)UlongToPtr(in_ext->pWaitSemaphoreValues); out_ext->signalSemaphoreValueCount = in_ext->signalSemaphoreValueCount; out_ext->pSignalSemaphoreValues = (const uint64_t *)UlongToPtr(in_ext->pSignalSemaphoreValues); out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR: { VkPerformanceQuerySubmitInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPerformanceQuerySubmitInfoKHR32 *in_ext = (const VkPerformanceQuerySubmitInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR; out_ext->pNext = NULL; out_ext->counterPassIndex = in_ext->counterPassIndex; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline const VkSubmitInfo *convert_VkSubmitInfo_array_win64_to_host(struct conversion_context *ctx, const VkSubmitInfo *in, uint32_t count) { VkSubmitInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSubmitInfo_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkSubmitInfo *convert_VkSubmitInfo_array_win32_to_host(struct conversion_context *ctx, const VkSubmitInfo32 *in, uint32_t count) { VkSubmitInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSubmitInfo_win32_to_host(ctx, &in[i], &out[i]); } return out; } static inline void convert_VkSemaphoreSubmitInfo_win32_to_host(const VkSemaphoreSubmitInfo32 *in, VkSemaphoreSubmitInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->semaphore = in->semaphore; out->value = in->value; out->stageMask = in->stageMask; out->deviceIndex = in->deviceIndex; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkSemaphoreSubmitInfo *convert_VkSemaphoreSubmitInfo_array_win32_to_host(struct conversion_context *ctx, const VkSemaphoreSubmitInfo32 *in, uint32_t count) { VkSemaphoreSubmitInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSemaphoreSubmitInfo_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkCommandBufferSubmitInfo_win64_to_host(const VkCommandBufferSubmitInfo *in, VkCommandBufferSubmitInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->commandBuffer = wine_cmd_buffer_from_handle(in->commandBuffer)->command_buffer; out->deviceMask = in->deviceMask; } #endif /* _WIN64 */ static inline void convert_VkCommandBufferSubmitInfo_win32_to_host(const VkCommandBufferSubmitInfo32 *in, VkCommandBufferSubmitInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->commandBuffer = wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(in->commandBuffer))->command_buffer; out->deviceMask = in->deviceMask; if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline const VkCommandBufferSubmitInfo *convert_VkCommandBufferSubmitInfo_array_win64_to_host(struct conversion_context *ctx, const VkCommandBufferSubmitInfo *in, uint32_t count) { VkCommandBufferSubmitInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCommandBufferSubmitInfo_win64_to_host(&in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkCommandBufferSubmitInfo *convert_VkCommandBufferSubmitInfo_array_win32_to_host(struct conversion_context *ctx, const VkCommandBufferSubmitInfo32 *in, uint32_t count) { VkCommandBufferSubmitInfo *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCommandBufferSubmitInfo_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkSubmitInfo2_win64_to_host(struct conversion_context *ctx, const VkSubmitInfo2 *in, VkSubmitInfo2 *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->flags = in->flags; out->waitSemaphoreInfoCount = in->waitSemaphoreInfoCount; out->pWaitSemaphoreInfos = in->pWaitSemaphoreInfos; out->commandBufferInfoCount = in->commandBufferInfoCount; out->pCommandBufferInfos = convert_VkCommandBufferSubmitInfo_array_win64_to_host(ctx, in->pCommandBufferInfos, in->commandBufferInfoCount); out->signalSemaphoreInfoCount = in->signalSemaphoreInfoCount; out->pSignalSemaphoreInfos = in->pSignalSemaphoreInfos; } #endif /* _WIN64 */ static inline void convert_VkSubmitInfo2_win32_to_host(struct conversion_context *ctx, const VkSubmitInfo232 *in, VkSubmitInfo2 *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->waitSemaphoreInfoCount = in->waitSemaphoreInfoCount; out->pWaitSemaphoreInfos = convert_VkSemaphoreSubmitInfo_array_win32_to_host(ctx, (const VkSemaphoreSubmitInfo32 *)UlongToPtr(in->pWaitSemaphoreInfos), in->waitSemaphoreInfoCount); out->commandBufferInfoCount = in->commandBufferInfoCount; out->pCommandBufferInfos = convert_VkCommandBufferSubmitInfo_array_win32_to_host(ctx, (const VkCommandBufferSubmitInfo32 *)UlongToPtr(in->pCommandBufferInfos), in->commandBufferInfoCount); out->signalSemaphoreInfoCount = in->signalSemaphoreInfoCount; out->pSignalSemaphoreInfos = convert_VkSemaphoreSubmitInfo_array_win32_to_host(ctx, (const VkSemaphoreSubmitInfo32 *)UlongToPtr(in->pSignalSemaphoreInfos), in->signalSemaphoreInfoCount); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR: { VkPerformanceQuerySubmitInfoKHR *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkPerformanceQuerySubmitInfoKHR32 *in_ext = (const VkPerformanceQuerySubmitInfoKHR32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR; out_ext->pNext = NULL; out_ext->counterPassIndex = in_ext->counterPassIndex; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } #ifdef _WIN64 static inline const VkSubmitInfo2 *convert_VkSubmitInfo2_array_win64_to_host(struct conversion_context *ctx, const VkSubmitInfo2 *in, uint32_t count) { VkSubmitInfo2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSubmitInfo2_win64_to_host(ctx, &in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkSubmitInfo2 *convert_VkSubmitInfo2_array_win32_to_host(struct conversion_context *ctx, const VkSubmitInfo232 *in, uint32_t count) { VkSubmitInfo2 *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkSubmitInfo2_win32_to_host(ctx, &in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkDebugUtilsObjectNameInfoEXT_win64_to_host(const VkDebugUtilsObjectNameInfoEXT *in, VkDebugUtilsObjectNameInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->objectType = in->objectType; out->objectHandle = wine_vk_unwrap_handle(in->objectType, in->objectHandle); out->pObjectName = in->pObjectName; } #endif /* _WIN64 */ static inline void convert_VkDebugUtilsObjectNameInfoEXT_win32_to_host(const VkDebugUtilsObjectNameInfoEXT32 *in, VkDebugUtilsObjectNameInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->objectType = in->objectType; out->objectHandle = wine_vk_unwrap_handle(in->objectType, in->objectHandle); out->pObjectName = (const char *)UlongToPtr(in->pObjectName); if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static inline void convert_VkDebugUtilsObjectTagInfoEXT_win64_to_host(const VkDebugUtilsObjectTagInfoEXT *in, VkDebugUtilsObjectTagInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->objectType = in->objectType; out->objectHandle = wine_vk_unwrap_handle(in->objectType, in->objectHandle); out->tagName = in->tagName; out->tagSize = in->tagSize; out->pTag = in->pTag; } #endif /* _WIN64 */ static inline void convert_VkDebugUtilsObjectTagInfoEXT_win32_to_host(const VkDebugUtilsObjectTagInfoEXT32 *in, VkDebugUtilsObjectTagInfoEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->objectType = in->objectType; out->objectHandle = wine_vk_unwrap_handle(in->objectType, in->objectHandle); out->tagName = in->tagName; out->tagSize = in->tagSize; out->pTag = (const void *)UlongToPtr(in->pTag); if (in->pNext) FIXME("Unexpected pNext\n"); } static inline void convert_VkSemaphoreSignalInfo_win32_to_host(const VkSemaphoreSignalInfo32 *in, VkSemaphoreSignalInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->semaphore = in->semaphore; out->value = in->value; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkDebugUtilsLabelEXT *convert_VkDebugUtilsLabelEXT_array_win32_to_host(struct conversion_context *ctx, const VkDebugUtilsLabelEXT32 *in, uint32_t count) { VkDebugUtilsLabelEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDebugUtilsLabelEXT_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline const VkDebugUtilsObjectNameInfoEXT *convert_VkDebugUtilsObjectNameInfoEXT_array_win64_to_host(struct conversion_context *ctx, const VkDebugUtilsObjectNameInfoEXT *in, uint32_t count) { VkDebugUtilsObjectNameInfoEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDebugUtilsObjectNameInfoEXT_win64_to_host(&in[i], &out[i]); } return out; } #endif /* _WIN64 */ static inline const VkDebugUtilsObjectNameInfoEXT *convert_VkDebugUtilsObjectNameInfoEXT_array_win32_to_host(struct conversion_context *ctx, const VkDebugUtilsObjectNameInfoEXT32 *in, uint32_t count) { VkDebugUtilsObjectNameInfoEXT *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkDebugUtilsObjectNameInfoEXT_win32_to_host(&in[i], &out[i]); } return out; } #ifdef _WIN64 static inline void convert_VkDebugUtilsMessengerCallbackDataEXT_win64_to_host(struct conversion_context *ctx, const VkDebugUtilsMessengerCallbackDataEXT *in, VkDebugUtilsMessengerCallbackDataEXT *out) { if (!in) return; out->sType = in->sType; out->pNext = in->pNext; out->flags = in->flags; out->pMessageIdName = in->pMessageIdName; out->messageIdNumber = in->messageIdNumber; out->pMessage = in->pMessage; out->queueLabelCount = in->queueLabelCount; out->pQueueLabels = in->pQueueLabels; out->cmdBufLabelCount = in->cmdBufLabelCount; out->pCmdBufLabels = in->pCmdBufLabels; out->objectCount = in->objectCount; out->pObjects = convert_VkDebugUtilsObjectNameInfoEXT_array_win64_to_host(ctx, in->pObjects, in->objectCount); } #endif /* _WIN64 */ static inline void convert_VkDebugUtilsMessengerCallbackDataEXT_win32_to_host(struct conversion_context *ctx, const VkDebugUtilsMessengerCallbackDataEXT32 *in, VkDebugUtilsMessengerCallbackDataEXT *out) { const VkBaseInStructure32 *in_header; VkBaseOutStructure *out_header = (void *)out; if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->pMessageIdName = (const char *)UlongToPtr(in->pMessageIdName); out->messageIdNumber = in->messageIdNumber; out->pMessage = (const char *)UlongToPtr(in->pMessage); out->queueLabelCount = in->queueLabelCount; out->pQueueLabels = convert_VkDebugUtilsLabelEXT_array_win32_to_host(ctx, (const VkDebugUtilsLabelEXT32 *)UlongToPtr(in->pQueueLabels), in->queueLabelCount); out->cmdBufLabelCount = in->cmdBufLabelCount; out->pCmdBufLabels = convert_VkDebugUtilsLabelEXT_array_win32_to_host(ctx, (const VkDebugUtilsLabelEXT32 *)UlongToPtr(in->pCmdBufLabels), in->cmdBufLabelCount); out->objectCount = in->objectCount; out->pObjects = convert_VkDebugUtilsObjectNameInfoEXT_array_win32_to_host(ctx, (const VkDebugUtilsObjectNameInfoEXT32 *)UlongToPtr(in->pObjects), in->objectCount); for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) { switch (in_header->sType) { case VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT: { VkDeviceAddressBindingCallbackDataEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); const VkDeviceAddressBindingCallbackDataEXT32 *in_ext = (const VkDeviceAddressBindingCallbackDataEXT32 *)in_header; out_ext->sType = VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT; out_ext->pNext = NULL; out_ext->flags = in_ext->flags; out_ext->baseAddress = in_ext->baseAddress; out_ext->size = in_ext->size; out_ext->bindingType = in_ext->bindingType; out_header->pNext = (void *)out_ext; out_header = (void *)out_ext; break; } default: FIXME("Unhandled sType %u.", in_header->sType); break; } } } static inline void convert_VkCopyDescriptorSet_win32_to_host(const VkCopyDescriptorSet32 *in, VkCopyDescriptorSet *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->srcSet = in->srcSet; out->srcBinding = in->srcBinding; out->srcArrayElement = in->srcArrayElement; out->dstSet = in->dstSet; out->dstBinding = in->dstBinding; out->dstArrayElement = in->dstArrayElement; out->descriptorCount = in->descriptorCount; if (in->pNext) FIXME("Unexpected pNext\n"); } static inline const VkCopyDescriptorSet *convert_VkCopyDescriptorSet_array_win32_to_host(struct conversion_context *ctx, const VkCopyDescriptorSet32 *in, uint32_t count) { VkCopyDescriptorSet *out; unsigned int i; if (!in || !count) return NULL; out = conversion_context_alloc(ctx, count * sizeof(*out)); for (i = 0; i < count; i++) { convert_VkCopyDescriptorSet_win32_to_host(&in[i], &out[i]); } return out; } static inline void convert_VkSemaphoreWaitInfo_win32_to_host(const VkSemaphoreWaitInfo32 *in, VkSemaphoreWaitInfo *out) { if (!in) return; out->sType = in->sType; out->pNext = NULL; out->flags = in->flags; out->semaphoreCount = in->semaphoreCount; out->pSemaphores = (const VkSemaphore *)UlongToPtr(in->pSemaphores); out->pValues = (const uint64_t *)UlongToPtr(in->pValues); if (in->pNext) FIXME("Unexpected pNext\n"); } #ifdef _WIN64 static NTSTATUS thunk64_vkAcquireNextImage2KHR(void *args) { struct vkAcquireNextImage2KHR_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pAcquireInfo, params->pImageIndex); params->result = wine_device_from_handle(params->device)->funcs.p_vkAcquireNextImage2KHR(wine_device_from_handle(params->device)->device, params->pAcquireInfo, params->pImageIndex); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkAcquireNextImage2KHR(void *args) { struct { PTR32 device; PTR32 pAcquireInfo; PTR32 pImageIndex; VkResult result; } *params = args; VkAcquireNextImageInfoKHR pAcquireInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pAcquireInfo, params->pImageIndex); convert_VkAcquireNextImageInfoKHR_win32_to_host((const VkAcquireNextImageInfoKHR32 *)UlongToPtr(params->pAcquireInfo), &pAcquireInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkAcquireNextImage2KHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pAcquireInfo_host, (uint32_t *)UlongToPtr(params->pImageIndex)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkAcquireNextImageKHR(void *args) { struct vkAcquireNextImageKHR_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->swapchain), wine_dbgstr_longlong(params->timeout), wine_dbgstr_longlong(params->semaphore), wine_dbgstr_longlong(params->fence), params->pImageIndex); params->result = wine_device_from_handle(params->device)->funcs.p_vkAcquireNextImageKHR(wine_device_from_handle(params->device)->device, params->swapchain, params->timeout, params->semaphore, params->fence, params->pImageIndex); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkAcquireNextImageKHR(void *args) { struct { PTR32 device; VkSwapchainKHR DECLSPEC_ALIGN(8) swapchain; uint64_t DECLSPEC_ALIGN(8) timeout; VkSemaphore DECLSPEC_ALIGN(8) semaphore; VkFence DECLSPEC_ALIGN(8) fence; PTR32 pImageIndex; VkResult result; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->swapchain), wine_dbgstr_longlong(params->timeout), wine_dbgstr_longlong(params->semaphore), wine_dbgstr_longlong(params->fence), params->pImageIndex); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkAcquireNextImageKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->swapchain, params->timeout, params->semaphore, params->fence, (uint32_t *)UlongToPtr(params->pImageIndex)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkAcquirePerformanceConfigurationINTEL(void *args) { struct vkAcquirePerformanceConfigurationINTEL_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pAcquireInfo, params->pConfiguration); params->result = wine_device_from_handle(params->device)->funcs.p_vkAcquirePerformanceConfigurationINTEL(wine_device_from_handle(params->device)->device, params->pAcquireInfo, params->pConfiguration); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkAcquirePerformanceConfigurationINTEL(void *args) { struct { PTR32 device; PTR32 pAcquireInfo; PTR32 pConfiguration; VkResult result; } *params = args; VkPerformanceConfigurationAcquireInfoINTEL pAcquireInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pAcquireInfo, params->pConfiguration); convert_VkPerformanceConfigurationAcquireInfoINTEL_win32_to_host((const VkPerformanceConfigurationAcquireInfoINTEL32 *)UlongToPtr(params->pAcquireInfo), &pAcquireInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkAcquirePerformanceConfigurationINTEL(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pAcquireInfo_host, (VkPerformanceConfigurationINTEL *)UlongToPtr(params->pConfiguration)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkAcquireProfilingLockKHR(void *args) { struct vkAcquireProfilingLockKHR_params *params = args; TRACE("%p, %p\n", params->device, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkAcquireProfilingLockKHR(wine_device_from_handle(params->device)->device, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkAcquireProfilingLockKHR(void *args) { struct { PTR32 device; PTR32 pInfo; VkResult result; } *params = args; VkAcquireProfilingLockInfoKHR pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkAcquireProfilingLockInfoKHR_win32_to_host((const VkAcquireProfilingLockInfoKHR32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkAcquireProfilingLockKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkAllocateCommandBuffers(void *args) { struct vkAllocateCommandBuffers_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pAllocateInfo, params->pCommandBuffers); params->result = wine_vkAllocateCommandBuffers(params->device, params->pAllocateInfo, params->pCommandBuffers); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkAllocateCommandBuffers(void *args) { struct { PTR32 device; PTR32 pAllocateInfo; PTR32 pCommandBuffers; VkResult result; } *params = args; VkCommandBufferAllocateInfo pAllocateInfo_host; VkCommandBuffer *pCommandBuffers_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pAllocateInfo, params->pCommandBuffers); init_conversion_context(&ctx); convert_VkCommandBufferAllocateInfo_win32_to_unwrapped_host((const VkCommandBufferAllocateInfo32 *)UlongToPtr(params->pAllocateInfo), &pAllocateInfo_host); pCommandBuffers_host = convert_VkCommandBuffer_array_win32_to_unwrapped_host(&ctx, (PTR32 *)UlongToPtr(params->pCommandBuffers), ((const VkCommandBufferAllocateInfo32 *)UlongToPtr(params->pAllocateInfo))->commandBufferCount); params->result = wine_vkAllocateCommandBuffers((VkDevice)UlongToPtr(params->device), &pAllocateInfo_host, pCommandBuffers_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkAllocateDescriptorSets(void *args) { struct vkAllocateDescriptorSets_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pAllocateInfo, params->pDescriptorSets); params->result = wine_device_from_handle(params->device)->funcs.p_vkAllocateDescriptorSets(wine_device_from_handle(params->device)->device, params->pAllocateInfo, params->pDescriptorSets); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkAllocateDescriptorSets(void *args) { struct { PTR32 device; PTR32 pAllocateInfo; PTR32 pDescriptorSets; VkResult result; } *params = args; VkDescriptorSetAllocateInfo pAllocateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pAllocateInfo, params->pDescriptorSets); init_conversion_context(&ctx); convert_VkDescriptorSetAllocateInfo_win32_to_host(&ctx, (const VkDescriptorSetAllocateInfo32 *)UlongToPtr(params->pAllocateInfo), &pAllocateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkAllocateDescriptorSets(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pAllocateInfo_host, (VkDescriptorSet *)UlongToPtr(params->pDescriptorSets)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkAllocateMemory(void *args) { struct vkAllocateMemory_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pAllocateInfo, params->pAllocator, params->pMemory); params->result = wine_vkAllocateMemory(params->device, params->pAllocateInfo, params->pAllocator, params->pMemory); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkAllocateMemory(void *args) { struct { PTR32 device; PTR32 pAllocateInfo; PTR32 pAllocator; PTR32 pMemory; VkResult result; } *params = args; VkMemoryAllocateInfo pAllocateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pAllocateInfo, params->pAllocator, params->pMemory); init_conversion_context(&ctx); convert_VkMemoryAllocateInfo_win32_to_host(&ctx, (const VkMemoryAllocateInfo32 *)UlongToPtr(params->pAllocateInfo), &pAllocateInfo_host); params->result = wine_vkAllocateMemory((VkDevice)UlongToPtr(params->device), &pAllocateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), (VkDeviceMemory *)UlongToPtr(params->pMemory)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBeginCommandBuffer(void *args) { struct vkBeginCommandBuffer_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pBeginInfo); params->result = wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkBeginCommandBuffer(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pBeginInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBeginCommandBuffer(void *args) { struct { PTR32 commandBuffer; PTR32 pBeginInfo; VkResult result; } *params = args; VkCommandBufferBeginInfo pBeginInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pBeginInfo); init_conversion_context(&ctx); convert_VkCommandBufferBeginInfo_win32_to_host(&ctx, (const VkCommandBufferBeginInfo32 *)UlongToPtr(params->pBeginInfo), &pBeginInfo_host); params->result = wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkBeginCommandBuffer(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pBeginInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBindAccelerationStructureMemoryNV(void *args) { struct vkBindAccelerationStructureMemoryNV_params *params = args; const VkBindAccelerationStructureMemoryInfoNV *pBindInfos_host; struct conversion_context ctx; TRACE("%p, %u, %p\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindAccelerationStructureMemoryInfoNV_array_win64_to_host(&ctx, params->pBindInfos, params->bindInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkBindAccelerationStructureMemoryNV(wine_device_from_handle(params->device)->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBindAccelerationStructureMemoryNV(void *args) { struct { PTR32 device; uint32_t bindInfoCount; PTR32 pBindInfos; VkResult result; } *params = args; const VkBindAccelerationStructureMemoryInfoNV *pBindInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindAccelerationStructureMemoryInfoNV_array_win32_to_host(&ctx, (const VkBindAccelerationStructureMemoryInfoNV32 *)UlongToPtr(params->pBindInfos), params->bindInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBindAccelerationStructureMemoryNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBindBufferMemory(void *args) { struct vkBindBufferMemory_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s\n", params->device, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->memory), wine_dbgstr_longlong(params->memoryOffset)); params->result = wine_device_from_handle(params->device)->funcs.p_vkBindBufferMemory(wine_device_from_handle(params->device)->device, params->buffer, wine_device_memory_from_handle(params->memory)->memory, params->memoryOffset); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBindBufferMemory(void *args) { struct { PTR32 device; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) memoryOffset; VkResult result; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s\n", params->device, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->memory), wine_dbgstr_longlong(params->memoryOffset)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBindBufferMemory(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->buffer, wine_device_memory_from_handle(params->memory)->memory, params->memoryOffset); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBindBufferMemory2(void *args) { struct vkBindBufferMemory2_params *params = args; const VkBindBufferMemoryInfo *pBindInfos_host; struct conversion_context ctx; TRACE("%p, %u, %p\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindBufferMemoryInfo_array_win64_to_host(&ctx, params->pBindInfos, params->bindInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkBindBufferMemory2(wine_device_from_handle(params->device)->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBindBufferMemory2(void *args) { struct { PTR32 device; uint32_t bindInfoCount; PTR32 pBindInfos; VkResult result; } *params = args; const VkBindBufferMemoryInfo *pBindInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindBufferMemoryInfo_array_win32_to_host(&ctx, (const VkBindBufferMemoryInfo32 *)UlongToPtr(params->pBindInfos), params->bindInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBindBufferMemory2(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBindBufferMemory2KHR(void *args) { struct vkBindBufferMemory2KHR_params *params = args; const VkBindBufferMemoryInfo *pBindInfos_host; struct conversion_context ctx; TRACE("%p, %u, %p\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindBufferMemoryInfo_array_win64_to_host(&ctx, params->pBindInfos, params->bindInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkBindBufferMemory2KHR(wine_device_from_handle(params->device)->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBindBufferMemory2KHR(void *args) { struct { PTR32 device; uint32_t bindInfoCount; PTR32 pBindInfos; VkResult result; } *params = args; const VkBindBufferMemoryInfo *pBindInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindBufferMemoryInfo_array_win32_to_host(&ctx, (const VkBindBufferMemoryInfo32 *)UlongToPtr(params->pBindInfos), params->bindInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBindBufferMemory2KHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBindImageMemory(void *args) { struct vkBindImageMemory_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s\n", params->device, wine_dbgstr_longlong(params->image), wine_dbgstr_longlong(params->memory), wine_dbgstr_longlong(params->memoryOffset)); params->result = wine_device_from_handle(params->device)->funcs.p_vkBindImageMemory(wine_device_from_handle(params->device)->device, params->image, wine_device_memory_from_handle(params->memory)->memory, params->memoryOffset); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBindImageMemory(void *args) { struct { PTR32 device; VkImage DECLSPEC_ALIGN(8) image; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) memoryOffset; VkResult result; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s\n", params->device, wine_dbgstr_longlong(params->image), wine_dbgstr_longlong(params->memory), wine_dbgstr_longlong(params->memoryOffset)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBindImageMemory(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->image, wine_device_memory_from_handle(params->memory)->memory, params->memoryOffset); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBindImageMemory2(void *args) { struct vkBindImageMemory2_params *params = args; const VkBindImageMemoryInfo *pBindInfos_host; struct conversion_context ctx; TRACE("%p, %u, %p\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindImageMemoryInfo_array_win64_to_host(&ctx, params->pBindInfos, params->bindInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkBindImageMemory2(wine_device_from_handle(params->device)->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBindImageMemory2(void *args) { struct { PTR32 device; uint32_t bindInfoCount; PTR32 pBindInfos; VkResult result; } *params = args; const VkBindImageMemoryInfo *pBindInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindImageMemoryInfo_array_win32_to_host(&ctx, (const VkBindImageMemoryInfo32 *)UlongToPtr(params->pBindInfos), params->bindInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBindImageMemory2(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBindImageMemory2KHR(void *args) { struct vkBindImageMemory2KHR_params *params = args; const VkBindImageMemoryInfo *pBindInfos_host; struct conversion_context ctx; TRACE("%p, %u, %p\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindImageMemoryInfo_array_win64_to_host(&ctx, params->pBindInfos, params->bindInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkBindImageMemory2KHR(wine_device_from_handle(params->device)->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBindImageMemory2KHR(void *args) { struct { PTR32 device; uint32_t bindInfoCount; PTR32 pBindInfos; VkResult result; } *params = args; const VkBindImageMemoryInfo *pBindInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->device, params->bindInfoCount, params->pBindInfos); init_conversion_context(&ctx); pBindInfos_host = convert_VkBindImageMemoryInfo_array_win32_to_host(&ctx, (const VkBindImageMemoryInfo32 *)UlongToPtr(params->pBindInfos), params->bindInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBindImageMemory2KHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->bindInfoCount, pBindInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBindOpticalFlowSessionImageNV(void *args) { struct vkBindOpticalFlowSessionImageNV_params *params = args; TRACE("%p, 0x%s, %#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->session), params->bindingPoint, wine_dbgstr_longlong(params->view), params->layout); params->result = wine_device_from_handle(params->device)->funcs.p_vkBindOpticalFlowSessionImageNV(wine_device_from_handle(params->device)->device, params->session, params->bindingPoint, params->view, params->layout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBindOpticalFlowSessionImageNV(void *args) { struct { PTR32 device; VkOpticalFlowSessionNV DECLSPEC_ALIGN(8) session; VkOpticalFlowSessionBindingPointNV bindingPoint; VkImageView DECLSPEC_ALIGN(8) view; VkImageLayout layout; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->session), params->bindingPoint, wine_dbgstr_longlong(params->view), params->layout); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBindOpticalFlowSessionImageNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->session, params->bindingPoint, params->view, params->layout); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBuildAccelerationStructuresKHR(void *args) { struct vkBuildAccelerationStructuresKHR_params *params = args; TRACE("%p, 0x%s, %u, %p, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->infoCount, params->pInfos, params->ppBuildRangeInfos); params->result = wine_device_from_handle(params->device)->funcs.p_vkBuildAccelerationStructuresKHR(wine_device_from_handle(params->device)->device, params->deferredOperation, params->infoCount, params->pInfos, params->ppBuildRangeInfos); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBuildAccelerationStructuresKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; uint32_t infoCount; PTR32 pInfos; PTR32 ppBuildRangeInfos; VkResult result; } *params = args; const VkAccelerationStructureBuildGeometryInfoKHR *pInfos_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %u, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->infoCount, params->pInfos, params->ppBuildRangeInfos); init_conversion_context(&ctx); pInfos_host = convert_VkAccelerationStructureBuildGeometryInfoKHR_array_win32_to_host(&ctx, (const VkAccelerationStructureBuildGeometryInfoKHR32 *)UlongToPtr(params->pInfos), params->infoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBuildAccelerationStructuresKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, params->infoCount, pInfos_host, (const VkAccelerationStructureBuildRangeInfoKHR * const*)UlongToPtr(params->ppBuildRangeInfos)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkBuildMicromapsEXT(void *args) { struct vkBuildMicromapsEXT_params *params = args; TRACE("%p, 0x%s, %u, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->infoCount, params->pInfos); params->result = wine_device_from_handle(params->device)->funcs.p_vkBuildMicromapsEXT(wine_device_from_handle(params->device)->device, params->deferredOperation, params->infoCount, params->pInfos); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkBuildMicromapsEXT(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; uint32_t infoCount; PTR32 pInfos; VkResult result; } *params = args; const VkMicromapBuildInfoEXT *pInfos_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %u, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->infoCount, params->pInfos); init_conversion_context(&ctx); pInfos_host = convert_VkMicromapBuildInfoEXT_array_win32_to_host(&ctx, (const VkMicromapBuildInfoEXT32 *)UlongToPtr(params->pInfos), params->infoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkBuildMicromapsEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, params->infoCount, pInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginConditionalRenderingEXT(void *args) { struct vkCmdBeginConditionalRenderingEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pConditionalRenderingBegin); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginConditionalRenderingEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pConditionalRenderingBegin); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginConditionalRenderingEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pConditionalRenderingBegin; } *params = args; VkConditionalRenderingBeginInfoEXT pConditionalRenderingBegin_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pConditionalRenderingBegin); convert_VkConditionalRenderingBeginInfoEXT_win32_to_host((const VkConditionalRenderingBeginInfoEXT32 *)UlongToPtr(params->pConditionalRenderingBegin), &pConditionalRenderingBegin_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginConditionalRenderingEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pConditionalRenderingBegin_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginDebugUtilsLabelEXT(void *args) { struct vkCmdBeginDebugUtilsLabelEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pLabelInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginDebugUtilsLabelEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pLabelInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginDebugUtilsLabelEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pLabelInfo; } *params = args; VkDebugUtilsLabelEXT pLabelInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pLabelInfo); convert_VkDebugUtilsLabelEXT_win32_to_host((const VkDebugUtilsLabelEXT32 *)UlongToPtr(params->pLabelInfo), &pLabelInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginDebugUtilsLabelEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pLabelInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginQuery(void *args) { struct vkCmdBeginQuery_params *params = args; TRACE("%p, 0x%s, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->query, params->flags); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginQuery(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->queryPool, params->query, params->flags); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginQuery(void *args) { struct { PTR32 commandBuffer; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t query; VkQueryControlFlags flags; } *params = args; TRACE("%#x, 0x%s, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->query, params->flags); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginQuery(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->queryPool, params->query, params->flags); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginQueryIndexedEXT(void *args) { struct vkCmdBeginQueryIndexedEXT_params *params = args; TRACE("%p, 0x%s, %u, %#x, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->query, params->flags, params->index); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginQueryIndexedEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->queryPool, params->query, params->flags, params->index); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginQueryIndexedEXT(void *args) { struct { PTR32 commandBuffer; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t query; VkQueryControlFlags flags; uint32_t index; } *params = args; TRACE("%#x, 0x%s, %u, %#x, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->query, params->flags, params->index); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginQueryIndexedEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->queryPool, params->query, params->flags, params->index); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginRenderPass(void *args) { struct vkCmdBeginRenderPass_params *params = args; TRACE("%p, %p, %#x\n", params->commandBuffer, params->pRenderPassBegin, params->contents); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginRenderPass(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pRenderPassBegin, params->contents); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginRenderPass(void *args) { struct { PTR32 commandBuffer; PTR32 pRenderPassBegin; VkSubpassContents contents; } *params = args; VkRenderPassBeginInfo pRenderPassBegin_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->commandBuffer, params->pRenderPassBegin, params->contents); init_conversion_context(&ctx); convert_VkRenderPassBeginInfo_win32_to_host(&ctx, (const VkRenderPassBeginInfo32 *)UlongToPtr(params->pRenderPassBegin), &pRenderPassBegin_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginRenderPass(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pRenderPassBegin_host, params->contents); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginRenderPass2(void *args) { struct vkCmdBeginRenderPass2_params *params = args; TRACE("%p, %p, %p\n", params->commandBuffer, params->pRenderPassBegin, params->pSubpassBeginInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginRenderPass2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pRenderPassBegin, params->pSubpassBeginInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginRenderPass2(void *args) { struct { PTR32 commandBuffer; PTR32 pRenderPassBegin; PTR32 pSubpassBeginInfo; } *params = args; VkRenderPassBeginInfo pRenderPassBegin_host; VkSubpassBeginInfo pSubpassBeginInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->commandBuffer, params->pRenderPassBegin, params->pSubpassBeginInfo); init_conversion_context(&ctx); convert_VkRenderPassBeginInfo_win32_to_host(&ctx, (const VkRenderPassBeginInfo32 *)UlongToPtr(params->pRenderPassBegin), &pRenderPassBegin_host); convert_VkSubpassBeginInfo_win32_to_host((const VkSubpassBeginInfo32 *)UlongToPtr(params->pSubpassBeginInfo), &pSubpassBeginInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginRenderPass2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pRenderPassBegin_host, &pSubpassBeginInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginRenderPass2KHR(void *args) { struct vkCmdBeginRenderPass2KHR_params *params = args; TRACE("%p, %p, %p\n", params->commandBuffer, params->pRenderPassBegin, params->pSubpassBeginInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginRenderPass2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pRenderPassBegin, params->pSubpassBeginInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginRenderPass2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pRenderPassBegin; PTR32 pSubpassBeginInfo; } *params = args; VkRenderPassBeginInfo pRenderPassBegin_host; VkSubpassBeginInfo pSubpassBeginInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->commandBuffer, params->pRenderPassBegin, params->pSubpassBeginInfo); init_conversion_context(&ctx); convert_VkRenderPassBeginInfo_win32_to_host(&ctx, (const VkRenderPassBeginInfo32 *)UlongToPtr(params->pRenderPassBegin), &pRenderPassBegin_host); convert_VkSubpassBeginInfo_win32_to_host((const VkSubpassBeginInfo32 *)UlongToPtr(params->pSubpassBeginInfo), &pSubpassBeginInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginRenderPass2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pRenderPassBegin_host, &pSubpassBeginInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginRendering(void *args) { struct vkCmdBeginRendering_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pRenderingInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginRendering(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pRenderingInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginRendering(void *args) { struct { PTR32 commandBuffer; PTR32 pRenderingInfo; } *params = args; VkRenderingInfo pRenderingInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pRenderingInfo); init_conversion_context(&ctx); convert_VkRenderingInfo_win32_to_host(&ctx, (const VkRenderingInfo32 *)UlongToPtr(params->pRenderingInfo), &pRenderingInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginRendering(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pRenderingInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginRenderingKHR(void *args) { struct vkCmdBeginRenderingKHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pRenderingInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginRenderingKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pRenderingInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginRenderingKHR(void *args) { struct { PTR32 commandBuffer; PTR32 pRenderingInfo; } *params = args; VkRenderingInfo pRenderingInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pRenderingInfo); init_conversion_context(&ctx); convert_VkRenderingInfo_win32_to_host(&ctx, (const VkRenderingInfo32 *)UlongToPtr(params->pRenderingInfo), &pRenderingInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginRenderingKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pRenderingInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBeginTransformFeedbackEXT(void *args) { struct vkCmdBeginTransformFeedbackEXT_params *params = args; TRACE("%p, %u, %u, %p, %p\n", params->commandBuffer, params->firstCounterBuffer, params->counterBufferCount, params->pCounterBuffers, params->pCounterBufferOffsets); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBeginTransformFeedbackEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstCounterBuffer, params->counterBufferCount, params->pCounterBuffers, params->pCounterBufferOffsets); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBeginTransformFeedbackEXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstCounterBuffer; uint32_t counterBufferCount; PTR32 pCounterBuffers; PTR32 pCounterBufferOffsets; } *params = args; TRACE("%#x, %u, %u, %#x, %#x\n", params->commandBuffer, params->firstCounterBuffer, params->counterBufferCount, params->pCounterBuffers, params->pCounterBufferOffsets); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBeginTransformFeedbackEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstCounterBuffer, params->counterBufferCount, (const VkBuffer *)UlongToPtr(params->pCounterBuffers), (const VkDeviceSize *)UlongToPtr(params->pCounterBufferOffsets)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindDescriptorBufferEmbeddedSamplersEXT(void *args) { struct vkCmdBindDescriptorBufferEmbeddedSamplersEXT_params *params = args; TRACE("%p, %#x, 0x%s, %u\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->layout), params->set); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindDescriptorBufferEmbeddedSamplersEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineBindPoint, params->layout, params->set); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindDescriptorBufferEmbeddedSamplersEXT(void *args) { struct { PTR32 commandBuffer; VkPipelineBindPoint pipelineBindPoint; VkPipelineLayout DECLSPEC_ALIGN(8) layout; uint32_t set; } *params = args; TRACE("%#x, %#x, 0x%s, %u\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->layout), params->set); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindDescriptorBufferEmbeddedSamplersEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineBindPoint, params->layout, params->set); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindDescriptorBuffersEXT(void *args) { struct vkCmdBindDescriptorBuffersEXT_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->bufferCount, params->pBindingInfos); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindDescriptorBuffersEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->bufferCount, params->pBindingInfos); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindDescriptorBuffersEXT(void *args) { struct { PTR32 commandBuffer; uint32_t bufferCount; PTR32 pBindingInfos; } *params = args; const VkDescriptorBufferBindingInfoEXT *pBindingInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->bufferCount, params->pBindingInfos); init_conversion_context(&ctx); pBindingInfos_host = convert_VkDescriptorBufferBindingInfoEXT_array_win32_to_host(&ctx, (const VkDescriptorBufferBindingInfoEXT32 *)UlongToPtr(params->pBindingInfos), params->bufferCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindDescriptorBuffersEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->bufferCount, pBindingInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindDescriptorSets(void *args) { struct vkCmdBindDescriptorSets_params *params = args; TRACE("%p, %#x, 0x%s, %u, %u, %p, %u, %p\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->layout), params->firstSet, params->descriptorSetCount, params->pDescriptorSets, params->dynamicOffsetCount, params->pDynamicOffsets); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindDescriptorSets(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineBindPoint, params->layout, params->firstSet, params->descriptorSetCount, params->pDescriptorSets, params->dynamicOffsetCount, params->pDynamicOffsets); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindDescriptorSets(void *args) { struct { PTR32 commandBuffer; VkPipelineBindPoint pipelineBindPoint; VkPipelineLayout DECLSPEC_ALIGN(8) layout; uint32_t firstSet; uint32_t descriptorSetCount; PTR32 pDescriptorSets; uint32_t dynamicOffsetCount; PTR32 pDynamicOffsets; } *params = args; TRACE("%#x, %#x, 0x%s, %u, %u, %#x, %u, %#x\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->layout), params->firstSet, params->descriptorSetCount, params->pDescriptorSets, params->dynamicOffsetCount, params->pDynamicOffsets); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindDescriptorSets(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineBindPoint, params->layout, params->firstSet, params->descriptorSetCount, (const VkDescriptorSet *)UlongToPtr(params->pDescriptorSets), params->dynamicOffsetCount, (const uint32_t *)UlongToPtr(params->pDynamicOffsets)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindIndexBuffer(void *args) { struct vkCmdBindIndexBuffer_params *params = args; TRACE("%p, 0x%s, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->indexType); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindIndexBuffer(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->indexType); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindIndexBuffer(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkIndexType indexType; } *params = args; TRACE("%#x, 0x%s, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->indexType); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindIndexBuffer(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->indexType); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindInvocationMaskHUAWEI(void *args) { struct vkCmdBindInvocationMaskHUAWEI_params *params = args; TRACE("%p, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->imageView), params->imageLayout); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindInvocationMaskHUAWEI(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->imageView, params->imageLayout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindInvocationMaskHUAWEI(void *args) { struct { PTR32 commandBuffer; VkImageView DECLSPEC_ALIGN(8) imageView; VkImageLayout imageLayout; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->imageView), params->imageLayout); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindInvocationMaskHUAWEI(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->imageView, params->imageLayout); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindPipeline(void *args) { struct vkCmdBindPipeline_params *params = args; TRACE("%p, %#x, 0x%s\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->pipeline)); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindPipeline(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineBindPoint, params->pipeline); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindPipeline(void *args) { struct { PTR32 commandBuffer; VkPipelineBindPoint pipelineBindPoint; VkPipeline DECLSPEC_ALIGN(8) pipeline; } *params = args; TRACE("%#x, %#x, 0x%s\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->pipeline)); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindPipeline(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineBindPoint, params->pipeline); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindPipelineShaderGroupNV(void *args) { struct vkCmdBindPipelineShaderGroupNV_params *params = args; TRACE("%p, %#x, 0x%s, %u\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->pipeline), params->groupIndex); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindPipelineShaderGroupNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineBindPoint, params->pipeline, params->groupIndex); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindPipelineShaderGroupNV(void *args) { struct { PTR32 commandBuffer; VkPipelineBindPoint pipelineBindPoint; VkPipeline DECLSPEC_ALIGN(8) pipeline; uint32_t groupIndex; } *params = args; TRACE("%#x, %#x, 0x%s, %u\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->pipeline), params->groupIndex); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindPipelineShaderGroupNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineBindPoint, params->pipeline, params->groupIndex); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindShadingRateImageNV(void *args) { struct vkCmdBindShadingRateImageNV_params *params = args; TRACE("%p, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->imageView), params->imageLayout); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindShadingRateImageNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->imageView, params->imageLayout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindShadingRateImageNV(void *args) { struct { PTR32 commandBuffer; VkImageView DECLSPEC_ALIGN(8) imageView; VkImageLayout imageLayout; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->imageView), params->imageLayout); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindShadingRateImageNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->imageView, params->imageLayout); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindTransformFeedbackBuffersEXT(void *args) { struct vkCmdBindTransformFeedbackBuffersEXT_params *params = args; TRACE("%p, %u, %u, %p, %p, %p\n", params->commandBuffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindTransformFeedbackBuffersEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindTransformFeedbackBuffersEXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstBinding; uint32_t bindingCount; PTR32 pBuffers; PTR32 pOffsets; PTR32 pSizes; } *params = args; TRACE("%#x, %u, %u, %#x, %#x, %#x\n", params->commandBuffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindTransformFeedbackBuffersEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstBinding, params->bindingCount, (const VkBuffer *)UlongToPtr(params->pBuffers), (const VkDeviceSize *)UlongToPtr(params->pOffsets), (const VkDeviceSize *)UlongToPtr(params->pSizes)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindVertexBuffers(void *args) { struct vkCmdBindVertexBuffers_params *params = args; TRACE("%p, %u, %u, %p, %p\n", params->commandBuffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindVertexBuffers(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindVertexBuffers(void *args) { struct { PTR32 commandBuffer; uint32_t firstBinding; uint32_t bindingCount; PTR32 pBuffers; PTR32 pOffsets; } *params = args; TRACE("%#x, %u, %u, %#x, %#x\n", params->commandBuffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindVertexBuffers(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstBinding, params->bindingCount, (const VkBuffer *)UlongToPtr(params->pBuffers), (const VkDeviceSize *)UlongToPtr(params->pOffsets)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindVertexBuffers2(void *args) { struct vkCmdBindVertexBuffers2_params *params = args; TRACE("%p, %u, %u, %p, %p, %p, %p\n", params->commandBuffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes, params->pStrides); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindVertexBuffers2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes, params->pStrides); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindVertexBuffers2(void *args) { struct { PTR32 commandBuffer; uint32_t firstBinding; uint32_t bindingCount; PTR32 pBuffers; PTR32 pOffsets; PTR32 pSizes; PTR32 pStrides; } *params = args; TRACE("%#x, %u, %u, %#x, %#x, %#x, %#x\n", params->commandBuffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes, params->pStrides); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindVertexBuffers2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstBinding, params->bindingCount, (const VkBuffer *)UlongToPtr(params->pBuffers), (const VkDeviceSize *)UlongToPtr(params->pOffsets), (const VkDeviceSize *)UlongToPtr(params->pSizes), (const VkDeviceSize *)UlongToPtr(params->pStrides)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBindVertexBuffers2EXT(void *args) { struct vkCmdBindVertexBuffers2EXT_params *params = args; TRACE("%p, %u, %u, %p, %p, %p, %p\n", params->commandBuffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes, params->pStrides); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindVertexBuffers2EXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes, params->pStrides); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBindVertexBuffers2EXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstBinding; uint32_t bindingCount; PTR32 pBuffers; PTR32 pOffsets; PTR32 pSizes; PTR32 pStrides; } *params = args; TRACE("%#x, %u, %u, %#x, %#x, %#x, %#x\n", params->commandBuffer, params->firstBinding, params->bindingCount, params->pBuffers, params->pOffsets, params->pSizes, params->pStrides); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindVertexBuffers2EXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstBinding, params->bindingCount, (const VkBuffer *)UlongToPtr(params->pBuffers), (const VkDeviceSize *)UlongToPtr(params->pOffsets), (const VkDeviceSize *)UlongToPtr(params->pSizes), (const VkDeviceSize *)UlongToPtr(params->pStrides)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBlitImage(void *args) { struct vkCmdBlitImage_params *params = args; TRACE("%p, 0x%s, %#x, 0x%s, %#x, %u, %p, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->srcImage), params->srcImageLayout, wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->regionCount, params->pRegions, params->filter); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBlitImage(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->srcImage, params->srcImageLayout, params->dstImage, params->dstImageLayout, params->regionCount, params->pRegions, params->filter); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBlitImage(void *args) { struct { PTR32 commandBuffer; VkImage DECLSPEC_ALIGN(8) srcImage; VkImageLayout srcImageLayout; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; uint32_t regionCount; PTR32 pRegions; VkFilter filter; } *params = args; TRACE("%#x, 0x%s, %#x, 0x%s, %#x, %u, %#x, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->srcImage), params->srcImageLayout, wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->regionCount, params->pRegions, params->filter); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBlitImage(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->srcImage, params->srcImageLayout, params->dstImage, params->dstImageLayout, params->regionCount, (const VkImageBlit *)UlongToPtr(params->pRegions), params->filter); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBlitImage2(void *args) { struct vkCmdBlitImage2_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pBlitImageInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBlitImage2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pBlitImageInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBlitImage2(void *args) { struct { PTR32 commandBuffer; PTR32 pBlitImageInfo; } *params = args; VkBlitImageInfo2 pBlitImageInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pBlitImageInfo); init_conversion_context(&ctx); convert_VkBlitImageInfo2_win32_to_host(&ctx, (const VkBlitImageInfo232 *)UlongToPtr(params->pBlitImageInfo), &pBlitImageInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBlitImage2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pBlitImageInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBlitImage2KHR(void *args) { struct vkCmdBlitImage2KHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pBlitImageInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBlitImage2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pBlitImageInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBlitImage2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pBlitImageInfo; } *params = args; VkBlitImageInfo2 pBlitImageInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pBlitImageInfo); init_conversion_context(&ctx); convert_VkBlitImageInfo2_win32_to_host(&ctx, (const VkBlitImageInfo232 *)UlongToPtr(params->pBlitImageInfo), &pBlitImageInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBlitImage2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pBlitImageInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBuildAccelerationStructureNV(void *args) { struct vkCmdBuildAccelerationStructureNV_params *params = args; TRACE("%p, %p, 0x%s, 0x%s, %u, 0x%s, 0x%s, 0x%s, 0x%s\n", params->commandBuffer, params->pInfo, wine_dbgstr_longlong(params->instanceData), wine_dbgstr_longlong(params->instanceOffset), params->update, wine_dbgstr_longlong(params->dst), wine_dbgstr_longlong(params->src), wine_dbgstr_longlong(params->scratch), wine_dbgstr_longlong(params->scratchOffset)); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBuildAccelerationStructureNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pInfo, params->instanceData, params->instanceOffset, params->update, params->dst, params->src, params->scratch, params->scratchOffset); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBuildAccelerationStructureNV(void *args) { struct { PTR32 commandBuffer; PTR32 pInfo; VkBuffer DECLSPEC_ALIGN(8) instanceData; VkDeviceSize DECLSPEC_ALIGN(8) instanceOffset; VkBool32 update; VkAccelerationStructureNV DECLSPEC_ALIGN(8) dst; VkAccelerationStructureNV DECLSPEC_ALIGN(8) src; VkBuffer DECLSPEC_ALIGN(8) scratch; VkDeviceSize DECLSPEC_ALIGN(8) scratchOffset; } *params = args; VkAccelerationStructureInfoNV pInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, 0x%s, 0x%s, %u, 0x%s, 0x%s, 0x%s, 0x%s\n", params->commandBuffer, params->pInfo, wine_dbgstr_longlong(params->instanceData), wine_dbgstr_longlong(params->instanceOffset), params->update, wine_dbgstr_longlong(params->dst), wine_dbgstr_longlong(params->src), wine_dbgstr_longlong(params->scratch), wine_dbgstr_longlong(params->scratchOffset)); init_conversion_context(&ctx); convert_VkAccelerationStructureInfoNV_win32_to_host(&ctx, (const VkAccelerationStructureInfoNV32 *)UlongToPtr(params->pInfo), &pInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBuildAccelerationStructureNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pInfo_host, params->instanceData, params->instanceOffset, params->update, params->dst, params->src, params->scratch, params->scratchOffset); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBuildAccelerationStructuresIndirectKHR(void *args) { struct vkCmdBuildAccelerationStructuresIndirectKHR_params *params = args; TRACE("%p, %u, %p, %p, %p, %p\n", params->commandBuffer, params->infoCount, params->pInfos, params->pIndirectDeviceAddresses, params->pIndirectStrides, params->ppMaxPrimitiveCounts); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBuildAccelerationStructuresIndirectKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->infoCount, params->pInfos, params->pIndirectDeviceAddresses, params->pIndirectStrides, params->ppMaxPrimitiveCounts); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBuildAccelerationStructuresIndirectKHR(void *args) { struct { PTR32 commandBuffer; uint32_t infoCount; PTR32 pInfos; PTR32 pIndirectDeviceAddresses; PTR32 pIndirectStrides; PTR32 ppMaxPrimitiveCounts; } *params = args; const VkAccelerationStructureBuildGeometryInfoKHR *pInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %#x, %#x, %#x\n", params->commandBuffer, params->infoCount, params->pInfos, params->pIndirectDeviceAddresses, params->pIndirectStrides, params->ppMaxPrimitiveCounts); init_conversion_context(&ctx); pInfos_host = convert_VkAccelerationStructureBuildGeometryInfoKHR_array_win32_to_host(&ctx, (const VkAccelerationStructureBuildGeometryInfoKHR32 *)UlongToPtr(params->pInfos), params->infoCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBuildAccelerationStructuresIndirectKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->infoCount, pInfos_host, (const VkDeviceAddress *)UlongToPtr(params->pIndirectDeviceAddresses), (const uint32_t *)UlongToPtr(params->pIndirectStrides), (const uint32_t * const*)UlongToPtr(params->ppMaxPrimitiveCounts)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBuildAccelerationStructuresKHR(void *args) { struct vkCmdBuildAccelerationStructuresKHR_params *params = args; TRACE("%p, %u, %p, %p\n", params->commandBuffer, params->infoCount, params->pInfos, params->ppBuildRangeInfos); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBuildAccelerationStructuresKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->infoCount, params->pInfos, params->ppBuildRangeInfos); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBuildAccelerationStructuresKHR(void *args) { struct { PTR32 commandBuffer; uint32_t infoCount; PTR32 pInfos; PTR32 ppBuildRangeInfos; } *params = args; const VkAccelerationStructureBuildGeometryInfoKHR *pInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %#x\n", params->commandBuffer, params->infoCount, params->pInfos, params->ppBuildRangeInfos); init_conversion_context(&ctx); pInfos_host = convert_VkAccelerationStructureBuildGeometryInfoKHR_array_win32_to_host(&ctx, (const VkAccelerationStructureBuildGeometryInfoKHR32 *)UlongToPtr(params->pInfos), params->infoCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBuildAccelerationStructuresKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->infoCount, pInfos_host, (const VkAccelerationStructureBuildRangeInfoKHR * const*)UlongToPtr(params->ppBuildRangeInfos)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdBuildMicromapsEXT(void *args) { struct vkCmdBuildMicromapsEXT_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->infoCount, params->pInfos); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBuildMicromapsEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->infoCount, params->pInfos); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdBuildMicromapsEXT(void *args) { struct { PTR32 commandBuffer; uint32_t infoCount; PTR32 pInfos; } *params = args; const VkMicromapBuildInfoEXT *pInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->infoCount, params->pInfos); init_conversion_context(&ctx); pInfos_host = convert_VkMicromapBuildInfoEXT_array_win32_to_host(&ctx, (const VkMicromapBuildInfoEXT32 *)UlongToPtr(params->pInfos), params->infoCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBuildMicromapsEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->infoCount, pInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdClearAttachments(void *args) { struct vkCmdClearAttachments_params *params = args; TRACE("%p, %u, %p, %u, %p\n", params->commandBuffer, params->attachmentCount, params->pAttachments, params->rectCount, params->pRects); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdClearAttachments(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->attachmentCount, params->pAttachments, params->rectCount, params->pRects); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdClearAttachments(void *args) { struct { PTR32 commandBuffer; uint32_t attachmentCount; PTR32 pAttachments; uint32_t rectCount; PTR32 pRects; } *params = args; TRACE("%#x, %u, %#x, %u, %#x\n", params->commandBuffer, params->attachmentCount, params->pAttachments, params->rectCount, params->pRects); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdClearAttachments(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->attachmentCount, (const VkClearAttachment *)UlongToPtr(params->pAttachments), params->rectCount, (const VkClearRect *)UlongToPtr(params->pRects)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdClearColorImage(void *args) { struct vkCmdClearColorImage_params *params = args; TRACE("%p, 0x%s, %#x, %p, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->image), params->imageLayout, params->pColor, params->rangeCount, params->pRanges); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdClearColorImage(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->image, params->imageLayout, params->pColor, params->rangeCount, params->pRanges); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdClearColorImage(void *args) { struct { PTR32 commandBuffer; VkImage DECLSPEC_ALIGN(8) image; VkImageLayout imageLayout; PTR32 pColor; uint32_t rangeCount; PTR32 pRanges; } *params = args; TRACE("%#x, 0x%s, %#x, %#x, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->image), params->imageLayout, params->pColor, params->rangeCount, params->pRanges); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdClearColorImage(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->image, params->imageLayout, (const VkClearColorValue *)UlongToPtr(params->pColor), params->rangeCount, (const VkImageSubresourceRange *)UlongToPtr(params->pRanges)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdClearDepthStencilImage(void *args) { struct vkCmdClearDepthStencilImage_params *params = args; TRACE("%p, 0x%s, %#x, %p, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->image), params->imageLayout, params->pDepthStencil, params->rangeCount, params->pRanges); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdClearDepthStencilImage(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->image, params->imageLayout, params->pDepthStencil, params->rangeCount, params->pRanges); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdClearDepthStencilImage(void *args) { struct { PTR32 commandBuffer; VkImage DECLSPEC_ALIGN(8) image; VkImageLayout imageLayout; PTR32 pDepthStencil; uint32_t rangeCount; PTR32 pRanges; } *params = args; TRACE("%#x, 0x%s, %#x, %#x, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->image), params->imageLayout, params->pDepthStencil, params->rangeCount, params->pRanges); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdClearDepthStencilImage(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->image, params->imageLayout, (const VkClearDepthStencilValue *)UlongToPtr(params->pDepthStencil), params->rangeCount, (const VkImageSubresourceRange *)UlongToPtr(params->pRanges)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyAccelerationStructureKHR(void *args) { struct vkCmdCopyAccelerationStructureKHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyAccelerationStructureKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyAccelerationStructureKHR(void *args) { struct { PTR32 commandBuffer; PTR32 pInfo; } *params = args; VkCopyAccelerationStructureInfoKHR pInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pInfo); convert_VkCopyAccelerationStructureInfoKHR_win32_to_host((const VkCopyAccelerationStructureInfoKHR32 *)UlongToPtr(params->pInfo), &pInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyAccelerationStructureKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyAccelerationStructureNV(void *args) { struct vkCmdCopyAccelerationStructureNV_params *params = args; TRACE("%p, 0x%s, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->dst), wine_dbgstr_longlong(params->src), params->mode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyAccelerationStructureNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->dst, params->src, params->mode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyAccelerationStructureNV(void *args) { struct { PTR32 commandBuffer; VkAccelerationStructureNV DECLSPEC_ALIGN(8) dst; VkAccelerationStructureNV DECLSPEC_ALIGN(8) src; VkCopyAccelerationStructureModeKHR mode; } *params = args; TRACE("%#x, 0x%s, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->dst), wine_dbgstr_longlong(params->src), params->mode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyAccelerationStructureNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->dst, params->src, params->mode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyAccelerationStructureToMemoryKHR(void *args) { struct vkCmdCopyAccelerationStructureToMemoryKHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyAccelerationStructureToMemoryKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyAccelerationStructureToMemoryKHR(void *args) { struct { PTR32 commandBuffer; PTR32 pInfo; } *params = args; VkCopyAccelerationStructureToMemoryInfoKHR pInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pInfo); convert_VkCopyAccelerationStructureToMemoryInfoKHR_win32_to_host((const VkCopyAccelerationStructureToMemoryInfoKHR32 *)UlongToPtr(params->pInfo), &pInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyAccelerationStructureToMemoryKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyBuffer(void *args) { struct vkCmdCopyBuffer_params *params = args; TRACE("%p, 0x%s, 0x%s, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->srcBuffer), wine_dbgstr_longlong(params->dstBuffer), params->regionCount, params->pRegions); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyBuffer(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->srcBuffer, params->dstBuffer, params->regionCount, params->pRegions); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyBuffer(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) srcBuffer; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; uint32_t regionCount; PTR32 pRegions; } *params = args; const VkBufferCopy *pRegions_host; struct conversion_context ctx; TRACE("%#x, 0x%s, 0x%s, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->srcBuffer), wine_dbgstr_longlong(params->dstBuffer), params->regionCount, params->pRegions); init_conversion_context(&ctx); pRegions_host = convert_VkBufferCopy_array_win32_to_host(&ctx, (const VkBufferCopy32 *)UlongToPtr(params->pRegions), params->regionCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyBuffer(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->srcBuffer, params->dstBuffer, params->regionCount, pRegions_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyBuffer2(void *args) { struct vkCmdCopyBuffer2_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCopyBufferInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyBuffer2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCopyBufferInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyBuffer2(void *args) { struct { PTR32 commandBuffer; PTR32 pCopyBufferInfo; } *params = args; VkCopyBufferInfo2 pCopyBufferInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pCopyBufferInfo); init_conversion_context(&ctx); convert_VkCopyBufferInfo2_win32_to_host(&ctx, (const VkCopyBufferInfo232 *)UlongToPtr(params->pCopyBufferInfo), &pCopyBufferInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyBuffer2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pCopyBufferInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyBuffer2KHR(void *args) { struct vkCmdCopyBuffer2KHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCopyBufferInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyBuffer2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCopyBufferInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyBuffer2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pCopyBufferInfo; } *params = args; VkCopyBufferInfo2 pCopyBufferInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pCopyBufferInfo); init_conversion_context(&ctx); convert_VkCopyBufferInfo2_win32_to_host(&ctx, (const VkCopyBufferInfo232 *)UlongToPtr(params->pCopyBufferInfo), &pCopyBufferInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyBuffer2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pCopyBufferInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyBufferToImage(void *args) { struct vkCmdCopyBufferToImage_params *params = args; TRACE("%p, 0x%s, 0x%s, %#x, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->srcBuffer), wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->regionCount, params->pRegions); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyBufferToImage(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->srcBuffer, params->dstImage, params->dstImageLayout, params->regionCount, params->pRegions); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyBufferToImage(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) srcBuffer; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; uint32_t regionCount; PTR32 pRegions; } *params = args; const VkBufferImageCopy *pRegions_host; struct conversion_context ctx; TRACE("%#x, 0x%s, 0x%s, %#x, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->srcBuffer), wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->regionCount, params->pRegions); init_conversion_context(&ctx); pRegions_host = convert_VkBufferImageCopy_array_win32_to_host(&ctx, (const VkBufferImageCopy32 *)UlongToPtr(params->pRegions), params->regionCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyBufferToImage(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->srcBuffer, params->dstImage, params->dstImageLayout, params->regionCount, pRegions_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyBufferToImage2(void *args) { struct vkCmdCopyBufferToImage2_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCopyBufferToImageInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyBufferToImage2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCopyBufferToImageInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyBufferToImage2(void *args) { struct { PTR32 commandBuffer; PTR32 pCopyBufferToImageInfo; } *params = args; VkCopyBufferToImageInfo2 pCopyBufferToImageInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pCopyBufferToImageInfo); init_conversion_context(&ctx); convert_VkCopyBufferToImageInfo2_win32_to_host(&ctx, (const VkCopyBufferToImageInfo232 *)UlongToPtr(params->pCopyBufferToImageInfo), &pCopyBufferToImageInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyBufferToImage2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pCopyBufferToImageInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyBufferToImage2KHR(void *args) { struct vkCmdCopyBufferToImage2KHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCopyBufferToImageInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyBufferToImage2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCopyBufferToImageInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyBufferToImage2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pCopyBufferToImageInfo; } *params = args; VkCopyBufferToImageInfo2 pCopyBufferToImageInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pCopyBufferToImageInfo); init_conversion_context(&ctx); convert_VkCopyBufferToImageInfo2_win32_to_host(&ctx, (const VkCopyBufferToImageInfo232 *)UlongToPtr(params->pCopyBufferToImageInfo), &pCopyBufferToImageInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyBufferToImage2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pCopyBufferToImageInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyImage(void *args) { struct vkCmdCopyImage_params *params = args; TRACE("%p, 0x%s, %#x, 0x%s, %#x, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->srcImage), params->srcImageLayout, wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->regionCount, params->pRegions); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyImage(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->srcImage, params->srcImageLayout, params->dstImage, params->dstImageLayout, params->regionCount, params->pRegions); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyImage(void *args) { struct { PTR32 commandBuffer; VkImage DECLSPEC_ALIGN(8) srcImage; VkImageLayout srcImageLayout; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; uint32_t regionCount; PTR32 pRegions; } *params = args; TRACE("%#x, 0x%s, %#x, 0x%s, %#x, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->srcImage), params->srcImageLayout, wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->regionCount, params->pRegions); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyImage(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->srcImage, params->srcImageLayout, params->dstImage, params->dstImageLayout, params->regionCount, (const VkImageCopy *)UlongToPtr(params->pRegions)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyImage2(void *args) { struct vkCmdCopyImage2_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCopyImageInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyImage2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCopyImageInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyImage2(void *args) { struct { PTR32 commandBuffer; PTR32 pCopyImageInfo; } *params = args; VkCopyImageInfo2 pCopyImageInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pCopyImageInfo); init_conversion_context(&ctx); convert_VkCopyImageInfo2_win32_to_host(&ctx, (const VkCopyImageInfo232 *)UlongToPtr(params->pCopyImageInfo), &pCopyImageInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyImage2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pCopyImageInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyImage2KHR(void *args) { struct vkCmdCopyImage2KHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCopyImageInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyImage2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCopyImageInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyImage2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pCopyImageInfo; } *params = args; VkCopyImageInfo2 pCopyImageInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pCopyImageInfo); init_conversion_context(&ctx); convert_VkCopyImageInfo2_win32_to_host(&ctx, (const VkCopyImageInfo232 *)UlongToPtr(params->pCopyImageInfo), &pCopyImageInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyImage2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pCopyImageInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyImageToBuffer(void *args) { struct vkCmdCopyImageToBuffer_params *params = args; TRACE("%p, 0x%s, %#x, 0x%s, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->srcImage), params->srcImageLayout, wine_dbgstr_longlong(params->dstBuffer), params->regionCount, params->pRegions); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyImageToBuffer(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->srcImage, params->srcImageLayout, params->dstBuffer, params->regionCount, params->pRegions); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyImageToBuffer(void *args) { struct { PTR32 commandBuffer; VkImage DECLSPEC_ALIGN(8) srcImage; VkImageLayout srcImageLayout; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; uint32_t regionCount; PTR32 pRegions; } *params = args; const VkBufferImageCopy *pRegions_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %#x, 0x%s, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->srcImage), params->srcImageLayout, wine_dbgstr_longlong(params->dstBuffer), params->regionCount, params->pRegions); init_conversion_context(&ctx); pRegions_host = convert_VkBufferImageCopy_array_win32_to_host(&ctx, (const VkBufferImageCopy32 *)UlongToPtr(params->pRegions), params->regionCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyImageToBuffer(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->srcImage, params->srcImageLayout, params->dstBuffer, params->regionCount, pRegions_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyImageToBuffer2(void *args) { struct vkCmdCopyImageToBuffer2_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCopyImageToBufferInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyImageToBuffer2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCopyImageToBufferInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyImageToBuffer2(void *args) { struct { PTR32 commandBuffer; PTR32 pCopyImageToBufferInfo; } *params = args; VkCopyImageToBufferInfo2 pCopyImageToBufferInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pCopyImageToBufferInfo); init_conversion_context(&ctx); convert_VkCopyImageToBufferInfo2_win32_to_host(&ctx, (const VkCopyImageToBufferInfo232 *)UlongToPtr(params->pCopyImageToBufferInfo), &pCopyImageToBufferInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyImageToBuffer2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pCopyImageToBufferInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyImageToBuffer2KHR(void *args) { struct vkCmdCopyImageToBuffer2KHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCopyImageToBufferInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyImageToBuffer2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCopyImageToBufferInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyImageToBuffer2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pCopyImageToBufferInfo; } *params = args; VkCopyImageToBufferInfo2 pCopyImageToBufferInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pCopyImageToBufferInfo); init_conversion_context(&ctx); convert_VkCopyImageToBufferInfo2_win32_to_host(&ctx, (const VkCopyImageToBufferInfo232 *)UlongToPtr(params->pCopyImageToBufferInfo), &pCopyImageToBufferInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyImageToBuffer2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pCopyImageToBufferInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 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; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyMemoryIndirectNV(void *args) { struct { PTR32 commandBuffer; VkDeviceAddress DECLSPEC_ALIGN(8) copyBufferAddress; uint32_t copyCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->copyBufferAddress), params->copyCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyMemoryIndirectNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->copyBufferAddress, params->copyCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyMemoryToAccelerationStructureKHR(void *args) { struct vkCmdCopyMemoryToAccelerationStructureKHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyMemoryToAccelerationStructureKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyMemoryToAccelerationStructureKHR(void *args) { struct { PTR32 commandBuffer; PTR32 pInfo; } *params = args; VkCopyMemoryToAccelerationStructureInfoKHR pInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pInfo); convert_VkCopyMemoryToAccelerationStructureInfoKHR_win32_to_host((const VkCopyMemoryToAccelerationStructureInfoKHR32 *)UlongToPtr(params->pInfo), &pInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyMemoryToAccelerationStructureKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 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; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyMemoryToImageIndirectNV(void *args) { struct { PTR32 commandBuffer; VkDeviceAddress DECLSPEC_ALIGN(8) copyBufferAddress; uint32_t copyCount; uint32_t stride; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; PTR32 pImageSubresources; } *params = args; TRACE("%#x, 0x%s, %u, %u, 0x%s, %#x, %#x\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((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyMemoryToImageIndirectNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->copyBufferAddress, params->copyCount, params->stride, params->dstImage, params->dstImageLayout, (const VkImageSubresourceLayers *)UlongToPtr(params->pImageSubresources)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyMemoryToMicromapEXT(void *args) { struct vkCmdCopyMemoryToMicromapEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyMemoryToMicromapEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyMemoryToMicromapEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pInfo; } *params = args; VkCopyMemoryToMicromapInfoEXT pInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pInfo); convert_VkCopyMemoryToMicromapInfoEXT_win32_to_host((const VkCopyMemoryToMicromapInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyMemoryToMicromapEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyMicromapEXT(void *args) { struct vkCmdCopyMicromapEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyMicromapEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyMicromapEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pInfo; } *params = args; VkCopyMicromapInfoEXT pInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pInfo); convert_VkCopyMicromapInfoEXT_win32_to_host((const VkCopyMicromapInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyMicromapEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyMicromapToMemoryEXT(void *args) { struct vkCmdCopyMicromapToMemoryEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyMicromapToMemoryEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyMicromapToMemoryEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pInfo; } *params = args; VkCopyMicromapToMemoryInfoEXT pInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pInfo); convert_VkCopyMicromapToMemoryInfoEXT_win32_to_host((const VkCopyMicromapToMemoryInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyMicromapToMemoryEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCopyQueryPoolResults(void *args) { struct vkCmdCopyQueryPoolResults_params *params = args; TRACE("%p, 0x%s, %u, %u, 0x%s, 0x%s, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount, wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), wine_dbgstr_longlong(params->stride), params->flags); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCopyQueryPoolResults(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->queryPool, params->firstQuery, params->queryCount, params->dstBuffer, params->dstOffset, params->stride, params->flags); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCopyQueryPoolResults(void *args) { struct { PTR32 commandBuffer; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t firstQuery; uint32_t queryCount; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; VkDeviceSize DECLSPEC_ALIGN(8) dstOffset; VkDeviceSize DECLSPEC_ALIGN(8) stride; VkQueryResultFlags flags; } *params = args; TRACE("%#x, 0x%s, %u, %u, 0x%s, 0x%s, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount, wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), wine_dbgstr_longlong(params->stride), params->flags); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCopyQueryPoolResults(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->queryPool, params->firstQuery, params->queryCount, params->dstBuffer, params->dstOffset, params->stride, params->flags); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdCuLaunchKernelNVX(void *args) { struct vkCmdCuLaunchKernelNVX_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pLaunchInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdCuLaunchKernelNVX(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pLaunchInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdCuLaunchKernelNVX(void *args) { struct { PTR32 commandBuffer; PTR32 pLaunchInfo; } *params = args; VkCuLaunchInfoNVX pLaunchInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pLaunchInfo); convert_VkCuLaunchInfoNVX_win32_to_host((const VkCuLaunchInfoNVX32 *)UlongToPtr(params->pLaunchInfo), &pLaunchInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdCuLaunchKernelNVX(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pLaunchInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDebugMarkerBeginEXT(void *args) { struct vkCmdDebugMarkerBeginEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pMarkerInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDebugMarkerBeginEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pMarkerInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDebugMarkerBeginEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pMarkerInfo; } *params = args; VkDebugMarkerMarkerInfoEXT pMarkerInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pMarkerInfo); convert_VkDebugMarkerMarkerInfoEXT_win32_to_host((const VkDebugMarkerMarkerInfoEXT32 *)UlongToPtr(params->pMarkerInfo), &pMarkerInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDebugMarkerBeginEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pMarkerInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDebugMarkerEndEXT(void *args) { struct vkCmdDebugMarkerEndEXT_params *params = args; TRACE("%p\n", params->commandBuffer); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDebugMarkerEndEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDebugMarkerEndEXT(void *args) { struct { PTR32 commandBuffer; } *params = args; TRACE("%#x\n", params->commandBuffer); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDebugMarkerEndEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDebugMarkerInsertEXT(void *args) { struct vkCmdDebugMarkerInsertEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pMarkerInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDebugMarkerInsertEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pMarkerInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDebugMarkerInsertEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pMarkerInfo; } *params = args; VkDebugMarkerMarkerInfoEXT pMarkerInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pMarkerInfo); convert_VkDebugMarkerMarkerInfoEXT_win32_to_host((const VkDebugMarkerMarkerInfoEXT32 *)UlongToPtr(params->pMarkerInfo), &pMarkerInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDebugMarkerInsertEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pMarkerInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 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; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDecompressMemoryIndirectCountNV(void *args) { struct { PTR32 commandBuffer; VkDeviceAddress DECLSPEC_ALIGN(8) indirectCommandsAddress; VkDeviceAddress DECLSPEC_ALIGN(8) indirectCommandsCountAddress; uint32_t stride; } *params = args; TRACE("%#x, 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((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDecompressMemoryIndirectCountNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->indirectCommandsAddress, params->indirectCommandsCountAddress, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 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; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDecompressMemoryNV(void *args) { struct { PTR32 commandBuffer; uint32_t decompressRegionCount; PTR32 pDecompressMemoryRegions; } *params = args; const VkDecompressMemoryRegionNV *pDecompressMemoryRegions_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->decompressRegionCount, params->pDecompressMemoryRegions); init_conversion_context(&ctx); pDecompressMemoryRegions_host = convert_VkDecompressMemoryRegionNV_array_win32_to_host(&ctx, (const VkDecompressMemoryRegionNV32 *)UlongToPtr(params->pDecompressMemoryRegions), params->decompressRegionCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDecompressMemoryNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->decompressRegionCount, pDecompressMemoryRegions_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDispatch(void *args) { struct vkCmdDispatch_params *params = args; TRACE("%p, %u, %u, %u\n", params->commandBuffer, params->groupCountX, params->groupCountY, params->groupCountZ); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDispatch(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->groupCountX, params->groupCountY, params->groupCountZ); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDispatch(void *args) { struct { PTR32 commandBuffer; uint32_t groupCountX; uint32_t groupCountY; uint32_t groupCountZ; } *params = args; TRACE("%#x, %u, %u, %u\n", params->commandBuffer, params->groupCountX, params->groupCountY, params->groupCountZ); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDispatch(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->groupCountX, params->groupCountY, params->groupCountZ); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDispatchBase(void *args) { struct vkCmdDispatchBase_params *params = args; TRACE("%p, %u, %u, %u, %u, %u, %u\n", params->commandBuffer, params->baseGroupX, params->baseGroupY, params->baseGroupZ, params->groupCountX, params->groupCountY, params->groupCountZ); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDispatchBase(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->baseGroupX, params->baseGroupY, params->baseGroupZ, params->groupCountX, params->groupCountY, params->groupCountZ); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDispatchBase(void *args) { struct { PTR32 commandBuffer; uint32_t baseGroupX; uint32_t baseGroupY; uint32_t baseGroupZ; uint32_t groupCountX; uint32_t groupCountY; uint32_t groupCountZ; } *params = args; TRACE("%#x, %u, %u, %u, %u, %u, %u\n", params->commandBuffer, params->baseGroupX, params->baseGroupY, params->baseGroupZ, params->groupCountX, params->groupCountY, params->groupCountZ); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDispatchBase(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->baseGroupX, params->baseGroupY, params->baseGroupZ, params->groupCountX, params->groupCountY, params->groupCountZ); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDispatchBaseKHR(void *args) { struct vkCmdDispatchBaseKHR_params *params = args; TRACE("%p, %u, %u, %u, %u, %u, %u\n", params->commandBuffer, params->baseGroupX, params->baseGroupY, params->baseGroupZ, params->groupCountX, params->groupCountY, params->groupCountZ); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDispatchBaseKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->baseGroupX, params->baseGroupY, params->baseGroupZ, params->groupCountX, params->groupCountY, params->groupCountZ); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDispatchBaseKHR(void *args) { struct { PTR32 commandBuffer; uint32_t baseGroupX; uint32_t baseGroupY; uint32_t baseGroupZ; uint32_t groupCountX; uint32_t groupCountY; uint32_t groupCountZ; } *params = args; TRACE("%#x, %u, %u, %u, %u, %u, %u\n", params->commandBuffer, params->baseGroupX, params->baseGroupY, params->baseGroupZ, params->groupCountX, params->groupCountY, params->groupCountZ); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDispatchBaseKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->baseGroupX, params->baseGroupY, params->baseGroupZ, params->groupCountX, params->groupCountY, params->groupCountZ); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDispatchIndirect(void *args) { struct vkCmdDispatchIndirect_params *params = args; TRACE("%p, 0x%s, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset)); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDispatchIndirect(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDispatchIndirect(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; } *params = args; TRACE("%#x, 0x%s, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset)); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDispatchIndirect(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDraw(void *args) { struct vkCmdDraw_params *params = args; TRACE("%p, %u, %u, %u, %u\n", params->commandBuffer, params->vertexCount, params->instanceCount, params->firstVertex, params->firstInstance); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDraw(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->vertexCount, params->instanceCount, params->firstVertex, params->firstInstance); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDraw(void *args) { struct { PTR32 commandBuffer; uint32_t vertexCount; uint32_t instanceCount; uint32_t firstVertex; uint32_t firstInstance; } *params = args; TRACE("%#x, %u, %u, %u, %u\n", params->commandBuffer, params->vertexCount, params->instanceCount, params->firstVertex, params->firstInstance); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDraw(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->vertexCount, params->instanceCount, params->firstVertex, params->firstInstance); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndexed(void *args) { struct vkCmdDrawIndexed_params *params = args; TRACE("%p, %u, %u, %u, %d, %u\n", params->commandBuffer, params->indexCount, params->instanceCount, params->firstIndex, params->vertexOffset, params->firstInstance); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndexed(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->indexCount, params->instanceCount, params->firstIndex, params->vertexOffset, params->firstInstance); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndexed(void *args) { struct { PTR32 commandBuffer; uint32_t indexCount; uint32_t instanceCount; uint32_t firstIndex; int32_t vertexOffset; uint32_t firstInstance; } *params = args; TRACE("%#x, %u, %u, %u, %d, %u\n", params->commandBuffer, params->indexCount, params->instanceCount, params->firstIndex, params->vertexOffset, params->firstInstance); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndexed(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->indexCount, params->instanceCount, params->firstIndex, params->vertexOffset, params->firstInstance); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndexedIndirect(void *args) { struct vkCmdDrawIndexedIndirect_params *params = args; TRACE("%p, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->drawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndexedIndirect(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->drawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndexedIndirect(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; uint32_t drawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->drawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndexedIndirect(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->drawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndexedIndirectCount(void *args) { struct vkCmdDrawIndexedIndirectCount_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndexedIndirectCount(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndexedIndirectCount(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkBuffer DECLSPEC_ALIGN(8) countBuffer; VkDeviceSize DECLSPEC_ALIGN(8) countBufferOffset; uint32_t maxDrawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndexedIndirectCount(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndexedIndirectCountAMD(void *args) { struct vkCmdDrawIndexedIndirectCountAMD_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndexedIndirectCountAMD(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndexedIndirectCountAMD(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkBuffer DECLSPEC_ALIGN(8) countBuffer; VkDeviceSize DECLSPEC_ALIGN(8) countBufferOffset; uint32_t maxDrawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndexedIndirectCountAMD(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndexedIndirectCountKHR(void *args) { struct vkCmdDrawIndexedIndirectCountKHR_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndexedIndirectCountKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndexedIndirectCountKHR(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkBuffer DECLSPEC_ALIGN(8) countBuffer; VkDeviceSize DECLSPEC_ALIGN(8) countBufferOffset; uint32_t maxDrawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndexedIndirectCountKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndirect(void *args) { struct vkCmdDrawIndirect_params *params = args; TRACE("%p, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->drawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndirect(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->drawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndirect(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; uint32_t drawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->drawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndirect(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->drawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndirectByteCountEXT(void *args) { struct vkCmdDrawIndirectByteCountEXT_params *params = args; TRACE("%p, %u, %u, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, params->instanceCount, params->firstInstance, wine_dbgstr_longlong(params->counterBuffer), wine_dbgstr_longlong(params->counterBufferOffset), params->counterOffset, params->vertexStride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndirectByteCountEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->instanceCount, params->firstInstance, params->counterBuffer, params->counterBufferOffset, params->counterOffset, params->vertexStride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndirectByteCountEXT(void *args) { struct { PTR32 commandBuffer; uint32_t instanceCount; uint32_t firstInstance; VkBuffer DECLSPEC_ALIGN(8) counterBuffer; VkDeviceSize DECLSPEC_ALIGN(8) counterBufferOffset; uint32_t counterOffset; uint32_t vertexStride; } *params = args; TRACE("%#x, %u, %u, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, params->instanceCount, params->firstInstance, wine_dbgstr_longlong(params->counterBuffer), wine_dbgstr_longlong(params->counterBufferOffset), params->counterOffset, params->vertexStride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndirectByteCountEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->instanceCount, params->firstInstance, params->counterBuffer, params->counterBufferOffset, params->counterOffset, params->vertexStride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndirectCount(void *args) { struct vkCmdDrawIndirectCount_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndirectCount(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndirectCount(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkBuffer DECLSPEC_ALIGN(8) countBuffer; VkDeviceSize DECLSPEC_ALIGN(8) countBufferOffset; uint32_t maxDrawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndirectCount(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndirectCountAMD(void *args) { struct vkCmdDrawIndirectCountAMD_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndirectCountAMD(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndirectCountAMD(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkBuffer DECLSPEC_ALIGN(8) countBuffer; VkDeviceSize DECLSPEC_ALIGN(8) countBufferOffset; uint32_t maxDrawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndirectCountAMD(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawIndirectCountKHR(void *args) { struct vkCmdDrawIndirectCountKHR_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawIndirectCountKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawIndirectCountKHR(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkBuffer DECLSPEC_ALIGN(8) countBuffer; VkDeviceSize DECLSPEC_ALIGN(8) countBufferOffset; uint32_t maxDrawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawIndirectCountKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawMeshTasksEXT(void *args) { struct vkCmdDrawMeshTasksEXT_params *params = args; TRACE("%p, %u, %u, %u\n", params->commandBuffer, params->groupCountX, params->groupCountY, params->groupCountZ); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawMeshTasksEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->groupCountX, params->groupCountY, params->groupCountZ); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawMeshTasksEXT(void *args) { struct { PTR32 commandBuffer; uint32_t groupCountX; uint32_t groupCountY; uint32_t groupCountZ; } *params = args; TRACE("%#x, %u, %u, %u\n", params->commandBuffer, params->groupCountX, params->groupCountY, params->groupCountZ); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawMeshTasksEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->groupCountX, params->groupCountY, params->groupCountZ); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawMeshTasksIndirectCountEXT(void *args) { struct vkCmdDrawMeshTasksIndirectCountEXT_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawMeshTasksIndirectCountEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawMeshTasksIndirectCountEXT(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkBuffer DECLSPEC_ALIGN(8) countBuffer; VkDeviceSize DECLSPEC_ALIGN(8) countBufferOffset; uint32_t maxDrawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawMeshTasksIndirectCountEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawMeshTasksIndirectCountNV(void *args) { struct vkCmdDrawMeshTasksIndirectCountNV_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawMeshTasksIndirectCountNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawMeshTasksIndirectCountNV(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkBuffer DECLSPEC_ALIGN(8) countBuffer; VkDeviceSize DECLSPEC_ALIGN(8) countBufferOffset; uint32_t maxDrawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->countBuffer), wine_dbgstr_longlong(params->countBufferOffset), params->maxDrawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawMeshTasksIndirectCountNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->countBuffer, params->countBufferOffset, params->maxDrawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawMeshTasksIndirectEXT(void *args) { struct vkCmdDrawMeshTasksIndirectEXT_params *params = args; TRACE("%p, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->drawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawMeshTasksIndirectEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->drawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawMeshTasksIndirectEXT(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; uint32_t drawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->drawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawMeshTasksIndirectEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->drawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawMeshTasksIndirectNV(void *args) { struct vkCmdDrawMeshTasksIndirectNV_params *params = args; TRACE("%p, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->drawCount, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawMeshTasksIndirectNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->buffer, params->offset, params->drawCount, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawMeshTasksIndirectNV(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) buffer; VkDeviceSize DECLSPEC_ALIGN(8) offset; uint32_t drawCount; uint32_t stride; } *params = args; TRACE("%#x, 0x%s, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->buffer), wine_dbgstr_longlong(params->offset), params->drawCount, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawMeshTasksIndirectNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->buffer, params->offset, params->drawCount, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawMeshTasksNV(void *args) { struct vkCmdDrawMeshTasksNV_params *params = args; TRACE("%p, %u, %u\n", params->commandBuffer, params->taskCount, params->firstTask); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawMeshTasksNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->taskCount, params->firstTask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawMeshTasksNV(void *args) { struct { PTR32 commandBuffer; uint32_t taskCount; uint32_t firstTask; } *params = args; TRACE("%#x, %u, %u\n", params->commandBuffer, params->taskCount, params->firstTask); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawMeshTasksNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->taskCount, params->firstTask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawMultiEXT(void *args) { struct vkCmdDrawMultiEXT_params *params = args; TRACE("%p, %u, %p, %u, %u, %u\n", params->commandBuffer, params->drawCount, params->pVertexInfo, params->instanceCount, params->firstInstance, params->stride); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawMultiEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->drawCount, params->pVertexInfo, params->instanceCount, params->firstInstance, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawMultiEXT(void *args) { struct { PTR32 commandBuffer; uint32_t drawCount; PTR32 pVertexInfo; uint32_t instanceCount; uint32_t firstInstance; uint32_t stride; } *params = args; TRACE("%#x, %u, %#x, %u, %u, %u\n", params->commandBuffer, params->drawCount, params->pVertexInfo, params->instanceCount, params->firstInstance, params->stride); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawMultiEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->drawCount, (const VkMultiDrawInfoEXT *)UlongToPtr(params->pVertexInfo), params->instanceCount, params->firstInstance, params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdDrawMultiIndexedEXT(void *args) { struct vkCmdDrawMultiIndexedEXT_params *params = args; TRACE("%p, %u, %p, %u, %u, %u, %p\n", params->commandBuffer, params->drawCount, params->pIndexInfo, params->instanceCount, params->firstInstance, params->stride, params->pVertexOffset); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdDrawMultiIndexedEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->drawCount, params->pIndexInfo, params->instanceCount, params->firstInstance, params->stride, params->pVertexOffset); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdDrawMultiIndexedEXT(void *args) { struct { PTR32 commandBuffer; uint32_t drawCount; PTR32 pIndexInfo; uint32_t instanceCount; uint32_t firstInstance; uint32_t stride; PTR32 pVertexOffset; } *params = args; TRACE("%#x, %u, %#x, %u, %u, %u, %#x\n", params->commandBuffer, params->drawCount, params->pIndexInfo, params->instanceCount, params->firstInstance, params->stride, params->pVertexOffset); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdDrawMultiIndexedEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->drawCount, (const VkMultiDrawIndexedInfoEXT *)UlongToPtr(params->pIndexInfo), params->instanceCount, params->firstInstance, params->stride, (const int32_t *)UlongToPtr(params->pVertexOffset)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndConditionalRenderingEXT(void *args) { struct vkCmdEndConditionalRenderingEXT_params *params = args; TRACE("%p\n", params->commandBuffer); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndConditionalRenderingEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndConditionalRenderingEXT(void *args) { struct { PTR32 commandBuffer; } *params = args; TRACE("%#x\n", params->commandBuffer); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndConditionalRenderingEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndDebugUtilsLabelEXT(void *args) { struct vkCmdEndDebugUtilsLabelEXT_params *params = args; TRACE("%p\n", params->commandBuffer); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndDebugUtilsLabelEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndDebugUtilsLabelEXT(void *args) { struct { PTR32 commandBuffer; } *params = args; TRACE("%#x\n", params->commandBuffer); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndDebugUtilsLabelEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndQuery(void *args) { struct vkCmdEndQuery_params *params = args; TRACE("%p, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->query); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndQuery(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->queryPool, params->query); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndQuery(void *args) { struct { PTR32 commandBuffer; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t query; } *params = args; TRACE("%#x, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->query); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndQuery(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->queryPool, params->query); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndQueryIndexedEXT(void *args) { struct vkCmdEndQueryIndexedEXT_params *params = args; TRACE("%p, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->query, params->index); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndQueryIndexedEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->queryPool, params->query, params->index); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndQueryIndexedEXT(void *args) { struct { PTR32 commandBuffer; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t query; uint32_t index; } *params = args; TRACE("%#x, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->query, params->index); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndQueryIndexedEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->queryPool, params->query, params->index); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndRenderPass(void *args) { struct vkCmdEndRenderPass_params *params = args; TRACE("%p\n", params->commandBuffer); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndRenderPass(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndRenderPass(void *args) { struct { PTR32 commandBuffer; } *params = args; TRACE("%#x\n", params->commandBuffer); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndRenderPass(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndRenderPass2(void *args) { struct vkCmdEndRenderPass2_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pSubpassEndInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndRenderPass2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pSubpassEndInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndRenderPass2(void *args) { struct { PTR32 commandBuffer; PTR32 pSubpassEndInfo; } *params = args; VkSubpassEndInfo pSubpassEndInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pSubpassEndInfo); init_conversion_context(&ctx); convert_VkSubpassEndInfo_win32_to_host(&ctx, (const VkSubpassEndInfo32 *)UlongToPtr(params->pSubpassEndInfo), &pSubpassEndInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndRenderPass2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pSubpassEndInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndRenderPass2KHR(void *args) { struct vkCmdEndRenderPass2KHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pSubpassEndInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndRenderPass2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pSubpassEndInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndRenderPass2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pSubpassEndInfo; } *params = args; VkSubpassEndInfo pSubpassEndInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pSubpassEndInfo); init_conversion_context(&ctx); convert_VkSubpassEndInfo_win32_to_host(&ctx, (const VkSubpassEndInfo32 *)UlongToPtr(params->pSubpassEndInfo), &pSubpassEndInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndRenderPass2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pSubpassEndInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndRendering(void *args) { struct vkCmdEndRendering_params *params = args; TRACE("%p\n", params->commandBuffer); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndRendering(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndRendering(void *args) { struct { PTR32 commandBuffer; } *params = args; TRACE("%#x\n", params->commandBuffer); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndRendering(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndRenderingKHR(void *args) { struct vkCmdEndRenderingKHR_params *params = args; TRACE("%p\n", params->commandBuffer); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndRenderingKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndRenderingKHR(void *args) { struct { PTR32 commandBuffer; } *params = args; TRACE("%#x\n", params->commandBuffer); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndRenderingKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdEndTransformFeedbackEXT(void *args) { struct vkCmdEndTransformFeedbackEXT_params *params = args; TRACE("%p, %u, %u, %p, %p\n", params->commandBuffer, params->firstCounterBuffer, params->counterBufferCount, params->pCounterBuffers, params->pCounterBufferOffsets); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdEndTransformFeedbackEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstCounterBuffer, params->counterBufferCount, params->pCounterBuffers, params->pCounterBufferOffsets); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdEndTransformFeedbackEXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstCounterBuffer; uint32_t counterBufferCount; PTR32 pCounterBuffers; PTR32 pCounterBufferOffsets; } *params = args; TRACE("%#x, %u, %u, %#x, %#x\n", params->commandBuffer, params->firstCounterBuffer, params->counterBufferCount, params->pCounterBuffers, params->pCounterBufferOffsets); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdEndTransformFeedbackEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstCounterBuffer, params->counterBufferCount, (const VkBuffer *)UlongToPtr(params->pCounterBuffers), (const VkDeviceSize *)UlongToPtr(params->pCounterBufferOffsets)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdExecuteCommands(void *args) { struct vkCmdExecuteCommands_params *params = args; const VkCommandBuffer *pCommandBuffers_host; struct conversion_context ctx; TRACE("%p, %u, %p\n", params->commandBuffer, params->commandBufferCount, params->pCommandBuffers); init_conversion_context(&ctx); pCommandBuffers_host = convert_VkCommandBuffer_array_win64_to_host(&ctx, params->pCommandBuffers, params->commandBufferCount); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdExecuteCommands(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->commandBufferCount, pCommandBuffers_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdExecuteCommands(void *args) { struct { PTR32 commandBuffer; uint32_t commandBufferCount; PTR32 pCommandBuffers; } *params = args; const VkCommandBuffer *pCommandBuffers_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->commandBufferCount, params->pCommandBuffers); init_conversion_context(&ctx); pCommandBuffers_host = convert_VkCommandBuffer_array_win32_to_host(&ctx, (const PTR32 *)UlongToPtr(params->pCommandBuffers), params->commandBufferCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdExecuteCommands(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->commandBufferCount, pCommandBuffers_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdExecuteGeneratedCommandsNV(void *args) { struct vkCmdExecuteGeneratedCommandsNV_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->isPreprocessed, params->pGeneratedCommandsInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdExecuteGeneratedCommandsNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->isPreprocessed, params->pGeneratedCommandsInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdExecuteGeneratedCommandsNV(void *args) { struct { PTR32 commandBuffer; VkBool32 isPreprocessed; PTR32 pGeneratedCommandsInfo; } *params = args; VkGeneratedCommandsInfoNV pGeneratedCommandsInfo_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->isPreprocessed, params->pGeneratedCommandsInfo); init_conversion_context(&ctx); convert_VkGeneratedCommandsInfoNV_win32_to_host(&ctx, (const VkGeneratedCommandsInfoNV32 *)UlongToPtr(params->pGeneratedCommandsInfo), &pGeneratedCommandsInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdExecuteGeneratedCommandsNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->isPreprocessed, &pGeneratedCommandsInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdFillBuffer(void *args) { struct vkCmdFillBuffer_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), wine_dbgstr_longlong(params->size), params->data); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdFillBuffer(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->dstBuffer, params->dstOffset, params->size, params->data); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdFillBuffer(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; VkDeviceSize DECLSPEC_ALIGN(8) dstOffset; VkDeviceSize DECLSPEC_ALIGN(8) size; uint32_t data; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), wine_dbgstr_longlong(params->size), params->data); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdFillBuffer(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->dstBuffer, params->dstOffset, params->size, params->data); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdInsertDebugUtilsLabelEXT(void *args) { struct vkCmdInsertDebugUtilsLabelEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pLabelInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdInsertDebugUtilsLabelEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pLabelInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdInsertDebugUtilsLabelEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pLabelInfo; } *params = args; VkDebugUtilsLabelEXT pLabelInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pLabelInfo); convert_VkDebugUtilsLabelEXT_win32_to_host((const VkDebugUtilsLabelEXT32 *)UlongToPtr(params->pLabelInfo), &pLabelInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdInsertDebugUtilsLabelEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pLabelInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdNextSubpass(void *args) { struct vkCmdNextSubpass_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->contents); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdNextSubpass(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->contents); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdNextSubpass(void *args) { struct { PTR32 commandBuffer; VkSubpassContents contents; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->contents); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdNextSubpass(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->contents); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdNextSubpass2(void *args) { struct vkCmdNextSubpass2_params *params = args; TRACE("%p, %p, %p\n", params->commandBuffer, params->pSubpassBeginInfo, params->pSubpassEndInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdNextSubpass2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pSubpassBeginInfo, params->pSubpassEndInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdNextSubpass2(void *args) { struct { PTR32 commandBuffer; PTR32 pSubpassBeginInfo; PTR32 pSubpassEndInfo; } *params = args; VkSubpassBeginInfo pSubpassBeginInfo_host; VkSubpassEndInfo pSubpassEndInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->commandBuffer, params->pSubpassBeginInfo, params->pSubpassEndInfo); init_conversion_context(&ctx); convert_VkSubpassBeginInfo_win32_to_host((const VkSubpassBeginInfo32 *)UlongToPtr(params->pSubpassBeginInfo), &pSubpassBeginInfo_host); convert_VkSubpassEndInfo_win32_to_host(&ctx, (const VkSubpassEndInfo32 *)UlongToPtr(params->pSubpassEndInfo), &pSubpassEndInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdNextSubpass2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pSubpassBeginInfo_host, &pSubpassEndInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdNextSubpass2KHR(void *args) { struct vkCmdNextSubpass2KHR_params *params = args; TRACE("%p, %p, %p\n", params->commandBuffer, params->pSubpassBeginInfo, params->pSubpassEndInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdNextSubpass2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pSubpassBeginInfo, params->pSubpassEndInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdNextSubpass2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pSubpassBeginInfo; PTR32 pSubpassEndInfo; } *params = args; VkSubpassBeginInfo pSubpassBeginInfo_host; VkSubpassEndInfo pSubpassEndInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->commandBuffer, params->pSubpassBeginInfo, params->pSubpassEndInfo); init_conversion_context(&ctx); convert_VkSubpassBeginInfo_win32_to_host((const VkSubpassBeginInfo32 *)UlongToPtr(params->pSubpassBeginInfo), &pSubpassBeginInfo_host); convert_VkSubpassEndInfo_win32_to_host(&ctx, (const VkSubpassEndInfo32 *)UlongToPtr(params->pSubpassEndInfo), &pSubpassEndInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdNextSubpass2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pSubpassBeginInfo_host, &pSubpassEndInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdOpticalFlowExecuteNV(void *args) { struct vkCmdOpticalFlowExecuteNV_params *params = args; TRACE("%p, 0x%s, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->session), params->pExecuteInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdOpticalFlowExecuteNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->session, params->pExecuteInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdOpticalFlowExecuteNV(void *args) { struct { PTR32 commandBuffer; VkOpticalFlowSessionNV DECLSPEC_ALIGN(8) session; PTR32 pExecuteInfo; } *params = args; VkOpticalFlowExecuteInfoNV pExecuteInfo_host; TRACE("%#x, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->session), params->pExecuteInfo); convert_VkOpticalFlowExecuteInfoNV_win32_to_host((const VkOpticalFlowExecuteInfoNV32 *)UlongToPtr(params->pExecuteInfo), &pExecuteInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdOpticalFlowExecuteNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->session, &pExecuteInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdPipelineBarrier(void *args) { struct vkCmdPipelineBarrier_params *params = args; TRACE("%p, %#x, %#x, %#x, %u, %p, %u, %p, %u, %p\n", params->commandBuffer, params->srcStageMask, params->dstStageMask, params->dependencyFlags, params->memoryBarrierCount, params->pMemoryBarriers, params->bufferMemoryBarrierCount, params->pBufferMemoryBarriers, params->imageMemoryBarrierCount, params->pImageMemoryBarriers); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdPipelineBarrier(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->srcStageMask, params->dstStageMask, params->dependencyFlags, params->memoryBarrierCount, params->pMemoryBarriers, params->bufferMemoryBarrierCount, params->pBufferMemoryBarriers, params->imageMemoryBarrierCount, params->pImageMemoryBarriers); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdPipelineBarrier(void *args) { struct { PTR32 commandBuffer; VkPipelineStageFlags srcStageMask; VkPipelineStageFlags dstStageMask; VkDependencyFlags dependencyFlags; uint32_t memoryBarrierCount; PTR32 pMemoryBarriers; uint32_t bufferMemoryBarrierCount; PTR32 pBufferMemoryBarriers; uint32_t imageMemoryBarrierCount; PTR32 pImageMemoryBarriers; } *params = args; const VkMemoryBarrier *pMemoryBarriers_host; const VkBufferMemoryBarrier *pBufferMemoryBarriers_host; const VkImageMemoryBarrier *pImageMemoryBarriers_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x, %u, %#x, %u, %#x, %u, %#x\n", params->commandBuffer, params->srcStageMask, params->dstStageMask, params->dependencyFlags, params->memoryBarrierCount, params->pMemoryBarriers, params->bufferMemoryBarrierCount, params->pBufferMemoryBarriers, params->imageMemoryBarrierCount, params->pImageMemoryBarriers); init_conversion_context(&ctx); pMemoryBarriers_host = convert_VkMemoryBarrier_array_win32_to_host(&ctx, (const VkMemoryBarrier32 *)UlongToPtr(params->pMemoryBarriers), params->memoryBarrierCount); pBufferMemoryBarriers_host = convert_VkBufferMemoryBarrier_array_win32_to_host(&ctx, (const VkBufferMemoryBarrier32 *)UlongToPtr(params->pBufferMemoryBarriers), params->bufferMemoryBarrierCount); pImageMemoryBarriers_host = convert_VkImageMemoryBarrier_array_win32_to_host(&ctx, (const VkImageMemoryBarrier32 *)UlongToPtr(params->pImageMemoryBarriers), params->imageMemoryBarrierCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdPipelineBarrier(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->srcStageMask, params->dstStageMask, params->dependencyFlags, params->memoryBarrierCount, pMemoryBarriers_host, params->bufferMemoryBarrierCount, pBufferMemoryBarriers_host, params->imageMemoryBarrierCount, pImageMemoryBarriers_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdPipelineBarrier2(void *args) { struct vkCmdPipelineBarrier2_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pDependencyInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdPipelineBarrier2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pDependencyInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdPipelineBarrier2(void *args) { struct { PTR32 commandBuffer; PTR32 pDependencyInfo; } *params = args; VkDependencyInfo pDependencyInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pDependencyInfo); init_conversion_context(&ctx); convert_VkDependencyInfo_win32_to_host(&ctx, (const VkDependencyInfo32 *)UlongToPtr(params->pDependencyInfo), &pDependencyInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdPipelineBarrier2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pDependencyInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdPipelineBarrier2KHR(void *args) { struct vkCmdPipelineBarrier2KHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pDependencyInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdPipelineBarrier2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pDependencyInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdPipelineBarrier2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pDependencyInfo; } *params = args; VkDependencyInfo pDependencyInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pDependencyInfo); init_conversion_context(&ctx); convert_VkDependencyInfo_win32_to_host(&ctx, (const VkDependencyInfo32 *)UlongToPtr(params->pDependencyInfo), &pDependencyInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdPipelineBarrier2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pDependencyInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdPreprocessGeneratedCommandsNV(void *args) { struct vkCmdPreprocessGeneratedCommandsNV_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pGeneratedCommandsInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdPreprocessGeneratedCommandsNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pGeneratedCommandsInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdPreprocessGeneratedCommandsNV(void *args) { struct { PTR32 commandBuffer; PTR32 pGeneratedCommandsInfo; } *params = args; VkGeneratedCommandsInfoNV pGeneratedCommandsInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pGeneratedCommandsInfo); init_conversion_context(&ctx); convert_VkGeneratedCommandsInfoNV_win32_to_host(&ctx, (const VkGeneratedCommandsInfoNV32 *)UlongToPtr(params->pGeneratedCommandsInfo), &pGeneratedCommandsInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdPreprocessGeneratedCommandsNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pGeneratedCommandsInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdPushConstants(void *args) { struct vkCmdPushConstants_params *params = args; TRACE("%p, 0x%s, %#x, %u, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->layout), params->stageFlags, params->offset, params->size, params->pValues); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdPushConstants(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->layout, params->stageFlags, params->offset, params->size, params->pValues); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdPushConstants(void *args) { struct { PTR32 commandBuffer; VkPipelineLayout DECLSPEC_ALIGN(8) layout; VkShaderStageFlags stageFlags; uint32_t offset; uint32_t size; PTR32 pValues; } *params = args; TRACE("%#x, 0x%s, %#x, %u, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->layout), params->stageFlags, params->offset, params->size, params->pValues); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdPushConstants(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->layout, params->stageFlags, params->offset, params->size, (const void *)UlongToPtr(params->pValues)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdPushDescriptorSetKHR(void *args) { struct vkCmdPushDescriptorSetKHR_params *params = args; TRACE("%p, %#x, 0x%s, %u, %u, %p\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->layout), params->set, params->descriptorWriteCount, params->pDescriptorWrites); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdPushDescriptorSetKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineBindPoint, params->layout, params->set, params->descriptorWriteCount, params->pDescriptorWrites); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdPushDescriptorSetKHR(void *args) { struct { PTR32 commandBuffer; VkPipelineBindPoint pipelineBindPoint; VkPipelineLayout DECLSPEC_ALIGN(8) layout; uint32_t set; uint32_t descriptorWriteCount; PTR32 pDescriptorWrites; } *params = args; const VkWriteDescriptorSet *pDescriptorWrites_host; struct conversion_context ctx; TRACE("%#x, %#x, 0x%s, %u, %u, %#x\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->layout), params->set, params->descriptorWriteCount, params->pDescriptorWrites); init_conversion_context(&ctx); pDescriptorWrites_host = convert_VkWriteDescriptorSet_array_win32_to_host(&ctx, (const VkWriteDescriptorSet32 *)UlongToPtr(params->pDescriptorWrites), params->descriptorWriteCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdPushDescriptorSetKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineBindPoint, params->layout, params->set, params->descriptorWriteCount, pDescriptorWrites_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdPushDescriptorSetWithTemplateKHR(void *args) { struct vkCmdPushDescriptorSetWithTemplateKHR_params *params = args; TRACE("%p, 0x%s, 0x%s, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->descriptorUpdateTemplate), wine_dbgstr_longlong(params->layout), params->set, params->pData); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdPushDescriptorSetWithTemplateKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->descriptorUpdateTemplate, params->layout, params->set, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdPushDescriptorSetWithTemplateKHR(void *args) { struct { PTR32 commandBuffer; VkDescriptorUpdateTemplate DECLSPEC_ALIGN(8) descriptorUpdateTemplate; VkPipelineLayout DECLSPEC_ALIGN(8) layout; uint32_t set; PTR32 pData; } *params = args; TRACE("%#x, 0x%s, 0x%s, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->descriptorUpdateTemplate), wine_dbgstr_longlong(params->layout), params->set, params->pData); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdPushDescriptorSetWithTemplateKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->descriptorUpdateTemplate, params->layout, params->set, (const void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdResetEvent(void *args) { struct vkCmdResetEvent_params *params = args; TRACE("%p, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->event), params->stageMask); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdResetEvent(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->event, params->stageMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdResetEvent(void *args) { struct { PTR32 commandBuffer; VkEvent DECLSPEC_ALIGN(8) event; VkPipelineStageFlags stageMask; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->event), params->stageMask); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdResetEvent(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->event, params->stageMask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdResetEvent2(void *args) { struct vkCmdResetEvent2_params *params = args; TRACE("%p, 0x%s, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->event), wine_dbgstr_longlong(params->stageMask)); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdResetEvent2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->event, params->stageMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdResetEvent2(void *args) { struct { PTR32 commandBuffer; VkEvent DECLSPEC_ALIGN(8) event; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) stageMask; } *params = args; TRACE("%#x, 0x%s, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->event), wine_dbgstr_longlong(params->stageMask)); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdResetEvent2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->event, params->stageMask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdResetEvent2KHR(void *args) { struct vkCmdResetEvent2KHR_params *params = args; TRACE("%p, 0x%s, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->event), wine_dbgstr_longlong(params->stageMask)); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdResetEvent2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->event, params->stageMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdResetEvent2KHR(void *args) { struct { PTR32 commandBuffer; VkEvent DECLSPEC_ALIGN(8) event; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) stageMask; } *params = args; TRACE("%#x, 0x%s, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->event), wine_dbgstr_longlong(params->stageMask)); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdResetEvent2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->event, params->stageMask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdResetQueryPool(void *args) { struct vkCmdResetQueryPool_params *params = args; TRACE("%p, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdResetQueryPool(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->queryPool, params->firstQuery, params->queryCount); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdResetQueryPool(void *args) { struct { PTR32 commandBuffer; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t firstQuery; uint32_t queryCount; } *params = args; TRACE("%#x, 0x%s, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdResetQueryPool(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->queryPool, params->firstQuery, params->queryCount); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdResolveImage(void *args) { struct vkCmdResolveImage_params *params = args; TRACE("%p, 0x%s, %#x, 0x%s, %#x, %u, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->srcImage), params->srcImageLayout, wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->regionCount, params->pRegions); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdResolveImage(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->srcImage, params->srcImageLayout, params->dstImage, params->dstImageLayout, params->regionCount, params->pRegions); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdResolveImage(void *args) { struct { PTR32 commandBuffer; VkImage DECLSPEC_ALIGN(8) srcImage; VkImageLayout srcImageLayout; VkImage DECLSPEC_ALIGN(8) dstImage; VkImageLayout dstImageLayout; uint32_t regionCount; PTR32 pRegions; } *params = args; TRACE("%#x, 0x%s, %#x, 0x%s, %#x, %u, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->srcImage), params->srcImageLayout, wine_dbgstr_longlong(params->dstImage), params->dstImageLayout, params->regionCount, params->pRegions); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdResolveImage(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->srcImage, params->srcImageLayout, params->dstImage, params->dstImageLayout, params->regionCount, (const VkImageResolve *)UlongToPtr(params->pRegions)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdResolveImage2(void *args) { struct vkCmdResolveImage2_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pResolveImageInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdResolveImage2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pResolveImageInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdResolveImage2(void *args) { struct { PTR32 commandBuffer; PTR32 pResolveImageInfo; } *params = args; VkResolveImageInfo2 pResolveImageInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pResolveImageInfo); init_conversion_context(&ctx); convert_VkResolveImageInfo2_win32_to_host(&ctx, (const VkResolveImageInfo232 *)UlongToPtr(params->pResolveImageInfo), &pResolveImageInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdResolveImage2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pResolveImageInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdResolveImage2KHR(void *args) { struct vkCmdResolveImage2KHR_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pResolveImageInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdResolveImage2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pResolveImageInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdResolveImage2KHR(void *args) { struct { PTR32 commandBuffer; PTR32 pResolveImageInfo; } *params = args; VkResolveImageInfo2 pResolveImageInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->commandBuffer, params->pResolveImageInfo); init_conversion_context(&ctx); convert_VkResolveImageInfo2_win32_to_host(&ctx, (const VkResolveImageInfo232 *)UlongToPtr(params->pResolveImageInfo), &pResolveImageInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdResolveImage2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pResolveImageInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetAlphaToCoverageEnableEXT(void *args) { struct vkCmdSetAlphaToCoverageEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->alphaToCoverageEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetAlphaToCoverageEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->alphaToCoverageEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetAlphaToCoverageEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 alphaToCoverageEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->alphaToCoverageEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetAlphaToCoverageEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->alphaToCoverageEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetAlphaToOneEnableEXT(void *args) { struct vkCmdSetAlphaToOneEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->alphaToOneEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetAlphaToOneEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->alphaToOneEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetAlphaToOneEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 alphaToOneEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->alphaToOneEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetAlphaToOneEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->alphaToOneEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetBlendConstants(void *args) { struct vkCmdSetBlendConstants_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->blendConstants); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetBlendConstants(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->blendConstants); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetBlendConstants(void *args) { struct { PTR32 commandBuffer; PTR32 blendConstants; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->blendConstants); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetBlendConstants(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, (const float *)UlongToPtr(params->blendConstants)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCheckpointNV(void *args) { struct vkCmdSetCheckpointNV_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pCheckpointMarker); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCheckpointNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pCheckpointMarker); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCheckpointNV(void *args) { struct { PTR32 commandBuffer; PTR32 pCheckpointMarker; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->pCheckpointMarker); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCheckpointNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, (const void *)UlongToPtr(params->pCheckpointMarker)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCoarseSampleOrderNV(void *args) { struct vkCmdSetCoarseSampleOrderNV_params *params = args; TRACE("%p, %#x, %u, %p\n", params->commandBuffer, params->sampleOrderType, params->customSampleOrderCount, params->pCustomSampleOrders); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCoarseSampleOrderNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->sampleOrderType, params->customSampleOrderCount, params->pCustomSampleOrders); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCoarseSampleOrderNV(void *args) { struct { PTR32 commandBuffer; VkCoarseSampleOrderTypeNV sampleOrderType; uint32_t customSampleOrderCount; PTR32 pCustomSampleOrders; } *params = args; const VkCoarseSampleOrderCustomNV *pCustomSampleOrders_host; struct conversion_context ctx; TRACE("%#x, %#x, %u, %#x\n", params->commandBuffer, params->sampleOrderType, params->customSampleOrderCount, params->pCustomSampleOrders); init_conversion_context(&ctx); pCustomSampleOrders_host = convert_VkCoarseSampleOrderCustomNV_array_win32_to_host(&ctx, (const VkCoarseSampleOrderCustomNV32 *)UlongToPtr(params->pCustomSampleOrders), params->customSampleOrderCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCoarseSampleOrderNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->sampleOrderType, params->customSampleOrderCount, pCustomSampleOrders_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetColorBlendAdvancedEXT(void *args) { struct vkCmdSetColorBlendAdvancedEXT_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstAttachment, params->attachmentCount, params->pColorBlendAdvanced); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetColorBlendAdvancedEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstAttachment, params->attachmentCount, params->pColorBlendAdvanced); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetColorBlendAdvancedEXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstAttachment; uint32_t attachmentCount; PTR32 pColorBlendAdvanced; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstAttachment, params->attachmentCount, params->pColorBlendAdvanced); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetColorBlendAdvancedEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstAttachment, params->attachmentCount, (const VkColorBlendAdvancedEXT *)UlongToPtr(params->pColorBlendAdvanced)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetColorBlendEnableEXT(void *args) { struct vkCmdSetColorBlendEnableEXT_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstAttachment, params->attachmentCount, params->pColorBlendEnables); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetColorBlendEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstAttachment, params->attachmentCount, params->pColorBlendEnables); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetColorBlendEnableEXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstAttachment; uint32_t attachmentCount; PTR32 pColorBlendEnables; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstAttachment, params->attachmentCount, params->pColorBlendEnables); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetColorBlendEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstAttachment, params->attachmentCount, (const VkBool32 *)UlongToPtr(params->pColorBlendEnables)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetColorBlendEquationEXT(void *args) { struct vkCmdSetColorBlendEquationEXT_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstAttachment, params->attachmentCount, params->pColorBlendEquations); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetColorBlendEquationEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstAttachment, params->attachmentCount, params->pColorBlendEquations); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetColorBlendEquationEXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstAttachment; uint32_t attachmentCount; PTR32 pColorBlendEquations; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstAttachment, params->attachmentCount, params->pColorBlendEquations); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetColorBlendEquationEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstAttachment, params->attachmentCount, (const VkColorBlendEquationEXT *)UlongToPtr(params->pColorBlendEquations)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetColorWriteEnableEXT(void *args) { struct vkCmdSetColorWriteEnableEXT_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->attachmentCount, params->pColorWriteEnables); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetColorWriteEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->attachmentCount, params->pColorWriteEnables); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetColorWriteEnableEXT(void *args) { struct { PTR32 commandBuffer; uint32_t attachmentCount; PTR32 pColorWriteEnables; } *params = args; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->attachmentCount, params->pColorWriteEnables); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetColorWriteEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->attachmentCount, (const VkBool32 *)UlongToPtr(params->pColorWriteEnables)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetColorWriteMaskEXT(void *args) { struct vkCmdSetColorWriteMaskEXT_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstAttachment, params->attachmentCount, params->pColorWriteMasks); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetColorWriteMaskEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstAttachment, params->attachmentCount, params->pColorWriteMasks); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetColorWriteMaskEXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstAttachment; uint32_t attachmentCount; PTR32 pColorWriteMasks; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstAttachment, params->attachmentCount, params->pColorWriteMasks); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetColorWriteMaskEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstAttachment, params->attachmentCount, (const VkColorComponentFlags *)UlongToPtr(params->pColorWriteMasks)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetConservativeRasterizationModeEXT(void *args) { struct vkCmdSetConservativeRasterizationModeEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->conservativeRasterizationMode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetConservativeRasterizationModeEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->conservativeRasterizationMode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetConservativeRasterizationModeEXT(void *args) { struct { PTR32 commandBuffer; VkConservativeRasterizationModeEXT conservativeRasterizationMode; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->conservativeRasterizationMode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetConservativeRasterizationModeEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->conservativeRasterizationMode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCoverageModulationModeNV(void *args) { struct vkCmdSetCoverageModulationModeNV_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->coverageModulationMode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCoverageModulationModeNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->coverageModulationMode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCoverageModulationModeNV(void *args) { struct { PTR32 commandBuffer; VkCoverageModulationModeNV coverageModulationMode; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->coverageModulationMode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCoverageModulationModeNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->coverageModulationMode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCoverageModulationTableEnableNV(void *args) { struct vkCmdSetCoverageModulationTableEnableNV_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->coverageModulationTableEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCoverageModulationTableEnableNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->coverageModulationTableEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCoverageModulationTableEnableNV(void *args) { struct { PTR32 commandBuffer; VkBool32 coverageModulationTableEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->coverageModulationTableEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCoverageModulationTableEnableNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->coverageModulationTableEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCoverageModulationTableNV(void *args) { struct vkCmdSetCoverageModulationTableNV_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->coverageModulationTableCount, params->pCoverageModulationTable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCoverageModulationTableNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->coverageModulationTableCount, params->pCoverageModulationTable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCoverageModulationTableNV(void *args) { struct { PTR32 commandBuffer; uint32_t coverageModulationTableCount; PTR32 pCoverageModulationTable; } *params = args; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->coverageModulationTableCount, params->pCoverageModulationTable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCoverageModulationTableNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->coverageModulationTableCount, (const float *)UlongToPtr(params->pCoverageModulationTable)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCoverageReductionModeNV(void *args) { struct vkCmdSetCoverageReductionModeNV_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->coverageReductionMode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCoverageReductionModeNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->coverageReductionMode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCoverageReductionModeNV(void *args) { struct { PTR32 commandBuffer; VkCoverageReductionModeNV coverageReductionMode; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->coverageReductionMode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCoverageReductionModeNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->coverageReductionMode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCoverageToColorEnableNV(void *args) { struct vkCmdSetCoverageToColorEnableNV_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->coverageToColorEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCoverageToColorEnableNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->coverageToColorEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCoverageToColorEnableNV(void *args) { struct { PTR32 commandBuffer; VkBool32 coverageToColorEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->coverageToColorEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCoverageToColorEnableNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->coverageToColorEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCoverageToColorLocationNV(void *args) { struct vkCmdSetCoverageToColorLocationNV_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->coverageToColorLocation); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCoverageToColorLocationNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->coverageToColorLocation); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCoverageToColorLocationNV(void *args) { struct { PTR32 commandBuffer; uint32_t coverageToColorLocation; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->coverageToColorLocation); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCoverageToColorLocationNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->coverageToColorLocation); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCullMode(void *args) { struct vkCmdSetCullMode_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->cullMode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCullMode(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->cullMode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCullMode(void *args) { struct { PTR32 commandBuffer; VkCullModeFlags cullMode; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->cullMode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCullMode(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->cullMode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetCullModeEXT(void *args) { struct vkCmdSetCullModeEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->cullMode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetCullModeEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->cullMode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetCullModeEXT(void *args) { struct { PTR32 commandBuffer; VkCullModeFlags cullMode; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->cullMode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetCullModeEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->cullMode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthBias(void *args) { struct vkCmdSetDepthBias_params *params = args; TRACE("%p, %f, %f, %f\n", params->commandBuffer, params->depthBiasConstantFactor, params->depthBiasClamp, params->depthBiasSlopeFactor); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthBias(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthBiasConstantFactor, params->depthBiasClamp, params->depthBiasSlopeFactor); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthBias(void *args) { struct { PTR32 commandBuffer; float depthBiasConstantFactor; float depthBiasClamp; float depthBiasSlopeFactor; } *params = args; TRACE("%#x, %f, %f, %f\n", params->commandBuffer, params->depthBiasConstantFactor, params->depthBiasClamp, params->depthBiasSlopeFactor); 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); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthBiasEnable(void *args) { struct vkCmdSetDepthBiasEnable_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthBiasEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthBiasEnable(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthBiasEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthBiasEnable(void *args) { struct { PTR32 commandBuffer; VkBool32 depthBiasEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthBiasEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthBiasEnable(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthBiasEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthBiasEnableEXT(void *args) { struct vkCmdSetDepthBiasEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthBiasEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthBiasEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthBiasEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthBiasEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 depthBiasEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthBiasEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthBiasEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthBiasEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthBounds(void *args) { struct vkCmdSetDepthBounds_params *params = args; TRACE("%p, %f, %f\n", params->commandBuffer, params->minDepthBounds, params->maxDepthBounds); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthBounds(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->minDepthBounds, params->maxDepthBounds); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthBounds(void *args) { struct { PTR32 commandBuffer; float minDepthBounds; float maxDepthBounds; } *params = args; TRACE("%#x, %f, %f\n", params->commandBuffer, params->minDepthBounds, params->maxDepthBounds); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthBounds(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->minDepthBounds, params->maxDepthBounds); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthBoundsTestEnable(void *args) { struct vkCmdSetDepthBoundsTestEnable_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthBoundsTestEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthBoundsTestEnable(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthBoundsTestEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthBoundsTestEnable(void *args) { struct { PTR32 commandBuffer; VkBool32 depthBoundsTestEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthBoundsTestEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthBoundsTestEnable(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthBoundsTestEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthBoundsTestEnableEXT(void *args) { struct vkCmdSetDepthBoundsTestEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthBoundsTestEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthBoundsTestEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthBoundsTestEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthBoundsTestEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 depthBoundsTestEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthBoundsTestEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthBoundsTestEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthBoundsTestEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthClampEnableEXT(void *args) { struct vkCmdSetDepthClampEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthClampEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthClampEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthClampEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthClampEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 depthClampEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthClampEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthClampEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthClampEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthClipEnableEXT(void *args) { struct vkCmdSetDepthClipEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthClipEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthClipEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthClipEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthClipEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 depthClipEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthClipEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthClipEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthClipEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthClipNegativeOneToOneEXT(void *args) { struct vkCmdSetDepthClipNegativeOneToOneEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->negativeOneToOne); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthClipNegativeOneToOneEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->negativeOneToOne); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthClipNegativeOneToOneEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 negativeOneToOne; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->negativeOneToOne); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthClipNegativeOneToOneEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->negativeOneToOne); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthCompareOp(void *args) { struct vkCmdSetDepthCompareOp_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->depthCompareOp); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthCompareOp(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthCompareOp); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthCompareOp(void *args) { struct { PTR32 commandBuffer; VkCompareOp depthCompareOp; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->depthCompareOp); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthCompareOp(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthCompareOp); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthCompareOpEXT(void *args) { struct vkCmdSetDepthCompareOpEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->depthCompareOp); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthCompareOpEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthCompareOp); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthCompareOpEXT(void *args) { struct { PTR32 commandBuffer; VkCompareOp depthCompareOp; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->depthCompareOp); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthCompareOpEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthCompareOp); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthTestEnable(void *args) { struct vkCmdSetDepthTestEnable_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthTestEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthTestEnable(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthTestEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthTestEnable(void *args) { struct { PTR32 commandBuffer; VkBool32 depthTestEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthTestEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthTestEnable(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthTestEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthTestEnableEXT(void *args) { struct vkCmdSetDepthTestEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthTestEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthTestEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthTestEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthTestEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 depthTestEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthTestEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthTestEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthTestEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthWriteEnable(void *args) { struct vkCmdSetDepthWriteEnable_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthWriteEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthWriteEnable(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthWriteEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthWriteEnable(void *args) { struct { PTR32 commandBuffer; VkBool32 depthWriteEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthWriteEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthWriteEnable(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthWriteEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDepthWriteEnableEXT(void *args) { struct vkCmdSetDepthWriteEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->depthWriteEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDepthWriteEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->depthWriteEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDepthWriteEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 depthWriteEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->depthWriteEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDepthWriteEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->depthWriteEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDescriptorBufferOffsetsEXT(void *args) { struct vkCmdSetDescriptorBufferOffsetsEXT_params *params = args; TRACE("%p, %#x, 0x%s, %u, %u, %p, %p\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->layout), params->firstSet, params->setCount, params->pBufferIndices, params->pOffsets); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDescriptorBufferOffsetsEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineBindPoint, params->layout, params->firstSet, params->setCount, params->pBufferIndices, params->pOffsets); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDescriptorBufferOffsetsEXT(void *args) { struct { PTR32 commandBuffer; VkPipelineBindPoint pipelineBindPoint; VkPipelineLayout DECLSPEC_ALIGN(8) layout; uint32_t firstSet; uint32_t setCount; PTR32 pBufferIndices; PTR32 pOffsets; } *params = args; TRACE("%#x, %#x, 0x%s, %u, %u, %#x, %#x\n", params->commandBuffer, params->pipelineBindPoint, wine_dbgstr_longlong(params->layout), params->firstSet, params->setCount, params->pBufferIndices, params->pOffsets); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDescriptorBufferOffsetsEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineBindPoint, params->layout, params->firstSet, params->setCount, (const uint32_t *)UlongToPtr(params->pBufferIndices), (const VkDeviceSize *)UlongToPtr(params->pOffsets)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDeviceMask(void *args) { struct vkCmdSetDeviceMask_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->deviceMask); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDeviceMask(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->deviceMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDeviceMask(void *args) { struct { PTR32 commandBuffer; uint32_t deviceMask; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->deviceMask); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDeviceMask(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->deviceMask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDeviceMaskKHR(void *args) { struct vkCmdSetDeviceMaskKHR_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->deviceMask); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDeviceMaskKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->deviceMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDeviceMaskKHR(void *args) { struct { PTR32 commandBuffer; uint32_t deviceMask; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->deviceMask); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDeviceMaskKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->deviceMask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetDiscardRectangleEXT(void *args) { struct vkCmdSetDiscardRectangleEXT_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstDiscardRectangle, params->discardRectangleCount, params->pDiscardRectangles); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetDiscardRectangleEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstDiscardRectangle, params->discardRectangleCount, params->pDiscardRectangles); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetDiscardRectangleEXT(void *args) { struct { PTR32 commandBuffer; uint32_t firstDiscardRectangle; uint32_t discardRectangleCount; PTR32 pDiscardRectangles; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstDiscardRectangle, params->discardRectangleCount, params->pDiscardRectangles); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetDiscardRectangleEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstDiscardRectangle, params->discardRectangleCount, (const VkRect2D *)UlongToPtr(params->pDiscardRectangles)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetEvent(void *args) { struct vkCmdSetEvent_params *params = args; TRACE("%p, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->event), params->stageMask); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetEvent(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->event, params->stageMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetEvent(void *args) { struct { PTR32 commandBuffer; VkEvent DECLSPEC_ALIGN(8) event; VkPipelineStageFlags stageMask; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->event), params->stageMask); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetEvent(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->event, params->stageMask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetEvent2(void *args) { struct vkCmdSetEvent2_params *params = args; TRACE("%p, 0x%s, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->event), params->pDependencyInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetEvent2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->event, params->pDependencyInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetEvent2(void *args) { struct { PTR32 commandBuffer; VkEvent DECLSPEC_ALIGN(8) event; PTR32 pDependencyInfo; } *params = args; VkDependencyInfo pDependencyInfo_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->event), params->pDependencyInfo); init_conversion_context(&ctx); convert_VkDependencyInfo_win32_to_host(&ctx, (const VkDependencyInfo32 *)UlongToPtr(params->pDependencyInfo), &pDependencyInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetEvent2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->event, &pDependencyInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetEvent2KHR(void *args) { struct vkCmdSetEvent2KHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->event), params->pDependencyInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetEvent2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->event, params->pDependencyInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetEvent2KHR(void *args) { struct { PTR32 commandBuffer; VkEvent DECLSPEC_ALIGN(8) event; PTR32 pDependencyInfo; } *params = args; VkDependencyInfo pDependencyInfo_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->event), params->pDependencyInfo); init_conversion_context(&ctx); convert_VkDependencyInfo_win32_to_host(&ctx, (const VkDependencyInfo32 *)UlongToPtr(params->pDependencyInfo), &pDependencyInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetEvent2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->event, &pDependencyInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetExclusiveScissorNV(void *args) { struct vkCmdSetExclusiveScissorNV_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstExclusiveScissor, params->exclusiveScissorCount, params->pExclusiveScissors); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetExclusiveScissorNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstExclusiveScissor, params->exclusiveScissorCount, params->pExclusiveScissors); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetExclusiveScissorNV(void *args) { struct { PTR32 commandBuffer; uint32_t firstExclusiveScissor; uint32_t exclusiveScissorCount; PTR32 pExclusiveScissors; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstExclusiveScissor, params->exclusiveScissorCount, params->pExclusiveScissors); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetExclusiveScissorNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstExclusiveScissor, params->exclusiveScissorCount, (const VkRect2D *)UlongToPtr(params->pExclusiveScissors)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetExtraPrimitiveOverestimationSizeEXT(void *args) { struct vkCmdSetExtraPrimitiveOverestimationSizeEXT_params *params = args; TRACE("%p, %f\n", params->commandBuffer, params->extraPrimitiveOverestimationSize); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetExtraPrimitiveOverestimationSizeEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->extraPrimitiveOverestimationSize); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetExtraPrimitiveOverestimationSizeEXT(void *args) { struct { PTR32 commandBuffer; float extraPrimitiveOverestimationSize; } *params = args; TRACE("%#x, %f\n", params->commandBuffer, params->extraPrimitiveOverestimationSize); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetExtraPrimitiveOverestimationSizeEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->extraPrimitiveOverestimationSize); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetFragmentShadingRateEnumNV(void *args) { struct vkCmdSetFragmentShadingRateEnumNV_params *params = args; TRACE("%p, %#x, %p\n", params->commandBuffer, params->shadingRate, params->combinerOps); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetFragmentShadingRateEnumNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->shadingRate, params->combinerOps); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetFragmentShadingRateEnumNV(void *args) { struct { PTR32 commandBuffer; VkFragmentShadingRateNV shadingRate; PTR32 combinerOps; } *params = args; TRACE("%#x, %#x, %#x\n", params->commandBuffer, params->shadingRate, params->combinerOps); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetFragmentShadingRateEnumNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->shadingRate, (const VkFragmentShadingRateCombinerOpKHR *)UlongToPtr(params->combinerOps)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetFragmentShadingRateKHR(void *args) { struct vkCmdSetFragmentShadingRateKHR_params *params = args; TRACE("%p, %p, %p\n", params->commandBuffer, params->pFragmentSize, params->combinerOps); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetFragmentShadingRateKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pFragmentSize, params->combinerOps); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetFragmentShadingRateKHR(void *args) { struct { PTR32 commandBuffer; PTR32 pFragmentSize; PTR32 combinerOps; } *params = args; TRACE("%#x, %#x, %#x\n", params->commandBuffer, params->pFragmentSize, params->combinerOps); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetFragmentShadingRateKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, (const VkExtent2D *)UlongToPtr(params->pFragmentSize), (const VkFragmentShadingRateCombinerOpKHR *)UlongToPtr(params->combinerOps)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetFrontFace(void *args) { struct vkCmdSetFrontFace_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->frontFace); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetFrontFace(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->frontFace); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetFrontFace(void *args) { struct { PTR32 commandBuffer; VkFrontFace frontFace; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->frontFace); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetFrontFace(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->frontFace); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetFrontFaceEXT(void *args) { struct vkCmdSetFrontFaceEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->frontFace); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetFrontFaceEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->frontFace); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetFrontFaceEXT(void *args) { struct { PTR32 commandBuffer; VkFrontFace frontFace; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->frontFace); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetFrontFaceEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->frontFace); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetLineRasterizationModeEXT(void *args) { struct vkCmdSetLineRasterizationModeEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->lineRasterizationMode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetLineRasterizationModeEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->lineRasterizationMode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetLineRasterizationModeEXT(void *args) { struct { PTR32 commandBuffer; VkLineRasterizationModeEXT lineRasterizationMode; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->lineRasterizationMode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetLineRasterizationModeEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->lineRasterizationMode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetLineStippleEXT(void *args) { struct vkCmdSetLineStippleEXT_params *params = args; TRACE("%p, %u, %u\n", params->commandBuffer, params->lineStippleFactor, params->lineStipplePattern); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetLineStippleEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->lineStippleFactor, params->lineStipplePattern); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetLineStippleEXT(void *args) { struct { PTR32 commandBuffer; uint32_t lineStippleFactor; uint16_t lineStipplePattern; } *params = args; TRACE("%#x, %u, %u\n", params->commandBuffer, params->lineStippleFactor, params->lineStipplePattern); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetLineStippleEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->lineStippleFactor, params->lineStipplePattern); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetLineStippleEnableEXT(void *args) { struct vkCmdSetLineStippleEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->stippledLineEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetLineStippleEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->stippledLineEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetLineStippleEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 stippledLineEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->stippledLineEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetLineStippleEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->stippledLineEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetLineWidth(void *args) { struct vkCmdSetLineWidth_params *params = args; TRACE("%p, %f\n", params->commandBuffer, params->lineWidth); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetLineWidth(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->lineWidth); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetLineWidth(void *args) { struct { PTR32 commandBuffer; float lineWidth; } *params = args; TRACE("%#x, %f\n", params->commandBuffer, params->lineWidth); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetLineWidth(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->lineWidth); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetLogicOpEXT(void *args) { struct vkCmdSetLogicOpEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->logicOp); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetLogicOpEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->logicOp); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetLogicOpEXT(void *args) { struct { PTR32 commandBuffer; VkLogicOp logicOp; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->logicOp); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetLogicOpEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->logicOp); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetLogicOpEnableEXT(void *args) { struct vkCmdSetLogicOpEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->logicOpEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetLogicOpEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->logicOpEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetLogicOpEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 logicOpEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->logicOpEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetLogicOpEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->logicOpEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPatchControlPointsEXT(void *args) { struct vkCmdSetPatchControlPointsEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->patchControlPoints); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPatchControlPointsEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->patchControlPoints); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPatchControlPointsEXT(void *args) { struct { PTR32 commandBuffer; uint32_t patchControlPoints; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->patchControlPoints); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPatchControlPointsEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->patchControlPoints); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPerformanceMarkerINTEL(void *args) { struct vkCmdSetPerformanceMarkerINTEL_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pMarkerInfo); params->result = wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPerformanceMarkerINTEL(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pMarkerInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPerformanceMarkerINTEL(void *args) { struct { PTR32 commandBuffer; PTR32 pMarkerInfo; VkResult result; } *params = args; VkPerformanceMarkerInfoINTEL pMarkerInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pMarkerInfo); convert_VkPerformanceMarkerInfoINTEL_win32_to_host((const VkPerformanceMarkerInfoINTEL32 *)UlongToPtr(params->pMarkerInfo), &pMarkerInfo_host); params->result = wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPerformanceMarkerINTEL(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pMarkerInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPerformanceOverrideINTEL(void *args) { struct vkCmdSetPerformanceOverrideINTEL_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pOverrideInfo); params->result = wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPerformanceOverrideINTEL(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pOverrideInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPerformanceOverrideINTEL(void *args) { struct { PTR32 commandBuffer; PTR32 pOverrideInfo; VkResult result; } *params = args; VkPerformanceOverrideInfoINTEL pOverrideInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pOverrideInfo); convert_VkPerformanceOverrideInfoINTEL_win32_to_host((const VkPerformanceOverrideInfoINTEL32 *)UlongToPtr(params->pOverrideInfo), &pOverrideInfo_host); params->result = wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPerformanceOverrideINTEL(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pOverrideInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPerformanceStreamMarkerINTEL(void *args) { struct vkCmdSetPerformanceStreamMarkerINTEL_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pMarkerInfo); params->result = wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPerformanceStreamMarkerINTEL(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pMarkerInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPerformanceStreamMarkerINTEL(void *args) { struct { PTR32 commandBuffer; PTR32 pMarkerInfo; VkResult result; } *params = args; VkPerformanceStreamMarkerInfoINTEL pMarkerInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pMarkerInfo); convert_VkPerformanceStreamMarkerInfoINTEL_win32_to_host((const VkPerformanceStreamMarkerInfoINTEL32 *)UlongToPtr(params->pMarkerInfo), &pMarkerInfo_host); params->result = wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPerformanceStreamMarkerINTEL(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pMarkerInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPolygonModeEXT(void *args) { struct vkCmdSetPolygonModeEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->polygonMode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPolygonModeEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->polygonMode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPolygonModeEXT(void *args) { struct { PTR32 commandBuffer; VkPolygonMode polygonMode; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->polygonMode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPolygonModeEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->polygonMode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPrimitiveRestartEnable(void *args) { struct vkCmdSetPrimitiveRestartEnable_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->primitiveRestartEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPrimitiveRestartEnable(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->primitiveRestartEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPrimitiveRestartEnable(void *args) { struct { PTR32 commandBuffer; VkBool32 primitiveRestartEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->primitiveRestartEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPrimitiveRestartEnable(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->primitiveRestartEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPrimitiveRestartEnableEXT(void *args) { struct vkCmdSetPrimitiveRestartEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->primitiveRestartEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPrimitiveRestartEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->primitiveRestartEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPrimitiveRestartEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 primitiveRestartEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->primitiveRestartEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPrimitiveRestartEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->primitiveRestartEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPrimitiveTopology(void *args) { struct vkCmdSetPrimitiveTopology_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->primitiveTopology); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPrimitiveTopology(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->primitiveTopology); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPrimitiveTopology(void *args) { struct { PTR32 commandBuffer; VkPrimitiveTopology primitiveTopology; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->primitiveTopology); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPrimitiveTopology(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->primitiveTopology); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetPrimitiveTopologyEXT(void *args) { struct vkCmdSetPrimitiveTopologyEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->primitiveTopology); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetPrimitiveTopologyEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->primitiveTopology); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetPrimitiveTopologyEXT(void *args) { struct { PTR32 commandBuffer; VkPrimitiveTopology primitiveTopology; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->primitiveTopology); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetPrimitiveTopologyEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->primitiveTopology); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetProvokingVertexModeEXT(void *args) { struct vkCmdSetProvokingVertexModeEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->provokingVertexMode); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetProvokingVertexModeEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->provokingVertexMode); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetProvokingVertexModeEXT(void *args) { struct { PTR32 commandBuffer; VkProvokingVertexModeEXT provokingVertexMode; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->provokingVertexMode); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetProvokingVertexModeEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->provokingVertexMode); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetRasterizationSamplesEXT(void *args) { struct vkCmdSetRasterizationSamplesEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->rasterizationSamples); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetRasterizationSamplesEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->rasterizationSamples); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetRasterizationSamplesEXT(void *args) { struct { PTR32 commandBuffer; VkSampleCountFlagBits rasterizationSamples; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->rasterizationSamples); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetRasterizationSamplesEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->rasterizationSamples); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetRasterizationStreamEXT(void *args) { struct vkCmdSetRasterizationStreamEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->rasterizationStream); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetRasterizationStreamEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->rasterizationStream); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetRasterizationStreamEXT(void *args) { struct { PTR32 commandBuffer; uint32_t rasterizationStream; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->rasterizationStream); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetRasterizationStreamEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->rasterizationStream); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetRasterizerDiscardEnable(void *args) { struct vkCmdSetRasterizerDiscardEnable_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->rasterizerDiscardEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetRasterizerDiscardEnable(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->rasterizerDiscardEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetRasterizerDiscardEnable(void *args) { struct { PTR32 commandBuffer; VkBool32 rasterizerDiscardEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->rasterizerDiscardEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetRasterizerDiscardEnable(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->rasterizerDiscardEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetRasterizerDiscardEnableEXT(void *args) { struct vkCmdSetRasterizerDiscardEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->rasterizerDiscardEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetRasterizerDiscardEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->rasterizerDiscardEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetRasterizerDiscardEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 rasterizerDiscardEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->rasterizerDiscardEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetRasterizerDiscardEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->rasterizerDiscardEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetRayTracingPipelineStackSizeKHR(void *args) { struct vkCmdSetRayTracingPipelineStackSizeKHR_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->pipelineStackSize); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetRayTracingPipelineStackSizeKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineStackSize); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetRayTracingPipelineStackSizeKHR(void *args) { struct { PTR32 commandBuffer; uint32_t pipelineStackSize; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->pipelineStackSize); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetRayTracingPipelineStackSizeKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineStackSize); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetRepresentativeFragmentTestEnableNV(void *args) { struct vkCmdSetRepresentativeFragmentTestEnableNV_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->representativeFragmentTestEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetRepresentativeFragmentTestEnableNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->representativeFragmentTestEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetRepresentativeFragmentTestEnableNV(void *args) { struct { PTR32 commandBuffer; VkBool32 representativeFragmentTestEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->representativeFragmentTestEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetRepresentativeFragmentTestEnableNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->representativeFragmentTestEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetSampleLocationsEXT(void *args) { struct vkCmdSetSampleLocationsEXT_params *params = args; TRACE("%p, %p\n", params->commandBuffer, params->pSampleLocationsInfo); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetSampleLocationsEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pSampleLocationsInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetSampleLocationsEXT(void *args) { struct { PTR32 commandBuffer; PTR32 pSampleLocationsInfo; } *params = args; VkSampleLocationsInfoEXT pSampleLocationsInfo_host; TRACE("%#x, %#x\n", params->commandBuffer, params->pSampleLocationsInfo); convert_VkSampleLocationsInfoEXT_win32_to_host((const VkSampleLocationsInfoEXT32 *)UlongToPtr(params->pSampleLocationsInfo), &pSampleLocationsInfo_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetSampleLocationsEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pSampleLocationsInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetSampleLocationsEnableEXT(void *args) { struct vkCmdSetSampleLocationsEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->sampleLocationsEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetSampleLocationsEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->sampleLocationsEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetSampleLocationsEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 sampleLocationsEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->sampleLocationsEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetSampleLocationsEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->sampleLocationsEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetSampleMaskEXT(void *args) { struct vkCmdSetSampleMaskEXT_params *params = args; TRACE("%p, %#x, %p\n", params->commandBuffer, params->samples, params->pSampleMask); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetSampleMaskEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->samples, params->pSampleMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetSampleMaskEXT(void *args) { struct { PTR32 commandBuffer; VkSampleCountFlagBits samples; PTR32 pSampleMask; } *params = args; TRACE("%#x, %#x, %#x\n", params->commandBuffer, params->samples, params->pSampleMask); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetSampleMaskEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->samples, (const VkSampleMask *)UlongToPtr(params->pSampleMask)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetScissor(void *args) { struct vkCmdSetScissor_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstScissor, params->scissorCount, params->pScissors); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetScissor(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstScissor, params->scissorCount, params->pScissors); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetScissor(void *args) { struct { PTR32 commandBuffer; uint32_t firstScissor; uint32_t scissorCount; PTR32 pScissors; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstScissor, params->scissorCount, params->pScissors); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetScissor(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstScissor, params->scissorCount, (const VkRect2D *)UlongToPtr(params->pScissors)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetScissorWithCount(void *args) { struct vkCmdSetScissorWithCount_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->scissorCount, params->pScissors); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetScissorWithCount(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->scissorCount, params->pScissors); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetScissorWithCount(void *args) { struct { PTR32 commandBuffer; uint32_t scissorCount; PTR32 pScissors; } *params = args; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->scissorCount, params->pScissors); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetScissorWithCount(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->scissorCount, (const VkRect2D *)UlongToPtr(params->pScissors)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetScissorWithCountEXT(void *args) { struct vkCmdSetScissorWithCountEXT_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->scissorCount, params->pScissors); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetScissorWithCountEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->scissorCount, params->pScissors); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetScissorWithCountEXT(void *args) { struct { PTR32 commandBuffer; uint32_t scissorCount; PTR32 pScissors; } *params = args; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->scissorCount, params->pScissors); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetScissorWithCountEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->scissorCount, (const VkRect2D *)UlongToPtr(params->pScissors)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetShadingRateImageEnableNV(void *args) { struct vkCmdSetShadingRateImageEnableNV_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->shadingRateImageEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetShadingRateImageEnableNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->shadingRateImageEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetShadingRateImageEnableNV(void *args) { struct { PTR32 commandBuffer; VkBool32 shadingRateImageEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->shadingRateImageEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetShadingRateImageEnableNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->shadingRateImageEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetStencilCompareMask(void *args) { struct vkCmdSetStencilCompareMask_params *params = args; TRACE("%p, %#x, %u\n", params->commandBuffer, params->faceMask, params->compareMask); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetStencilCompareMask(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->faceMask, params->compareMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetStencilCompareMask(void *args) { struct { PTR32 commandBuffer; VkStencilFaceFlags faceMask; uint32_t compareMask; } *params = args; TRACE("%#x, %#x, %u\n", params->commandBuffer, params->faceMask, params->compareMask); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetStencilCompareMask(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->faceMask, params->compareMask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetStencilOp(void *args) { struct vkCmdSetStencilOp_params *params = args; TRACE("%p, %#x, %#x, %#x, %#x, %#x\n", params->commandBuffer, params->faceMask, params->failOp, params->passOp, params->depthFailOp, params->compareOp); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetStencilOp(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->faceMask, params->failOp, params->passOp, params->depthFailOp, params->compareOp); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetStencilOp(void *args) { struct { PTR32 commandBuffer; VkStencilFaceFlags faceMask; VkStencilOp failOp; VkStencilOp passOp; VkStencilOp depthFailOp; VkCompareOp compareOp; } *params = args; TRACE("%#x, %#x, %#x, %#x, %#x, %#x\n", params->commandBuffer, params->faceMask, params->failOp, params->passOp, params->depthFailOp, params->compareOp); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetStencilOp(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->faceMask, params->failOp, params->passOp, params->depthFailOp, params->compareOp); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetStencilOpEXT(void *args) { struct vkCmdSetStencilOpEXT_params *params = args; TRACE("%p, %#x, %#x, %#x, %#x, %#x\n", params->commandBuffer, params->faceMask, params->failOp, params->passOp, params->depthFailOp, params->compareOp); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetStencilOpEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->faceMask, params->failOp, params->passOp, params->depthFailOp, params->compareOp); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetStencilOpEXT(void *args) { struct { PTR32 commandBuffer; VkStencilFaceFlags faceMask; VkStencilOp failOp; VkStencilOp passOp; VkStencilOp depthFailOp; VkCompareOp compareOp; } *params = args; TRACE("%#x, %#x, %#x, %#x, %#x, %#x\n", params->commandBuffer, params->faceMask, params->failOp, params->passOp, params->depthFailOp, params->compareOp); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetStencilOpEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->faceMask, params->failOp, params->passOp, params->depthFailOp, params->compareOp); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetStencilReference(void *args) { struct vkCmdSetStencilReference_params *params = args; TRACE("%p, %#x, %u\n", params->commandBuffer, params->faceMask, params->reference); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetStencilReference(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->faceMask, params->reference); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetStencilReference(void *args) { struct { PTR32 commandBuffer; VkStencilFaceFlags faceMask; uint32_t reference; } *params = args; TRACE("%#x, %#x, %u\n", params->commandBuffer, params->faceMask, params->reference); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetStencilReference(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->faceMask, params->reference); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetStencilTestEnable(void *args) { struct vkCmdSetStencilTestEnable_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->stencilTestEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetStencilTestEnable(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->stencilTestEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetStencilTestEnable(void *args) { struct { PTR32 commandBuffer; VkBool32 stencilTestEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->stencilTestEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetStencilTestEnable(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->stencilTestEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetStencilTestEnableEXT(void *args) { struct vkCmdSetStencilTestEnableEXT_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->stencilTestEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetStencilTestEnableEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->stencilTestEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetStencilTestEnableEXT(void *args) { struct { PTR32 commandBuffer; VkBool32 stencilTestEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->stencilTestEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetStencilTestEnableEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->stencilTestEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetStencilWriteMask(void *args) { struct vkCmdSetStencilWriteMask_params *params = args; TRACE("%p, %#x, %u\n", params->commandBuffer, params->faceMask, params->writeMask); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetStencilWriteMask(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->faceMask, params->writeMask); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetStencilWriteMask(void *args) { struct { PTR32 commandBuffer; VkStencilFaceFlags faceMask; uint32_t writeMask; } *params = args; TRACE("%#x, %#x, %u\n", params->commandBuffer, params->faceMask, params->writeMask); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetStencilWriteMask(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->faceMask, params->writeMask); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetTessellationDomainOriginEXT(void *args) { struct vkCmdSetTessellationDomainOriginEXT_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->domainOrigin); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetTessellationDomainOriginEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->domainOrigin); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetTessellationDomainOriginEXT(void *args) { struct { PTR32 commandBuffer; VkTessellationDomainOrigin domainOrigin; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->domainOrigin); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetTessellationDomainOriginEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->domainOrigin); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetVertexInputEXT(void *args) { struct vkCmdSetVertexInputEXT_params *params = args; TRACE("%p, %u, %p, %u, %p\n", params->commandBuffer, params->vertexBindingDescriptionCount, params->pVertexBindingDescriptions, params->vertexAttributeDescriptionCount, params->pVertexAttributeDescriptions); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetVertexInputEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->vertexBindingDescriptionCount, params->pVertexBindingDescriptions, params->vertexAttributeDescriptionCount, params->pVertexAttributeDescriptions); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetVertexInputEXT(void *args) { struct { PTR32 commandBuffer; uint32_t vertexBindingDescriptionCount; PTR32 pVertexBindingDescriptions; uint32_t vertexAttributeDescriptionCount; PTR32 pVertexAttributeDescriptions; } *params = args; const VkVertexInputBindingDescription2EXT *pVertexBindingDescriptions_host; const VkVertexInputAttributeDescription2EXT *pVertexAttributeDescriptions_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %u, %#x\n", params->commandBuffer, params->vertexBindingDescriptionCount, params->pVertexBindingDescriptions, params->vertexAttributeDescriptionCount, params->pVertexAttributeDescriptions); init_conversion_context(&ctx); pVertexBindingDescriptions_host = convert_VkVertexInputBindingDescription2EXT_array_win32_to_host(&ctx, (const VkVertexInputBindingDescription2EXT32 *)UlongToPtr(params->pVertexBindingDescriptions), params->vertexBindingDescriptionCount); pVertexAttributeDescriptions_host = convert_VkVertexInputAttributeDescription2EXT_array_win32_to_host(&ctx, (const VkVertexInputAttributeDescription2EXT32 *)UlongToPtr(params->pVertexAttributeDescriptions), params->vertexAttributeDescriptionCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetVertexInputEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->vertexBindingDescriptionCount, pVertexBindingDescriptions_host, params->vertexAttributeDescriptionCount, pVertexAttributeDescriptions_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetViewport(void *args) { struct vkCmdSetViewport_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstViewport, params->viewportCount, params->pViewports); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetViewport(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstViewport, params->viewportCount, params->pViewports); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetViewport(void *args) { struct { PTR32 commandBuffer; uint32_t firstViewport; uint32_t viewportCount; PTR32 pViewports; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstViewport, params->viewportCount, params->pViewports); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetViewport(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstViewport, params->viewportCount, (const VkViewport *)UlongToPtr(params->pViewports)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetViewportShadingRatePaletteNV(void *args) { struct vkCmdSetViewportShadingRatePaletteNV_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstViewport, params->viewportCount, params->pShadingRatePalettes); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetViewportShadingRatePaletteNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstViewport, params->viewportCount, params->pShadingRatePalettes); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetViewportShadingRatePaletteNV(void *args) { struct { PTR32 commandBuffer; uint32_t firstViewport; uint32_t viewportCount; PTR32 pShadingRatePalettes; } *params = args; const VkShadingRatePaletteNV *pShadingRatePalettes_host; struct conversion_context ctx; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstViewport, params->viewportCount, params->pShadingRatePalettes); init_conversion_context(&ctx); pShadingRatePalettes_host = convert_VkShadingRatePaletteNV_array_win32_to_host(&ctx, (const VkShadingRatePaletteNV32 *)UlongToPtr(params->pShadingRatePalettes), params->viewportCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetViewportShadingRatePaletteNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstViewport, params->viewportCount, pShadingRatePalettes_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetViewportSwizzleNV(void *args) { struct vkCmdSetViewportSwizzleNV_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstViewport, params->viewportCount, params->pViewportSwizzles); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetViewportSwizzleNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstViewport, params->viewportCount, params->pViewportSwizzles); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetViewportSwizzleNV(void *args) { struct { PTR32 commandBuffer; uint32_t firstViewport; uint32_t viewportCount; PTR32 pViewportSwizzles; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstViewport, params->viewportCount, params->pViewportSwizzles); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetViewportSwizzleNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstViewport, params->viewportCount, (const VkViewportSwizzleNV *)UlongToPtr(params->pViewportSwizzles)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetViewportWScalingEnableNV(void *args) { struct vkCmdSetViewportWScalingEnableNV_params *params = args; TRACE("%p, %u\n", params->commandBuffer, params->viewportWScalingEnable); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetViewportWScalingEnableNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->viewportWScalingEnable); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetViewportWScalingEnableNV(void *args) { struct { PTR32 commandBuffer; VkBool32 viewportWScalingEnable; } *params = args; TRACE("%#x, %u\n", params->commandBuffer, params->viewportWScalingEnable); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetViewportWScalingEnableNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->viewportWScalingEnable); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetViewportWScalingNV(void *args) { struct vkCmdSetViewportWScalingNV_params *params = args; TRACE("%p, %u, %u, %p\n", params->commandBuffer, params->firstViewport, params->viewportCount, params->pViewportWScalings); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetViewportWScalingNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->firstViewport, params->viewportCount, params->pViewportWScalings); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetViewportWScalingNV(void *args) { struct { PTR32 commandBuffer; uint32_t firstViewport; uint32_t viewportCount; PTR32 pViewportWScalings; } *params = args; TRACE("%#x, %u, %u, %#x\n", params->commandBuffer, params->firstViewport, params->viewportCount, params->pViewportWScalings); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetViewportWScalingNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->firstViewport, params->viewportCount, (const VkViewportWScalingNV *)UlongToPtr(params->pViewportWScalings)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetViewportWithCount(void *args) { struct vkCmdSetViewportWithCount_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->viewportCount, params->pViewports); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetViewportWithCount(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->viewportCount, params->pViewports); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetViewportWithCount(void *args) { struct { PTR32 commandBuffer; uint32_t viewportCount; PTR32 pViewports; } *params = args; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->viewportCount, params->pViewports); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetViewportWithCount(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->viewportCount, (const VkViewport *)UlongToPtr(params->pViewports)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSetViewportWithCountEXT(void *args) { struct vkCmdSetViewportWithCountEXT_params *params = args; TRACE("%p, %u, %p\n", params->commandBuffer, params->viewportCount, params->pViewports); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSetViewportWithCountEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->viewportCount, params->pViewports); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSetViewportWithCountEXT(void *args) { struct { PTR32 commandBuffer; uint32_t viewportCount; PTR32 pViewports; } *params = args; TRACE("%#x, %u, %#x\n", params->commandBuffer, params->viewportCount, params->pViewports); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSetViewportWithCountEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->viewportCount, (const VkViewport *)UlongToPtr(params->pViewports)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdSubpassShadingHUAWEI(void *args) { struct vkCmdSubpassShadingHUAWEI_params *params = args; TRACE("%p\n", params->commandBuffer); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdSubpassShadingHUAWEI(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdSubpassShadingHUAWEI(void *args) { struct { PTR32 commandBuffer; } *params = args; TRACE("%#x\n", params->commandBuffer); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdSubpassShadingHUAWEI(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdTraceRaysIndirect2KHR(void *args) { struct vkCmdTraceRaysIndirect2KHR_params *params = args; TRACE("%p, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->indirectDeviceAddress)); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdTraceRaysIndirect2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->indirectDeviceAddress); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdTraceRaysIndirect2KHR(void *args) { struct { PTR32 commandBuffer; VkDeviceAddress DECLSPEC_ALIGN(8) indirectDeviceAddress; } *params = args; TRACE("%#x, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->indirectDeviceAddress)); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdTraceRaysIndirect2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->indirectDeviceAddress); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdTraceRaysIndirectKHR(void *args) { struct vkCmdTraceRaysIndirectKHR_params *params = args; TRACE("%p, %p, %p, %p, %p, 0x%s\n", params->commandBuffer, params->pRaygenShaderBindingTable, params->pMissShaderBindingTable, params->pHitShaderBindingTable, params->pCallableShaderBindingTable, wine_dbgstr_longlong(params->indirectDeviceAddress)); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdTraceRaysIndirectKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pRaygenShaderBindingTable, params->pMissShaderBindingTable, params->pHitShaderBindingTable, params->pCallableShaderBindingTable, params->indirectDeviceAddress); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdTraceRaysIndirectKHR(void *args) { struct { PTR32 commandBuffer; PTR32 pRaygenShaderBindingTable; PTR32 pMissShaderBindingTable; PTR32 pHitShaderBindingTable; PTR32 pCallableShaderBindingTable; VkDeviceAddress DECLSPEC_ALIGN(8) indirectDeviceAddress; } *params = args; VkStridedDeviceAddressRegionKHR pRaygenShaderBindingTable_host; VkStridedDeviceAddressRegionKHR pMissShaderBindingTable_host; VkStridedDeviceAddressRegionKHR pHitShaderBindingTable_host; VkStridedDeviceAddressRegionKHR pCallableShaderBindingTable_host; TRACE("%#x, %#x, %#x, %#x, %#x, 0x%s\n", params->commandBuffer, params->pRaygenShaderBindingTable, params->pMissShaderBindingTable, params->pHitShaderBindingTable, params->pCallableShaderBindingTable, wine_dbgstr_longlong(params->indirectDeviceAddress)); convert_VkStridedDeviceAddressRegionKHR_win32_to_host((const VkStridedDeviceAddressRegionKHR32 *)UlongToPtr(params->pRaygenShaderBindingTable), &pRaygenShaderBindingTable_host); convert_VkStridedDeviceAddressRegionKHR_win32_to_host((const VkStridedDeviceAddressRegionKHR32 *)UlongToPtr(params->pMissShaderBindingTable), &pMissShaderBindingTable_host); convert_VkStridedDeviceAddressRegionKHR_win32_to_host((const VkStridedDeviceAddressRegionKHR32 *)UlongToPtr(params->pHitShaderBindingTable), &pHitShaderBindingTable_host); convert_VkStridedDeviceAddressRegionKHR_win32_to_host((const VkStridedDeviceAddressRegionKHR32 *)UlongToPtr(params->pCallableShaderBindingTable), &pCallableShaderBindingTable_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdTraceRaysIndirectKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pRaygenShaderBindingTable_host, &pMissShaderBindingTable_host, &pHitShaderBindingTable_host, &pCallableShaderBindingTable_host, params->indirectDeviceAddress); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdTraceRaysKHR(void *args) { struct vkCmdTraceRaysKHR_params *params = args; TRACE("%p, %p, %p, %p, %p, %u, %u, %u\n", params->commandBuffer, params->pRaygenShaderBindingTable, params->pMissShaderBindingTable, params->pHitShaderBindingTable, params->pCallableShaderBindingTable, params->width, params->height, params->depth); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdTraceRaysKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pRaygenShaderBindingTable, params->pMissShaderBindingTable, params->pHitShaderBindingTable, params->pCallableShaderBindingTable, params->width, params->height, params->depth); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdTraceRaysKHR(void *args) { struct { PTR32 commandBuffer; PTR32 pRaygenShaderBindingTable; PTR32 pMissShaderBindingTable; PTR32 pHitShaderBindingTable; PTR32 pCallableShaderBindingTable; uint32_t width; uint32_t height; uint32_t depth; } *params = args; VkStridedDeviceAddressRegionKHR pRaygenShaderBindingTable_host; VkStridedDeviceAddressRegionKHR pMissShaderBindingTable_host; VkStridedDeviceAddressRegionKHR pHitShaderBindingTable_host; VkStridedDeviceAddressRegionKHR pCallableShaderBindingTable_host; TRACE("%#x, %#x, %#x, %#x, %#x, %u, %u, %u\n", params->commandBuffer, params->pRaygenShaderBindingTable, params->pMissShaderBindingTable, params->pHitShaderBindingTable, params->pCallableShaderBindingTable, params->width, params->height, params->depth); convert_VkStridedDeviceAddressRegionKHR_win32_to_host((const VkStridedDeviceAddressRegionKHR32 *)UlongToPtr(params->pRaygenShaderBindingTable), &pRaygenShaderBindingTable_host); convert_VkStridedDeviceAddressRegionKHR_win32_to_host((const VkStridedDeviceAddressRegionKHR32 *)UlongToPtr(params->pMissShaderBindingTable), &pMissShaderBindingTable_host); convert_VkStridedDeviceAddressRegionKHR_win32_to_host((const VkStridedDeviceAddressRegionKHR32 *)UlongToPtr(params->pHitShaderBindingTable), &pHitShaderBindingTable_host); convert_VkStridedDeviceAddressRegionKHR_win32_to_host((const VkStridedDeviceAddressRegionKHR32 *)UlongToPtr(params->pCallableShaderBindingTable), &pCallableShaderBindingTable_host); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdTraceRaysKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, &pRaygenShaderBindingTable_host, &pMissShaderBindingTable_host, &pHitShaderBindingTable_host, &pCallableShaderBindingTable_host, params->width, params->height, params->depth); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdTraceRaysNV(void *args) { struct vkCmdTraceRaysNV_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->raygenShaderBindingTableBuffer), wine_dbgstr_longlong(params->raygenShaderBindingOffset), wine_dbgstr_longlong(params->missShaderBindingTableBuffer), wine_dbgstr_longlong(params->missShaderBindingOffset), wine_dbgstr_longlong(params->missShaderBindingStride), wine_dbgstr_longlong(params->hitShaderBindingTableBuffer), wine_dbgstr_longlong(params->hitShaderBindingOffset), wine_dbgstr_longlong(params->hitShaderBindingStride), wine_dbgstr_longlong(params->callableShaderBindingTableBuffer), wine_dbgstr_longlong(params->callableShaderBindingOffset), wine_dbgstr_longlong(params->callableShaderBindingStride), params->width, params->height, params->depth); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdTraceRaysNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->raygenShaderBindingTableBuffer, params->raygenShaderBindingOffset, params->missShaderBindingTableBuffer, params->missShaderBindingOffset, params->missShaderBindingStride, params->hitShaderBindingTableBuffer, params->hitShaderBindingOffset, params->hitShaderBindingStride, params->callableShaderBindingTableBuffer, params->callableShaderBindingOffset, params->callableShaderBindingStride, params->width, params->height, params->depth); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdTraceRaysNV(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) raygenShaderBindingTableBuffer; VkDeviceSize DECLSPEC_ALIGN(8) raygenShaderBindingOffset; VkBuffer DECLSPEC_ALIGN(8) missShaderBindingTableBuffer; VkDeviceSize DECLSPEC_ALIGN(8) missShaderBindingOffset; VkDeviceSize DECLSPEC_ALIGN(8) missShaderBindingStride; VkBuffer DECLSPEC_ALIGN(8) hitShaderBindingTableBuffer; VkDeviceSize DECLSPEC_ALIGN(8) hitShaderBindingOffset; VkDeviceSize DECLSPEC_ALIGN(8) hitShaderBindingStride; VkBuffer DECLSPEC_ALIGN(8) callableShaderBindingTableBuffer; VkDeviceSize DECLSPEC_ALIGN(8) callableShaderBindingOffset; VkDeviceSize DECLSPEC_ALIGN(8) callableShaderBindingStride; uint32_t width; uint32_t height; uint32_t depth; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, 0x%s, %u, %u, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->raygenShaderBindingTableBuffer), wine_dbgstr_longlong(params->raygenShaderBindingOffset), wine_dbgstr_longlong(params->missShaderBindingTableBuffer), wine_dbgstr_longlong(params->missShaderBindingOffset), wine_dbgstr_longlong(params->missShaderBindingStride), wine_dbgstr_longlong(params->hitShaderBindingTableBuffer), wine_dbgstr_longlong(params->hitShaderBindingOffset), wine_dbgstr_longlong(params->hitShaderBindingStride), wine_dbgstr_longlong(params->callableShaderBindingTableBuffer), wine_dbgstr_longlong(params->callableShaderBindingOffset), wine_dbgstr_longlong(params->callableShaderBindingStride), params->width, params->height, params->depth); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdTraceRaysNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->raygenShaderBindingTableBuffer, params->raygenShaderBindingOffset, params->missShaderBindingTableBuffer, params->missShaderBindingOffset, params->missShaderBindingStride, params->hitShaderBindingTableBuffer, params->hitShaderBindingOffset, params->hitShaderBindingStride, params->callableShaderBindingTableBuffer, params->callableShaderBindingOffset, params->callableShaderBindingStride, params->width, params->height, params->depth); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdUpdateBuffer(void *args) { struct vkCmdUpdateBuffer_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, %p\n", params->commandBuffer, wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), wine_dbgstr_longlong(params->dataSize), params->pData); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdUpdateBuffer(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->dstBuffer, params->dstOffset, params->dataSize, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdUpdateBuffer(void *args) { struct { PTR32 commandBuffer; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; VkDeviceSize DECLSPEC_ALIGN(8) dstOffset; VkDeviceSize DECLSPEC_ALIGN(8) dataSize; PTR32 pData; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, %#x\n", params->commandBuffer, wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), wine_dbgstr_longlong(params->dataSize), params->pData); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdUpdateBuffer(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->dstBuffer, params->dstOffset, params->dataSize, (const void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWaitEvents(void *args) { struct vkCmdWaitEvents_params *params = args; TRACE("%p, %u, %p, %#x, %#x, %u, %p, %u, %p, %u, %p\n", params->commandBuffer, params->eventCount, params->pEvents, params->srcStageMask, params->dstStageMask, params->memoryBarrierCount, params->pMemoryBarriers, params->bufferMemoryBarrierCount, params->pBufferMemoryBarriers, params->imageMemoryBarrierCount, params->pImageMemoryBarriers); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWaitEvents(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->eventCount, params->pEvents, params->srcStageMask, params->dstStageMask, params->memoryBarrierCount, params->pMemoryBarriers, params->bufferMemoryBarrierCount, params->pBufferMemoryBarriers, params->imageMemoryBarrierCount, params->pImageMemoryBarriers); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWaitEvents(void *args) { struct { PTR32 commandBuffer; uint32_t eventCount; PTR32 pEvents; VkPipelineStageFlags srcStageMask; VkPipelineStageFlags dstStageMask; uint32_t memoryBarrierCount; PTR32 pMemoryBarriers; uint32_t bufferMemoryBarrierCount; PTR32 pBufferMemoryBarriers; uint32_t imageMemoryBarrierCount; PTR32 pImageMemoryBarriers; } *params = args; const VkMemoryBarrier *pMemoryBarriers_host; const VkBufferMemoryBarrier *pBufferMemoryBarriers_host; const VkImageMemoryBarrier *pImageMemoryBarriers_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %#x, %#x, %u, %#x, %u, %#x, %u, %#x\n", params->commandBuffer, params->eventCount, params->pEvents, params->srcStageMask, params->dstStageMask, params->memoryBarrierCount, params->pMemoryBarriers, params->bufferMemoryBarrierCount, params->pBufferMemoryBarriers, params->imageMemoryBarrierCount, params->pImageMemoryBarriers); init_conversion_context(&ctx); pMemoryBarriers_host = convert_VkMemoryBarrier_array_win32_to_host(&ctx, (const VkMemoryBarrier32 *)UlongToPtr(params->pMemoryBarriers), params->memoryBarrierCount); pBufferMemoryBarriers_host = convert_VkBufferMemoryBarrier_array_win32_to_host(&ctx, (const VkBufferMemoryBarrier32 *)UlongToPtr(params->pBufferMemoryBarriers), params->bufferMemoryBarrierCount); pImageMemoryBarriers_host = convert_VkImageMemoryBarrier_array_win32_to_host(&ctx, (const VkImageMemoryBarrier32 *)UlongToPtr(params->pImageMemoryBarriers), params->imageMemoryBarrierCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWaitEvents(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->eventCount, (const VkEvent *)UlongToPtr(params->pEvents), params->srcStageMask, params->dstStageMask, params->memoryBarrierCount, pMemoryBarriers_host, params->bufferMemoryBarrierCount, pBufferMemoryBarriers_host, params->imageMemoryBarrierCount, pImageMemoryBarriers_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWaitEvents2(void *args) { struct vkCmdWaitEvents2_params *params = args; TRACE("%p, %u, %p, %p\n", params->commandBuffer, params->eventCount, params->pEvents, params->pDependencyInfos); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWaitEvents2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->eventCount, params->pEvents, params->pDependencyInfos); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWaitEvents2(void *args) { struct { PTR32 commandBuffer; uint32_t eventCount; PTR32 pEvents; PTR32 pDependencyInfos; } *params = args; const VkDependencyInfo *pDependencyInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %#x\n", params->commandBuffer, params->eventCount, params->pEvents, params->pDependencyInfos); init_conversion_context(&ctx); pDependencyInfos_host = convert_VkDependencyInfo_array_win32_to_host(&ctx, (const VkDependencyInfo32 *)UlongToPtr(params->pDependencyInfos), params->eventCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWaitEvents2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->eventCount, (const VkEvent *)UlongToPtr(params->pEvents), pDependencyInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWaitEvents2KHR(void *args) { struct vkCmdWaitEvents2KHR_params *params = args; TRACE("%p, %u, %p, %p\n", params->commandBuffer, params->eventCount, params->pEvents, params->pDependencyInfos); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWaitEvents2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->eventCount, params->pEvents, params->pDependencyInfos); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWaitEvents2KHR(void *args) { struct { PTR32 commandBuffer; uint32_t eventCount; PTR32 pEvents; PTR32 pDependencyInfos; } *params = args; const VkDependencyInfo *pDependencyInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %#x\n", params->commandBuffer, params->eventCount, params->pEvents, params->pDependencyInfos); init_conversion_context(&ctx); pDependencyInfos_host = convert_VkDependencyInfo_array_win32_to_host(&ctx, (const VkDependencyInfo32 *)UlongToPtr(params->pDependencyInfos), params->eventCount); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWaitEvents2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->eventCount, (const VkEvent *)UlongToPtr(params->pEvents), pDependencyInfos_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWriteAccelerationStructuresPropertiesKHR(void *args) { struct vkCmdWriteAccelerationStructuresPropertiesKHR_params *params = args; TRACE("%p, %u, %p, %#x, 0x%s, %u\n", params->commandBuffer, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, wine_dbgstr_longlong(params->queryPool), params->firstQuery); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWriteAccelerationStructuresPropertiesKHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, params->queryPool, params->firstQuery); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWriteAccelerationStructuresPropertiesKHR(void *args) { struct { PTR32 commandBuffer; uint32_t accelerationStructureCount; PTR32 pAccelerationStructures; VkQueryType queryType; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t firstQuery; } *params = args; TRACE("%#x, %u, %#x, %#x, 0x%s, %u\n", params->commandBuffer, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, wine_dbgstr_longlong(params->queryPool), params->firstQuery); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWriteAccelerationStructuresPropertiesKHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->accelerationStructureCount, (const VkAccelerationStructureKHR *)UlongToPtr(params->pAccelerationStructures), params->queryType, params->queryPool, params->firstQuery); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWriteAccelerationStructuresPropertiesNV(void *args) { struct vkCmdWriteAccelerationStructuresPropertiesNV_params *params = args; TRACE("%p, %u, %p, %#x, 0x%s, %u\n", params->commandBuffer, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, wine_dbgstr_longlong(params->queryPool), params->firstQuery); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWriteAccelerationStructuresPropertiesNV(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, params->queryPool, params->firstQuery); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWriteAccelerationStructuresPropertiesNV(void *args) { struct { PTR32 commandBuffer; uint32_t accelerationStructureCount; PTR32 pAccelerationStructures; VkQueryType queryType; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t firstQuery; } *params = args; TRACE("%#x, %u, %#x, %#x, 0x%s, %u\n", params->commandBuffer, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, wine_dbgstr_longlong(params->queryPool), params->firstQuery); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWriteAccelerationStructuresPropertiesNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->accelerationStructureCount, (const VkAccelerationStructureNV *)UlongToPtr(params->pAccelerationStructures), params->queryType, params->queryPool, params->firstQuery); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWriteBufferMarker2AMD(void *args) { struct vkCmdWriteBufferMarker2AMD_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->stage), wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), params->marker); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWriteBufferMarker2AMD(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->stage, params->dstBuffer, params->dstOffset, params->marker); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWriteBufferMarker2AMD(void *args) { struct { PTR32 commandBuffer; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) stage; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; VkDeviceSize DECLSPEC_ALIGN(8) dstOffset; uint32_t marker; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->stage), wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), params->marker); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWriteBufferMarker2AMD(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->stage, params->dstBuffer, params->dstOffset, params->marker); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWriteBufferMarkerAMD(void *args) { struct vkCmdWriteBufferMarkerAMD_params *params = args; TRACE("%p, %#x, 0x%s, 0x%s, %u\n", params->commandBuffer, params->pipelineStage, wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), params->marker); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWriteBufferMarkerAMD(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineStage, params->dstBuffer, params->dstOffset, params->marker); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWriteBufferMarkerAMD(void *args) { struct { PTR32 commandBuffer; VkPipelineStageFlagBits pipelineStage; VkBuffer DECLSPEC_ALIGN(8) dstBuffer; VkDeviceSize DECLSPEC_ALIGN(8) dstOffset; uint32_t marker; } *params = args; TRACE("%#x, %#x, 0x%s, 0x%s, %u\n", params->commandBuffer, params->pipelineStage, wine_dbgstr_longlong(params->dstBuffer), wine_dbgstr_longlong(params->dstOffset), params->marker); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWriteBufferMarkerAMD(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineStage, params->dstBuffer, params->dstOffset, params->marker); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWriteMicromapsPropertiesEXT(void *args) { struct vkCmdWriteMicromapsPropertiesEXT_params *params = args; TRACE("%p, %u, %p, %#x, 0x%s, %u\n", params->commandBuffer, params->micromapCount, params->pMicromaps, params->queryType, wine_dbgstr_longlong(params->queryPool), params->firstQuery); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWriteMicromapsPropertiesEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->micromapCount, params->pMicromaps, params->queryType, params->queryPool, params->firstQuery); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWriteMicromapsPropertiesEXT(void *args) { struct { PTR32 commandBuffer; uint32_t micromapCount; PTR32 pMicromaps; VkQueryType queryType; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t firstQuery; } *params = args; TRACE("%#x, %u, %#x, %#x, 0x%s, %u\n", params->commandBuffer, params->micromapCount, params->pMicromaps, params->queryType, wine_dbgstr_longlong(params->queryPool), params->firstQuery); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWriteMicromapsPropertiesEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->micromapCount, (const VkMicromapEXT *)UlongToPtr(params->pMicromaps), params->queryType, params->queryPool, params->firstQuery); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWriteTimestamp(void *args) { struct vkCmdWriteTimestamp_params *params = args; TRACE("%p, %#x, 0x%s, %u\n", params->commandBuffer, params->pipelineStage, wine_dbgstr_longlong(params->queryPool), params->query); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWriteTimestamp(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->pipelineStage, params->queryPool, params->query); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWriteTimestamp(void *args) { struct { PTR32 commandBuffer; VkPipelineStageFlagBits pipelineStage; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t query; } *params = args; TRACE("%#x, %#x, 0x%s, %u\n", params->commandBuffer, params->pipelineStage, wine_dbgstr_longlong(params->queryPool), params->query); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWriteTimestamp(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineStage, params->queryPool, params->query); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWriteTimestamp2(void *args) { struct vkCmdWriteTimestamp2_params *params = args; TRACE("%p, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->stage), wine_dbgstr_longlong(params->queryPool), params->query); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWriteTimestamp2(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->stage, params->queryPool, params->query); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWriteTimestamp2(void *args) { struct { PTR32 commandBuffer; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) stage; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t query; } *params = args; TRACE("%#x, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->stage), wine_dbgstr_longlong(params->queryPool), params->query); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWriteTimestamp2(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->stage, params->queryPool, params->query); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCmdWriteTimestamp2KHR(void *args) { struct vkCmdWriteTimestamp2KHR_params *params = args; TRACE("%p, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->stage), wine_dbgstr_longlong(params->queryPool), params->query); wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdWriteTimestamp2KHR(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->stage, params->queryPool, params->query); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCmdWriteTimestamp2KHR(void *args) { struct { PTR32 commandBuffer; VkPipelineStageFlags2 DECLSPEC_ALIGN(8) stage; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t query; } *params = args; TRACE("%#x, 0x%s, 0x%s, %u\n", params->commandBuffer, wine_dbgstr_longlong(params->stage), wine_dbgstr_longlong(params->queryPool), params->query); wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdWriteTimestamp2KHR(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->stage, params->queryPool, params->query); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCompileDeferredNV(void *args) { struct vkCompileDeferredNV_params *params = args; TRACE("%p, 0x%s, %u\n", params->device, wine_dbgstr_longlong(params->pipeline), params->shader); params->result = wine_device_from_handle(params->device)->funcs.p_vkCompileDeferredNV(wine_device_from_handle(params->device)->device, params->pipeline, params->shader); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCompileDeferredNV(void *args) { struct { PTR32 device; VkPipeline DECLSPEC_ALIGN(8) pipeline; uint32_t shader; VkResult result; } *params = args; TRACE("%#x, 0x%s, %u\n", params->device, wine_dbgstr_longlong(params->pipeline), params->shader); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCompileDeferredNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipeline, params->shader); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCopyAccelerationStructureKHR(void *args) { struct vkCopyAccelerationStructureKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkCopyAccelerationStructureKHR(wine_device_from_handle(params->device)->device, params->deferredOperation, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCopyAccelerationStructureKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; PTR32 pInfo; VkResult result; } *params = args; VkCopyAccelerationStructureInfoKHR pInfo_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); convert_VkCopyAccelerationStructureInfoKHR_win32_to_host((const VkCopyAccelerationStructureInfoKHR32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCopyAccelerationStructureKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCopyAccelerationStructureToMemoryKHR(void *args) { struct vkCopyAccelerationStructureToMemoryKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkCopyAccelerationStructureToMemoryKHR(wine_device_from_handle(params->device)->device, params->deferredOperation, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCopyAccelerationStructureToMemoryKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; PTR32 pInfo; VkResult result; } *params = args; VkCopyAccelerationStructureToMemoryInfoKHR pInfo_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); convert_VkCopyAccelerationStructureToMemoryInfoKHR_win32_to_host((const VkCopyAccelerationStructureToMemoryInfoKHR32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCopyAccelerationStructureToMemoryKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCopyMemoryToAccelerationStructureKHR(void *args) { struct vkCopyMemoryToAccelerationStructureKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkCopyMemoryToAccelerationStructureKHR(wine_device_from_handle(params->device)->device, params->deferredOperation, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCopyMemoryToAccelerationStructureKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; PTR32 pInfo; VkResult result; } *params = args; VkCopyMemoryToAccelerationStructureInfoKHR pInfo_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); convert_VkCopyMemoryToAccelerationStructureInfoKHR_win32_to_host((const VkCopyMemoryToAccelerationStructureInfoKHR32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCopyMemoryToAccelerationStructureKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCopyMemoryToMicromapEXT(void *args) { struct vkCopyMemoryToMicromapEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkCopyMemoryToMicromapEXT(wine_device_from_handle(params->device)->device, params->deferredOperation, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCopyMemoryToMicromapEXT(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; PTR32 pInfo; VkResult result; } *params = args; VkCopyMemoryToMicromapInfoEXT pInfo_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); convert_VkCopyMemoryToMicromapInfoEXT_win32_to_host((const VkCopyMemoryToMicromapInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCopyMemoryToMicromapEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCopyMicromapEXT(void *args) { struct vkCopyMicromapEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkCopyMicromapEXT(wine_device_from_handle(params->device)->device, params->deferredOperation, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCopyMicromapEXT(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; PTR32 pInfo; VkResult result; } *params = args; VkCopyMicromapInfoEXT pInfo_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); convert_VkCopyMicromapInfoEXT_win32_to_host((const VkCopyMicromapInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCopyMicromapEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCopyMicromapToMemoryEXT(void *args) { struct vkCopyMicromapToMemoryEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkCopyMicromapToMemoryEXT(wine_device_from_handle(params->device)->device, params->deferredOperation, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCopyMicromapToMemoryEXT(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; PTR32 pInfo; VkResult result; } *params = args; VkCopyMicromapToMemoryInfoEXT pInfo_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), params->pInfo); convert_VkCopyMicromapToMemoryInfoEXT_win32_to_host((const VkCopyMicromapToMemoryInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCopyMicromapToMemoryEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateAccelerationStructureKHR(void *args) { struct vkCreateAccelerationStructureKHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pAccelerationStructure); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateAccelerationStructureKHR(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pAccelerationStructure); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateAccelerationStructureKHR(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pAccelerationStructure; VkResult result; } *params = args; VkAccelerationStructureCreateInfoKHR pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pAccelerationStructure); init_conversion_context(&ctx); convert_VkAccelerationStructureCreateInfoKHR_win32_to_host(&ctx, (const VkAccelerationStructureCreateInfoKHR32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateAccelerationStructureKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkAccelerationStructureKHR *)UlongToPtr(params->pAccelerationStructure)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateAccelerationStructureNV(void *args) { struct vkCreateAccelerationStructureNV_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pAccelerationStructure); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateAccelerationStructureNV(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pAccelerationStructure); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateAccelerationStructureNV(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pAccelerationStructure; VkResult result; } *params = args; VkAccelerationStructureCreateInfoNV pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pAccelerationStructure); init_conversion_context(&ctx); convert_VkAccelerationStructureCreateInfoNV_win32_to_host(&ctx, (const VkAccelerationStructureCreateInfoNV32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateAccelerationStructureNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkAccelerationStructureNV *)UlongToPtr(params->pAccelerationStructure)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateBuffer(void *args) { struct vkCreateBuffer_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pBuffer); params->result = wine_vkCreateBuffer(params->device, params->pCreateInfo, params->pAllocator, params->pBuffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateBuffer(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pBuffer; VkResult result; } *params = args; VkBufferCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pBuffer); init_conversion_context(&ctx); convert_VkBufferCreateInfo_win32_to_host(&ctx, (const VkBufferCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_vkCreateBuffer((VkDevice)UlongToPtr(params->device), &pCreateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), (VkBuffer *)UlongToPtr(params->pBuffer)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateBufferView(void *args) { struct vkCreateBufferView_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pView); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateBufferView(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pView); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateBufferView(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pView; VkResult result; } *params = args; VkBufferViewCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pView); convert_VkBufferViewCreateInfo_win32_to_host((const VkBufferViewCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateBufferView(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkBufferView *)UlongToPtr(params->pView)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateCommandPool(void *args) { struct vkCreateCommandPool_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pCommandPool); params->result = wine_vkCreateCommandPool(params->device, params->pCreateInfo, params->pAllocator, params->pCommandPool, params->client_ptr); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateCommandPool(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pCommandPool; PTR32 client_ptr; VkResult result; } *params = args; VkCommandPoolCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pCommandPool); convert_VkCommandPoolCreateInfo_win32_to_host((const VkCommandPoolCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_vkCreateCommandPool((VkDevice)UlongToPtr(params->device), &pCreateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), (VkCommandPool *)UlongToPtr(params->pCommandPool), UlongToPtr(params->client_ptr)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateComputePipelines(void *args) { struct vkCreateComputePipelines_params *params = args; const VkComputePipelineCreateInfo *pCreateInfos_host; struct conversion_context ctx; TRACE("%p, 0x%s, %u, %p, %p, %p\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pPipelines); init_conversion_context(&ctx); pCreateInfos_host = convert_VkComputePipelineCreateInfo_array_win64_to_host(&ctx, params->pCreateInfos, params->createInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateComputePipelines(wine_device_from_handle(params->device)->device, params->pipelineCache, params->createInfoCount, pCreateInfos_host, NULL, params->pPipelines); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateComputePipelines(void *args) { struct { PTR32 device; VkPipelineCache DECLSPEC_ALIGN(8) pipelineCache; uint32_t createInfoCount; PTR32 pCreateInfos; PTR32 pAllocator; PTR32 pPipelines; VkResult result; } *params = args; const VkComputePipelineCreateInfo *pCreateInfos_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %u, %#x, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pPipelines); init_conversion_context(&ctx); pCreateInfos_host = convert_VkComputePipelineCreateInfo_array_win32_to_host(&ctx, (const VkComputePipelineCreateInfo32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateComputePipelines(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipelineCache, params->createInfoCount, pCreateInfos_host, NULL, (VkPipeline *)UlongToPtr(params->pPipelines)); convert_VkComputePipelineCreateInfo_array_host_to_win32(pCreateInfos_host, (const VkComputePipelineCreateInfo32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateCuFunctionNVX(void *args) { struct vkCreateCuFunctionNVX_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pFunction); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateCuFunctionNVX(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pFunction); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateCuFunctionNVX(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pFunction; VkResult result; } *params = args; VkCuFunctionCreateInfoNVX pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pFunction); convert_VkCuFunctionCreateInfoNVX_win32_to_host((const VkCuFunctionCreateInfoNVX32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateCuFunctionNVX(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkCuFunctionNVX *)UlongToPtr(params->pFunction)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateCuModuleNVX(void *args) { struct vkCreateCuModuleNVX_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pModule); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateCuModuleNVX(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pModule); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateCuModuleNVX(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pModule; VkResult result; } *params = args; VkCuModuleCreateInfoNVX pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pModule); convert_VkCuModuleCreateInfoNVX_win32_to_host((const VkCuModuleCreateInfoNVX32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateCuModuleNVX(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkCuModuleNVX *)UlongToPtr(params->pModule)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateDebugReportCallbackEXT(void *args) { struct vkCreateDebugReportCallbackEXT_params *params = args; TRACE("%p, %p, %p, %p\n", params->instance, params->pCreateInfo, params->pAllocator, params->pCallback); params->result = wine_vkCreateDebugReportCallbackEXT(params->instance, params->pCreateInfo, params->pAllocator, params->pCallback); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateDebugReportCallbackEXT(void *args) { struct { PTR32 instance; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pCallback; VkResult result; } *params = args; VkDebugReportCallbackCreateInfoEXT pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->instance, params->pCreateInfo, params->pAllocator, params->pCallback); convert_VkDebugReportCallbackCreateInfoEXT_win32_to_host((const VkDebugReportCallbackCreateInfoEXT32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_vkCreateDebugReportCallbackEXT((VkInstance)UlongToPtr(params->instance), &pCreateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), (VkDebugReportCallbackEXT *)UlongToPtr(params->pCallback)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateDebugUtilsMessengerEXT(void *args) { struct vkCreateDebugUtilsMessengerEXT_params *params = args; TRACE("%p, %p, %p, %p\n", params->instance, params->pCreateInfo, params->pAllocator, params->pMessenger); params->result = wine_vkCreateDebugUtilsMessengerEXT(params->instance, params->pCreateInfo, params->pAllocator, params->pMessenger); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateDebugUtilsMessengerEXT(void *args) { struct { PTR32 instance; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pMessenger; VkResult result; } *params = args; VkDebugUtilsMessengerCreateInfoEXT pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->instance, params->pCreateInfo, params->pAllocator, params->pMessenger); convert_VkDebugUtilsMessengerCreateInfoEXT_win32_to_host((const VkDebugUtilsMessengerCreateInfoEXT32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_vkCreateDebugUtilsMessengerEXT((VkInstance)UlongToPtr(params->instance), &pCreateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), (VkDebugUtilsMessengerEXT *)UlongToPtr(params->pMessenger)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateDeferredOperationKHR(void *args) { struct vkCreateDeferredOperationKHR_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pAllocator, params->pDeferredOperation); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateDeferredOperationKHR(wine_device_from_handle(params->device)->device, NULL, params->pDeferredOperation); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateDeferredOperationKHR(void *args) { struct { PTR32 device; PTR32 pAllocator; PTR32 pDeferredOperation; VkResult result; } *params = args; TRACE("%#x, %#x, %#x\n", params->device, params->pAllocator, params->pDeferredOperation); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateDeferredOperationKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, NULL, (VkDeferredOperationKHR *)UlongToPtr(params->pDeferredOperation)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateDescriptorPool(void *args) { struct vkCreateDescriptorPool_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pDescriptorPool); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateDescriptorPool(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pDescriptorPool); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateDescriptorPool(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pDescriptorPool; VkResult result; } *params = args; VkDescriptorPoolCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pDescriptorPool); init_conversion_context(&ctx); convert_VkDescriptorPoolCreateInfo_win32_to_host(&ctx, (const VkDescriptorPoolCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateDescriptorPool(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkDescriptorPool *)UlongToPtr(params->pDescriptorPool)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateDescriptorSetLayout(void *args) { struct vkCreateDescriptorSetLayout_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pSetLayout); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateDescriptorSetLayout(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pSetLayout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateDescriptorSetLayout(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pSetLayout; VkResult result; } *params = args; VkDescriptorSetLayoutCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pSetLayout); init_conversion_context(&ctx); convert_VkDescriptorSetLayoutCreateInfo_win32_to_host(&ctx, (const VkDescriptorSetLayoutCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateDescriptorSetLayout(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkDescriptorSetLayout *)UlongToPtr(params->pSetLayout)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateDescriptorUpdateTemplate(void *args) { struct vkCreateDescriptorUpdateTemplate_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pDescriptorUpdateTemplate); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateDescriptorUpdateTemplate(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pDescriptorUpdateTemplate); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateDescriptorUpdateTemplate(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pDescriptorUpdateTemplate; VkResult result; } *params = args; VkDescriptorUpdateTemplateCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pDescriptorUpdateTemplate); init_conversion_context(&ctx); convert_VkDescriptorUpdateTemplateCreateInfo_win32_to_host(&ctx, (const VkDescriptorUpdateTemplateCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateDescriptorUpdateTemplate(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkDescriptorUpdateTemplate *)UlongToPtr(params->pDescriptorUpdateTemplate)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateDescriptorUpdateTemplateKHR(void *args) { struct vkCreateDescriptorUpdateTemplateKHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pDescriptorUpdateTemplate); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateDescriptorUpdateTemplateKHR(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pDescriptorUpdateTemplate); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateDescriptorUpdateTemplateKHR(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pDescriptorUpdateTemplate; VkResult result; } *params = args; VkDescriptorUpdateTemplateCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pDescriptorUpdateTemplate); init_conversion_context(&ctx); convert_VkDescriptorUpdateTemplateCreateInfo_win32_to_host(&ctx, (const VkDescriptorUpdateTemplateCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateDescriptorUpdateTemplateKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkDescriptorUpdateTemplate *)UlongToPtr(params->pDescriptorUpdateTemplate)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateDevice(void *args) { struct vkCreateDevice_params *params = args; VkDeviceCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%p, %p, %p, %p\n", params->physicalDevice, params->pCreateInfo, params->pAllocator, params->pDevice); init_conversion_context(&ctx); convert_VkDeviceCreateInfo_win64_to_host(&ctx, params->pCreateInfo, &pCreateInfo_host); params->result = wine_vkCreateDevice(params->physicalDevice, &pCreateInfo_host, params->pAllocator, params->pDevice, params->client_ptr); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateDevice(void *args) { struct { PTR32 physicalDevice; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pDevice; PTR32 client_ptr; VkResult result; } *params = args; VkDeviceCreateInfo pCreateInfo_host; VkDevice pDevice_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->physicalDevice, params->pCreateInfo, params->pAllocator, params->pDevice); init_conversion_context(&ctx); convert_VkDeviceCreateInfo_win32_to_host(&ctx, (const VkDeviceCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); pDevice_host = UlongToPtr(*(PTR32 *)UlongToPtr(params->pDevice)); params->result = wine_vkCreateDevice((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pCreateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), &pDevice_host, UlongToPtr(params->client_ptr)); *(PTR32 *)UlongToPtr(params->pDevice) = PtrToUlong(pDevice_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateEvent(void *args) { struct vkCreateEvent_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pEvent); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateEvent(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pEvent); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateEvent(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pEvent; VkResult result; } *params = args; VkEventCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pEvent); convert_VkEventCreateInfo_win32_to_host((const VkEventCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateEvent(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkEvent *)UlongToPtr(params->pEvent)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateFence(void *args) { struct vkCreateFence_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pFence); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateFence(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pFence); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateFence(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pFence; VkResult result; } *params = args; VkFenceCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pFence); init_conversion_context(&ctx); convert_VkFenceCreateInfo_win32_to_host(&ctx, (const VkFenceCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateFence(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkFence *)UlongToPtr(params->pFence)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateFramebuffer(void *args) { struct vkCreateFramebuffer_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pFramebuffer); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateFramebuffer(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pFramebuffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateFramebuffer(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pFramebuffer; VkResult result; } *params = args; VkFramebufferCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pFramebuffer); init_conversion_context(&ctx); convert_VkFramebufferCreateInfo_win32_to_host(&ctx, (const VkFramebufferCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateFramebuffer(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkFramebuffer *)UlongToPtr(params->pFramebuffer)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateGraphicsPipelines(void *args) { struct vkCreateGraphicsPipelines_params *params = args; const VkGraphicsPipelineCreateInfo *pCreateInfos_host; struct conversion_context ctx; TRACE("%p, 0x%s, %u, %p, %p, %p\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pPipelines); init_conversion_context(&ctx); pCreateInfos_host = convert_VkGraphicsPipelineCreateInfo_array_win64_to_host(&ctx, params->pCreateInfos, params->createInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateGraphicsPipelines(wine_device_from_handle(params->device)->device, params->pipelineCache, params->createInfoCount, pCreateInfos_host, NULL, params->pPipelines); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateGraphicsPipelines(void *args) { struct { PTR32 device; VkPipelineCache DECLSPEC_ALIGN(8) pipelineCache; uint32_t createInfoCount; PTR32 pCreateInfos; PTR32 pAllocator; PTR32 pPipelines; VkResult result; } *params = args; const VkGraphicsPipelineCreateInfo *pCreateInfos_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %u, %#x, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pPipelines); init_conversion_context(&ctx); pCreateInfos_host = convert_VkGraphicsPipelineCreateInfo_array_win32_to_host(&ctx, (const VkGraphicsPipelineCreateInfo32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateGraphicsPipelines(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipelineCache, params->createInfoCount, pCreateInfos_host, NULL, (VkPipeline *)UlongToPtr(params->pPipelines)); convert_VkGraphicsPipelineCreateInfo_array_host_to_win32(pCreateInfos_host, (const VkGraphicsPipelineCreateInfo32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateImage(void *args) { struct vkCreateImage_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pImage); params->result = wine_vkCreateImage(params->device, params->pCreateInfo, params->pAllocator, params->pImage); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateImage(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pImage; VkResult result; } *params = args; VkImageCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pImage); init_conversion_context(&ctx); convert_VkImageCreateInfo_win32_to_host(&ctx, (const VkImageCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_vkCreateImage((VkDevice)UlongToPtr(params->device), &pCreateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), (VkImage *)UlongToPtr(params->pImage)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateImageView(void *args) { struct vkCreateImageView_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pView); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateImageView(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pView); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateImageView(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pView; VkResult result; } *params = args; VkImageViewCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pView); init_conversion_context(&ctx); convert_VkImageViewCreateInfo_win32_to_host(&ctx, (const VkImageViewCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateImageView(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkImageView *)UlongToPtr(params->pView)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateIndirectCommandsLayoutNV(void *args) { struct vkCreateIndirectCommandsLayoutNV_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pIndirectCommandsLayout); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateIndirectCommandsLayoutNV(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pIndirectCommandsLayout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateIndirectCommandsLayoutNV(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pIndirectCommandsLayout; VkResult result; } *params = args; VkIndirectCommandsLayoutCreateInfoNV pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pIndirectCommandsLayout); init_conversion_context(&ctx); convert_VkIndirectCommandsLayoutCreateInfoNV_win32_to_host(&ctx, (const VkIndirectCommandsLayoutCreateInfoNV32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateIndirectCommandsLayoutNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkIndirectCommandsLayoutNV *)UlongToPtr(params->pIndirectCommandsLayout)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateInstance(void *args) { struct vkCreateInstance_params *params = args; VkInstanceCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%p, %p, %p\n", params->pCreateInfo, params->pAllocator, params->pInstance); init_conversion_context(&ctx); convert_VkInstanceCreateInfo_win64_to_host(&ctx, params->pCreateInfo, &pCreateInfo_host); params->result = wine_vkCreateInstance(&pCreateInfo_host, params->pAllocator, params->pInstance, params->client_ptr); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateInstance(void *args) { struct { PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pInstance; PTR32 client_ptr; VkResult result; } *params = args; VkInstanceCreateInfo pCreateInfo_host; VkInstance pInstance_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->pCreateInfo, params->pAllocator, params->pInstance); init_conversion_context(&ctx); convert_VkInstanceCreateInfo_win32_to_host(&ctx, (const VkInstanceCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); pInstance_host = UlongToPtr(*(PTR32 *)UlongToPtr(params->pInstance)); params->result = wine_vkCreateInstance(&pCreateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), &pInstance_host, UlongToPtr(params->client_ptr)); *(PTR32 *)UlongToPtr(params->pInstance) = PtrToUlong(pInstance_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateMicromapEXT(void *args) { struct vkCreateMicromapEXT_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pMicromap); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateMicromapEXT(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pMicromap); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateMicromapEXT(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pMicromap; VkResult result; } *params = args; VkMicromapCreateInfoEXT pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pMicromap); convert_VkMicromapCreateInfoEXT_win32_to_host((const VkMicromapCreateInfoEXT32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateMicromapEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkMicromapEXT *)UlongToPtr(params->pMicromap)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateOpticalFlowSessionNV(void *args) { struct vkCreateOpticalFlowSessionNV_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pSession); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateOpticalFlowSessionNV(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pSession); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateOpticalFlowSessionNV(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pSession; VkResult result; } *params = args; VkOpticalFlowSessionCreateInfoNV pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pSession); init_conversion_context(&ctx); convert_VkOpticalFlowSessionCreateInfoNV_win32_to_host(&ctx, (const VkOpticalFlowSessionCreateInfoNV32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateOpticalFlowSessionNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkOpticalFlowSessionNV *)UlongToPtr(params->pSession)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreatePipelineCache(void *args) { struct vkCreatePipelineCache_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pPipelineCache); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreatePipelineCache(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pPipelineCache); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreatePipelineCache(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pPipelineCache; VkResult result; } *params = args; VkPipelineCacheCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pPipelineCache); convert_VkPipelineCacheCreateInfo_win32_to_host((const VkPipelineCacheCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreatePipelineCache(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkPipelineCache *)UlongToPtr(params->pPipelineCache)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreatePipelineLayout(void *args) { struct vkCreatePipelineLayout_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pPipelineLayout); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreatePipelineLayout(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pPipelineLayout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreatePipelineLayout(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pPipelineLayout; VkResult result; } *params = args; VkPipelineLayoutCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pPipelineLayout); convert_VkPipelineLayoutCreateInfo_win32_to_host((const VkPipelineLayoutCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreatePipelineLayout(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkPipelineLayout *)UlongToPtr(params->pPipelineLayout)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreatePrivateDataSlot(void *args) { struct vkCreatePrivateDataSlot_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pPrivateDataSlot); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreatePrivateDataSlot(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pPrivateDataSlot); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreatePrivateDataSlot(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pPrivateDataSlot; VkResult result; } *params = args; VkPrivateDataSlotCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pPrivateDataSlot); convert_VkPrivateDataSlotCreateInfo_win32_to_host((const VkPrivateDataSlotCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreatePrivateDataSlot(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkPrivateDataSlot *)UlongToPtr(params->pPrivateDataSlot)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreatePrivateDataSlotEXT(void *args) { struct vkCreatePrivateDataSlotEXT_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pPrivateDataSlot); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreatePrivateDataSlotEXT(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pPrivateDataSlot); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreatePrivateDataSlotEXT(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pPrivateDataSlot; VkResult result; } *params = args; VkPrivateDataSlotCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pPrivateDataSlot); convert_VkPrivateDataSlotCreateInfo_win32_to_host((const VkPrivateDataSlotCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreatePrivateDataSlotEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkPrivateDataSlot *)UlongToPtr(params->pPrivateDataSlot)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateQueryPool(void *args) { struct vkCreateQueryPool_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pQueryPool); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateQueryPool(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pQueryPool); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateQueryPool(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pQueryPool; VkResult result; } *params = args; VkQueryPoolCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pQueryPool); init_conversion_context(&ctx); convert_VkQueryPoolCreateInfo_win32_to_host(&ctx, (const VkQueryPoolCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateQueryPool(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkQueryPool *)UlongToPtr(params->pQueryPool)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateRayTracingPipelinesKHR(void *args) { struct vkCreateRayTracingPipelinesKHR_params *params = args; const VkRayTracingPipelineCreateInfoKHR *pCreateInfos_host; struct conversion_context ctx; TRACE("%p, 0x%s, 0x%s, %u, %p, %p, %p\n", params->device, wine_dbgstr_longlong(params->deferredOperation), wine_dbgstr_longlong(params->pipelineCache), params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pPipelines); init_conversion_context(&ctx); pCreateInfos_host = convert_VkRayTracingPipelineCreateInfoKHR_array_win64_to_host(&ctx, params->pCreateInfos, params->createInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateRayTracingPipelinesKHR(wine_device_from_handle(params->device)->device, params->deferredOperation, params->pipelineCache, params->createInfoCount, pCreateInfos_host, NULL, params->pPipelines); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateRayTracingPipelinesKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) deferredOperation; VkPipelineCache DECLSPEC_ALIGN(8) pipelineCache; uint32_t createInfoCount; PTR32 pCreateInfos; PTR32 pAllocator; PTR32 pPipelines; VkResult result; } *params = args; const VkRayTracingPipelineCreateInfoKHR *pCreateInfos_host; struct conversion_context ctx; TRACE("%#x, 0x%s, 0x%s, %u, %#x, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->deferredOperation), wine_dbgstr_longlong(params->pipelineCache), params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pPipelines); init_conversion_context(&ctx); pCreateInfos_host = convert_VkRayTracingPipelineCreateInfoKHR_array_win32_to_host(&ctx, (const VkRayTracingPipelineCreateInfoKHR32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateRayTracingPipelinesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->deferredOperation, params->pipelineCache, params->createInfoCount, pCreateInfos_host, NULL, (VkPipeline *)UlongToPtr(params->pPipelines)); convert_VkRayTracingPipelineCreateInfoKHR_array_host_to_win32(pCreateInfos_host, (const VkRayTracingPipelineCreateInfoKHR32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateRayTracingPipelinesNV(void *args) { struct vkCreateRayTracingPipelinesNV_params *params = args; const VkRayTracingPipelineCreateInfoNV *pCreateInfos_host; struct conversion_context ctx; TRACE("%p, 0x%s, %u, %p, %p, %p\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pPipelines); init_conversion_context(&ctx); pCreateInfos_host = convert_VkRayTracingPipelineCreateInfoNV_array_win64_to_host(&ctx, params->pCreateInfos, params->createInfoCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateRayTracingPipelinesNV(wine_device_from_handle(params->device)->device, params->pipelineCache, params->createInfoCount, pCreateInfos_host, NULL, params->pPipelines); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateRayTracingPipelinesNV(void *args) { struct { PTR32 device; VkPipelineCache DECLSPEC_ALIGN(8) pipelineCache; uint32_t createInfoCount; PTR32 pCreateInfos; PTR32 pAllocator; PTR32 pPipelines; VkResult result; } *params = args; const VkRayTracingPipelineCreateInfoNV *pCreateInfos_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %u, %#x, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pPipelines); init_conversion_context(&ctx); pCreateInfos_host = convert_VkRayTracingPipelineCreateInfoNV_array_win32_to_host(&ctx, (const VkRayTracingPipelineCreateInfoNV32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateRayTracingPipelinesNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipelineCache, params->createInfoCount, pCreateInfos_host, NULL, (VkPipeline *)UlongToPtr(params->pPipelines)); convert_VkRayTracingPipelineCreateInfoNV_array_host_to_win32(pCreateInfos_host, (const VkRayTracingPipelineCreateInfoNV32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateRenderPass(void *args) { struct vkCreateRenderPass_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pRenderPass); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateRenderPass(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pRenderPass); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateRenderPass(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pRenderPass; VkResult result; } *params = args; VkRenderPassCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pRenderPass); init_conversion_context(&ctx); convert_VkRenderPassCreateInfo_win32_to_host(&ctx, (const VkRenderPassCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateRenderPass(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkRenderPass *)UlongToPtr(params->pRenderPass)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateRenderPass2(void *args) { struct vkCreateRenderPass2_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pRenderPass); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateRenderPass2(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pRenderPass); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateRenderPass2(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pRenderPass; VkResult result; } *params = args; VkRenderPassCreateInfo2 pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pRenderPass); init_conversion_context(&ctx); convert_VkRenderPassCreateInfo2_win32_to_host(&ctx, (const VkRenderPassCreateInfo232 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateRenderPass2(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkRenderPass *)UlongToPtr(params->pRenderPass)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateRenderPass2KHR(void *args) { struct vkCreateRenderPass2KHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pRenderPass); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateRenderPass2KHR(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pRenderPass); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateRenderPass2KHR(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pRenderPass; VkResult result; } *params = args; VkRenderPassCreateInfo2 pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pRenderPass); init_conversion_context(&ctx); convert_VkRenderPassCreateInfo2_win32_to_host(&ctx, (const VkRenderPassCreateInfo232 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateRenderPass2KHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkRenderPass *)UlongToPtr(params->pRenderPass)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateSampler(void *args) { struct vkCreateSampler_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pSampler); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateSampler(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pSampler); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateSampler(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pSampler; VkResult result; } *params = args; VkSamplerCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pSampler); init_conversion_context(&ctx); convert_VkSamplerCreateInfo_win32_to_host(&ctx, (const VkSamplerCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateSampler(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkSampler *)UlongToPtr(params->pSampler)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateSamplerYcbcrConversion(void *args) { struct vkCreateSamplerYcbcrConversion_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pYcbcrConversion); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateSamplerYcbcrConversion(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pYcbcrConversion); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateSamplerYcbcrConversion(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pYcbcrConversion; VkResult result; } *params = args; VkSamplerYcbcrConversionCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pYcbcrConversion); convert_VkSamplerYcbcrConversionCreateInfo_win32_to_host((const VkSamplerYcbcrConversionCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateSamplerYcbcrConversion(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkSamplerYcbcrConversion *)UlongToPtr(params->pYcbcrConversion)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateSamplerYcbcrConversionKHR(void *args) { struct vkCreateSamplerYcbcrConversionKHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pYcbcrConversion); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateSamplerYcbcrConversionKHR(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pYcbcrConversion); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateSamplerYcbcrConversionKHR(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pYcbcrConversion; VkResult result; } *params = args; VkSamplerYcbcrConversionCreateInfo pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pYcbcrConversion); convert_VkSamplerYcbcrConversionCreateInfo_win32_to_host((const VkSamplerYcbcrConversionCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateSamplerYcbcrConversionKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkSamplerYcbcrConversion *)UlongToPtr(params->pYcbcrConversion)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateSemaphore(void *args) { struct vkCreateSemaphore_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pSemaphore); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateSemaphore(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pSemaphore); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateSemaphore(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pSemaphore; VkResult result; } *params = args; VkSemaphoreCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pSemaphore); init_conversion_context(&ctx); convert_VkSemaphoreCreateInfo_win32_to_host(&ctx, (const VkSemaphoreCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateSemaphore(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkSemaphore *)UlongToPtr(params->pSemaphore)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateShaderModule(void *args) { struct vkCreateShaderModule_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pShaderModule); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateShaderModule(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pShaderModule); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateShaderModule(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pShaderModule; VkResult result; } *params = args; VkShaderModuleCreateInfo pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pShaderModule); init_conversion_context(&ctx); convert_VkShaderModuleCreateInfo_win32_to_host(&ctx, (const VkShaderModuleCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateShaderModule(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkShaderModule *)UlongToPtr(params->pShaderModule)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateSwapchainKHR(void *args) { struct vkCreateSwapchainKHR_params *params = args; VkSwapchainCreateInfoKHR pCreateInfo_host; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pSwapchain); convert_VkSwapchainCreateInfoKHR_win64_to_host(params->pCreateInfo, &pCreateInfo_host); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateSwapchainKHR(wine_device_from_handle(params->device)->device, &pCreateInfo_host, NULL, params->pSwapchain); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateSwapchainKHR(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pSwapchain; VkResult result; } *params = args; VkSwapchainCreateInfoKHR pCreateInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pSwapchain); init_conversion_context(&ctx); convert_VkSwapchainCreateInfoKHR_win32_to_host(&ctx, (const VkSwapchainCreateInfoKHR32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateSwapchainKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkSwapchainKHR *)UlongToPtr(params->pSwapchain)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateValidationCacheEXT(void *args) { struct vkCreateValidationCacheEXT_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pCreateInfo, params->pAllocator, params->pValidationCache); params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateValidationCacheEXT(wine_device_from_handle(params->device)->device, params->pCreateInfo, NULL, params->pValidationCache); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateValidationCacheEXT(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pValidationCache; VkResult result; } *params = args; VkValidationCacheCreateInfoEXT pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pAllocator, params->pValidationCache); convert_VkValidationCacheCreateInfoEXT_win32_to_host((const VkValidationCacheCreateInfoEXT32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateValidationCacheEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, NULL, (VkValidationCacheEXT *)UlongToPtr(params->pValidationCache)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkCreateWin32SurfaceKHR(void *args) { struct vkCreateWin32SurfaceKHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->instance, params->pCreateInfo, params->pAllocator, params->pSurface); params->result = wine_vkCreateWin32SurfaceKHR(params->instance, params->pCreateInfo, params->pAllocator, params->pSurface); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkCreateWin32SurfaceKHR(void *args) { struct { PTR32 instance; PTR32 pCreateInfo; PTR32 pAllocator; PTR32 pSurface; VkResult result; } *params = args; VkWin32SurfaceCreateInfoKHR pCreateInfo_host; TRACE("%#x, %#x, %#x, %#x\n", params->instance, params->pCreateInfo, params->pAllocator, params->pSurface); convert_VkWin32SurfaceCreateInfoKHR_win32_to_host((const VkWin32SurfaceCreateInfoKHR32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); params->result = wine_vkCreateWin32SurfaceKHR((VkInstance)UlongToPtr(params->instance), &pCreateInfo_host, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator), (VkSurfaceKHR *)UlongToPtr(params->pSurface)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDebugMarkerSetObjectNameEXT(void *args) { struct vkDebugMarkerSetObjectNameEXT_params *params = args; VkDebugMarkerObjectNameInfoEXT pNameInfo_host; TRACE("%p, %p\n", params->device, params->pNameInfo); convert_VkDebugMarkerObjectNameInfoEXT_win64_to_host(params->pNameInfo, &pNameInfo_host); params->result = wine_device_from_handle(params->device)->funcs.p_vkDebugMarkerSetObjectNameEXT(wine_device_from_handle(params->device)->device, &pNameInfo_host); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDebugMarkerSetObjectNameEXT(void *args) { struct { PTR32 device; PTR32 pNameInfo; VkResult result; } *params = args; VkDebugMarkerObjectNameInfoEXT pNameInfo_host; TRACE("%#x, %#x\n", params->device, params->pNameInfo); convert_VkDebugMarkerObjectNameInfoEXT_win32_to_host((const VkDebugMarkerObjectNameInfoEXT32 *)UlongToPtr(params->pNameInfo), &pNameInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDebugMarkerSetObjectNameEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pNameInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDebugMarkerSetObjectTagEXT(void *args) { struct vkDebugMarkerSetObjectTagEXT_params *params = args; VkDebugMarkerObjectTagInfoEXT pTagInfo_host; TRACE("%p, %p\n", params->device, params->pTagInfo); convert_VkDebugMarkerObjectTagInfoEXT_win64_to_host(params->pTagInfo, &pTagInfo_host); params->result = wine_device_from_handle(params->device)->funcs.p_vkDebugMarkerSetObjectTagEXT(wine_device_from_handle(params->device)->device, &pTagInfo_host); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDebugMarkerSetObjectTagEXT(void *args) { struct { PTR32 device; PTR32 pTagInfo; VkResult result; } *params = args; VkDebugMarkerObjectTagInfoEXT pTagInfo_host; TRACE("%#x, %#x\n", params->device, params->pTagInfo); convert_VkDebugMarkerObjectTagInfoEXT_win32_to_host((const VkDebugMarkerObjectTagInfoEXT32 *)UlongToPtr(params->pTagInfo), &pTagInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDebugMarkerSetObjectTagEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pTagInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDebugReportMessageEXT(void *args) { struct vkDebugReportMessageEXT_params *params = args; TRACE("%p, %#x, %#x, 0x%s, 0x%s, %d, %p, %p\n", params->instance, params->flags, params->objectType, wine_dbgstr_longlong(params->object), wine_dbgstr_longlong(params->location), params->messageCode, params->pLayerPrefix, params->pMessage); wine_instance_from_handle(params->instance)->funcs.p_vkDebugReportMessageEXT(wine_instance_from_handle(params->instance)->instance, params->flags, params->objectType, wine_vk_unwrap_handle(params->objectType, params->object), params->location, params->messageCode, params->pLayerPrefix, params->pMessage); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDebugReportMessageEXT(void *args) { struct { PTR32 instance; VkDebugReportFlagsEXT flags; VkDebugReportObjectTypeEXT objectType; uint64_t DECLSPEC_ALIGN(8) object; PTR32 location; int32_t messageCode; PTR32 pLayerPrefix; PTR32 pMessage; } *params = args; TRACE("%#x, %#x, %#x, 0x%s, 0x%s, %d, %#x, %#x\n", params->instance, params->flags, params->objectType, wine_dbgstr_longlong(params->object), wine_dbgstr_longlong(params->location), params->messageCode, params->pLayerPrefix, params->pMessage); wine_instance_from_handle((VkInstance)UlongToPtr(params->instance))->funcs.p_vkDebugReportMessageEXT(wine_instance_from_handle((VkInstance)UlongToPtr(params->instance))->instance, params->flags, params->objectType, wine_vk_unwrap_handle(params->objectType, params->object), params->location, params->messageCode, (const char *)UlongToPtr(params->pLayerPrefix), (const char *)UlongToPtr(params->pMessage)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDeferredOperationJoinKHR(void *args) { struct vkDeferredOperationJoinKHR_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->operation)); params->result = wine_device_from_handle(params->device)->funcs.p_vkDeferredOperationJoinKHR(wine_device_from_handle(params->device)->device, params->operation); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDeferredOperationJoinKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) operation; VkResult result; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->operation)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDeferredOperationJoinKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->operation); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyAccelerationStructureKHR(void *args) { struct vkDestroyAccelerationStructureKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->accelerationStructure), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyAccelerationStructureKHR(wine_device_from_handle(params->device)->device, params->accelerationStructure, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyAccelerationStructureKHR(void *args) { struct { PTR32 device; VkAccelerationStructureKHR DECLSPEC_ALIGN(8) accelerationStructure; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->accelerationStructure), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyAccelerationStructureKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->accelerationStructure, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyAccelerationStructureNV(void *args) { struct vkDestroyAccelerationStructureNV_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->accelerationStructure), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyAccelerationStructureNV(wine_device_from_handle(params->device)->device, params->accelerationStructure, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyAccelerationStructureNV(void *args) { struct { PTR32 device; VkAccelerationStructureNV DECLSPEC_ALIGN(8) accelerationStructure; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->accelerationStructure), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyAccelerationStructureNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->accelerationStructure, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyBuffer(void *args) { struct vkDestroyBuffer_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->buffer), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyBuffer(wine_device_from_handle(params->device)->device, params->buffer, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyBuffer(void *args) { struct { PTR32 device; VkBuffer DECLSPEC_ALIGN(8) buffer; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->buffer), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyBuffer(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->buffer, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyBufferView(void *args) { struct vkDestroyBufferView_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->bufferView), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyBufferView(wine_device_from_handle(params->device)->device, params->bufferView, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyBufferView(void *args) { struct { PTR32 device; VkBufferView DECLSPEC_ALIGN(8) bufferView; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->bufferView), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyBufferView(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->bufferView, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyCommandPool(void *args) { struct vkDestroyCommandPool_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->commandPool), params->pAllocator); wine_vkDestroyCommandPool(params->device, params->commandPool, params->pAllocator); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyCommandPool(void *args) { struct { PTR32 device; VkCommandPool DECLSPEC_ALIGN(8) commandPool; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->commandPool), params->pAllocator); wine_vkDestroyCommandPool((VkDevice)UlongToPtr(params->device), params->commandPool, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyCuFunctionNVX(void *args) { struct vkDestroyCuFunctionNVX_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->function), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyCuFunctionNVX(wine_device_from_handle(params->device)->device, params->function, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyCuFunctionNVX(void *args) { struct { PTR32 device; VkCuFunctionNVX DECLSPEC_ALIGN(8) function; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->function), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyCuFunctionNVX(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->function, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyCuModuleNVX(void *args) { struct vkDestroyCuModuleNVX_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->module), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyCuModuleNVX(wine_device_from_handle(params->device)->device, params->module, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyCuModuleNVX(void *args) { struct { PTR32 device; VkCuModuleNVX DECLSPEC_ALIGN(8) module; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->module), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyCuModuleNVX(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->module, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyDebugReportCallbackEXT(void *args) { struct vkDestroyDebugReportCallbackEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->instance, wine_dbgstr_longlong(params->callback), params->pAllocator); wine_vkDestroyDebugReportCallbackEXT(params->instance, params->callback, params->pAllocator); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyDebugReportCallbackEXT(void *args) { struct { PTR32 instance; VkDebugReportCallbackEXT DECLSPEC_ALIGN(8) callback; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->instance, wine_dbgstr_longlong(params->callback), params->pAllocator); wine_vkDestroyDebugReportCallbackEXT((VkInstance)UlongToPtr(params->instance), params->callback, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyDebugUtilsMessengerEXT(void *args) { struct vkDestroyDebugUtilsMessengerEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->instance, wine_dbgstr_longlong(params->messenger), params->pAllocator); wine_vkDestroyDebugUtilsMessengerEXT(params->instance, params->messenger, params->pAllocator); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyDebugUtilsMessengerEXT(void *args) { struct { PTR32 instance; VkDebugUtilsMessengerEXT DECLSPEC_ALIGN(8) messenger; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->instance, wine_dbgstr_longlong(params->messenger), params->pAllocator); wine_vkDestroyDebugUtilsMessengerEXT((VkInstance)UlongToPtr(params->instance), params->messenger, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyDeferredOperationKHR(void *args) { struct vkDestroyDeferredOperationKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->operation), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyDeferredOperationKHR(wine_device_from_handle(params->device)->device, params->operation, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyDeferredOperationKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) operation; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->operation), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyDeferredOperationKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->operation, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyDescriptorPool(void *args) { struct vkDestroyDescriptorPool_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->descriptorPool), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyDescriptorPool(wine_device_from_handle(params->device)->device, params->descriptorPool, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyDescriptorPool(void *args) { struct { PTR32 device; VkDescriptorPool DECLSPEC_ALIGN(8) descriptorPool; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorPool), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyDescriptorPool(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorPool, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyDescriptorSetLayout(void *args) { struct vkDestroyDescriptorSetLayout_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->descriptorSetLayout), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyDescriptorSetLayout(wine_device_from_handle(params->device)->device, params->descriptorSetLayout, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyDescriptorSetLayout(void *args) { struct { PTR32 device; VkDescriptorSetLayout DECLSPEC_ALIGN(8) descriptorSetLayout; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorSetLayout), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyDescriptorSetLayout(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorSetLayout, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyDescriptorUpdateTemplate(void *args) { struct vkDestroyDescriptorUpdateTemplate_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->descriptorUpdateTemplate), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyDescriptorUpdateTemplate(wine_device_from_handle(params->device)->device, params->descriptorUpdateTemplate, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyDescriptorUpdateTemplate(void *args) { struct { PTR32 device; VkDescriptorUpdateTemplate DECLSPEC_ALIGN(8) descriptorUpdateTemplate; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorUpdateTemplate), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyDescriptorUpdateTemplate(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorUpdateTemplate, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyDescriptorUpdateTemplateKHR(void *args) { struct vkDestroyDescriptorUpdateTemplateKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->descriptorUpdateTemplate), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyDescriptorUpdateTemplateKHR(wine_device_from_handle(params->device)->device, params->descriptorUpdateTemplate, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyDescriptorUpdateTemplateKHR(void *args) { struct { PTR32 device; VkDescriptorUpdateTemplate DECLSPEC_ALIGN(8) descriptorUpdateTemplate; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorUpdateTemplate), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyDescriptorUpdateTemplateKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorUpdateTemplate, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyDevice(void *args) { struct vkDestroyDevice_params *params = args; TRACE("%p, %p\n", params->device, params->pAllocator); if (!params->device) return STATUS_SUCCESS; wine_vkDestroyDevice(params->device, params->pAllocator); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyDevice(void *args) { struct { PTR32 device; PTR32 pAllocator; } *params = args; TRACE("%#x, %#x\n", params->device, params->pAllocator); if (!params->device) return STATUS_SUCCESS; wine_vkDestroyDevice((VkDevice)UlongToPtr(params->device), (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyEvent(void *args) { struct vkDestroyEvent_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->event), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyEvent(wine_device_from_handle(params->device)->device, params->event, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyEvent(void *args) { struct { PTR32 device; VkEvent DECLSPEC_ALIGN(8) event; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->event), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyEvent(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->event, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyFence(void *args) { struct vkDestroyFence_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->fence), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyFence(wine_device_from_handle(params->device)->device, params->fence, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyFence(void *args) { struct { PTR32 device; VkFence DECLSPEC_ALIGN(8) fence; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->fence), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyFence(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->fence, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyFramebuffer(void *args) { struct vkDestroyFramebuffer_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->framebuffer), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyFramebuffer(wine_device_from_handle(params->device)->device, params->framebuffer, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyFramebuffer(void *args) { struct { PTR32 device; VkFramebuffer DECLSPEC_ALIGN(8) framebuffer; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->framebuffer), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyFramebuffer(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->framebuffer, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyImage(void *args) { struct vkDestroyImage_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->image), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyImage(wine_device_from_handle(params->device)->device, params->image, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyImage(void *args) { struct { PTR32 device; VkImage DECLSPEC_ALIGN(8) image; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->image), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyImage(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->image, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyImageView(void *args) { struct vkDestroyImageView_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->imageView), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyImageView(wine_device_from_handle(params->device)->device, params->imageView, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyImageView(void *args) { struct { PTR32 device; VkImageView DECLSPEC_ALIGN(8) imageView; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->imageView), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyImageView(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->imageView, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyIndirectCommandsLayoutNV(void *args) { struct vkDestroyIndirectCommandsLayoutNV_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->indirectCommandsLayout), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyIndirectCommandsLayoutNV(wine_device_from_handle(params->device)->device, params->indirectCommandsLayout, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyIndirectCommandsLayoutNV(void *args) { struct { PTR32 device; VkIndirectCommandsLayoutNV DECLSPEC_ALIGN(8) indirectCommandsLayout; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->indirectCommandsLayout), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyIndirectCommandsLayoutNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->indirectCommandsLayout, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyInstance(void *args) { struct vkDestroyInstance_params *params = args; TRACE("%p, %p\n", params->instance, params->pAllocator); if (!params->instance) return STATUS_SUCCESS; wine_vkDestroyInstance(params->instance, params->pAllocator); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyInstance(void *args) { struct { PTR32 instance; PTR32 pAllocator; } *params = args; TRACE("%#x, %#x\n", params->instance, params->pAllocator); if (!params->instance) return STATUS_SUCCESS; wine_vkDestroyInstance((VkInstance)UlongToPtr(params->instance), (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyMicromapEXT(void *args) { struct vkDestroyMicromapEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->micromap), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyMicromapEXT(wine_device_from_handle(params->device)->device, params->micromap, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyMicromapEXT(void *args) { struct { PTR32 device; VkMicromapEXT DECLSPEC_ALIGN(8) micromap; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->micromap), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyMicromapEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->micromap, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyOpticalFlowSessionNV(void *args) { struct vkDestroyOpticalFlowSessionNV_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->session), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyOpticalFlowSessionNV(wine_device_from_handle(params->device)->device, params->session, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyOpticalFlowSessionNV(void *args) { struct { PTR32 device; VkOpticalFlowSessionNV DECLSPEC_ALIGN(8) session; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->session), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyOpticalFlowSessionNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->session, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyPipeline(void *args) { struct vkDestroyPipeline_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->pipeline), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyPipeline(wine_device_from_handle(params->device)->device, params->pipeline, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyPipeline(void *args) { struct { PTR32 device; VkPipeline DECLSPEC_ALIGN(8) pipeline; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->pipeline), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyPipeline(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipeline, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyPipelineCache(void *args) { struct vkDestroyPipelineCache_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyPipelineCache(wine_device_from_handle(params->device)->device, params->pipelineCache, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyPipelineCache(void *args) { struct { PTR32 device; VkPipelineCache DECLSPEC_ALIGN(8) pipelineCache; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyPipelineCache(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipelineCache, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyPipelineLayout(void *args) { struct vkDestroyPipelineLayout_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->pipelineLayout), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyPipelineLayout(wine_device_from_handle(params->device)->device, params->pipelineLayout, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyPipelineLayout(void *args) { struct { PTR32 device; VkPipelineLayout DECLSPEC_ALIGN(8) pipelineLayout; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->pipelineLayout), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyPipelineLayout(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipelineLayout, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyPrivateDataSlot(void *args) { struct vkDestroyPrivateDataSlot_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->privateDataSlot), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyPrivateDataSlot(wine_device_from_handle(params->device)->device, params->privateDataSlot, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyPrivateDataSlot(void *args) { struct { PTR32 device; VkPrivateDataSlot DECLSPEC_ALIGN(8) privateDataSlot; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->privateDataSlot), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyPrivateDataSlot(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->privateDataSlot, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyPrivateDataSlotEXT(void *args) { struct vkDestroyPrivateDataSlotEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->privateDataSlot), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyPrivateDataSlotEXT(wine_device_from_handle(params->device)->device, params->privateDataSlot, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyPrivateDataSlotEXT(void *args) { struct { PTR32 device; VkPrivateDataSlot DECLSPEC_ALIGN(8) privateDataSlot; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->privateDataSlot), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyPrivateDataSlotEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->privateDataSlot, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyQueryPool(void *args) { struct vkDestroyQueryPool_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->queryPool), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyQueryPool(wine_device_from_handle(params->device)->device, params->queryPool, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyQueryPool(void *args) { struct { PTR32 device; VkQueryPool DECLSPEC_ALIGN(8) queryPool; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->queryPool), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyQueryPool(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->queryPool, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyRenderPass(void *args) { struct vkDestroyRenderPass_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->renderPass), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyRenderPass(wine_device_from_handle(params->device)->device, params->renderPass, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyRenderPass(void *args) { struct { PTR32 device; VkRenderPass DECLSPEC_ALIGN(8) renderPass; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->renderPass), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyRenderPass(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->renderPass, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroySampler(void *args) { struct vkDestroySampler_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->sampler), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroySampler(wine_device_from_handle(params->device)->device, params->sampler, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroySampler(void *args) { struct { PTR32 device; VkSampler DECLSPEC_ALIGN(8) sampler; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->sampler), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroySampler(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->sampler, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroySamplerYcbcrConversion(void *args) { struct vkDestroySamplerYcbcrConversion_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->ycbcrConversion), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroySamplerYcbcrConversion(wine_device_from_handle(params->device)->device, params->ycbcrConversion, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroySamplerYcbcrConversion(void *args) { struct { PTR32 device; VkSamplerYcbcrConversion DECLSPEC_ALIGN(8) ycbcrConversion; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->ycbcrConversion), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroySamplerYcbcrConversion(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->ycbcrConversion, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroySamplerYcbcrConversionKHR(void *args) { struct vkDestroySamplerYcbcrConversionKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->ycbcrConversion), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroySamplerYcbcrConversionKHR(wine_device_from_handle(params->device)->device, params->ycbcrConversion, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroySamplerYcbcrConversionKHR(void *args) { struct { PTR32 device; VkSamplerYcbcrConversion DECLSPEC_ALIGN(8) ycbcrConversion; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->ycbcrConversion), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroySamplerYcbcrConversionKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->ycbcrConversion, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroySemaphore(void *args) { struct vkDestroySemaphore_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->semaphore), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroySemaphore(wine_device_from_handle(params->device)->device, params->semaphore, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroySemaphore(void *args) { struct { PTR32 device; VkSemaphore DECLSPEC_ALIGN(8) semaphore; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->semaphore), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroySemaphore(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->semaphore, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyShaderModule(void *args) { struct vkDestroyShaderModule_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->shaderModule), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyShaderModule(wine_device_from_handle(params->device)->device, params->shaderModule, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyShaderModule(void *args) { struct { PTR32 device; VkShaderModule DECLSPEC_ALIGN(8) shaderModule; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->shaderModule), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyShaderModule(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->shaderModule, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroySurfaceKHR(void *args) { struct vkDestroySurfaceKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->instance, wine_dbgstr_longlong(params->surface), params->pAllocator); wine_vkDestroySurfaceKHR(params->instance, params->surface, params->pAllocator); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroySurfaceKHR(void *args) { struct { PTR32 instance; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->instance, wine_dbgstr_longlong(params->surface), params->pAllocator); wine_vkDestroySurfaceKHR((VkInstance)UlongToPtr(params->instance), params->surface, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroySwapchainKHR(void *args) { struct vkDestroySwapchainKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->swapchain), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroySwapchainKHR(wine_device_from_handle(params->device)->device, params->swapchain, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroySwapchainKHR(void *args) { struct { PTR32 device; VkSwapchainKHR DECLSPEC_ALIGN(8) swapchain; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->swapchain), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroySwapchainKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->swapchain, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyValidationCacheEXT(void *args) { struct vkDestroyValidationCacheEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->validationCache), params->pAllocator); wine_device_from_handle(params->device)->funcs.p_vkDestroyValidationCacheEXT(wine_device_from_handle(params->device)->device, params->validationCache, NULL); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDestroyValidationCacheEXT(void *args) { struct { PTR32 device; VkValidationCacheEXT DECLSPEC_ALIGN(8) validationCache; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->validationCache), params->pAllocator); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyValidationCacheEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->validationCache, NULL); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkDeviceWaitIdle(void *args) { struct vkDeviceWaitIdle_params *params = args; TRACE("%p\n", params->device); params->result = wine_device_from_handle(params->device)->funcs.p_vkDeviceWaitIdle(wine_device_from_handle(params->device)->device); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkDeviceWaitIdle(void *args) { struct { PTR32 device; VkResult result; } *params = args; TRACE("%#x\n", params->device); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDeviceWaitIdle(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEndCommandBuffer(void *args) { struct vkEndCommandBuffer_params *params = args; TRACE("%p\n", params->commandBuffer); params->result = wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkEndCommandBuffer(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEndCommandBuffer(void *args) { struct { PTR32 commandBuffer; VkResult result; } *params = args; TRACE("%#x\n", params->commandBuffer); params->result = wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkEndCommandBuffer(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEnumerateDeviceExtensionProperties(void *args) { struct vkEnumerateDeviceExtensionProperties_params *params = args; TRACE("%p, %p, %p, %p\n", params->physicalDevice, params->pLayerName, params->pPropertyCount, params->pProperties); params->result = wine_vkEnumerateDeviceExtensionProperties(params->physicalDevice, params->pLayerName, params->pPropertyCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEnumerateDeviceExtensionProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pLayerName; PTR32 pPropertyCount; PTR32 pProperties; VkResult result; } *params = args; TRACE("%#x, %#x, %#x, %#x\n", params->physicalDevice, params->pLayerName, params->pPropertyCount, params->pProperties); params->result = wine_vkEnumerateDeviceExtensionProperties((VkPhysicalDevice)UlongToPtr(params->physicalDevice), (const char *)UlongToPtr(params->pLayerName), (uint32_t *)UlongToPtr(params->pPropertyCount), (VkExtensionProperties *)UlongToPtr(params->pProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEnumerateDeviceLayerProperties(void *args) { struct vkEnumerateDeviceLayerProperties_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pPropertyCount, params->pProperties); params->result = wine_vkEnumerateDeviceLayerProperties(params->physicalDevice, params->pPropertyCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEnumerateDeviceLayerProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pPropertyCount; PTR32 pProperties; VkResult result; } *params = args; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pPropertyCount, params->pProperties); params->result = wine_vkEnumerateDeviceLayerProperties((VkPhysicalDevice)UlongToPtr(params->physicalDevice), (uint32_t *)UlongToPtr(params->pPropertyCount), (VkLayerProperties *)UlongToPtr(params->pProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEnumerateInstanceExtensionProperties(void *args) { struct vkEnumerateInstanceExtensionProperties_params *params = args; TRACE("%p, %p, %p\n", params->pLayerName, params->pPropertyCount, params->pProperties); params->result = wine_vkEnumerateInstanceExtensionProperties(params->pLayerName, params->pPropertyCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEnumerateInstanceExtensionProperties(void *args) { struct { PTR32 pLayerName; PTR32 pPropertyCount; PTR32 pProperties; VkResult result; } *params = args; TRACE("%#x, %#x, %#x\n", params->pLayerName, params->pPropertyCount, params->pProperties); params->result = wine_vkEnumerateInstanceExtensionProperties((const char *)UlongToPtr(params->pLayerName), (uint32_t *)UlongToPtr(params->pPropertyCount), (VkExtensionProperties *)UlongToPtr(params->pProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEnumerateInstanceVersion(void *args) { struct vkEnumerateInstanceVersion_params *params = args; TRACE("%p\n", params->pApiVersion); params->result = wine_vkEnumerateInstanceVersion(params->pApiVersion); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEnumerateInstanceVersion(void *args) { struct { PTR32 pApiVersion; VkResult result; } *params = args; TRACE("%#x\n", params->pApiVersion); params->result = wine_vkEnumerateInstanceVersion((uint32_t *)UlongToPtr(params->pApiVersion)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEnumeratePhysicalDeviceGroups(void *args) { struct vkEnumeratePhysicalDeviceGroups_params *params = args; TRACE("%p, %p, %p\n", params->instance, params->pPhysicalDeviceGroupCount, params->pPhysicalDeviceGroupProperties); params->result = wine_vkEnumeratePhysicalDeviceGroups(params->instance, params->pPhysicalDeviceGroupCount, params->pPhysicalDeviceGroupProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEnumeratePhysicalDeviceGroups(void *args) { struct { PTR32 instance; PTR32 pPhysicalDeviceGroupCount; PTR32 pPhysicalDeviceGroupProperties; VkResult result; } *params = args; VkPhysicalDeviceGroupProperties *pPhysicalDeviceGroupProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->instance, params->pPhysicalDeviceGroupCount, params->pPhysicalDeviceGroupProperties); init_conversion_context(&ctx); pPhysicalDeviceGroupProperties_host = convert_VkPhysicalDeviceGroupProperties_array_win32_to_unwrapped_host(&ctx, (VkPhysicalDeviceGroupProperties32 *)UlongToPtr(params->pPhysicalDeviceGroupProperties), *(uint32_t *)UlongToPtr(params->pPhysicalDeviceGroupCount)); params->result = wine_vkEnumeratePhysicalDeviceGroups((VkInstance)UlongToPtr(params->instance), (uint32_t *)UlongToPtr(params->pPhysicalDeviceGroupCount), pPhysicalDeviceGroupProperties_host); convert_VkPhysicalDeviceGroupProperties_array_unwrapped_host_to_win32(pPhysicalDeviceGroupProperties_host, (VkPhysicalDeviceGroupProperties32 *)UlongToPtr(params->pPhysicalDeviceGroupProperties), *(uint32_t *)UlongToPtr(params->pPhysicalDeviceGroupCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEnumeratePhysicalDeviceGroupsKHR(void *args) { struct vkEnumeratePhysicalDeviceGroupsKHR_params *params = args; TRACE("%p, %p, %p\n", params->instance, params->pPhysicalDeviceGroupCount, params->pPhysicalDeviceGroupProperties); params->result = wine_vkEnumeratePhysicalDeviceGroupsKHR(params->instance, params->pPhysicalDeviceGroupCount, params->pPhysicalDeviceGroupProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEnumeratePhysicalDeviceGroupsKHR(void *args) { struct { PTR32 instance; PTR32 pPhysicalDeviceGroupCount; PTR32 pPhysicalDeviceGroupProperties; VkResult result; } *params = args; VkPhysicalDeviceGroupProperties *pPhysicalDeviceGroupProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->instance, params->pPhysicalDeviceGroupCount, params->pPhysicalDeviceGroupProperties); init_conversion_context(&ctx); pPhysicalDeviceGroupProperties_host = convert_VkPhysicalDeviceGroupProperties_array_win32_to_unwrapped_host(&ctx, (VkPhysicalDeviceGroupProperties32 *)UlongToPtr(params->pPhysicalDeviceGroupProperties), *(uint32_t *)UlongToPtr(params->pPhysicalDeviceGroupCount)); params->result = wine_vkEnumeratePhysicalDeviceGroupsKHR((VkInstance)UlongToPtr(params->instance), (uint32_t *)UlongToPtr(params->pPhysicalDeviceGroupCount), pPhysicalDeviceGroupProperties_host); convert_VkPhysicalDeviceGroupProperties_array_unwrapped_host_to_win32(pPhysicalDeviceGroupProperties_host, (VkPhysicalDeviceGroupProperties32 *)UlongToPtr(params->pPhysicalDeviceGroupProperties), *(uint32_t *)UlongToPtr(params->pPhysicalDeviceGroupCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(void *args) { struct vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_params *params = args; TRACE("%p, %u, %p, %p, %p\n", params->physicalDevice, params->queueFamilyIndex, params->pCounterCount, params->pCounters, params->pCounterDescriptions); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->queueFamilyIndex, params->pCounterCount, params->pCounters, params->pCounterDescriptions); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(void *args) { struct { PTR32 physicalDevice; uint32_t queueFamilyIndex; PTR32 pCounterCount; PTR32 pCounters; PTR32 pCounterDescriptions; VkResult result; } *params = args; VkPerformanceCounterKHR *pCounters_host; VkPerformanceCounterDescriptionKHR *pCounterDescriptions_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %#x, %#x\n", params->physicalDevice, params->queueFamilyIndex, params->pCounterCount, params->pCounters, params->pCounterDescriptions); init_conversion_context(&ctx); pCounters_host = convert_VkPerformanceCounterKHR_array_win32_to_host(&ctx, (VkPerformanceCounterKHR32 *)UlongToPtr(params->pCounters), *(uint32_t *)UlongToPtr(params->pCounterCount)); pCounterDescriptions_host = convert_VkPerformanceCounterDescriptionKHR_array_win32_to_host(&ctx, (VkPerformanceCounterDescriptionKHR32 *)UlongToPtr(params->pCounterDescriptions), *(uint32_t *)UlongToPtr(params->pCounterCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->queueFamilyIndex, (uint32_t *)UlongToPtr(params->pCounterCount), pCounters_host, pCounterDescriptions_host); convert_VkPerformanceCounterKHR_array_host_to_win32(pCounters_host, (VkPerformanceCounterKHR32 *)UlongToPtr(params->pCounters), *(uint32_t *)UlongToPtr(params->pCounterCount)); convert_VkPerformanceCounterDescriptionKHR_array_host_to_win32(pCounterDescriptions_host, (VkPerformanceCounterDescriptionKHR32 *)UlongToPtr(params->pCounterDescriptions), *(uint32_t *)UlongToPtr(params->pCounterCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkEnumeratePhysicalDevices(void *args) { struct vkEnumeratePhysicalDevices_params *params = args; TRACE("%p, %p, %p\n", params->instance, params->pPhysicalDeviceCount, params->pPhysicalDevices); params->result = wine_vkEnumeratePhysicalDevices(params->instance, params->pPhysicalDeviceCount, params->pPhysicalDevices); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkEnumeratePhysicalDevices(void *args) { struct { PTR32 instance; PTR32 pPhysicalDeviceCount; PTR32 pPhysicalDevices; VkResult result; } *params = args; VkPhysicalDevice *pPhysicalDevices_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->instance, params->pPhysicalDeviceCount, params->pPhysicalDevices); init_conversion_context(&ctx); pPhysicalDevices_host = (params->pPhysicalDevices && *(uint32_t *)UlongToPtr(params->pPhysicalDeviceCount)) ? conversion_context_alloc(&ctx, sizeof(*pPhysicalDevices_host) * *(uint32_t *)UlongToPtr(params->pPhysicalDeviceCount)) : NULL; params->result = wine_vkEnumeratePhysicalDevices((VkInstance)UlongToPtr(params->instance), (uint32_t *)UlongToPtr(params->pPhysicalDeviceCount), pPhysicalDevices_host); convert_VkPhysicalDevice_array_unwrapped_host_to_win32(pPhysicalDevices_host, (PTR32 *)UlongToPtr(params->pPhysicalDevices), *(uint32_t *)UlongToPtr(params->pPhysicalDeviceCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkFlushMappedMemoryRanges(void *args) { struct vkFlushMappedMemoryRanges_params *params = args; const VkMappedMemoryRange *pMemoryRanges_host; struct conversion_context ctx; TRACE("%p, %u, %p\n", params->device, params->memoryRangeCount, params->pMemoryRanges); init_conversion_context(&ctx); pMemoryRanges_host = convert_VkMappedMemoryRange_array_win64_to_host(&ctx, params->pMemoryRanges, params->memoryRangeCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkFlushMappedMemoryRanges(wine_device_from_handle(params->device)->device, params->memoryRangeCount, pMemoryRanges_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkFlushMappedMemoryRanges(void *args) { struct { PTR32 device; uint32_t memoryRangeCount; PTR32 pMemoryRanges; VkResult result; } *params = args; const VkMappedMemoryRange *pMemoryRanges_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->device, params->memoryRangeCount, params->pMemoryRanges); init_conversion_context(&ctx); pMemoryRanges_host = convert_VkMappedMemoryRange_array_win32_to_host(&ctx, (const VkMappedMemoryRange32 *)UlongToPtr(params->pMemoryRanges), params->memoryRangeCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkFlushMappedMemoryRanges(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->memoryRangeCount, pMemoryRanges_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkFreeCommandBuffers(void *args) { struct vkFreeCommandBuffers_params *params = args; TRACE("%p, 0x%s, %u, %p\n", params->device, wine_dbgstr_longlong(params->commandPool), params->commandBufferCount, params->pCommandBuffers); wine_vkFreeCommandBuffers(params->device, params->commandPool, params->commandBufferCount, params->pCommandBuffers); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkFreeCommandBuffers(void *args) { struct { PTR32 device; VkCommandPool DECLSPEC_ALIGN(8) commandPool; uint32_t commandBufferCount; PTR32 pCommandBuffers; } *params = args; const VkCommandBuffer *pCommandBuffers_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %u, %#x\n", params->device, wine_dbgstr_longlong(params->commandPool), params->commandBufferCount, params->pCommandBuffers); init_conversion_context(&ctx); pCommandBuffers_host = convert_VkCommandBuffer_array_win32_to_unwrapped_host(&ctx, (const PTR32 *)UlongToPtr(params->pCommandBuffers), params->commandBufferCount); wine_vkFreeCommandBuffers((VkDevice)UlongToPtr(params->device), params->commandPool, params->commandBufferCount, pCommandBuffers_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkFreeDescriptorSets(void *args) { struct vkFreeDescriptorSets_params *params = args; TRACE("%p, 0x%s, %u, %p\n", params->device, wine_dbgstr_longlong(params->descriptorPool), params->descriptorSetCount, params->pDescriptorSets); params->result = wine_device_from_handle(params->device)->funcs.p_vkFreeDescriptorSets(wine_device_from_handle(params->device)->device, params->descriptorPool, params->descriptorSetCount, params->pDescriptorSets); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkFreeDescriptorSets(void *args) { struct { PTR32 device; VkDescriptorPool DECLSPEC_ALIGN(8) descriptorPool; uint32_t descriptorSetCount; PTR32 pDescriptorSets; VkResult result; } *params = args; TRACE("%#x, 0x%s, %u, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorPool), params->descriptorSetCount, params->pDescriptorSets); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkFreeDescriptorSets(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorPool, params->descriptorSetCount, (const VkDescriptorSet *)UlongToPtr(params->pDescriptorSets)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkFreeMemory(void *args) { struct vkFreeMemory_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->memory), params->pAllocator); wine_vkFreeMemory(params->device, params->memory, params->pAllocator); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkFreeMemory(void *args) { struct { PTR32 device; VkDeviceMemory DECLSPEC_ALIGN(8) memory; PTR32 pAllocator; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->memory), params->pAllocator); wine_vkFreeMemory((VkDevice)UlongToPtr(params->device), params->memory, (const VkAllocationCallbacks *)UlongToPtr(params->pAllocator)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetAccelerationStructureBuildSizesKHR(void *args) { struct vkGetAccelerationStructureBuildSizesKHR_params *params = args; TRACE("%p, %#x, %p, %p, %p\n", params->device, params->buildType, params->pBuildInfo, params->pMaxPrimitiveCounts, params->pSizeInfo); wine_device_from_handle(params->device)->funcs.p_vkGetAccelerationStructureBuildSizesKHR(wine_device_from_handle(params->device)->device, params->buildType, params->pBuildInfo, params->pMaxPrimitiveCounts, params->pSizeInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetAccelerationStructureBuildSizesKHR(void *args) { struct { PTR32 device; VkAccelerationStructureBuildTypeKHR buildType; PTR32 pBuildInfo; PTR32 pMaxPrimitiveCounts; PTR32 pSizeInfo; } *params = args; VkAccelerationStructureBuildGeometryInfoKHR pBuildInfo_host; VkAccelerationStructureBuildSizesInfoKHR pSizeInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x, %#x\n", params->device, params->buildType, params->pBuildInfo, params->pMaxPrimitiveCounts, params->pSizeInfo); init_conversion_context(&ctx); convert_VkAccelerationStructureBuildGeometryInfoKHR_win32_to_host(&ctx, (const VkAccelerationStructureBuildGeometryInfoKHR32 *)UlongToPtr(params->pBuildInfo), &pBuildInfo_host); convert_VkAccelerationStructureBuildSizesInfoKHR_win32_to_host((VkAccelerationStructureBuildSizesInfoKHR32 *)UlongToPtr(params->pSizeInfo), &pSizeInfo_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetAccelerationStructureBuildSizesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->buildType, &pBuildInfo_host, (const uint32_t *)UlongToPtr(params->pMaxPrimitiveCounts), &pSizeInfo_host); convert_VkAccelerationStructureBuildSizesInfoKHR_host_to_win32(&pSizeInfo_host, (VkAccelerationStructureBuildSizesInfoKHR32 *)UlongToPtr(params->pSizeInfo)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetAccelerationStructureDeviceAddressKHR(void *args) { struct vkGetAccelerationStructureDeviceAddressKHR_params *params = args; TRACE("%p, %p\n", params->device, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetAccelerationStructureDeviceAddressKHR(wine_device_from_handle(params->device)->device, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetAccelerationStructureDeviceAddressKHR(void *args) { struct { PTR32 device; PTR32 pInfo; VkDeviceAddress result; } *params = args; VkAccelerationStructureDeviceAddressInfoKHR pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkAccelerationStructureDeviceAddressInfoKHR_win32_to_host((const VkAccelerationStructureDeviceAddressInfoKHR32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetAccelerationStructureDeviceAddressKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetAccelerationStructureHandleNV(void *args) { struct vkGetAccelerationStructureHandleNV_params *params = args; TRACE("%p, 0x%s, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->accelerationStructure), wine_dbgstr_longlong(params->dataSize), params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetAccelerationStructureHandleNV(wine_device_from_handle(params->device)->device, params->accelerationStructure, params->dataSize, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetAccelerationStructureHandleNV(void *args) { struct { PTR32 device; VkAccelerationStructureNV DECLSPEC_ALIGN(8) accelerationStructure; PTR32 dataSize; PTR32 pData; VkResult result; } *params = args; TRACE("%#x, 0x%s, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->accelerationStructure), wine_dbgstr_longlong(params->dataSize), params->pData); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetAccelerationStructureHandleNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->accelerationStructure, params->dataSize, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetAccelerationStructureMemoryRequirementsNV(void *args) { struct vkGetAccelerationStructureMemoryRequirementsNV_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetAccelerationStructureMemoryRequirementsNV(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetAccelerationStructureMemoryRequirementsNV(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkAccelerationStructureMemoryRequirementsInfoNV pInfo_host; VkMemoryRequirements2KHR pMemoryRequirements_host; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); convert_VkAccelerationStructureMemoryRequirementsInfoNV_win32_to_host((const VkAccelerationStructureMemoryRequirementsInfoNV32 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2KHR_win32_to_host((VkMemoryRequirements2KHR32 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetAccelerationStructureMemoryRequirementsNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2KHR_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements2KHR32 *)UlongToPtr(params->pMemoryRequirements)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(void *args) { struct vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(wine_device_from_handle(params->device)->device, params->pInfo, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pData; VkResult result; } *params = args; VkAccelerationStructureCaptureDescriptorDataInfoEXT pInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pData); convert_VkAccelerationStructureCaptureDescriptorDataInfoEXT_win32_to_host((const VkAccelerationStructureCaptureDescriptorDataInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferDeviceAddress(void *args) { struct vkGetBufferDeviceAddress_params *params = args; TRACE("%p, %p\n", params->device, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetBufferDeviceAddress(wine_device_from_handle(params->device)->device, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferDeviceAddress(void *args) { struct { PTR32 device; PTR32 pInfo; VkDeviceAddress result; } *params = args; VkBufferDeviceAddressInfo pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkBufferDeviceAddressInfo_win32_to_host((const VkBufferDeviceAddressInfo32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferDeviceAddress(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferDeviceAddressEXT(void *args) { struct vkGetBufferDeviceAddressEXT_params *params = args; TRACE("%p, %p\n", params->device, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetBufferDeviceAddressEXT(wine_device_from_handle(params->device)->device, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferDeviceAddressEXT(void *args) { struct { PTR32 device; PTR32 pInfo; VkDeviceAddress result; } *params = args; VkBufferDeviceAddressInfo pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkBufferDeviceAddressInfo_win32_to_host((const VkBufferDeviceAddressInfo32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferDeviceAddressEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferDeviceAddressKHR(void *args) { struct vkGetBufferDeviceAddressKHR_params *params = args; TRACE("%p, %p\n", params->device, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetBufferDeviceAddressKHR(wine_device_from_handle(params->device)->device, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferDeviceAddressKHR(void *args) { struct { PTR32 device; PTR32 pInfo; VkDeviceAddress result; } *params = args; VkBufferDeviceAddressInfo pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkBufferDeviceAddressInfo_win32_to_host((const VkBufferDeviceAddressInfo32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferDeviceAddressKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferMemoryRequirements(void *args) { struct vkGetBufferMemoryRequirements_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->buffer), params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetBufferMemoryRequirements(wine_device_from_handle(params->device)->device, params->buffer, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferMemoryRequirements(void *args) { struct { PTR32 device; VkBuffer DECLSPEC_ALIGN(8) buffer; PTR32 pMemoryRequirements; } *params = args; VkMemoryRequirements pMemoryRequirements_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->buffer), params->pMemoryRequirements); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferMemoryRequirements(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->buffer, &pMemoryRequirements_host); convert_VkMemoryRequirements_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements32 *)UlongToPtr(params->pMemoryRequirements)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferMemoryRequirements2(void *args) { struct vkGetBufferMemoryRequirements2_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetBufferMemoryRequirements2(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferMemoryRequirements2(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkBufferMemoryRequirementsInfo2 pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkBufferMemoryRequirementsInfo2_win32_to_host((const VkBufferMemoryRequirementsInfo232 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferMemoryRequirements2(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferMemoryRequirements2KHR(void *args) { struct vkGetBufferMemoryRequirements2KHR_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetBufferMemoryRequirements2KHR(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferMemoryRequirements2KHR(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkBufferMemoryRequirementsInfo2 pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkBufferMemoryRequirementsInfo2_win32_to_host((const VkBufferMemoryRequirementsInfo232 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferMemoryRequirements2KHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferOpaqueCaptureAddress(void *args) { struct vkGetBufferOpaqueCaptureAddress_params *params = args; TRACE("%p, %p\n", params->device, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetBufferOpaqueCaptureAddress(wine_device_from_handle(params->device)->device, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferOpaqueCaptureAddress(void *args) { struct { PTR32 device; PTR32 pInfo; uint64_t result; } *params = args; VkBufferDeviceAddressInfo pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkBufferDeviceAddressInfo_win32_to_host((const VkBufferDeviceAddressInfo32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferOpaqueCaptureAddress(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferOpaqueCaptureAddressKHR(void *args) { struct vkGetBufferOpaqueCaptureAddressKHR_params *params = args; TRACE("%p, %p\n", params->device, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetBufferOpaqueCaptureAddressKHR(wine_device_from_handle(params->device)->device, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferOpaqueCaptureAddressKHR(void *args) { struct { PTR32 device; PTR32 pInfo; uint64_t result; } *params = args; VkBufferDeviceAddressInfo pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkBufferDeviceAddressInfo_win32_to_host((const VkBufferDeviceAddressInfo32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferOpaqueCaptureAddressKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetBufferOpaqueCaptureDescriptorDataEXT(void *args) { struct vkGetBufferOpaqueCaptureDescriptorDataEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetBufferOpaqueCaptureDescriptorDataEXT(wine_device_from_handle(params->device)->device, params->pInfo, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetBufferOpaqueCaptureDescriptorDataEXT(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pData; VkResult result; } *params = args; VkBufferCaptureDescriptorDataInfoEXT pInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pData); convert_VkBufferCaptureDescriptorDataInfoEXT_win32_to_host((const VkBufferCaptureDescriptorDataInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetBufferOpaqueCaptureDescriptorDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetCalibratedTimestampsEXT(void *args) { struct vkGetCalibratedTimestampsEXT_params *params = args; TRACE("%p, %u, %p, %p, %p\n", params->device, params->timestampCount, params->pTimestampInfos, params->pTimestamps, params->pMaxDeviation); params->result = wine_vkGetCalibratedTimestampsEXT(params->device, params->timestampCount, params->pTimestampInfos, params->pTimestamps, params->pMaxDeviation); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetCalibratedTimestampsEXT(void *args) { struct { PTR32 device; uint32_t timestampCount; PTR32 pTimestampInfos; PTR32 pTimestamps; PTR32 pMaxDeviation; VkResult result; } *params = args; const VkCalibratedTimestampInfoEXT *pTimestampInfos_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %#x, %#x\n", params->device, params->timestampCount, params->pTimestampInfos, params->pTimestamps, params->pMaxDeviation); init_conversion_context(&ctx); pTimestampInfos_host = convert_VkCalibratedTimestampInfoEXT_array_win32_to_host(&ctx, (const VkCalibratedTimestampInfoEXT32 *)UlongToPtr(params->pTimestampInfos), params->timestampCount); params->result = wine_vkGetCalibratedTimestampsEXT((VkDevice)UlongToPtr(params->device), params->timestampCount, pTimestampInfos_host, (uint64_t *)UlongToPtr(params->pTimestamps), (uint64_t *)UlongToPtr(params->pMaxDeviation)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeferredOperationMaxConcurrencyKHR(void *args) { struct vkGetDeferredOperationMaxConcurrencyKHR_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->operation)); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDeferredOperationMaxConcurrencyKHR(wine_device_from_handle(params->device)->device, params->operation); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeferredOperationMaxConcurrencyKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) operation; uint32_t result; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->operation)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeferredOperationMaxConcurrencyKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->operation); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeferredOperationResultKHR(void *args) { struct vkGetDeferredOperationResultKHR_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->operation)); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDeferredOperationResultKHR(wine_device_from_handle(params->device)->device, params->operation); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeferredOperationResultKHR(void *args) { struct { PTR32 device; VkDeferredOperationKHR DECLSPEC_ALIGN(8) operation; VkResult result; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->operation)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeferredOperationResultKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->operation); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDescriptorEXT(void *args) { struct vkGetDescriptorEXT_params *params = args; TRACE("%p, %p, 0x%s, %p\n", params->device, params->pDescriptorInfo, wine_dbgstr_longlong(params->dataSize), params->pDescriptor); wine_device_from_handle(params->device)->funcs.p_vkGetDescriptorEXT(wine_device_from_handle(params->device)->device, params->pDescriptorInfo, params->dataSize, params->pDescriptor); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDescriptorEXT(void *args) { struct { PTR32 device; PTR32 pDescriptorInfo; PTR32 dataSize; PTR32 pDescriptor; } *params = args; VkDescriptorGetInfoEXT pDescriptorInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, 0x%s, %#x\n", params->device, params->pDescriptorInfo, wine_dbgstr_longlong(params->dataSize), params->pDescriptor); init_conversion_context(&ctx); convert_VkDescriptorGetInfoEXT_win32_to_host(&ctx, (const VkDescriptorGetInfoEXT32 *)UlongToPtr(params->pDescriptorInfo), &pDescriptorInfo_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDescriptorEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pDescriptorInfo_host, params->dataSize, (void *)UlongToPtr(params->pDescriptor)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDescriptorSetHostMappingVALVE(void *args) { struct vkGetDescriptorSetHostMappingVALVE_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->descriptorSet), params->ppData); wine_device_from_handle(params->device)->funcs.p_vkGetDescriptorSetHostMappingVALVE(wine_device_from_handle(params->device)->device, params->descriptorSet, params->ppData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDescriptorSetHostMappingVALVE(void *args) { struct { PTR32 device; VkDescriptorSet DECLSPEC_ALIGN(8) descriptorSet; PTR32 ppData; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorSet), params->ppData); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDescriptorSetHostMappingVALVE(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorSet, (void **)UlongToPtr(params->ppData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDescriptorSetLayoutBindingOffsetEXT(void *args) { struct vkGetDescriptorSetLayoutBindingOffsetEXT_params *params = args; TRACE("%p, 0x%s, %u, %p\n", params->device, wine_dbgstr_longlong(params->layout), params->binding, params->pOffset); wine_device_from_handle(params->device)->funcs.p_vkGetDescriptorSetLayoutBindingOffsetEXT(wine_device_from_handle(params->device)->device, params->layout, params->binding, params->pOffset); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDescriptorSetLayoutBindingOffsetEXT(void *args) { struct { PTR32 device; VkDescriptorSetLayout DECLSPEC_ALIGN(8) layout; uint32_t binding; PTR32 pOffset; } *params = args; TRACE("%#x, 0x%s, %u, %#x\n", params->device, wine_dbgstr_longlong(params->layout), params->binding, params->pOffset); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDescriptorSetLayoutBindingOffsetEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->layout, params->binding, (VkDeviceSize *)UlongToPtr(params->pOffset)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDescriptorSetLayoutHostMappingInfoVALVE(void *args) { struct vkGetDescriptorSetLayoutHostMappingInfoVALVE_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pBindingReference, params->pHostMapping); wine_device_from_handle(params->device)->funcs.p_vkGetDescriptorSetLayoutHostMappingInfoVALVE(wine_device_from_handle(params->device)->device, params->pBindingReference, params->pHostMapping); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDescriptorSetLayoutHostMappingInfoVALVE(void *args) { struct { PTR32 device; PTR32 pBindingReference; PTR32 pHostMapping; } *params = args; VkDescriptorSetBindingReferenceVALVE pBindingReference_host; VkDescriptorSetLayoutHostMappingInfoVALVE pHostMapping_host; TRACE("%#x, %#x, %#x\n", params->device, params->pBindingReference, params->pHostMapping); convert_VkDescriptorSetBindingReferenceVALVE_win32_to_host((const VkDescriptorSetBindingReferenceVALVE32 *)UlongToPtr(params->pBindingReference), &pBindingReference_host); convert_VkDescriptorSetLayoutHostMappingInfoVALVE_win32_to_host((VkDescriptorSetLayoutHostMappingInfoVALVE32 *)UlongToPtr(params->pHostMapping), &pHostMapping_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDescriptorSetLayoutHostMappingInfoVALVE(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pBindingReference_host, &pHostMapping_host); convert_VkDescriptorSetLayoutHostMappingInfoVALVE_host_to_win32(&pHostMapping_host, (VkDescriptorSetLayoutHostMappingInfoVALVE32 *)UlongToPtr(params->pHostMapping)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDescriptorSetLayoutSizeEXT(void *args) { struct vkGetDescriptorSetLayoutSizeEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->layout), params->pLayoutSizeInBytes); wine_device_from_handle(params->device)->funcs.p_vkGetDescriptorSetLayoutSizeEXT(wine_device_from_handle(params->device)->device, params->layout, params->pLayoutSizeInBytes); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDescriptorSetLayoutSizeEXT(void *args) { struct { PTR32 device; VkDescriptorSetLayout DECLSPEC_ALIGN(8) layout; PTR32 pLayoutSizeInBytes; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->layout), params->pLayoutSizeInBytes); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDescriptorSetLayoutSizeEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->layout, (VkDeviceSize *)UlongToPtr(params->pLayoutSizeInBytes)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDescriptorSetLayoutSupport(void *args) { struct vkGetDescriptorSetLayoutSupport_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pCreateInfo, params->pSupport); wine_device_from_handle(params->device)->funcs.p_vkGetDescriptorSetLayoutSupport(wine_device_from_handle(params->device)->device, params->pCreateInfo, params->pSupport); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDescriptorSetLayoutSupport(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pSupport; } *params = args; VkDescriptorSetLayoutCreateInfo pCreateInfo_host; VkDescriptorSetLayoutSupport pSupport_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pSupport); init_conversion_context(&ctx); convert_VkDescriptorSetLayoutCreateInfo_win32_to_host(&ctx, (const VkDescriptorSetLayoutCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); convert_VkDescriptorSetLayoutSupport_win32_to_host(&ctx, (VkDescriptorSetLayoutSupport32 *)UlongToPtr(params->pSupport), &pSupport_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDescriptorSetLayoutSupport(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, &pSupport_host); convert_VkDescriptorSetLayoutSupport_host_to_win32(&pSupport_host, (VkDescriptorSetLayoutSupport32 *)UlongToPtr(params->pSupport)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDescriptorSetLayoutSupportKHR(void *args) { struct vkGetDescriptorSetLayoutSupportKHR_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pCreateInfo, params->pSupport); wine_device_from_handle(params->device)->funcs.p_vkGetDescriptorSetLayoutSupportKHR(wine_device_from_handle(params->device)->device, params->pCreateInfo, params->pSupport); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDescriptorSetLayoutSupportKHR(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pSupport; } *params = args; VkDescriptorSetLayoutCreateInfo pCreateInfo_host; VkDescriptorSetLayoutSupport pSupport_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pSupport); init_conversion_context(&ctx); convert_VkDescriptorSetLayoutCreateInfo_win32_to_host(&ctx, (const VkDescriptorSetLayoutCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); convert_VkDescriptorSetLayoutSupport_win32_to_host(&ctx, (VkDescriptorSetLayoutSupport32 *)UlongToPtr(params->pSupport), &pSupport_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDescriptorSetLayoutSupportKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, &pSupport_host); convert_VkDescriptorSetLayoutSupport_host_to_win32(&pSupport_host, (VkDescriptorSetLayoutSupport32 *)UlongToPtr(params->pSupport)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceAccelerationStructureCompatibilityKHR(void *args) { struct vkGetDeviceAccelerationStructureCompatibilityKHR_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pVersionInfo, params->pCompatibility); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceAccelerationStructureCompatibilityKHR(wine_device_from_handle(params->device)->device, params->pVersionInfo, params->pCompatibility); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceAccelerationStructureCompatibilityKHR(void *args) { struct { PTR32 device; PTR32 pVersionInfo; PTR32 pCompatibility; } *params = args; VkAccelerationStructureVersionInfoKHR pVersionInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pVersionInfo, params->pCompatibility); convert_VkAccelerationStructureVersionInfoKHR_win32_to_host((const VkAccelerationStructureVersionInfoKHR32 *)UlongToPtr(params->pVersionInfo), &pVersionInfo_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceAccelerationStructureCompatibilityKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pVersionInfo_host, (VkAccelerationStructureCompatibilityKHR *)UlongToPtr(params->pCompatibility)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceBufferMemoryRequirements(void *args) { struct vkGetDeviceBufferMemoryRequirements_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceBufferMemoryRequirements(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceBufferMemoryRequirements(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkDeviceBufferMemoryRequirements pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkDeviceBufferMemoryRequirements_win32_to_host(&ctx, (const VkDeviceBufferMemoryRequirements32 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceBufferMemoryRequirements(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceBufferMemoryRequirementsKHR(void *args) { struct vkGetDeviceBufferMemoryRequirementsKHR_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceBufferMemoryRequirementsKHR(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceBufferMemoryRequirementsKHR(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkDeviceBufferMemoryRequirements pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkDeviceBufferMemoryRequirements_win32_to_host(&ctx, (const VkDeviceBufferMemoryRequirements32 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceBufferMemoryRequirementsKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceFaultInfoEXT(void *args) { struct vkGetDeviceFaultInfoEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pFaultCounts, params->pFaultInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDeviceFaultInfoEXT(wine_device_from_handle(params->device)->device, params->pFaultCounts, params->pFaultInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceFaultInfoEXT(void *args) { struct { PTR32 device; PTR32 pFaultCounts; PTR32 pFaultInfo; VkResult result; } *params = args; VkDeviceFaultCountsEXT pFaultCounts_host; VkDeviceFaultInfoEXT *pFaultInfo_host = NULL; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pFaultCounts, params->pFaultInfo); init_conversion_context(&ctx); convert_VkDeviceFaultCountsEXT_win32_to_host((VkDeviceFaultCountsEXT32 *)UlongToPtr(params->pFaultCounts), &pFaultCounts_host); if (params->pFaultInfo) { pFaultInfo_host = conversion_context_alloc(&ctx, sizeof(*pFaultInfo_host)); convert_VkDeviceFaultInfoEXT_win32_to_host(&ctx, (VkDeviceFaultInfoEXT32 *)UlongToPtr(params->pFaultInfo), pFaultInfo_host); } params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceFaultInfoEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pFaultCounts_host, pFaultInfo_host); convert_VkDeviceFaultCountsEXT_host_to_win32(&pFaultCounts_host, (VkDeviceFaultCountsEXT32 *)UlongToPtr(params->pFaultCounts)); convert_VkDeviceFaultInfoEXT_host_to_win32(pFaultInfo_host, (VkDeviceFaultInfoEXT32 *)UlongToPtr(params->pFaultInfo)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceGroupPeerMemoryFeatures(void *args) { struct vkGetDeviceGroupPeerMemoryFeatures_params *params = args; TRACE("%p, %u, %u, %u, %p\n", params->device, params->heapIndex, params->localDeviceIndex, params->remoteDeviceIndex, params->pPeerMemoryFeatures); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceGroupPeerMemoryFeatures(wine_device_from_handle(params->device)->device, params->heapIndex, params->localDeviceIndex, params->remoteDeviceIndex, params->pPeerMemoryFeatures); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceGroupPeerMemoryFeatures(void *args) { struct { PTR32 device; uint32_t heapIndex; uint32_t localDeviceIndex; uint32_t remoteDeviceIndex; PTR32 pPeerMemoryFeatures; } *params = args; TRACE("%#x, %u, %u, %u, %#x\n", params->device, params->heapIndex, params->localDeviceIndex, params->remoteDeviceIndex, params->pPeerMemoryFeatures); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceGroupPeerMemoryFeatures(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->heapIndex, params->localDeviceIndex, params->remoteDeviceIndex, (VkPeerMemoryFeatureFlags *)UlongToPtr(params->pPeerMemoryFeatures)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceGroupPeerMemoryFeaturesKHR(void *args) { struct vkGetDeviceGroupPeerMemoryFeaturesKHR_params *params = args; TRACE("%p, %u, %u, %u, %p\n", params->device, params->heapIndex, params->localDeviceIndex, params->remoteDeviceIndex, params->pPeerMemoryFeatures); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceGroupPeerMemoryFeaturesKHR(wine_device_from_handle(params->device)->device, params->heapIndex, params->localDeviceIndex, params->remoteDeviceIndex, params->pPeerMemoryFeatures); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceGroupPeerMemoryFeaturesKHR(void *args) { struct { PTR32 device; uint32_t heapIndex; uint32_t localDeviceIndex; uint32_t remoteDeviceIndex; PTR32 pPeerMemoryFeatures; } *params = args; TRACE("%#x, %u, %u, %u, %#x\n", params->device, params->heapIndex, params->localDeviceIndex, params->remoteDeviceIndex, params->pPeerMemoryFeatures); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceGroupPeerMemoryFeaturesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->heapIndex, params->localDeviceIndex, params->remoteDeviceIndex, (VkPeerMemoryFeatureFlags *)UlongToPtr(params->pPeerMemoryFeatures)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceGroupPresentCapabilitiesKHR(void *args) { struct vkGetDeviceGroupPresentCapabilitiesKHR_params *params = args; TRACE("%p, %p\n", params->device, params->pDeviceGroupPresentCapabilities); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDeviceGroupPresentCapabilitiesKHR(wine_device_from_handle(params->device)->device, params->pDeviceGroupPresentCapabilities); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceGroupPresentCapabilitiesKHR(void *args) { struct { PTR32 device; PTR32 pDeviceGroupPresentCapabilities; VkResult result; } *params = args; VkDeviceGroupPresentCapabilitiesKHR pDeviceGroupPresentCapabilities_host; TRACE("%#x, %#x\n", params->device, params->pDeviceGroupPresentCapabilities); convert_VkDeviceGroupPresentCapabilitiesKHR_win32_to_host((VkDeviceGroupPresentCapabilitiesKHR32 *)UlongToPtr(params->pDeviceGroupPresentCapabilities), &pDeviceGroupPresentCapabilities_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceGroupPresentCapabilitiesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pDeviceGroupPresentCapabilities_host); convert_VkDeviceGroupPresentCapabilitiesKHR_host_to_win32(&pDeviceGroupPresentCapabilities_host, (VkDeviceGroupPresentCapabilitiesKHR32 *)UlongToPtr(params->pDeviceGroupPresentCapabilities)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceGroupSurfacePresentModesKHR(void *args) { struct vkGetDeviceGroupSurfacePresentModesKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->surface), params->pModes); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDeviceGroupSurfacePresentModesKHR(wine_device_from_handle(params->device)->device, wine_surface_from_handle(params->surface)->driver_surface, params->pModes); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceGroupSurfacePresentModesKHR(void *args) { struct { PTR32 device; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; PTR32 pModes; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->surface), params->pModes); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceGroupSurfacePresentModesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, wine_surface_from_handle(params->surface)->driver_surface, (VkDeviceGroupPresentModeFlagsKHR *)UlongToPtr(params->pModes)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceImageMemoryRequirements(void *args) { struct vkGetDeviceImageMemoryRequirements_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceImageMemoryRequirements(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceImageMemoryRequirements(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkDeviceImageMemoryRequirements pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkDeviceImageMemoryRequirements_win32_to_host(&ctx, (const VkDeviceImageMemoryRequirements32 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceImageMemoryRequirements(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceImageMemoryRequirementsKHR(void *args) { struct vkGetDeviceImageMemoryRequirementsKHR_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceImageMemoryRequirementsKHR(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceImageMemoryRequirementsKHR(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkDeviceImageMemoryRequirements pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkDeviceImageMemoryRequirements_win32_to_host(&ctx, (const VkDeviceImageMemoryRequirements32 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceImageMemoryRequirementsKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceImageSparseMemoryRequirements(void *args) { struct vkGetDeviceImageSparseMemoryRequirements_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceImageSparseMemoryRequirements(wine_device_from_handle(params->device)->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceImageSparseMemoryRequirements(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pSparseMemoryRequirementCount; PTR32 pSparseMemoryRequirements; } *params = args; VkDeviceImageMemoryRequirements pInfo_host; VkSparseImageMemoryRequirements2 *pSparseMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); init_conversion_context(&ctx); convert_VkDeviceImageMemoryRequirements_win32_to_host(&ctx, (const VkDeviceImageMemoryRequirements32 *)UlongToPtr(params->pInfo), &pInfo_host); pSparseMemoryRequirements_host = convert_VkSparseImageMemoryRequirements2_array_win32_to_host(&ctx, (VkSparseImageMemoryRequirements232 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceImageSparseMemoryRequirements(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount), pSparseMemoryRequirements_host); convert_VkSparseImageMemoryRequirements2_array_host_to_win32(pSparseMemoryRequirements_host, (VkSparseImageMemoryRequirements232 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceImageSparseMemoryRequirementsKHR(void *args) { struct vkGetDeviceImageSparseMemoryRequirementsKHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceImageSparseMemoryRequirementsKHR(wine_device_from_handle(params->device)->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceImageSparseMemoryRequirementsKHR(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pSparseMemoryRequirementCount; PTR32 pSparseMemoryRequirements; } *params = args; VkDeviceImageMemoryRequirements pInfo_host; VkSparseImageMemoryRequirements2 *pSparseMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); init_conversion_context(&ctx); convert_VkDeviceImageMemoryRequirements_win32_to_host(&ctx, (const VkDeviceImageMemoryRequirements32 *)UlongToPtr(params->pInfo), &pInfo_host); pSparseMemoryRequirements_host = convert_VkSparseImageMemoryRequirements2_array_win32_to_host(&ctx, (VkSparseImageMemoryRequirements232 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceImageSparseMemoryRequirementsKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount), pSparseMemoryRequirements_host); convert_VkSparseImageMemoryRequirements2_array_host_to_win32(pSparseMemoryRequirements_host, (VkSparseImageMemoryRequirements232 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceMemoryCommitment(void *args) { struct vkGetDeviceMemoryCommitment_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->memory), params->pCommittedMemoryInBytes); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceMemoryCommitment(wine_device_from_handle(params->device)->device, wine_device_memory_from_handle(params->memory)->memory, params->pCommittedMemoryInBytes); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceMemoryCommitment(void *args) { struct { PTR32 device; VkDeviceMemory DECLSPEC_ALIGN(8) memory; PTR32 pCommittedMemoryInBytes; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->memory), params->pCommittedMemoryInBytes); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceMemoryCommitment(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, wine_device_memory_from_handle(params->memory)->memory, (VkDeviceSize *)UlongToPtr(params->pCommittedMemoryInBytes)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceMemoryOpaqueCaptureAddress(void *args) { struct vkGetDeviceMemoryOpaqueCaptureAddress_params *params = args; VkDeviceMemoryOpaqueCaptureAddressInfo pInfo_host; TRACE("%p, %p\n", params->device, params->pInfo); convert_VkDeviceMemoryOpaqueCaptureAddressInfo_win64_to_host(params->pInfo, &pInfo_host); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDeviceMemoryOpaqueCaptureAddress(wine_device_from_handle(params->device)->device, &pInfo_host); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceMemoryOpaqueCaptureAddress(void *args) { struct { PTR32 device; PTR32 pInfo; uint64_t result; } *params = args; VkDeviceMemoryOpaqueCaptureAddressInfo pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkDeviceMemoryOpaqueCaptureAddressInfo_win32_to_host((const VkDeviceMemoryOpaqueCaptureAddressInfo32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceMemoryOpaqueCaptureAddress(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceMemoryOpaqueCaptureAddressKHR(void *args) { struct vkGetDeviceMemoryOpaqueCaptureAddressKHR_params *params = args; VkDeviceMemoryOpaqueCaptureAddressInfo pInfo_host; TRACE("%p, %p\n", params->device, params->pInfo); convert_VkDeviceMemoryOpaqueCaptureAddressInfo_win64_to_host(params->pInfo, &pInfo_host); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDeviceMemoryOpaqueCaptureAddressKHR(wine_device_from_handle(params->device)->device, &pInfo_host); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceMemoryOpaqueCaptureAddressKHR(void *args) { struct { PTR32 device; PTR32 pInfo; uint64_t result; } *params = args; VkDeviceMemoryOpaqueCaptureAddressInfo pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkDeviceMemoryOpaqueCaptureAddressInfo_win32_to_host((const VkDeviceMemoryOpaqueCaptureAddressInfo32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceMemoryOpaqueCaptureAddressKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceMicromapCompatibilityEXT(void *args) { struct vkGetDeviceMicromapCompatibilityEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pVersionInfo, params->pCompatibility); wine_device_from_handle(params->device)->funcs.p_vkGetDeviceMicromapCompatibilityEXT(wine_device_from_handle(params->device)->device, params->pVersionInfo, params->pCompatibility); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceMicromapCompatibilityEXT(void *args) { struct { PTR32 device; PTR32 pVersionInfo; PTR32 pCompatibility; } *params = args; VkMicromapVersionInfoEXT pVersionInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pVersionInfo, params->pCompatibility); convert_VkMicromapVersionInfoEXT_win32_to_host((const VkMicromapVersionInfoEXT32 *)UlongToPtr(params->pVersionInfo), &pVersionInfo_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceMicromapCompatibilityEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pVersionInfo_host, (VkAccelerationStructureCompatibilityKHR *)UlongToPtr(params->pCompatibility)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceQueue(void *args) { struct vkGetDeviceQueue_params *params = args; TRACE("%p, %u, %u, %p\n", params->device, params->queueFamilyIndex, params->queueIndex, params->pQueue); wine_vkGetDeviceQueue(params->device, params->queueFamilyIndex, params->queueIndex, params->pQueue); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceQueue(void *args) { struct { PTR32 device; uint32_t queueFamilyIndex; uint32_t queueIndex; PTR32 pQueue; } *params = args; VkQueue pQueue_host; TRACE("%#x, %u, %u, %#x\n", params->device, params->queueFamilyIndex, params->queueIndex, params->pQueue); pQueue_host = UlongToPtr(*(PTR32 *)UlongToPtr(params->pQueue)); wine_vkGetDeviceQueue((VkDevice)UlongToPtr(params->device), params->queueFamilyIndex, params->queueIndex, &pQueue_host); *(PTR32 *)UlongToPtr(params->pQueue) = PtrToUlong(pQueue_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceQueue2(void *args) { struct vkGetDeviceQueue2_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pQueueInfo, params->pQueue); wine_vkGetDeviceQueue2(params->device, params->pQueueInfo, params->pQueue); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceQueue2(void *args) { struct { PTR32 device; PTR32 pQueueInfo; PTR32 pQueue; } *params = args; VkDeviceQueueInfo2 pQueueInfo_host; VkQueue pQueue_host; TRACE("%#x, %#x, %#x\n", params->device, params->pQueueInfo, params->pQueue); convert_VkDeviceQueueInfo2_win32_to_host((const VkDeviceQueueInfo232 *)UlongToPtr(params->pQueueInfo), &pQueueInfo_host); pQueue_host = UlongToPtr(*(PTR32 *)UlongToPtr(params->pQueue)); wine_vkGetDeviceQueue2((VkDevice)UlongToPtr(params->device), &pQueueInfo_host, &pQueue_host); *(PTR32 *)UlongToPtr(params->pQueue) = PtrToUlong(pQueue_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(void *args) { struct vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->renderpass), params->pMaxWorkgroupSize); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(wine_device_from_handle(params->device)->device, params->renderpass, params->pMaxWorkgroupSize); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(void *args) { struct { PTR32 device; VkRenderPass DECLSPEC_ALIGN(8) renderpass; PTR32 pMaxWorkgroupSize; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->renderpass), params->pMaxWorkgroupSize); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->renderpass, (VkExtent2D *)UlongToPtr(params->pMaxWorkgroupSize)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetDynamicRenderingTilePropertiesQCOM(void *args) { struct vkGetDynamicRenderingTilePropertiesQCOM_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pRenderingInfo, params->pProperties); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetDynamicRenderingTilePropertiesQCOM(wine_device_from_handle(params->device)->device, params->pRenderingInfo, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetDynamicRenderingTilePropertiesQCOM(void *args) { struct { PTR32 device; PTR32 pRenderingInfo; PTR32 pProperties; VkResult result; } *params = args; VkRenderingInfo pRenderingInfo_host; VkTilePropertiesQCOM pProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pRenderingInfo, params->pProperties); init_conversion_context(&ctx); convert_VkRenderingInfo_win32_to_host(&ctx, (const VkRenderingInfo32 *)UlongToPtr(params->pRenderingInfo), &pRenderingInfo_host); convert_VkTilePropertiesQCOM_win32_to_host((VkTilePropertiesQCOM32 *)UlongToPtr(params->pProperties), &pProperties_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetDynamicRenderingTilePropertiesQCOM(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pRenderingInfo_host, &pProperties_host); convert_VkTilePropertiesQCOM_host_to_win32(&pProperties_host, (VkTilePropertiesQCOM32 *)UlongToPtr(params->pProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetEventStatus(void *args) { struct vkGetEventStatus_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->event)); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetEventStatus(wine_device_from_handle(params->device)->device, params->event); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetEventStatus(void *args) { struct { PTR32 device; VkEvent DECLSPEC_ALIGN(8) event; VkResult result; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->event)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetEventStatus(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->event); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetFenceStatus(void *args) { struct vkGetFenceStatus_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->fence)); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetFenceStatus(wine_device_from_handle(params->device)->device, params->fence); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetFenceStatus(void *args) { struct { PTR32 device; VkFence DECLSPEC_ALIGN(8) fence; VkResult result; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->fence)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetFenceStatus(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->fence); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetFramebufferTilePropertiesQCOM(void *args) { struct vkGetFramebufferTilePropertiesQCOM_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->framebuffer), params->pPropertiesCount, params->pProperties); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetFramebufferTilePropertiesQCOM(wine_device_from_handle(params->device)->device, params->framebuffer, params->pPropertiesCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetFramebufferTilePropertiesQCOM(void *args) { struct { PTR32 device; VkFramebuffer DECLSPEC_ALIGN(8) framebuffer; PTR32 pPropertiesCount; PTR32 pProperties; VkResult result; } *params = args; VkTilePropertiesQCOM *pProperties_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->framebuffer), params->pPropertiesCount, params->pProperties); init_conversion_context(&ctx); pProperties_host = convert_VkTilePropertiesQCOM_array_win32_to_host(&ctx, (VkTilePropertiesQCOM32 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pPropertiesCount)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetFramebufferTilePropertiesQCOM(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->framebuffer, (uint32_t *)UlongToPtr(params->pPropertiesCount), pProperties_host); convert_VkTilePropertiesQCOM_array_host_to_win32(pProperties_host, (VkTilePropertiesQCOM32 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pPropertiesCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetGeneratedCommandsMemoryRequirementsNV(void *args) { struct vkGetGeneratedCommandsMemoryRequirementsNV_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetGeneratedCommandsMemoryRequirementsNV(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetGeneratedCommandsMemoryRequirementsNV(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkGeneratedCommandsMemoryRequirementsInfoNV pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkGeneratedCommandsMemoryRequirementsInfoNV_win32_to_host((const VkGeneratedCommandsMemoryRequirementsInfoNV32 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetGeneratedCommandsMemoryRequirementsNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageMemoryRequirements(void *args) { struct vkGetImageMemoryRequirements_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->image), params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetImageMemoryRequirements(wine_device_from_handle(params->device)->device, params->image, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageMemoryRequirements(void *args) { struct { PTR32 device; VkImage DECLSPEC_ALIGN(8) image; PTR32 pMemoryRequirements; } *params = args; VkMemoryRequirements pMemoryRequirements_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->image), params->pMemoryRequirements); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageMemoryRequirements(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->image, &pMemoryRequirements_host); convert_VkMemoryRequirements_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements32 *)UlongToPtr(params->pMemoryRequirements)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageMemoryRequirements2(void *args) { struct vkGetImageMemoryRequirements2_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetImageMemoryRequirements2(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageMemoryRequirements2(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkImageMemoryRequirementsInfo2 pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkImageMemoryRequirementsInfo2_win32_to_host(&ctx, (const VkImageMemoryRequirementsInfo232 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageMemoryRequirements2(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageMemoryRequirements2KHR(void *args) { struct vkGetImageMemoryRequirements2KHR_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetImageMemoryRequirements2KHR(wine_device_from_handle(params->device)->device, params->pInfo, params->pMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageMemoryRequirements2KHR(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pMemoryRequirements; } *params = args; VkImageMemoryRequirementsInfo2 pInfo_host; VkMemoryRequirements2 pMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pMemoryRequirements); init_conversion_context(&ctx); convert_VkImageMemoryRequirementsInfo2_win32_to_host(&ctx, (const VkImageMemoryRequirementsInfo232 *)UlongToPtr(params->pInfo), &pInfo_host); convert_VkMemoryRequirements2_win32_to_host(&ctx, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements), &pMemoryRequirements_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageMemoryRequirements2KHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, &pMemoryRequirements_host); convert_VkMemoryRequirements2_host_to_win32(&pMemoryRequirements_host, (VkMemoryRequirements232 *)UlongToPtr(params->pMemoryRequirements)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageOpaqueCaptureDescriptorDataEXT(void *args) { struct vkGetImageOpaqueCaptureDescriptorDataEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetImageOpaqueCaptureDescriptorDataEXT(wine_device_from_handle(params->device)->device, params->pInfo, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageOpaqueCaptureDescriptorDataEXT(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pData; VkResult result; } *params = args; VkImageCaptureDescriptorDataInfoEXT pInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pData); convert_VkImageCaptureDescriptorDataInfoEXT_win32_to_host((const VkImageCaptureDescriptorDataInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageOpaqueCaptureDescriptorDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageSparseMemoryRequirements(void *args) { struct vkGetImageSparseMemoryRequirements_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->image), params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements(wine_device_from_handle(params->device)->device, params->image, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageSparseMemoryRequirements(void *args) { struct { PTR32 device; VkImage DECLSPEC_ALIGN(8) image; PTR32 pSparseMemoryRequirementCount; PTR32 pSparseMemoryRequirements; } *params = args; VkSparseImageMemoryRequirements *pSparseMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->image), params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); init_conversion_context(&ctx); pSparseMemoryRequirements_host = (params->pSparseMemoryRequirements && *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)) ? conversion_context_alloc(&ctx, sizeof(*pSparseMemoryRequirements_host) * *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)) : NULL; wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageSparseMemoryRequirements(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->image, (uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount), pSparseMemoryRequirements_host); convert_VkSparseImageMemoryRequirements_array_host_to_win32(pSparseMemoryRequirements_host, (VkSparseImageMemoryRequirements32 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageSparseMemoryRequirements2(void *args) { struct vkGetImageSparseMemoryRequirements2_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements2(wine_device_from_handle(params->device)->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageSparseMemoryRequirements2(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pSparseMemoryRequirementCount; PTR32 pSparseMemoryRequirements; } *params = args; VkImageSparseMemoryRequirementsInfo2 pInfo_host; VkSparseImageMemoryRequirements2 *pSparseMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); init_conversion_context(&ctx); convert_VkImageSparseMemoryRequirementsInfo2_win32_to_host((const VkImageSparseMemoryRequirementsInfo232 *)UlongToPtr(params->pInfo), &pInfo_host); pSparseMemoryRequirements_host = convert_VkSparseImageMemoryRequirements2_array_win32_to_host(&ctx, (VkSparseImageMemoryRequirements232 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageSparseMemoryRequirements2(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount), pSparseMemoryRequirements_host); convert_VkSparseImageMemoryRequirements2_array_host_to_win32(pSparseMemoryRequirements_host, (VkSparseImageMemoryRequirements232 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageSparseMemoryRequirements2KHR(void *args) { struct vkGetImageSparseMemoryRequirements2KHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements2KHR(wine_device_from_handle(params->device)->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageSparseMemoryRequirements2KHR(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pSparseMemoryRequirementCount; PTR32 pSparseMemoryRequirements; } *params = args; VkImageSparseMemoryRequirementsInfo2 pInfo_host; VkSparseImageMemoryRequirements2 *pSparseMemoryRequirements_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements); init_conversion_context(&ctx); convert_VkImageSparseMemoryRequirementsInfo2_win32_to_host((const VkImageSparseMemoryRequirementsInfo232 *)UlongToPtr(params->pInfo), &pInfo_host); pSparseMemoryRequirements_host = convert_VkSparseImageMemoryRequirements2_array_win32_to_host(&ctx, (VkSparseImageMemoryRequirements232 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageSparseMemoryRequirements2KHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount), pSparseMemoryRequirements_host); convert_VkSparseImageMemoryRequirements2_array_host_to_win32(pSparseMemoryRequirements_host, (VkSparseImageMemoryRequirements232 *)UlongToPtr(params->pSparseMemoryRequirements), *(uint32_t *)UlongToPtr(params->pSparseMemoryRequirementCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageSubresourceLayout(void *args) { struct vkGetImageSubresourceLayout_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->image), params->pSubresource, params->pLayout); wine_device_from_handle(params->device)->funcs.p_vkGetImageSubresourceLayout(wine_device_from_handle(params->device)->device, params->image, params->pSubresource, params->pLayout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageSubresourceLayout(void *args) { struct { PTR32 device; VkImage DECLSPEC_ALIGN(8) image; PTR32 pSubresource; PTR32 pLayout; } *params = args; VkSubresourceLayout pLayout_host; TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->image), params->pSubresource, params->pLayout); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageSubresourceLayout(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->image, (const VkImageSubresource *)UlongToPtr(params->pSubresource), &pLayout_host); convert_VkSubresourceLayout_host_to_win32(&pLayout_host, (VkSubresourceLayout32 *)UlongToPtr(params->pLayout)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageSubresourceLayout2EXT(void *args) { struct vkGetImageSubresourceLayout2EXT_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->image), params->pSubresource, params->pLayout); wine_device_from_handle(params->device)->funcs.p_vkGetImageSubresourceLayout2EXT(wine_device_from_handle(params->device)->device, params->image, params->pSubresource, params->pLayout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageSubresourceLayout2EXT(void *args) { struct { PTR32 device; VkImage DECLSPEC_ALIGN(8) image; PTR32 pSubresource; PTR32 pLayout; } *params = args; VkImageSubresource2EXT pSubresource_host; VkSubresourceLayout2EXT pLayout_host; struct conversion_context ctx; TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->image), params->pSubresource, params->pLayout); init_conversion_context(&ctx); convert_VkImageSubresource2EXT_win32_to_host((const VkImageSubresource2EXT32 *)UlongToPtr(params->pSubresource), &pSubresource_host); convert_VkSubresourceLayout2EXT_win32_to_host(&ctx, (VkSubresourceLayout2EXT32 *)UlongToPtr(params->pLayout), &pLayout_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageSubresourceLayout2EXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->image, &pSubresource_host, &pLayout_host); convert_VkSubresourceLayout2EXT_host_to_win32(&pLayout_host, (VkSubresourceLayout2EXT32 *)UlongToPtr(params->pLayout)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageViewAddressNVX(void *args) { struct vkGetImageViewAddressNVX_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->imageView), params->pProperties); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetImageViewAddressNVX(wine_device_from_handle(params->device)->device, params->imageView, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageViewAddressNVX(void *args) { struct { PTR32 device; VkImageView DECLSPEC_ALIGN(8) imageView; PTR32 pProperties; VkResult result; } *params = args; VkImageViewAddressPropertiesNVX pProperties_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->imageView), params->pProperties); convert_VkImageViewAddressPropertiesNVX_win32_to_host((VkImageViewAddressPropertiesNVX32 *)UlongToPtr(params->pProperties), &pProperties_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageViewAddressNVX(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->imageView, &pProperties_host); convert_VkImageViewAddressPropertiesNVX_host_to_win32(&pProperties_host, (VkImageViewAddressPropertiesNVX32 *)UlongToPtr(params->pProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageViewHandleNVX(void *args) { struct vkGetImageViewHandleNVX_params *params = args; TRACE("%p, %p\n", params->device, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetImageViewHandleNVX(wine_device_from_handle(params->device)->device, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageViewHandleNVX(void *args) { struct { PTR32 device; PTR32 pInfo; uint32_t result; } *params = args; VkImageViewHandleInfoNVX pInfo_host; TRACE("%#x, %#x\n", params->device, params->pInfo); convert_VkImageViewHandleInfoNVX_win32_to_host((const VkImageViewHandleInfoNVX32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageViewHandleNVX(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetImageViewOpaqueCaptureDescriptorDataEXT(void *args) { struct vkGetImageViewOpaqueCaptureDescriptorDataEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetImageViewOpaqueCaptureDescriptorDataEXT(wine_device_from_handle(params->device)->device, params->pInfo, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetImageViewOpaqueCaptureDescriptorDataEXT(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pData; VkResult result; } *params = args; VkImageViewCaptureDescriptorDataInfoEXT pInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pData); convert_VkImageViewCaptureDescriptorDataInfoEXT_win32_to_host((const VkImageViewCaptureDescriptorDataInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetImageViewOpaqueCaptureDescriptorDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetMemoryHostPointerPropertiesEXT(void *args) { struct vkGetMemoryHostPointerPropertiesEXT_params *params = args; TRACE("%p, %#x, %p, %p\n", params->device, params->handleType, params->pHostPointer, params->pMemoryHostPointerProperties); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetMemoryHostPointerPropertiesEXT(wine_device_from_handle(params->device)->device, params->handleType, params->pHostPointer, params->pMemoryHostPointerProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetMemoryHostPointerPropertiesEXT(void *args) { struct { PTR32 device; VkExternalMemoryHandleTypeFlagBits handleType; PTR32 pHostPointer; PTR32 pMemoryHostPointerProperties; VkResult result; } *params = args; VkMemoryHostPointerPropertiesEXT pMemoryHostPointerProperties_host; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->handleType, params->pHostPointer, params->pMemoryHostPointerProperties); convert_VkMemoryHostPointerPropertiesEXT_win32_to_host((VkMemoryHostPointerPropertiesEXT32 *)UlongToPtr(params->pMemoryHostPointerProperties), &pMemoryHostPointerProperties_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetMemoryHostPointerPropertiesEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->handleType, (const void *)UlongToPtr(params->pHostPointer), &pMemoryHostPointerProperties_host); convert_VkMemoryHostPointerPropertiesEXT_host_to_win32(&pMemoryHostPointerProperties_host, (VkMemoryHostPointerPropertiesEXT32 *)UlongToPtr(params->pMemoryHostPointerProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetMicromapBuildSizesEXT(void *args) { struct vkGetMicromapBuildSizesEXT_params *params = args; TRACE("%p, %#x, %p, %p\n", params->device, params->buildType, params->pBuildInfo, params->pSizeInfo); wine_device_from_handle(params->device)->funcs.p_vkGetMicromapBuildSizesEXT(wine_device_from_handle(params->device)->device, params->buildType, params->pBuildInfo, params->pSizeInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetMicromapBuildSizesEXT(void *args) { struct { PTR32 device; VkAccelerationStructureBuildTypeKHR buildType; PTR32 pBuildInfo; PTR32 pSizeInfo; } *params = args; VkMicromapBuildInfoEXT pBuildInfo_host; VkMicromapBuildSizesInfoEXT pSizeInfo_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->buildType, params->pBuildInfo, params->pSizeInfo); init_conversion_context(&ctx); convert_VkMicromapBuildInfoEXT_win32_to_host(&ctx, (const VkMicromapBuildInfoEXT32 *)UlongToPtr(params->pBuildInfo), &pBuildInfo_host); convert_VkMicromapBuildSizesInfoEXT_win32_to_host((VkMicromapBuildSizesInfoEXT32 *)UlongToPtr(params->pSizeInfo), &pSizeInfo_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetMicromapBuildSizesEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->buildType, &pBuildInfo_host, &pSizeInfo_host); convert_VkMicromapBuildSizesInfoEXT_host_to_win32(&pSizeInfo_host, (VkMicromapBuildSizesInfoEXT32 *)UlongToPtr(params->pSizeInfo)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPerformanceParameterINTEL(void *args) { struct vkGetPerformanceParameterINTEL_params *params = args; TRACE("%p, %#x, %p\n", params->device, params->parameter, params->pValue); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetPerformanceParameterINTEL(wine_device_from_handle(params->device)->device, params->parameter, params->pValue); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPerformanceParameterINTEL(void *args) { struct { PTR32 device; VkPerformanceParameterTypeINTEL parameter; PTR32 pValue; VkResult result; } *params = args; VkPerformanceValueINTEL pValue_host; TRACE("%#x, %#x, %#x\n", params->device, params->parameter, params->pValue); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetPerformanceParameterINTEL(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->parameter, &pValue_host); convert_VkPerformanceValueINTEL_host_to_win32(&pValue_host, (VkPerformanceValueINTEL32 *)UlongToPtr(params->pValue)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(void *args) { struct vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pTimeDomainCount, params->pTimeDomains); params->result = wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(params->physicalDevice, params->pTimeDomainCount, params->pTimeDomains); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(void *args) { struct { PTR32 physicalDevice; PTR32 pTimeDomainCount; PTR32 pTimeDomains; VkResult result; } *params = args; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pTimeDomainCount, params->pTimeDomains); params->result = wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT((VkPhysicalDevice)UlongToPtr(params->physicalDevice), (uint32_t *)UlongToPtr(params->pTimeDomainCount), (VkTimeDomainEXT *)UlongToPtr(params->pTimeDomains)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(void *args) { struct vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pPropertyCount, params->pProperties); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pPropertyCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(void *args) { struct { PTR32 physicalDevice; PTR32 pPropertyCount; PTR32 pProperties; VkResult result; } *params = args; VkCooperativeMatrixPropertiesNV *pProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pPropertyCount, params->pProperties); init_conversion_context(&ctx); pProperties_host = convert_VkCooperativeMatrixPropertiesNV_array_win32_to_host(&ctx, (VkCooperativeMatrixPropertiesNV32 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pPropertyCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (uint32_t *)UlongToPtr(params->pPropertyCount), pProperties_host); convert_VkCooperativeMatrixPropertiesNV_array_host_to_win32(pProperties_host, (VkCooperativeMatrixPropertiesNV32 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pPropertyCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceExternalBufferProperties(void *args) { struct vkGetPhysicalDeviceExternalBufferProperties_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pExternalBufferInfo, params->pExternalBufferProperties); wine_vkGetPhysicalDeviceExternalBufferProperties(params->physicalDevice, params->pExternalBufferInfo, params->pExternalBufferProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceExternalBufferProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pExternalBufferInfo; PTR32 pExternalBufferProperties; } *params = args; VkPhysicalDeviceExternalBufferInfo pExternalBufferInfo_host; VkExternalBufferProperties pExternalBufferProperties_host; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pExternalBufferInfo, params->pExternalBufferProperties); convert_VkPhysicalDeviceExternalBufferInfo_win32_to_host((const VkPhysicalDeviceExternalBufferInfo32 *)UlongToPtr(params->pExternalBufferInfo), &pExternalBufferInfo_host); convert_VkExternalBufferProperties_win32_to_host((VkExternalBufferProperties32 *)UlongToPtr(params->pExternalBufferProperties), &pExternalBufferProperties_host); wine_vkGetPhysicalDeviceExternalBufferProperties((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pExternalBufferInfo_host, &pExternalBufferProperties_host); convert_VkExternalBufferProperties_host_to_win32(&pExternalBufferProperties_host, (VkExternalBufferProperties32 *)UlongToPtr(params->pExternalBufferProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceExternalBufferPropertiesKHR(void *args) { struct vkGetPhysicalDeviceExternalBufferPropertiesKHR_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pExternalBufferInfo, params->pExternalBufferProperties); wine_vkGetPhysicalDeviceExternalBufferPropertiesKHR(params->physicalDevice, params->pExternalBufferInfo, params->pExternalBufferProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceExternalBufferPropertiesKHR(void *args) { struct { PTR32 physicalDevice; PTR32 pExternalBufferInfo; PTR32 pExternalBufferProperties; } *params = args; VkPhysicalDeviceExternalBufferInfo pExternalBufferInfo_host; VkExternalBufferProperties pExternalBufferProperties_host; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pExternalBufferInfo, params->pExternalBufferProperties); convert_VkPhysicalDeviceExternalBufferInfo_win32_to_host((const VkPhysicalDeviceExternalBufferInfo32 *)UlongToPtr(params->pExternalBufferInfo), &pExternalBufferInfo_host); convert_VkExternalBufferProperties_win32_to_host((VkExternalBufferProperties32 *)UlongToPtr(params->pExternalBufferProperties), &pExternalBufferProperties_host); wine_vkGetPhysicalDeviceExternalBufferPropertiesKHR((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pExternalBufferInfo_host, &pExternalBufferProperties_host); convert_VkExternalBufferProperties_host_to_win32(&pExternalBufferProperties_host, (VkExternalBufferProperties32 *)UlongToPtr(params->pExternalBufferProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceExternalFenceProperties(void *args) { struct vkGetPhysicalDeviceExternalFenceProperties_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pExternalFenceInfo, params->pExternalFenceProperties); wine_vkGetPhysicalDeviceExternalFenceProperties(params->physicalDevice, params->pExternalFenceInfo, params->pExternalFenceProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceExternalFenceProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pExternalFenceInfo; PTR32 pExternalFenceProperties; } *params = args; VkPhysicalDeviceExternalFenceInfo pExternalFenceInfo_host; VkExternalFenceProperties pExternalFenceProperties_host; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pExternalFenceInfo, params->pExternalFenceProperties); convert_VkPhysicalDeviceExternalFenceInfo_win32_to_host((const VkPhysicalDeviceExternalFenceInfo32 *)UlongToPtr(params->pExternalFenceInfo), &pExternalFenceInfo_host); convert_VkExternalFenceProperties_win32_to_host((VkExternalFenceProperties32 *)UlongToPtr(params->pExternalFenceProperties), &pExternalFenceProperties_host); wine_vkGetPhysicalDeviceExternalFenceProperties((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pExternalFenceInfo_host, &pExternalFenceProperties_host); convert_VkExternalFenceProperties_host_to_win32(&pExternalFenceProperties_host, (VkExternalFenceProperties32 *)UlongToPtr(params->pExternalFenceProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceExternalFencePropertiesKHR(void *args) { struct vkGetPhysicalDeviceExternalFencePropertiesKHR_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pExternalFenceInfo, params->pExternalFenceProperties); wine_vkGetPhysicalDeviceExternalFencePropertiesKHR(params->physicalDevice, params->pExternalFenceInfo, params->pExternalFenceProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceExternalFencePropertiesKHR(void *args) { struct { PTR32 physicalDevice; PTR32 pExternalFenceInfo; PTR32 pExternalFenceProperties; } *params = args; VkPhysicalDeviceExternalFenceInfo pExternalFenceInfo_host; VkExternalFenceProperties pExternalFenceProperties_host; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pExternalFenceInfo, params->pExternalFenceProperties); convert_VkPhysicalDeviceExternalFenceInfo_win32_to_host((const VkPhysicalDeviceExternalFenceInfo32 *)UlongToPtr(params->pExternalFenceInfo), &pExternalFenceInfo_host); convert_VkExternalFenceProperties_win32_to_host((VkExternalFenceProperties32 *)UlongToPtr(params->pExternalFenceProperties), &pExternalFenceProperties_host); wine_vkGetPhysicalDeviceExternalFencePropertiesKHR((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pExternalFenceInfo_host, &pExternalFenceProperties_host); convert_VkExternalFenceProperties_host_to_win32(&pExternalFenceProperties_host, (VkExternalFenceProperties32 *)UlongToPtr(params->pExternalFenceProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceExternalSemaphoreProperties(void *args) { struct vkGetPhysicalDeviceExternalSemaphoreProperties_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pExternalSemaphoreInfo, params->pExternalSemaphoreProperties); wine_vkGetPhysicalDeviceExternalSemaphoreProperties(params->physicalDevice, params->pExternalSemaphoreInfo, params->pExternalSemaphoreProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceExternalSemaphoreProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pExternalSemaphoreInfo; PTR32 pExternalSemaphoreProperties; } *params = args; VkPhysicalDeviceExternalSemaphoreInfo pExternalSemaphoreInfo_host; VkExternalSemaphoreProperties pExternalSemaphoreProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pExternalSemaphoreInfo, params->pExternalSemaphoreProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceExternalSemaphoreInfo_win32_to_host(&ctx, (const VkPhysicalDeviceExternalSemaphoreInfo32 *)UlongToPtr(params->pExternalSemaphoreInfo), &pExternalSemaphoreInfo_host); convert_VkExternalSemaphoreProperties_win32_to_host((VkExternalSemaphoreProperties32 *)UlongToPtr(params->pExternalSemaphoreProperties), &pExternalSemaphoreProperties_host); wine_vkGetPhysicalDeviceExternalSemaphoreProperties((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pExternalSemaphoreInfo_host, &pExternalSemaphoreProperties_host); convert_VkExternalSemaphoreProperties_host_to_win32(&pExternalSemaphoreProperties_host, (VkExternalSemaphoreProperties32 *)UlongToPtr(params->pExternalSemaphoreProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(void *args) { struct vkGetPhysicalDeviceExternalSemaphorePropertiesKHR_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pExternalSemaphoreInfo, params->pExternalSemaphoreProperties); wine_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(params->physicalDevice, params->pExternalSemaphoreInfo, params->pExternalSemaphoreProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(void *args) { struct { PTR32 physicalDevice; PTR32 pExternalSemaphoreInfo; PTR32 pExternalSemaphoreProperties; } *params = args; VkPhysicalDeviceExternalSemaphoreInfo pExternalSemaphoreInfo_host; VkExternalSemaphoreProperties pExternalSemaphoreProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pExternalSemaphoreInfo, params->pExternalSemaphoreProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceExternalSemaphoreInfo_win32_to_host(&ctx, (const VkPhysicalDeviceExternalSemaphoreInfo32 *)UlongToPtr(params->pExternalSemaphoreInfo), &pExternalSemaphoreInfo_host); convert_VkExternalSemaphoreProperties_win32_to_host((VkExternalSemaphoreProperties32 *)UlongToPtr(params->pExternalSemaphoreProperties), &pExternalSemaphoreProperties_host); wine_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pExternalSemaphoreInfo_host, &pExternalSemaphoreProperties_host); convert_VkExternalSemaphoreProperties_host_to_win32(&pExternalSemaphoreProperties_host, (VkExternalSemaphoreProperties32 *)UlongToPtr(params->pExternalSemaphoreProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceFeatures(void *args) { struct vkGetPhysicalDeviceFeatures_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pFeatures); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceFeatures(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pFeatures); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceFeatures(void *args) { struct { PTR32 physicalDevice; PTR32 pFeatures; } *params = args; TRACE("%#x, %#x\n", params->physicalDevice, params->pFeatures); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceFeatures(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (VkPhysicalDeviceFeatures *)UlongToPtr(params->pFeatures)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceFeatures2(void *args) { struct vkGetPhysicalDeviceFeatures2_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pFeatures); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceFeatures2(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pFeatures); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceFeatures2(void *args) { struct { PTR32 physicalDevice; PTR32 pFeatures; } *params = args; VkPhysicalDeviceFeatures2 pFeatures_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->physicalDevice, params->pFeatures); init_conversion_context(&ctx); convert_VkPhysicalDeviceFeatures2_win32_to_host(&ctx, (VkPhysicalDeviceFeatures232 *)UlongToPtr(params->pFeatures), &pFeatures_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceFeatures2(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pFeatures_host); convert_VkPhysicalDeviceFeatures2_host_to_win32(&pFeatures_host, (VkPhysicalDeviceFeatures232 *)UlongToPtr(params->pFeatures)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceFeatures2KHR(void *args) { struct vkGetPhysicalDeviceFeatures2KHR_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pFeatures); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceFeatures2KHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pFeatures); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceFeatures2KHR(void *args) { struct { PTR32 physicalDevice; PTR32 pFeatures; } *params = args; VkPhysicalDeviceFeatures2 pFeatures_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->physicalDevice, params->pFeatures); init_conversion_context(&ctx); convert_VkPhysicalDeviceFeatures2_win32_to_host(&ctx, (VkPhysicalDeviceFeatures232 *)UlongToPtr(params->pFeatures), &pFeatures_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceFeatures2KHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pFeatures_host); convert_VkPhysicalDeviceFeatures2_host_to_win32(&pFeatures_host, (VkPhysicalDeviceFeatures232 *)UlongToPtr(params->pFeatures)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceFormatProperties(void *args) { struct vkGetPhysicalDeviceFormatProperties_params *params = args; TRACE("%p, %#x, %p\n", params->physicalDevice, params->format, params->pFormatProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceFormatProperties(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->format, params->pFormatProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceFormatProperties(void *args) { struct { PTR32 physicalDevice; VkFormat format; PTR32 pFormatProperties; } *params = args; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->format, params->pFormatProperties); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceFormatProperties(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->format, (VkFormatProperties *)UlongToPtr(params->pFormatProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceFormatProperties2(void *args) { struct vkGetPhysicalDeviceFormatProperties2_params *params = args; TRACE("%p, %#x, %p\n", params->physicalDevice, params->format, params->pFormatProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceFormatProperties2(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->format, params->pFormatProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceFormatProperties2(void *args) { struct { PTR32 physicalDevice; VkFormat format; PTR32 pFormatProperties; } *params = args; VkFormatProperties2 pFormatProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->format, params->pFormatProperties); init_conversion_context(&ctx); convert_VkFormatProperties2_win32_to_host(&ctx, (VkFormatProperties232 *)UlongToPtr(params->pFormatProperties), &pFormatProperties_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceFormatProperties2(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->format, &pFormatProperties_host); convert_VkFormatProperties2_host_to_win32(&pFormatProperties_host, (VkFormatProperties232 *)UlongToPtr(params->pFormatProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceFormatProperties2KHR(void *args) { struct vkGetPhysicalDeviceFormatProperties2KHR_params *params = args; TRACE("%p, %#x, %p\n", params->physicalDevice, params->format, params->pFormatProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceFormatProperties2KHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->format, params->pFormatProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceFormatProperties2KHR(void *args) { struct { PTR32 physicalDevice; VkFormat format; PTR32 pFormatProperties; } *params = args; VkFormatProperties2 pFormatProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->format, params->pFormatProperties); init_conversion_context(&ctx); convert_VkFormatProperties2_win32_to_host(&ctx, (VkFormatProperties232 *)UlongToPtr(params->pFormatProperties), &pFormatProperties_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceFormatProperties2KHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->format, &pFormatProperties_host); convert_VkFormatProperties2_host_to_win32(&pFormatProperties_host, (VkFormatProperties232 *)UlongToPtr(params->pFormatProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceFragmentShadingRatesKHR(void *args) { struct vkGetPhysicalDeviceFragmentShadingRatesKHR_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pFragmentShadingRateCount, params->pFragmentShadingRates); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceFragmentShadingRatesKHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pFragmentShadingRateCount, params->pFragmentShadingRates); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceFragmentShadingRatesKHR(void *args) { struct { PTR32 physicalDevice; PTR32 pFragmentShadingRateCount; PTR32 pFragmentShadingRates; VkResult result; } *params = args; VkPhysicalDeviceFragmentShadingRateKHR *pFragmentShadingRates_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pFragmentShadingRateCount, params->pFragmentShadingRates); init_conversion_context(&ctx); pFragmentShadingRates_host = convert_VkPhysicalDeviceFragmentShadingRateKHR_array_win32_to_host(&ctx, (VkPhysicalDeviceFragmentShadingRateKHR32 *)UlongToPtr(params->pFragmentShadingRates), *(uint32_t *)UlongToPtr(params->pFragmentShadingRateCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceFragmentShadingRatesKHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (uint32_t *)UlongToPtr(params->pFragmentShadingRateCount), pFragmentShadingRates_host); convert_VkPhysicalDeviceFragmentShadingRateKHR_array_host_to_win32(pFragmentShadingRates_host, (VkPhysicalDeviceFragmentShadingRateKHR32 *)UlongToPtr(params->pFragmentShadingRates), *(uint32_t *)UlongToPtr(params->pFragmentShadingRateCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceImageFormatProperties(void *args) { struct vkGetPhysicalDeviceImageFormatProperties_params *params = args; TRACE("%p, %#x, %#x, %#x, %#x, %#x, %p\n", params->physicalDevice, params->format, params->type, params->tiling, params->usage, params->flags, params->pImageFormatProperties); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceImageFormatProperties(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->format, params->type, params->tiling, params->usage, params->flags, params->pImageFormatProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceImageFormatProperties(void *args) { struct { PTR32 physicalDevice; VkFormat format; VkImageType type; VkImageTiling tiling; VkImageUsageFlags usage; VkImageCreateFlags flags; PTR32 pImageFormatProperties; VkResult result; } *params = args; VkImageFormatProperties pImageFormatProperties_host; TRACE("%#x, %#x, %#x, %#x, %#x, %#x, %#x\n", params->physicalDevice, params->format, params->type, params->tiling, params->usage, params->flags, params->pImageFormatProperties); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceImageFormatProperties(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->format, params->type, params->tiling, params->usage, params->flags, &pImageFormatProperties_host); convert_VkImageFormatProperties_host_to_win32(&pImageFormatProperties_host, (VkImageFormatProperties32 *)UlongToPtr(params->pImageFormatProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceImageFormatProperties2(void *args) { struct vkGetPhysicalDeviceImageFormatProperties2_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pImageFormatInfo, params->pImageFormatProperties); params->result = wine_vkGetPhysicalDeviceImageFormatProperties2(params->physicalDevice, params->pImageFormatInfo, params->pImageFormatProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceImageFormatProperties2(void *args) { struct { PTR32 physicalDevice; PTR32 pImageFormatInfo; PTR32 pImageFormatProperties; VkResult result; } *params = args; VkPhysicalDeviceImageFormatInfo2 pImageFormatInfo_host; VkImageFormatProperties2 pImageFormatProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pImageFormatInfo, params->pImageFormatProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceImageFormatInfo2_win32_to_host(&ctx, (const VkPhysicalDeviceImageFormatInfo232 *)UlongToPtr(params->pImageFormatInfo), &pImageFormatInfo_host); convert_VkImageFormatProperties2_win32_to_host(&ctx, (VkImageFormatProperties232 *)UlongToPtr(params->pImageFormatProperties), &pImageFormatProperties_host); params->result = wine_vkGetPhysicalDeviceImageFormatProperties2((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pImageFormatInfo_host, &pImageFormatProperties_host); convert_VkImageFormatProperties2_host_to_win32(&pImageFormatProperties_host, (VkImageFormatProperties232 *)UlongToPtr(params->pImageFormatProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceImageFormatProperties2KHR(void *args) { struct vkGetPhysicalDeviceImageFormatProperties2KHR_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pImageFormatInfo, params->pImageFormatProperties); params->result = wine_vkGetPhysicalDeviceImageFormatProperties2KHR(params->physicalDevice, params->pImageFormatInfo, params->pImageFormatProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceImageFormatProperties2KHR(void *args) { struct { PTR32 physicalDevice; PTR32 pImageFormatInfo; PTR32 pImageFormatProperties; VkResult result; } *params = args; VkPhysicalDeviceImageFormatInfo2 pImageFormatInfo_host; VkImageFormatProperties2 pImageFormatProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pImageFormatInfo, params->pImageFormatProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceImageFormatInfo2_win32_to_host(&ctx, (const VkPhysicalDeviceImageFormatInfo232 *)UlongToPtr(params->pImageFormatInfo), &pImageFormatInfo_host); convert_VkImageFormatProperties2_win32_to_host(&ctx, (VkImageFormatProperties232 *)UlongToPtr(params->pImageFormatProperties), &pImageFormatProperties_host); params->result = wine_vkGetPhysicalDeviceImageFormatProperties2KHR((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pImageFormatInfo_host, &pImageFormatProperties_host); convert_VkImageFormatProperties2_host_to_win32(&pImageFormatProperties_host, (VkImageFormatProperties232 *)UlongToPtr(params->pImageFormatProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceMemoryProperties(void *args) { struct vkGetPhysicalDeviceMemoryProperties_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pMemoryProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceMemoryProperties(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pMemoryProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceMemoryProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pMemoryProperties; } *params = args; VkPhysicalDeviceMemoryProperties pMemoryProperties_host; TRACE("%#x, %#x\n", params->physicalDevice, params->pMemoryProperties); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceMemoryProperties(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pMemoryProperties_host); convert_VkPhysicalDeviceMemoryProperties_host_to_win32(&pMemoryProperties_host, (VkPhysicalDeviceMemoryProperties32 *)UlongToPtr(params->pMemoryProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceMemoryProperties2(void *args) { struct vkGetPhysicalDeviceMemoryProperties2_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pMemoryProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceMemoryProperties2(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pMemoryProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceMemoryProperties2(void *args) { struct { PTR32 physicalDevice; PTR32 pMemoryProperties; } *params = args; VkPhysicalDeviceMemoryProperties2 pMemoryProperties_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->physicalDevice, params->pMemoryProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceMemoryProperties2_win32_to_host(&ctx, (VkPhysicalDeviceMemoryProperties232 *)UlongToPtr(params->pMemoryProperties), &pMemoryProperties_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceMemoryProperties2(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pMemoryProperties_host); convert_VkPhysicalDeviceMemoryProperties2_host_to_win32(&pMemoryProperties_host, (VkPhysicalDeviceMemoryProperties232 *)UlongToPtr(params->pMemoryProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceMemoryProperties2KHR(void *args) { struct vkGetPhysicalDeviceMemoryProperties2KHR_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pMemoryProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceMemoryProperties2KHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pMemoryProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceMemoryProperties2KHR(void *args) { struct { PTR32 physicalDevice; PTR32 pMemoryProperties; } *params = args; VkPhysicalDeviceMemoryProperties2 pMemoryProperties_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->physicalDevice, params->pMemoryProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceMemoryProperties2_win32_to_host(&ctx, (VkPhysicalDeviceMemoryProperties232 *)UlongToPtr(params->pMemoryProperties), &pMemoryProperties_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceMemoryProperties2KHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pMemoryProperties_host); convert_VkPhysicalDeviceMemoryProperties2_host_to_win32(&pMemoryProperties_host, (VkPhysicalDeviceMemoryProperties232 *)UlongToPtr(params->pMemoryProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceMultisamplePropertiesEXT(void *args) { struct vkGetPhysicalDeviceMultisamplePropertiesEXT_params *params = args; TRACE("%p, %#x, %p\n", params->physicalDevice, params->samples, params->pMultisampleProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceMultisamplePropertiesEXT(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->samples, params->pMultisampleProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceMultisamplePropertiesEXT(void *args) { struct { PTR32 physicalDevice; VkSampleCountFlagBits samples; PTR32 pMultisampleProperties; } *params = args; VkMultisamplePropertiesEXT pMultisampleProperties_host; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->samples, params->pMultisampleProperties); convert_VkMultisamplePropertiesEXT_win32_to_host((VkMultisamplePropertiesEXT32 *)UlongToPtr(params->pMultisampleProperties), &pMultisampleProperties_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceMultisamplePropertiesEXT(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->samples, &pMultisampleProperties_host); convert_VkMultisamplePropertiesEXT_host_to_win32(&pMultisampleProperties_host, (VkMultisamplePropertiesEXT32 *)UlongToPtr(params->pMultisampleProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceOpticalFlowImageFormatsNV(void *args) { struct vkGetPhysicalDeviceOpticalFlowImageFormatsNV_params *params = args; TRACE("%p, %p, %p, %p\n", params->physicalDevice, params->pOpticalFlowImageFormatInfo, params->pFormatCount, params->pImageFormatProperties); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceOpticalFlowImageFormatsNV(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pOpticalFlowImageFormatInfo, params->pFormatCount, params->pImageFormatProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceOpticalFlowImageFormatsNV(void *args) { struct { PTR32 physicalDevice; PTR32 pOpticalFlowImageFormatInfo; PTR32 pFormatCount; PTR32 pImageFormatProperties; VkResult result; } *params = args; VkOpticalFlowImageFormatInfoNV pOpticalFlowImageFormatInfo_host; VkOpticalFlowImageFormatPropertiesNV *pImageFormatProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->physicalDevice, params->pOpticalFlowImageFormatInfo, params->pFormatCount, params->pImageFormatProperties); init_conversion_context(&ctx); convert_VkOpticalFlowImageFormatInfoNV_win32_to_host((const VkOpticalFlowImageFormatInfoNV32 *)UlongToPtr(params->pOpticalFlowImageFormatInfo), &pOpticalFlowImageFormatInfo_host); pImageFormatProperties_host = convert_VkOpticalFlowImageFormatPropertiesNV_array_win32_to_host(&ctx, (VkOpticalFlowImageFormatPropertiesNV32 *)UlongToPtr(params->pImageFormatProperties), *(uint32_t *)UlongToPtr(params->pFormatCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceOpticalFlowImageFormatsNV(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pOpticalFlowImageFormatInfo_host, (uint32_t *)UlongToPtr(params->pFormatCount), pImageFormatProperties_host); convert_VkOpticalFlowImageFormatPropertiesNV_array_host_to_win32(pImageFormatProperties_host, (VkOpticalFlowImageFormatPropertiesNV32 *)UlongToPtr(params->pImageFormatProperties), *(uint32_t *)UlongToPtr(params->pFormatCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDevicePresentRectanglesKHR(void *args) { struct vkGetPhysicalDevicePresentRectanglesKHR_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->physicalDevice, wine_dbgstr_longlong(params->surface), params->pRectCount, params->pRects); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDevicePresentRectanglesKHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, wine_surface_from_handle(params->surface)->driver_surface, params->pRectCount, params->pRects); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDevicePresentRectanglesKHR(void *args) { struct { PTR32 physicalDevice; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; PTR32 pRectCount; PTR32 pRects; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x, %#x\n", params->physicalDevice, wine_dbgstr_longlong(params->surface), params->pRectCount, params->pRects); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDevicePresentRectanglesKHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, wine_surface_from_handle(params->surface)->driver_surface, (uint32_t *)UlongToPtr(params->pRectCount), (VkRect2D *)UlongToPtr(params->pRects)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceProperties(void *args) { struct vkGetPhysicalDeviceProperties_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceProperties(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pProperties; } *params = args; VkPhysicalDeviceProperties pProperties_host; TRACE("%#x, %#x\n", params->physicalDevice, params->pProperties); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceProperties(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pProperties_host); convert_VkPhysicalDeviceProperties_host_to_win32(&pProperties_host, (VkPhysicalDeviceProperties32 *)UlongToPtr(params->pProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceProperties2(void *args) { struct vkGetPhysicalDeviceProperties2_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceProperties2(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceProperties2(void *args) { struct { PTR32 physicalDevice; PTR32 pProperties; } *params = args; VkPhysicalDeviceProperties2 pProperties_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->physicalDevice, params->pProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceProperties2_win32_to_host(&ctx, (VkPhysicalDeviceProperties232 *)UlongToPtr(params->pProperties), &pProperties_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceProperties2(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pProperties_host); convert_VkPhysicalDeviceProperties2_host_to_win32(&pProperties_host, (VkPhysicalDeviceProperties232 *)UlongToPtr(params->pProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceProperties2KHR(void *args) { struct vkGetPhysicalDeviceProperties2KHR_params *params = args; TRACE("%p, %p\n", params->physicalDevice, params->pProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceProperties2KHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceProperties2KHR(void *args) { struct { PTR32 physicalDevice; PTR32 pProperties; } *params = args; VkPhysicalDeviceProperties2 pProperties_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->physicalDevice, params->pProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceProperties2_win32_to_host(&ctx, (VkPhysicalDeviceProperties232 *)UlongToPtr(params->pProperties), &pProperties_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceProperties2KHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pProperties_host); convert_VkPhysicalDeviceProperties2_host_to_win32(&pProperties_host, (VkPhysicalDeviceProperties232 *)UlongToPtr(params->pProperties)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(void *args) { struct vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pPerformanceQueryCreateInfo, params->pNumPasses); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pPerformanceQueryCreateInfo, params->pNumPasses); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(void *args) { struct { PTR32 physicalDevice; PTR32 pPerformanceQueryCreateInfo; PTR32 pNumPasses; } *params = args; VkQueryPoolPerformanceCreateInfoKHR pPerformanceQueryCreateInfo_host; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pPerformanceQueryCreateInfo, params->pNumPasses); convert_VkQueryPoolPerformanceCreateInfoKHR_win32_to_host((const VkQueryPoolPerformanceCreateInfoKHR32 *)UlongToPtr(params->pPerformanceQueryCreateInfo), &pPerformanceQueryCreateInfo_host); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pPerformanceQueryCreateInfo_host, (uint32_t *)UlongToPtr(params->pNumPasses)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceQueueFamilyProperties(void *args) { struct vkGetPhysicalDeviceQueueFamilyProperties_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceQueueFamilyProperties(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceQueueFamilyProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pQueueFamilyPropertyCount; PTR32 pQueueFamilyProperties; } *params = args; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceQueueFamilyProperties(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (uint32_t *)UlongToPtr(params->pQueueFamilyPropertyCount), (VkQueueFamilyProperties *)UlongToPtr(params->pQueueFamilyProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceQueueFamilyProperties2(void *args) { struct vkGetPhysicalDeviceQueueFamilyProperties2_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceQueueFamilyProperties2(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceQueueFamilyProperties2(void *args) { struct { PTR32 physicalDevice; PTR32 pQueueFamilyPropertyCount; PTR32 pQueueFamilyProperties; } *params = args; VkQueueFamilyProperties2 *pQueueFamilyProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); init_conversion_context(&ctx); pQueueFamilyProperties_host = convert_VkQueueFamilyProperties2_array_win32_to_host(&ctx, (VkQueueFamilyProperties232 *)UlongToPtr(params->pQueueFamilyProperties), *(uint32_t *)UlongToPtr(params->pQueueFamilyPropertyCount)); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceQueueFamilyProperties2(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (uint32_t *)UlongToPtr(params->pQueueFamilyPropertyCount), pQueueFamilyProperties_host); convert_VkQueueFamilyProperties2_array_host_to_win32(pQueueFamilyProperties_host, (VkQueueFamilyProperties232 *)UlongToPtr(params->pQueueFamilyProperties), *(uint32_t *)UlongToPtr(params->pQueueFamilyPropertyCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceQueueFamilyProperties2KHR(void *args) { struct vkGetPhysicalDeviceQueueFamilyProperties2KHR_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceQueueFamilyProperties2KHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceQueueFamilyProperties2KHR(void *args) { struct { PTR32 physicalDevice; PTR32 pQueueFamilyPropertyCount; PTR32 pQueueFamilyProperties; } *params = args; VkQueueFamilyProperties2 *pQueueFamilyProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pQueueFamilyPropertyCount, params->pQueueFamilyProperties); init_conversion_context(&ctx); pQueueFamilyProperties_host = convert_VkQueueFamilyProperties2_array_win32_to_host(&ctx, (VkQueueFamilyProperties232 *)UlongToPtr(params->pQueueFamilyProperties), *(uint32_t *)UlongToPtr(params->pQueueFamilyPropertyCount)); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceQueueFamilyProperties2KHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (uint32_t *)UlongToPtr(params->pQueueFamilyPropertyCount), pQueueFamilyProperties_host); convert_VkQueueFamilyProperties2_array_host_to_win32(pQueueFamilyProperties_host, (VkQueueFamilyProperties232 *)UlongToPtr(params->pQueueFamilyProperties), *(uint32_t *)UlongToPtr(params->pQueueFamilyPropertyCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSparseImageFormatProperties(void *args) { struct vkGetPhysicalDeviceSparseImageFormatProperties_params *params = args; TRACE("%p, %#x, %#x, %#x, %#x, %#x, %p, %p\n", params->physicalDevice, params->format, params->type, params->samples, params->usage, params->tiling, params->pPropertyCount, params->pProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceSparseImageFormatProperties(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->format, params->type, params->samples, params->usage, params->tiling, params->pPropertyCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSparseImageFormatProperties(void *args) { struct { PTR32 physicalDevice; VkFormat format; VkImageType type; VkSampleCountFlagBits samples; VkImageUsageFlags usage; VkImageTiling tiling; PTR32 pPropertyCount; PTR32 pProperties; } *params = args; TRACE("%#x, %#x, %#x, %#x, %#x, %#x, %#x, %#x\n", params->physicalDevice, params->format, params->type, params->samples, params->usage, params->tiling, params->pPropertyCount, params->pProperties); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSparseImageFormatProperties(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->format, params->type, params->samples, params->usage, params->tiling, (uint32_t *)UlongToPtr(params->pPropertyCount), (VkSparseImageFormatProperties *)UlongToPtr(params->pProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSparseImageFormatProperties2(void *args) { struct vkGetPhysicalDeviceSparseImageFormatProperties2_params *params = args; TRACE("%p, %p, %p, %p\n", params->physicalDevice, params->pFormatInfo, params->pPropertyCount, params->pProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceSparseImageFormatProperties2(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pFormatInfo, params->pPropertyCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSparseImageFormatProperties2(void *args) { struct { PTR32 physicalDevice; PTR32 pFormatInfo; PTR32 pPropertyCount; PTR32 pProperties; } *params = args; VkPhysicalDeviceSparseImageFormatInfo2 pFormatInfo_host; VkSparseImageFormatProperties2 *pProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->physicalDevice, params->pFormatInfo, params->pPropertyCount, params->pProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceSparseImageFormatInfo2_win32_to_host((const VkPhysicalDeviceSparseImageFormatInfo232 *)UlongToPtr(params->pFormatInfo), &pFormatInfo_host); pProperties_host = convert_VkSparseImageFormatProperties2_array_win32_to_host(&ctx, (VkSparseImageFormatProperties232 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pPropertyCount)); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSparseImageFormatProperties2(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pFormatInfo_host, (uint32_t *)UlongToPtr(params->pPropertyCount), pProperties_host); convert_VkSparseImageFormatProperties2_array_host_to_win32(pProperties_host, (VkSparseImageFormatProperties232 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pPropertyCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(void *args) { struct vkGetPhysicalDeviceSparseImageFormatProperties2KHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->physicalDevice, params->pFormatInfo, params->pPropertyCount, params->pProperties); wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pFormatInfo, params->pPropertyCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(void *args) { struct { PTR32 physicalDevice; PTR32 pFormatInfo; PTR32 pPropertyCount; PTR32 pProperties; } *params = args; VkPhysicalDeviceSparseImageFormatInfo2 pFormatInfo_host; VkSparseImageFormatProperties2 *pProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->physicalDevice, params->pFormatInfo, params->pPropertyCount, params->pProperties); init_conversion_context(&ctx); convert_VkPhysicalDeviceSparseImageFormatInfo2_win32_to_host((const VkPhysicalDeviceSparseImageFormatInfo232 *)UlongToPtr(params->pFormatInfo), &pFormatInfo_host); pProperties_host = convert_VkSparseImageFormatProperties2_array_win32_to_host(&ctx, (VkSparseImageFormatProperties232 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pPropertyCount)); wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pFormatInfo_host, (uint32_t *)UlongToPtr(params->pPropertyCount), pProperties_host); convert_VkSparseImageFormatProperties2_array_host_to_win32(pProperties_host, (VkSparseImageFormatProperties232 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pPropertyCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(void *args) { struct vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pCombinationCount, params->pCombinations); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pCombinationCount, params->pCombinations); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(void *args) { struct { PTR32 physicalDevice; PTR32 pCombinationCount; PTR32 pCombinations; VkResult result; } *params = args; VkFramebufferMixedSamplesCombinationNV *pCombinations_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pCombinationCount, params->pCombinations); init_conversion_context(&ctx); pCombinations_host = convert_VkFramebufferMixedSamplesCombinationNV_array_win32_to_host(&ctx, (VkFramebufferMixedSamplesCombinationNV32 *)UlongToPtr(params->pCombinations), *(uint32_t *)UlongToPtr(params->pCombinationCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (uint32_t *)UlongToPtr(params->pCombinationCount), pCombinations_host); convert_VkFramebufferMixedSamplesCombinationNV_array_host_to_win32(pCombinations_host, (VkFramebufferMixedSamplesCombinationNV32 *)UlongToPtr(params->pCombinations), *(uint32_t *)UlongToPtr(params->pCombinationCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSurfaceCapabilities2KHR(void *args) { struct vkGetPhysicalDeviceSurfaceCapabilities2KHR_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pSurfaceInfo, params->pSurfaceCapabilities); params->result = wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR(params->physicalDevice, params->pSurfaceInfo, params->pSurfaceCapabilities); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSurfaceCapabilities2KHR(void *args) { struct { PTR32 physicalDevice; PTR32 pSurfaceInfo; PTR32 pSurfaceCapabilities; VkResult result; } *params = args; VkPhysicalDeviceSurfaceInfo2KHR pSurfaceInfo_host; VkSurfaceCapabilities2KHR pSurfaceCapabilities_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pSurfaceInfo, params->pSurfaceCapabilities); init_conversion_context(&ctx); convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_unwrapped_host((const VkPhysicalDeviceSurfaceInfo2KHR32 *)UlongToPtr(params->pSurfaceInfo), &pSurfaceInfo_host); convert_VkSurfaceCapabilities2KHR_win32_to_host(&ctx, (VkSurfaceCapabilities2KHR32 *)UlongToPtr(params->pSurfaceCapabilities), &pSurfaceCapabilities_host); params->result = wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR((VkPhysicalDevice)UlongToPtr(params->physicalDevice), &pSurfaceInfo_host, &pSurfaceCapabilities_host); convert_VkSurfaceCapabilities2KHR_host_to_win32(&pSurfaceCapabilities_host, (VkSurfaceCapabilities2KHR32 *)UlongToPtr(params->pSurfaceCapabilities)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(void *args) { struct vkGetPhysicalDeviceSurfaceCapabilitiesKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->physicalDevice, wine_dbgstr_longlong(params->surface), params->pSurfaceCapabilities); params->result = wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(params->physicalDevice, params->surface, params->pSurfaceCapabilities); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(void *args) { struct { PTR32 physicalDevice; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; PTR32 pSurfaceCapabilities; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->physicalDevice, wine_dbgstr_longlong(params->surface), params->pSurfaceCapabilities); params->result = wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR((VkPhysicalDevice)UlongToPtr(params->physicalDevice), params->surface, (VkSurfaceCapabilitiesKHR *)UlongToPtr(params->pSurfaceCapabilities)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSurfaceFormats2KHR(void *args) { struct vkGetPhysicalDeviceSurfaceFormats2KHR_params *params = args; VkPhysicalDeviceSurfaceInfo2KHR pSurfaceInfo_host; TRACE("%p, %p, %p, %p\n", params->physicalDevice, params->pSurfaceInfo, params->pSurfaceFormatCount, params->pSurfaceFormats); convert_VkPhysicalDeviceSurfaceInfo2KHR_win64_to_host(params->pSurfaceInfo, &pSurfaceInfo_host); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceSurfaceFormats2KHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, &pSurfaceInfo_host, params->pSurfaceFormatCount, params->pSurfaceFormats); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSurfaceFormats2KHR(void *args) { struct { PTR32 physicalDevice; PTR32 pSurfaceInfo; PTR32 pSurfaceFormatCount; PTR32 pSurfaceFormats; VkResult result; } *params = args; VkPhysicalDeviceSurfaceInfo2KHR pSurfaceInfo_host; VkSurfaceFormat2KHR *pSurfaceFormats_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->physicalDevice, params->pSurfaceInfo, params->pSurfaceFormatCount, params->pSurfaceFormats); init_conversion_context(&ctx); convert_VkPhysicalDeviceSurfaceInfo2KHR_win32_to_host((const VkPhysicalDeviceSurfaceInfo2KHR32 *)UlongToPtr(params->pSurfaceInfo), &pSurfaceInfo_host); pSurfaceFormats_host = convert_VkSurfaceFormat2KHR_array_win32_to_host(&ctx, (VkSurfaceFormat2KHR32 *)UlongToPtr(params->pSurfaceFormats), *(uint32_t *)UlongToPtr(params->pSurfaceFormatCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSurfaceFormats2KHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, &pSurfaceInfo_host, (uint32_t *)UlongToPtr(params->pSurfaceFormatCount), pSurfaceFormats_host); convert_VkSurfaceFormat2KHR_array_host_to_win32(pSurfaceFormats_host, (VkSurfaceFormat2KHR32 *)UlongToPtr(params->pSurfaceFormats), *(uint32_t *)UlongToPtr(params->pSurfaceFormatCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSurfaceFormatsKHR(void *args) { struct vkGetPhysicalDeviceSurfaceFormatsKHR_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->physicalDevice, wine_dbgstr_longlong(params->surface), params->pSurfaceFormatCount, params->pSurfaceFormats); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceSurfaceFormatsKHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->surface ? wine_surface_from_handle(params->surface)->driver_surface : 0, params->pSurfaceFormatCount, params->pSurfaceFormats); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSurfaceFormatsKHR(void *args) { struct { PTR32 physicalDevice; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; PTR32 pSurfaceFormatCount; PTR32 pSurfaceFormats; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x, %#x\n", params->physicalDevice, wine_dbgstr_longlong(params->surface), params->pSurfaceFormatCount, params->pSurfaceFormats); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSurfaceFormatsKHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->surface ? wine_surface_from_handle(params->surface)->driver_surface : 0, (uint32_t *)UlongToPtr(params->pSurfaceFormatCount), (VkSurfaceFormatKHR *)UlongToPtr(params->pSurfaceFormats)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSurfacePresentModesKHR(void *args) { struct vkGetPhysicalDeviceSurfacePresentModesKHR_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->physicalDevice, wine_dbgstr_longlong(params->surface), params->pPresentModeCount, params->pPresentModes); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceSurfacePresentModesKHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->surface ? wine_surface_from_handle(params->surface)->driver_surface : 0, params->pPresentModeCount, params->pPresentModes); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSurfacePresentModesKHR(void *args) { struct { PTR32 physicalDevice; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; PTR32 pPresentModeCount; PTR32 pPresentModes; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x, %#x\n", params->physicalDevice, wine_dbgstr_longlong(params->surface), params->pPresentModeCount, params->pPresentModes); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSurfacePresentModesKHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->surface ? wine_surface_from_handle(params->surface)->driver_surface : 0, (uint32_t *)UlongToPtr(params->pPresentModeCount), (VkPresentModeKHR *)UlongToPtr(params->pPresentModes)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceSurfaceSupportKHR(void *args) { struct vkGetPhysicalDeviceSurfaceSupportKHR_params *params = args; TRACE("%p, %u, 0x%s, %p\n", params->physicalDevice, params->queueFamilyIndex, wine_dbgstr_longlong(params->surface), params->pSupported); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceSurfaceSupportKHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->queueFamilyIndex, wine_surface_from_handle(params->surface)->driver_surface, params->pSupported); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceSurfaceSupportKHR(void *args) { struct { PTR32 physicalDevice; uint32_t queueFamilyIndex; VkSurfaceKHR DECLSPEC_ALIGN(8) surface; PTR32 pSupported; VkResult result; } *params = args; TRACE("%#x, %u, 0x%s, %#x\n", params->physicalDevice, params->queueFamilyIndex, wine_dbgstr_longlong(params->surface), params->pSupported); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceSurfaceSupportKHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->queueFamilyIndex, wine_surface_from_handle(params->surface)->driver_surface, (VkBool32 *)UlongToPtr(params->pSupported)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceToolProperties(void *args) { struct vkGetPhysicalDeviceToolProperties_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pToolCount, params->pToolProperties); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceToolProperties(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pToolCount, params->pToolProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceToolProperties(void *args) { struct { PTR32 physicalDevice; PTR32 pToolCount; PTR32 pToolProperties; VkResult result; } *params = args; VkPhysicalDeviceToolProperties *pToolProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pToolCount, params->pToolProperties); init_conversion_context(&ctx); pToolProperties_host = convert_VkPhysicalDeviceToolProperties_array_win32_to_host(&ctx, (VkPhysicalDeviceToolProperties32 *)UlongToPtr(params->pToolProperties), *(uint32_t *)UlongToPtr(params->pToolCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceToolProperties(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (uint32_t *)UlongToPtr(params->pToolCount), pToolProperties_host); convert_VkPhysicalDeviceToolProperties_array_host_to_win32(pToolProperties_host, (VkPhysicalDeviceToolProperties32 *)UlongToPtr(params->pToolProperties), *(uint32_t *)UlongToPtr(params->pToolCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceToolPropertiesEXT(void *args) { struct vkGetPhysicalDeviceToolPropertiesEXT_params *params = args; TRACE("%p, %p, %p\n", params->physicalDevice, params->pToolCount, params->pToolProperties); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceToolPropertiesEXT(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->pToolCount, params->pToolProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceToolPropertiesEXT(void *args) { struct { PTR32 physicalDevice; PTR32 pToolCount; PTR32 pToolProperties; VkResult result; } *params = args; VkPhysicalDeviceToolProperties *pToolProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->physicalDevice, params->pToolCount, params->pToolProperties); init_conversion_context(&ctx); pToolProperties_host = convert_VkPhysicalDeviceToolProperties_array_win32_to_host(&ctx, (VkPhysicalDeviceToolProperties32 *)UlongToPtr(params->pToolProperties), *(uint32_t *)UlongToPtr(params->pToolCount)); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceToolPropertiesEXT(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, (uint32_t *)UlongToPtr(params->pToolCount), pToolProperties_host); convert_VkPhysicalDeviceToolProperties_array_host_to_win32(pToolProperties_host, (VkPhysicalDeviceToolProperties32 *)UlongToPtr(params->pToolProperties), *(uint32_t *)UlongToPtr(params->pToolCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPhysicalDeviceWin32PresentationSupportKHR(void *args) { struct vkGetPhysicalDeviceWin32PresentationSupportKHR_params *params = args; TRACE("%p, %u\n", params->physicalDevice, params->queueFamilyIndex); params->result = wine_phys_dev_from_handle(params->physicalDevice)->instance->funcs.p_vkGetPhysicalDeviceWin32PresentationSupportKHR(wine_phys_dev_from_handle(params->physicalDevice)->phys_dev, params->queueFamilyIndex); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPhysicalDeviceWin32PresentationSupportKHR(void *args) { struct { PTR32 physicalDevice; uint32_t queueFamilyIndex; VkBool32 result; } *params = args; TRACE("%#x, %u\n", params->physicalDevice, params->queueFamilyIndex); params->result = wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->instance->funcs.p_vkGetPhysicalDeviceWin32PresentationSupportKHR(wine_phys_dev_from_handle((VkPhysicalDevice)UlongToPtr(params->physicalDevice))->phys_dev, params->queueFamilyIndex); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPipelineCacheData(void *args) { struct vkGetPipelineCacheData_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->pDataSize, params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetPipelineCacheData(wine_device_from_handle(params->device)->device, params->pipelineCache, params->pDataSize, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPipelineCacheData(void *args) { struct { PTR32 device; VkPipelineCache DECLSPEC_ALIGN(8) pipelineCache; PTR32 pDataSize; PTR32 pData; VkResult result; } *params = args; size_t pDataSize_host; TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->pipelineCache), params->pDataSize, params->pData); pDataSize_host = *(PTR32 *)UlongToPtr(params->pDataSize); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetPipelineCacheData(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipelineCache, &pDataSize_host, (void *)UlongToPtr(params->pData)); *(PTR32 *)UlongToPtr(params->pDataSize) = pDataSize_host; return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPipelineExecutableInternalRepresentationsKHR(void *args) { struct vkGetPipelineExecutableInternalRepresentationsKHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pExecutableInfo, params->pInternalRepresentationCount, params->pInternalRepresentations); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetPipelineExecutableInternalRepresentationsKHR(wine_device_from_handle(params->device)->device, params->pExecutableInfo, params->pInternalRepresentationCount, params->pInternalRepresentations); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPipelineExecutableInternalRepresentationsKHR(void *args) { struct { PTR32 device; PTR32 pExecutableInfo; PTR32 pInternalRepresentationCount; PTR32 pInternalRepresentations; VkResult result; } *params = args; VkPipelineExecutableInfoKHR pExecutableInfo_host; VkPipelineExecutableInternalRepresentationKHR *pInternalRepresentations_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pExecutableInfo, params->pInternalRepresentationCount, params->pInternalRepresentations); init_conversion_context(&ctx); convert_VkPipelineExecutableInfoKHR_win32_to_host((const VkPipelineExecutableInfoKHR32 *)UlongToPtr(params->pExecutableInfo), &pExecutableInfo_host); pInternalRepresentations_host = convert_VkPipelineExecutableInternalRepresentationKHR_array_win32_to_host(&ctx, (VkPipelineExecutableInternalRepresentationKHR32 *)UlongToPtr(params->pInternalRepresentations), *(uint32_t *)UlongToPtr(params->pInternalRepresentationCount)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetPipelineExecutableInternalRepresentationsKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pExecutableInfo_host, (uint32_t *)UlongToPtr(params->pInternalRepresentationCount), pInternalRepresentations_host); convert_VkPipelineExecutableInternalRepresentationKHR_array_host_to_win32(pInternalRepresentations_host, (VkPipelineExecutableInternalRepresentationKHR32 *)UlongToPtr(params->pInternalRepresentations), *(uint32_t *)UlongToPtr(params->pInternalRepresentationCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPipelineExecutablePropertiesKHR(void *args) { struct vkGetPipelineExecutablePropertiesKHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pPipelineInfo, params->pExecutableCount, params->pProperties); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetPipelineExecutablePropertiesKHR(wine_device_from_handle(params->device)->device, params->pPipelineInfo, params->pExecutableCount, params->pProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPipelineExecutablePropertiesKHR(void *args) { struct { PTR32 device; PTR32 pPipelineInfo; PTR32 pExecutableCount; PTR32 pProperties; VkResult result; } *params = args; VkPipelineInfoKHR pPipelineInfo_host; VkPipelineExecutablePropertiesKHR *pProperties_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pPipelineInfo, params->pExecutableCount, params->pProperties); init_conversion_context(&ctx); convert_VkPipelineInfoKHR_win32_to_host((const VkPipelineInfoKHR32 *)UlongToPtr(params->pPipelineInfo), &pPipelineInfo_host); pProperties_host = convert_VkPipelineExecutablePropertiesKHR_array_win32_to_host(&ctx, (VkPipelineExecutablePropertiesKHR32 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pExecutableCount)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetPipelineExecutablePropertiesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pPipelineInfo_host, (uint32_t *)UlongToPtr(params->pExecutableCount), pProperties_host); convert_VkPipelineExecutablePropertiesKHR_array_host_to_win32(pProperties_host, (VkPipelineExecutablePropertiesKHR32 *)UlongToPtr(params->pProperties), *(uint32_t *)UlongToPtr(params->pExecutableCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPipelineExecutableStatisticsKHR(void *args) { struct vkGetPipelineExecutableStatisticsKHR_params *params = args; TRACE("%p, %p, %p, %p\n", params->device, params->pExecutableInfo, params->pStatisticCount, params->pStatistics); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetPipelineExecutableStatisticsKHR(wine_device_from_handle(params->device)->device, params->pExecutableInfo, params->pStatisticCount, params->pStatistics); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPipelineExecutableStatisticsKHR(void *args) { struct { PTR32 device; PTR32 pExecutableInfo; PTR32 pStatisticCount; PTR32 pStatistics; VkResult result; } *params = args; VkPipelineExecutableInfoKHR pExecutableInfo_host; VkPipelineExecutableStatisticKHR *pStatistics_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->device, params->pExecutableInfo, params->pStatisticCount, params->pStatistics); init_conversion_context(&ctx); convert_VkPipelineExecutableInfoKHR_win32_to_host((const VkPipelineExecutableInfoKHR32 *)UlongToPtr(params->pExecutableInfo), &pExecutableInfo_host); pStatistics_host = convert_VkPipelineExecutableStatisticKHR_array_win32_to_host(&ctx, (VkPipelineExecutableStatisticKHR32 *)UlongToPtr(params->pStatistics), *(uint32_t *)UlongToPtr(params->pStatisticCount)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetPipelineExecutableStatisticsKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pExecutableInfo_host, (uint32_t *)UlongToPtr(params->pStatisticCount), pStatistics_host); convert_VkPipelineExecutableStatisticKHR_array_host_to_win32(pStatistics_host, (VkPipelineExecutableStatisticKHR32 *)UlongToPtr(params->pStatistics), *(uint32_t *)UlongToPtr(params->pStatisticCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPipelinePropertiesEXT(void *args) { struct vkGetPipelinePropertiesEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pPipelineInfo, params->pPipelineProperties); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetPipelinePropertiesEXT(wine_device_from_handle(params->device)->device, params->pPipelineInfo, params->pPipelineProperties); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPipelinePropertiesEXT(void *args) { struct { PTR32 device; PTR32 pPipelineInfo; PTR32 pPipelineProperties; VkResult result; } *params = args; VkPipelineInfoEXT pPipelineInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pPipelineInfo, params->pPipelineProperties); convert_VkPipelineInfoEXT_win32_to_host((const VkPipelineInfoEXT32 *)UlongToPtr(params->pPipelineInfo), &pPipelineInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetPipelinePropertiesEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pPipelineInfo_host, (VkBaseOutStructure *)UlongToPtr(params->pPipelineProperties)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPrivateData(void *args) { struct vkGetPrivateData_params *params = args; TRACE("%p, %#x, 0x%s, 0x%s, %p\n", params->device, params->objectType, wine_dbgstr_longlong(params->objectHandle), wine_dbgstr_longlong(params->privateDataSlot), params->pData); wine_device_from_handle(params->device)->funcs.p_vkGetPrivateData(wine_device_from_handle(params->device)->device, params->objectType, wine_vk_unwrap_handle(params->objectType, params->objectHandle), params->privateDataSlot, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPrivateData(void *args) { struct { PTR32 device; VkObjectType objectType; uint64_t DECLSPEC_ALIGN(8) objectHandle; VkPrivateDataSlot DECLSPEC_ALIGN(8) privateDataSlot; PTR32 pData; } *params = args; TRACE("%#x, %#x, 0x%s, 0x%s, %#x\n", params->device, params->objectType, wine_dbgstr_longlong(params->objectHandle), wine_dbgstr_longlong(params->privateDataSlot), params->pData); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetPrivateData(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->objectType, wine_vk_unwrap_handle(params->objectType, params->objectHandle), params->privateDataSlot, (uint64_t *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetPrivateDataEXT(void *args) { struct vkGetPrivateDataEXT_params *params = args; TRACE("%p, %#x, 0x%s, 0x%s, %p\n", params->device, params->objectType, wine_dbgstr_longlong(params->objectHandle), wine_dbgstr_longlong(params->privateDataSlot), params->pData); wine_device_from_handle(params->device)->funcs.p_vkGetPrivateDataEXT(wine_device_from_handle(params->device)->device, params->objectType, wine_vk_unwrap_handle(params->objectType, params->objectHandle), params->privateDataSlot, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetPrivateDataEXT(void *args) { struct { PTR32 device; VkObjectType objectType; uint64_t DECLSPEC_ALIGN(8) objectHandle; VkPrivateDataSlot DECLSPEC_ALIGN(8) privateDataSlot; PTR32 pData; } *params = args; TRACE("%#x, %#x, 0x%s, 0x%s, %#x\n", params->device, params->objectType, wine_dbgstr_longlong(params->objectHandle), wine_dbgstr_longlong(params->privateDataSlot), params->pData); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetPrivateDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->objectType, wine_vk_unwrap_handle(params->objectType, params->objectHandle), params->privateDataSlot, (uint64_t *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetQueryPoolResults(void *args) { struct vkGetQueryPoolResults_params *params = args; TRACE("%p, 0x%s, %u, %u, 0x%s, %p, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount, wine_dbgstr_longlong(params->dataSize), params->pData, wine_dbgstr_longlong(params->stride), params->flags); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetQueryPoolResults(wine_device_from_handle(params->device)->device, params->queryPool, params->firstQuery, params->queryCount, params->dataSize, params->pData, params->stride, params->flags); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetQueryPoolResults(void *args) { struct { PTR32 device; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t firstQuery; uint32_t queryCount; PTR32 dataSize; PTR32 pData; VkDeviceSize DECLSPEC_ALIGN(8) stride; VkQueryResultFlags flags; VkResult result; } *params = args; TRACE("%#x, 0x%s, %u, %u, 0x%s, %#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount, wine_dbgstr_longlong(params->dataSize), params->pData, wine_dbgstr_longlong(params->stride), params->flags); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetQueryPoolResults(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->queryPool, params->firstQuery, params->queryCount, params->dataSize, (void *)UlongToPtr(params->pData), params->stride, params->flags); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetQueueCheckpointData2NV(void *args) { struct vkGetQueueCheckpointData2NV_params *params = args; TRACE("%p, %p, %p\n", params->queue, params->pCheckpointDataCount, params->pCheckpointData); wine_queue_from_handle(params->queue)->device->funcs.p_vkGetQueueCheckpointData2NV(wine_queue_from_handle(params->queue)->queue, params->pCheckpointDataCount, params->pCheckpointData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetQueueCheckpointData2NV(void *args) { struct { PTR32 queue; PTR32 pCheckpointDataCount; PTR32 pCheckpointData; } *params = args; VkCheckpointData2NV *pCheckpointData_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->queue, params->pCheckpointDataCount, params->pCheckpointData); init_conversion_context(&ctx); pCheckpointData_host = convert_VkCheckpointData2NV_array_win32_to_host(&ctx, (VkCheckpointData2NV32 *)UlongToPtr(params->pCheckpointData), *(uint32_t *)UlongToPtr(params->pCheckpointDataCount)); wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkGetQueueCheckpointData2NV(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, (uint32_t *)UlongToPtr(params->pCheckpointDataCount), pCheckpointData_host); convert_VkCheckpointData2NV_array_host_to_win32(pCheckpointData_host, (VkCheckpointData2NV32 *)UlongToPtr(params->pCheckpointData), *(uint32_t *)UlongToPtr(params->pCheckpointDataCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetQueueCheckpointDataNV(void *args) { struct vkGetQueueCheckpointDataNV_params *params = args; TRACE("%p, %p, %p\n", params->queue, params->pCheckpointDataCount, params->pCheckpointData); wine_queue_from_handle(params->queue)->device->funcs.p_vkGetQueueCheckpointDataNV(wine_queue_from_handle(params->queue)->queue, params->pCheckpointDataCount, params->pCheckpointData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetQueueCheckpointDataNV(void *args) { struct { PTR32 queue; PTR32 pCheckpointDataCount; PTR32 pCheckpointData; } *params = args; VkCheckpointDataNV *pCheckpointData_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->queue, params->pCheckpointDataCount, params->pCheckpointData); init_conversion_context(&ctx); pCheckpointData_host = convert_VkCheckpointDataNV_array_win32_to_host(&ctx, (VkCheckpointDataNV32 *)UlongToPtr(params->pCheckpointData), *(uint32_t *)UlongToPtr(params->pCheckpointDataCount)); wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkGetQueueCheckpointDataNV(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, (uint32_t *)UlongToPtr(params->pCheckpointDataCount), pCheckpointData_host); convert_VkCheckpointDataNV_array_host_to_win32(pCheckpointData_host, (VkCheckpointDataNV32 *)UlongToPtr(params->pCheckpointData), *(uint32_t *)UlongToPtr(params->pCheckpointDataCount)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(void *args) { struct vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_params *params = args; TRACE("%p, 0x%s, %u, %u, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->pipeline), params->firstGroup, params->groupCount, wine_dbgstr_longlong(params->dataSize), params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(wine_device_from_handle(params->device)->device, params->pipeline, params->firstGroup, params->groupCount, params->dataSize, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(void *args) { struct { PTR32 device; VkPipeline DECLSPEC_ALIGN(8) pipeline; uint32_t firstGroup; uint32_t groupCount; PTR32 dataSize; PTR32 pData; VkResult result; } *params = args; TRACE("%#x, 0x%s, %u, %u, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->pipeline), params->firstGroup, params->groupCount, wine_dbgstr_longlong(params->dataSize), params->pData); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipeline, params->firstGroup, params->groupCount, params->dataSize, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetRayTracingShaderGroupHandlesKHR(void *args) { struct vkGetRayTracingShaderGroupHandlesKHR_params *params = args; TRACE("%p, 0x%s, %u, %u, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->pipeline), params->firstGroup, params->groupCount, wine_dbgstr_longlong(params->dataSize), params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetRayTracingShaderGroupHandlesKHR(wine_device_from_handle(params->device)->device, params->pipeline, params->firstGroup, params->groupCount, params->dataSize, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetRayTracingShaderGroupHandlesKHR(void *args) { struct { PTR32 device; VkPipeline DECLSPEC_ALIGN(8) pipeline; uint32_t firstGroup; uint32_t groupCount; PTR32 dataSize; PTR32 pData; VkResult result; } *params = args; TRACE("%#x, 0x%s, %u, %u, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->pipeline), params->firstGroup, params->groupCount, wine_dbgstr_longlong(params->dataSize), params->pData); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetRayTracingShaderGroupHandlesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipeline, params->firstGroup, params->groupCount, params->dataSize, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetRayTracingShaderGroupHandlesNV(void *args) { struct vkGetRayTracingShaderGroupHandlesNV_params *params = args; TRACE("%p, 0x%s, %u, %u, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->pipeline), params->firstGroup, params->groupCount, wine_dbgstr_longlong(params->dataSize), params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetRayTracingShaderGroupHandlesNV(wine_device_from_handle(params->device)->device, params->pipeline, params->firstGroup, params->groupCount, params->dataSize, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetRayTracingShaderGroupHandlesNV(void *args) { struct { PTR32 device; VkPipeline DECLSPEC_ALIGN(8) pipeline; uint32_t firstGroup; uint32_t groupCount; PTR32 dataSize; PTR32 pData; VkResult result; } *params = args; TRACE("%#x, 0x%s, %u, %u, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->pipeline), params->firstGroup, params->groupCount, wine_dbgstr_longlong(params->dataSize), params->pData); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetRayTracingShaderGroupHandlesNV(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipeline, params->firstGroup, params->groupCount, params->dataSize, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetRayTracingShaderGroupStackSizeKHR(void *args) { struct vkGetRayTracingShaderGroupStackSizeKHR_params *params = args; TRACE("%p, 0x%s, %u, %#x\n", params->device, wine_dbgstr_longlong(params->pipeline), params->group, params->groupShader); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetRayTracingShaderGroupStackSizeKHR(wine_device_from_handle(params->device)->device, params->pipeline, params->group, params->groupShader); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetRayTracingShaderGroupStackSizeKHR(void *args) { struct { PTR32 device; VkPipeline DECLSPEC_ALIGN(8) pipeline; uint32_t group; VkShaderGroupShaderKHR groupShader; VkDeviceSize result; } *params = args; TRACE("%#x, 0x%s, %u, %#x\n", params->device, wine_dbgstr_longlong(params->pipeline), params->group, params->groupShader); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetRayTracingShaderGroupStackSizeKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipeline, params->group, params->groupShader); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetRenderAreaGranularity(void *args) { struct vkGetRenderAreaGranularity_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->renderPass), params->pGranularity); wine_device_from_handle(params->device)->funcs.p_vkGetRenderAreaGranularity(wine_device_from_handle(params->device)->device, params->renderPass, params->pGranularity); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetRenderAreaGranularity(void *args) { struct { PTR32 device; VkRenderPass DECLSPEC_ALIGN(8) renderPass; PTR32 pGranularity; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->renderPass), params->pGranularity); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetRenderAreaGranularity(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->renderPass, (VkExtent2D *)UlongToPtr(params->pGranularity)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetSamplerOpaqueCaptureDescriptorDataEXT(void *args) { struct vkGetSamplerOpaqueCaptureDescriptorDataEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pInfo, params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetSamplerOpaqueCaptureDescriptorDataEXT(wine_device_from_handle(params->device)->device, params->pInfo, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetSamplerOpaqueCaptureDescriptorDataEXT(void *args) { struct { PTR32 device; PTR32 pInfo; PTR32 pData; VkResult result; } *params = args; VkSamplerCaptureDescriptorDataInfoEXT pInfo_host; TRACE("%#x, %#x, %#x\n", params->device, params->pInfo, params->pData); convert_VkSamplerCaptureDescriptorDataInfoEXT_win32_to_host((const VkSamplerCaptureDescriptorDataInfoEXT32 *)UlongToPtr(params->pInfo), &pInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetSamplerOpaqueCaptureDescriptorDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInfo_host, (void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetSemaphoreCounterValue(void *args) { struct vkGetSemaphoreCounterValue_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->semaphore), params->pValue); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetSemaphoreCounterValue(wine_device_from_handle(params->device)->device, params->semaphore, params->pValue); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetSemaphoreCounterValue(void *args) { struct { PTR32 device; VkSemaphore DECLSPEC_ALIGN(8) semaphore; PTR32 pValue; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->semaphore), params->pValue); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetSemaphoreCounterValue(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->semaphore, (uint64_t *)UlongToPtr(params->pValue)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetSemaphoreCounterValueKHR(void *args) { struct vkGetSemaphoreCounterValueKHR_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->semaphore), params->pValue); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetSemaphoreCounterValueKHR(wine_device_from_handle(params->device)->device, params->semaphore, params->pValue); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetSemaphoreCounterValueKHR(void *args) { struct { PTR32 device; VkSemaphore DECLSPEC_ALIGN(8) semaphore; PTR32 pValue; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->semaphore), params->pValue); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetSemaphoreCounterValueKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->semaphore, (uint64_t *)UlongToPtr(params->pValue)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetShaderInfoAMD(void *args) { struct vkGetShaderInfoAMD_params *params = args; TRACE("%p, 0x%s, %#x, %#x, %p, %p\n", params->device, wine_dbgstr_longlong(params->pipeline), params->shaderStage, params->infoType, params->pInfoSize, params->pInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetShaderInfoAMD(wine_device_from_handle(params->device)->device, params->pipeline, params->shaderStage, params->infoType, params->pInfoSize, params->pInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetShaderInfoAMD(void *args) { struct { PTR32 device; VkPipeline DECLSPEC_ALIGN(8) pipeline; VkShaderStageFlagBits shaderStage; VkShaderInfoTypeAMD infoType; PTR32 pInfoSize; PTR32 pInfo; VkResult result; } *params = args; size_t pInfoSize_host; TRACE("%#x, 0x%s, %#x, %#x, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->pipeline), params->shaderStage, params->infoType, params->pInfoSize, params->pInfo); pInfoSize_host = *(PTR32 *)UlongToPtr(params->pInfoSize); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetShaderInfoAMD(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->pipeline, params->shaderStage, params->infoType, &pInfoSize_host, (void *)UlongToPtr(params->pInfo)); *(PTR32 *)UlongToPtr(params->pInfoSize) = pInfoSize_host; return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetShaderModuleCreateInfoIdentifierEXT(void *args) { struct vkGetShaderModuleCreateInfoIdentifierEXT_params *params = args; TRACE("%p, %p, %p\n", params->device, params->pCreateInfo, params->pIdentifier); wine_device_from_handle(params->device)->funcs.p_vkGetShaderModuleCreateInfoIdentifierEXT(wine_device_from_handle(params->device)->device, params->pCreateInfo, params->pIdentifier); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetShaderModuleCreateInfoIdentifierEXT(void *args) { struct { PTR32 device; PTR32 pCreateInfo; PTR32 pIdentifier; } *params = args; VkShaderModuleCreateInfo pCreateInfo_host; VkShaderModuleIdentifierEXT pIdentifier_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x\n", params->device, params->pCreateInfo, params->pIdentifier); init_conversion_context(&ctx); convert_VkShaderModuleCreateInfo_win32_to_host(&ctx, (const VkShaderModuleCreateInfo32 *)UlongToPtr(params->pCreateInfo), &pCreateInfo_host); convert_VkShaderModuleIdentifierEXT_win32_to_host((VkShaderModuleIdentifierEXT32 *)UlongToPtr(params->pIdentifier), &pIdentifier_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetShaderModuleCreateInfoIdentifierEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pCreateInfo_host, &pIdentifier_host); convert_VkShaderModuleIdentifierEXT_host_to_win32(&pIdentifier_host, (VkShaderModuleIdentifierEXT32 *)UlongToPtr(params->pIdentifier)); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetShaderModuleIdentifierEXT(void *args) { struct vkGetShaderModuleIdentifierEXT_params *params = args; TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->shaderModule), params->pIdentifier); wine_device_from_handle(params->device)->funcs.p_vkGetShaderModuleIdentifierEXT(wine_device_from_handle(params->device)->device, params->shaderModule, params->pIdentifier); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetShaderModuleIdentifierEXT(void *args) { struct { PTR32 device; VkShaderModule DECLSPEC_ALIGN(8) shaderModule; PTR32 pIdentifier; } *params = args; VkShaderModuleIdentifierEXT pIdentifier_host; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->shaderModule), params->pIdentifier); convert_VkShaderModuleIdentifierEXT_win32_to_host((VkShaderModuleIdentifierEXT32 *)UlongToPtr(params->pIdentifier), &pIdentifier_host); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetShaderModuleIdentifierEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->shaderModule, &pIdentifier_host); convert_VkShaderModuleIdentifierEXT_host_to_win32(&pIdentifier_host, (VkShaderModuleIdentifierEXT32 *)UlongToPtr(params->pIdentifier)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetSwapchainImagesKHR(void *args) { struct vkGetSwapchainImagesKHR_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->swapchain), params->pSwapchainImageCount, params->pSwapchainImages); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetSwapchainImagesKHR(wine_device_from_handle(params->device)->device, params->swapchain, params->pSwapchainImageCount, params->pSwapchainImages); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetSwapchainImagesKHR(void *args) { struct { PTR32 device; VkSwapchainKHR DECLSPEC_ALIGN(8) swapchain; PTR32 pSwapchainImageCount; PTR32 pSwapchainImages; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->swapchain), params->pSwapchainImageCount, params->pSwapchainImages); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetSwapchainImagesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->swapchain, (uint32_t *)UlongToPtr(params->pSwapchainImageCount), (VkImage *)UlongToPtr(params->pSwapchainImages)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkGetValidationCacheDataEXT(void *args) { struct vkGetValidationCacheDataEXT_params *params = args; TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->validationCache), params->pDataSize, params->pData); params->result = wine_device_from_handle(params->device)->funcs.p_vkGetValidationCacheDataEXT(wine_device_from_handle(params->device)->device, params->validationCache, params->pDataSize, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkGetValidationCacheDataEXT(void *args) { struct { PTR32 device; VkValidationCacheEXT DECLSPEC_ALIGN(8) validationCache; PTR32 pDataSize; PTR32 pData; VkResult result; } *params = args; size_t pDataSize_host; TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->validationCache), params->pDataSize, params->pData); pDataSize_host = *(PTR32 *)UlongToPtr(params->pDataSize); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetValidationCacheDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->validationCache, &pDataSize_host, (void *)UlongToPtr(params->pData)); *(PTR32 *)UlongToPtr(params->pDataSize) = pDataSize_host; return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkInitializePerformanceApiINTEL(void *args) { struct vkInitializePerformanceApiINTEL_params *params = args; TRACE("%p, %p\n", params->device, params->pInitializeInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkInitializePerformanceApiINTEL(wine_device_from_handle(params->device)->device, params->pInitializeInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkInitializePerformanceApiINTEL(void *args) { struct { PTR32 device; PTR32 pInitializeInfo; VkResult result; } *params = args; VkInitializePerformanceApiInfoINTEL pInitializeInfo_host; TRACE("%#x, %#x\n", params->device, params->pInitializeInfo); convert_VkInitializePerformanceApiInfoINTEL_win32_to_host((const VkInitializePerformanceApiInfoINTEL32 *)UlongToPtr(params->pInitializeInfo), &pInitializeInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkInitializePerformanceApiINTEL(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pInitializeInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkInvalidateMappedMemoryRanges(void *args) { struct vkInvalidateMappedMemoryRanges_params *params = args; const VkMappedMemoryRange *pMemoryRanges_host; struct conversion_context ctx; TRACE("%p, %u, %p\n", params->device, params->memoryRangeCount, params->pMemoryRanges); init_conversion_context(&ctx); pMemoryRanges_host = convert_VkMappedMemoryRange_array_win64_to_host(&ctx, params->pMemoryRanges, params->memoryRangeCount); params->result = wine_device_from_handle(params->device)->funcs.p_vkInvalidateMappedMemoryRanges(wine_device_from_handle(params->device)->device, params->memoryRangeCount, pMemoryRanges_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkInvalidateMappedMemoryRanges(void *args) { struct { PTR32 device; uint32_t memoryRangeCount; PTR32 pMemoryRanges; VkResult result; } *params = args; const VkMappedMemoryRange *pMemoryRanges_host; struct conversion_context ctx; TRACE("%#x, %u, %#x\n", params->device, params->memoryRangeCount, params->pMemoryRanges); init_conversion_context(&ctx); pMemoryRanges_host = convert_VkMappedMemoryRange_array_win32_to_host(&ctx, (const VkMappedMemoryRange32 *)UlongToPtr(params->pMemoryRanges), params->memoryRangeCount); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkInvalidateMappedMemoryRanges(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->memoryRangeCount, pMemoryRanges_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkMapMemory(void *args) { struct vkMapMemory_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s, %#x, %p\n", params->device, wine_dbgstr_longlong(params->memory), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->size), params->flags, params->ppData); params->result = wine_vkMapMemory(params->device, params->memory, params->offset, params->size, params->flags, params->ppData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkMapMemory(void *args) { struct { PTR32 device; VkDeviceMemory DECLSPEC_ALIGN(8) memory; VkDeviceSize DECLSPEC_ALIGN(8) offset; VkDeviceSize DECLSPEC_ALIGN(8) size; VkMemoryMapFlags flags; PTR32 ppData; VkResult result; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->memory), wine_dbgstr_longlong(params->offset), wine_dbgstr_longlong(params->size), params->flags, params->ppData); params->result = wine_vkMapMemory((VkDevice)UlongToPtr(params->device), params->memory, params->offset, params->size, params->flags, (void **)UlongToPtr(params->ppData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkMergePipelineCaches(void *args) { struct vkMergePipelineCaches_params *params = args; TRACE("%p, 0x%s, %u, %p\n", params->device, wine_dbgstr_longlong(params->dstCache), params->srcCacheCount, params->pSrcCaches); params->result = wine_device_from_handle(params->device)->funcs.p_vkMergePipelineCaches(wine_device_from_handle(params->device)->device, params->dstCache, params->srcCacheCount, params->pSrcCaches); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkMergePipelineCaches(void *args) { struct { PTR32 device; VkPipelineCache DECLSPEC_ALIGN(8) dstCache; uint32_t srcCacheCount; PTR32 pSrcCaches; VkResult result; } *params = args; TRACE("%#x, 0x%s, %u, %#x\n", params->device, wine_dbgstr_longlong(params->dstCache), params->srcCacheCount, params->pSrcCaches); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkMergePipelineCaches(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->dstCache, params->srcCacheCount, (const VkPipelineCache *)UlongToPtr(params->pSrcCaches)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkMergeValidationCachesEXT(void *args) { struct vkMergeValidationCachesEXT_params *params = args; TRACE("%p, 0x%s, %u, %p\n", params->device, wine_dbgstr_longlong(params->dstCache), params->srcCacheCount, params->pSrcCaches); params->result = wine_device_from_handle(params->device)->funcs.p_vkMergeValidationCachesEXT(wine_device_from_handle(params->device)->device, params->dstCache, params->srcCacheCount, params->pSrcCaches); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkMergeValidationCachesEXT(void *args) { struct { PTR32 device; VkValidationCacheEXT DECLSPEC_ALIGN(8) dstCache; uint32_t srcCacheCount; PTR32 pSrcCaches; VkResult result; } *params = args; TRACE("%#x, 0x%s, %u, %#x\n", params->device, wine_dbgstr_longlong(params->dstCache), params->srcCacheCount, params->pSrcCaches); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkMergeValidationCachesEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->dstCache, params->srcCacheCount, (const VkValidationCacheEXT *)UlongToPtr(params->pSrcCaches)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueBeginDebugUtilsLabelEXT(void *args) { struct vkQueueBeginDebugUtilsLabelEXT_params *params = args; TRACE("%p, %p\n", params->queue, params->pLabelInfo); wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueBeginDebugUtilsLabelEXT(wine_queue_from_handle(params->queue)->queue, params->pLabelInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueBeginDebugUtilsLabelEXT(void *args) { struct { PTR32 queue; PTR32 pLabelInfo; } *params = args; VkDebugUtilsLabelEXT pLabelInfo_host; TRACE("%#x, %#x\n", params->queue, params->pLabelInfo); convert_VkDebugUtilsLabelEXT_win32_to_host((const VkDebugUtilsLabelEXT32 *)UlongToPtr(params->pLabelInfo), &pLabelInfo_host); wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueBeginDebugUtilsLabelEXT(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, &pLabelInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueBindSparse(void *args) { struct vkQueueBindSparse_params *params = args; const VkBindSparseInfo *pBindInfo_host; struct conversion_context ctx; TRACE("%p, %u, %p, 0x%s\n", params->queue, params->bindInfoCount, params->pBindInfo, wine_dbgstr_longlong(params->fence)); init_conversion_context(&ctx); pBindInfo_host = convert_VkBindSparseInfo_array_win64_to_host(&ctx, params->pBindInfo, params->bindInfoCount); params->result = wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueBindSparse(wine_queue_from_handle(params->queue)->queue, params->bindInfoCount, pBindInfo_host, params->fence); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueBindSparse(void *args) { struct { PTR32 queue; uint32_t bindInfoCount; PTR32 pBindInfo; VkFence DECLSPEC_ALIGN(8) fence; VkResult result; } *params = args; const VkBindSparseInfo *pBindInfo_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, 0x%s\n", params->queue, params->bindInfoCount, params->pBindInfo, wine_dbgstr_longlong(params->fence)); init_conversion_context(&ctx); pBindInfo_host = convert_VkBindSparseInfo_array_win32_to_host(&ctx, (const VkBindSparseInfo32 *)UlongToPtr(params->pBindInfo), params->bindInfoCount); params->result = wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueBindSparse(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, params->bindInfoCount, pBindInfo_host, params->fence); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueEndDebugUtilsLabelEXT(void *args) { struct vkQueueEndDebugUtilsLabelEXT_params *params = args; TRACE("%p\n", params->queue); wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueEndDebugUtilsLabelEXT(wine_queue_from_handle(params->queue)->queue); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueEndDebugUtilsLabelEXT(void *args) { struct { PTR32 queue; } *params = args; TRACE("%#x\n", params->queue); wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueEndDebugUtilsLabelEXT(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueInsertDebugUtilsLabelEXT(void *args) { struct vkQueueInsertDebugUtilsLabelEXT_params *params = args; TRACE("%p, %p\n", params->queue, params->pLabelInfo); wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueInsertDebugUtilsLabelEXT(wine_queue_from_handle(params->queue)->queue, params->pLabelInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueInsertDebugUtilsLabelEXT(void *args) { struct { PTR32 queue; PTR32 pLabelInfo; } *params = args; VkDebugUtilsLabelEXT pLabelInfo_host; TRACE("%#x, %#x\n", params->queue, params->pLabelInfo); convert_VkDebugUtilsLabelEXT_win32_to_host((const VkDebugUtilsLabelEXT32 *)UlongToPtr(params->pLabelInfo), &pLabelInfo_host); wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueInsertDebugUtilsLabelEXT(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, &pLabelInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueuePresentKHR(void *args) { struct vkQueuePresentKHR_params *params = args; TRACE("%p, %p\n", params->queue, params->pPresentInfo); params->result = wine_queue_from_handle(params->queue)->device->funcs.p_vkQueuePresentKHR(wine_queue_from_handle(params->queue)->queue, params->pPresentInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueuePresentKHR(void *args) { struct { PTR32 queue; PTR32 pPresentInfo; VkResult result; } *params = args; VkPresentInfoKHR pPresentInfo_host; struct conversion_context ctx; TRACE("%#x, %#x\n", params->queue, params->pPresentInfo); init_conversion_context(&ctx); convert_VkPresentInfoKHR_win32_to_host(&ctx, (const VkPresentInfoKHR32 *)UlongToPtr(params->pPresentInfo), &pPresentInfo_host); params->result = wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueuePresentKHR(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, &pPresentInfo_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueSetPerformanceConfigurationINTEL(void *args) { struct vkQueueSetPerformanceConfigurationINTEL_params *params = args; TRACE("%p, 0x%s\n", params->queue, wine_dbgstr_longlong(params->configuration)); params->result = wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueSetPerformanceConfigurationINTEL(wine_queue_from_handle(params->queue)->queue, params->configuration); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueSetPerformanceConfigurationINTEL(void *args) { struct { PTR32 queue; VkPerformanceConfigurationINTEL DECLSPEC_ALIGN(8) configuration; VkResult result; } *params = args; TRACE("%#x, 0x%s\n", params->queue, wine_dbgstr_longlong(params->configuration)); params->result = wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueSetPerformanceConfigurationINTEL(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, params->configuration); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueSubmit(void *args) { struct vkQueueSubmit_params *params = args; const VkSubmitInfo *pSubmits_host; struct conversion_context ctx; TRACE("%p, %u, %p, 0x%s\n", params->queue, params->submitCount, params->pSubmits, wine_dbgstr_longlong(params->fence)); init_conversion_context(&ctx); pSubmits_host = convert_VkSubmitInfo_array_win64_to_host(&ctx, params->pSubmits, params->submitCount); params->result = wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueSubmit(wine_queue_from_handle(params->queue)->queue, params->submitCount, pSubmits_host, params->fence); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueSubmit(void *args) { struct { PTR32 queue; uint32_t submitCount; PTR32 pSubmits; VkFence DECLSPEC_ALIGN(8) fence; VkResult result; } *params = args; const VkSubmitInfo *pSubmits_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, 0x%s\n", params->queue, params->submitCount, params->pSubmits, wine_dbgstr_longlong(params->fence)); init_conversion_context(&ctx); pSubmits_host = convert_VkSubmitInfo_array_win32_to_host(&ctx, (const VkSubmitInfo32 *)UlongToPtr(params->pSubmits), params->submitCount); params->result = wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueSubmit(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, params->submitCount, pSubmits_host, params->fence); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueSubmit2(void *args) { struct vkQueueSubmit2_params *params = args; const VkSubmitInfo2 *pSubmits_host; struct conversion_context ctx; TRACE("%p, %u, %p, 0x%s\n", params->queue, params->submitCount, params->pSubmits, wine_dbgstr_longlong(params->fence)); init_conversion_context(&ctx); pSubmits_host = convert_VkSubmitInfo2_array_win64_to_host(&ctx, params->pSubmits, params->submitCount); params->result = wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueSubmit2(wine_queue_from_handle(params->queue)->queue, params->submitCount, pSubmits_host, params->fence); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueSubmit2(void *args) { struct { PTR32 queue; uint32_t submitCount; PTR32 pSubmits; VkFence DECLSPEC_ALIGN(8) fence; VkResult result; } *params = args; const VkSubmitInfo2 *pSubmits_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, 0x%s\n", params->queue, params->submitCount, params->pSubmits, wine_dbgstr_longlong(params->fence)); init_conversion_context(&ctx); pSubmits_host = convert_VkSubmitInfo2_array_win32_to_host(&ctx, (const VkSubmitInfo232 *)UlongToPtr(params->pSubmits), params->submitCount); params->result = wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueSubmit2(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, params->submitCount, pSubmits_host, params->fence); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueSubmit2KHR(void *args) { struct vkQueueSubmit2KHR_params *params = args; const VkSubmitInfo2 *pSubmits_host; struct conversion_context ctx; TRACE("%p, %u, %p, 0x%s\n", params->queue, params->submitCount, params->pSubmits, wine_dbgstr_longlong(params->fence)); init_conversion_context(&ctx); pSubmits_host = convert_VkSubmitInfo2_array_win64_to_host(&ctx, params->pSubmits, params->submitCount); params->result = wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueSubmit2KHR(wine_queue_from_handle(params->queue)->queue, params->submitCount, pSubmits_host, params->fence); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueSubmit2KHR(void *args) { struct { PTR32 queue; uint32_t submitCount; PTR32 pSubmits; VkFence DECLSPEC_ALIGN(8) fence; VkResult result; } *params = args; const VkSubmitInfo2 *pSubmits_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, 0x%s\n", params->queue, params->submitCount, params->pSubmits, wine_dbgstr_longlong(params->fence)); init_conversion_context(&ctx); pSubmits_host = convert_VkSubmitInfo2_array_win32_to_host(&ctx, (const VkSubmitInfo232 *)UlongToPtr(params->pSubmits), params->submitCount); params->result = wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueSubmit2KHR(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue, params->submitCount, pSubmits_host, params->fence); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkQueueWaitIdle(void *args) { struct vkQueueWaitIdle_params *params = args; TRACE("%p\n", params->queue); params->result = wine_queue_from_handle(params->queue)->device->funcs.p_vkQueueWaitIdle(wine_queue_from_handle(params->queue)->queue); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkQueueWaitIdle(void *args) { struct { PTR32 queue; VkResult result; } *params = args; TRACE("%#x\n", params->queue); params->result = wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->device->funcs.p_vkQueueWaitIdle(wine_queue_from_handle((VkQueue)UlongToPtr(params->queue))->queue); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkReleasePerformanceConfigurationINTEL(void *args) { struct vkReleasePerformanceConfigurationINTEL_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->configuration)); params->result = wine_device_from_handle(params->device)->funcs.p_vkReleasePerformanceConfigurationINTEL(wine_device_from_handle(params->device)->device, params->configuration); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkReleasePerformanceConfigurationINTEL(void *args) { struct { PTR32 device; VkPerformanceConfigurationINTEL DECLSPEC_ALIGN(8) configuration; VkResult result; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->configuration)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkReleasePerformanceConfigurationINTEL(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->configuration); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkReleaseProfilingLockKHR(void *args) { struct vkReleaseProfilingLockKHR_params *params = args; TRACE("%p\n", params->device); wine_device_from_handle(params->device)->funcs.p_vkReleaseProfilingLockKHR(wine_device_from_handle(params->device)->device); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkReleaseProfilingLockKHR(void *args) { struct { PTR32 device; } *params = args; TRACE("%#x\n", params->device); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkReleaseProfilingLockKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkResetCommandBuffer(void *args) { struct vkResetCommandBuffer_params *params = args; TRACE("%p, %#x\n", params->commandBuffer, params->flags); params->result = wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkResetCommandBuffer(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->flags); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkResetCommandBuffer(void *args) { struct { PTR32 commandBuffer; VkCommandBufferResetFlags flags; VkResult result; } *params = args; TRACE("%#x, %#x\n", params->commandBuffer, params->flags); params->result = wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkResetCommandBuffer(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->flags); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkResetCommandPool(void *args) { struct vkResetCommandPool_params *params = args; TRACE("%p, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->commandPool), params->flags); params->result = wine_device_from_handle(params->device)->funcs.p_vkResetCommandPool(wine_device_from_handle(params->device)->device, wine_cmd_pool_from_handle(params->commandPool)->command_pool, params->flags); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkResetCommandPool(void *args) { struct { PTR32 device; VkCommandPool DECLSPEC_ALIGN(8) commandPool; VkCommandPoolResetFlags flags; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->commandPool), params->flags); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkResetCommandPool(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, wine_cmd_pool_from_handle(params->commandPool)->command_pool, params->flags); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkResetDescriptorPool(void *args) { struct vkResetDescriptorPool_params *params = args; TRACE("%p, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorPool), params->flags); params->result = wine_device_from_handle(params->device)->funcs.p_vkResetDescriptorPool(wine_device_from_handle(params->device)->device, params->descriptorPool, params->flags); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkResetDescriptorPool(void *args) { struct { PTR32 device; VkDescriptorPool DECLSPEC_ALIGN(8) descriptorPool; VkDescriptorPoolResetFlags flags; VkResult result; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorPool), params->flags); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkResetDescriptorPool(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorPool, params->flags); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkResetEvent(void *args) { struct vkResetEvent_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->event)); params->result = wine_device_from_handle(params->device)->funcs.p_vkResetEvent(wine_device_from_handle(params->device)->device, params->event); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkResetEvent(void *args) { struct { PTR32 device; VkEvent DECLSPEC_ALIGN(8) event; VkResult result; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->event)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkResetEvent(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->event); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkResetFences(void *args) { struct vkResetFences_params *params = args; TRACE("%p, %u, %p\n", params->device, params->fenceCount, params->pFences); params->result = wine_device_from_handle(params->device)->funcs.p_vkResetFences(wine_device_from_handle(params->device)->device, params->fenceCount, params->pFences); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkResetFences(void *args) { struct { PTR32 device; uint32_t fenceCount; PTR32 pFences; VkResult result; } *params = args; TRACE("%#x, %u, %#x\n", params->device, params->fenceCount, params->pFences); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkResetFences(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->fenceCount, (const VkFence *)UlongToPtr(params->pFences)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkResetQueryPool(void *args) { struct vkResetQueryPool_params *params = args; TRACE("%p, 0x%s, %u, %u\n", params->device, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount); wine_device_from_handle(params->device)->funcs.p_vkResetQueryPool(wine_device_from_handle(params->device)->device, params->queryPool, params->firstQuery, params->queryCount); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkResetQueryPool(void *args) { struct { PTR32 device; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t firstQuery; uint32_t queryCount; } *params = args; TRACE("%#x, 0x%s, %u, %u\n", params->device, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkResetQueryPool(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->queryPool, params->firstQuery, params->queryCount); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkResetQueryPoolEXT(void *args) { struct vkResetQueryPoolEXT_params *params = args; TRACE("%p, 0x%s, %u, %u\n", params->device, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount); wine_device_from_handle(params->device)->funcs.p_vkResetQueryPoolEXT(wine_device_from_handle(params->device)->device, params->queryPool, params->firstQuery, params->queryCount); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkResetQueryPoolEXT(void *args) { struct { PTR32 device; VkQueryPool DECLSPEC_ALIGN(8) queryPool; uint32_t firstQuery; uint32_t queryCount; } *params = args; TRACE("%#x, 0x%s, %u, %u\n", params->device, wine_dbgstr_longlong(params->queryPool), params->firstQuery, params->queryCount); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkResetQueryPoolEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->queryPool, params->firstQuery, params->queryCount); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSetDebugUtilsObjectNameEXT(void *args) { struct vkSetDebugUtilsObjectNameEXT_params *params = args; VkDebugUtilsObjectNameInfoEXT pNameInfo_host; TRACE("%p, %p\n", params->device, params->pNameInfo); convert_VkDebugUtilsObjectNameInfoEXT_win64_to_host(params->pNameInfo, &pNameInfo_host); params->result = wine_device_from_handle(params->device)->funcs.p_vkSetDebugUtilsObjectNameEXT(wine_device_from_handle(params->device)->device, &pNameInfo_host); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSetDebugUtilsObjectNameEXT(void *args) { struct { PTR32 device; PTR32 pNameInfo; VkResult result; } *params = args; VkDebugUtilsObjectNameInfoEXT pNameInfo_host; TRACE("%#x, %#x\n", params->device, params->pNameInfo); convert_VkDebugUtilsObjectNameInfoEXT_win32_to_host((const VkDebugUtilsObjectNameInfoEXT32 *)UlongToPtr(params->pNameInfo), &pNameInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkSetDebugUtilsObjectNameEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pNameInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSetDebugUtilsObjectTagEXT(void *args) { struct vkSetDebugUtilsObjectTagEXT_params *params = args; VkDebugUtilsObjectTagInfoEXT pTagInfo_host; TRACE("%p, %p\n", params->device, params->pTagInfo); convert_VkDebugUtilsObjectTagInfoEXT_win64_to_host(params->pTagInfo, &pTagInfo_host); params->result = wine_device_from_handle(params->device)->funcs.p_vkSetDebugUtilsObjectTagEXT(wine_device_from_handle(params->device)->device, &pTagInfo_host); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSetDebugUtilsObjectTagEXT(void *args) { struct { PTR32 device; PTR32 pTagInfo; VkResult result; } *params = args; VkDebugUtilsObjectTagInfoEXT pTagInfo_host; TRACE("%#x, %#x\n", params->device, params->pTagInfo); convert_VkDebugUtilsObjectTagInfoEXT_win32_to_host((const VkDebugUtilsObjectTagInfoEXT32 *)UlongToPtr(params->pTagInfo), &pTagInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkSetDebugUtilsObjectTagEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pTagInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSetDeviceMemoryPriorityEXT(void *args) { struct vkSetDeviceMemoryPriorityEXT_params *params = args; TRACE("%p, 0x%s, %f\n", params->device, wine_dbgstr_longlong(params->memory), params->priority); wine_device_from_handle(params->device)->funcs.p_vkSetDeviceMemoryPriorityEXT(wine_device_from_handle(params->device)->device, wine_device_memory_from_handle(params->memory)->memory, params->priority); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSetDeviceMemoryPriorityEXT(void *args) { struct { PTR32 device; VkDeviceMemory DECLSPEC_ALIGN(8) memory; float priority; } *params = args; TRACE("%#x, 0x%s, %f\n", params->device, wine_dbgstr_longlong(params->memory), params->priority); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkSetDeviceMemoryPriorityEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, wine_device_memory_from_handle(params->memory)->memory, params->priority); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSetEvent(void *args) { struct vkSetEvent_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->event)); params->result = wine_device_from_handle(params->device)->funcs.p_vkSetEvent(wine_device_from_handle(params->device)->device, params->event); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSetEvent(void *args) { struct { PTR32 device; VkEvent DECLSPEC_ALIGN(8) event; VkResult result; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->event)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkSetEvent(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->event); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSetPrivateData(void *args) { struct vkSetPrivateData_params *params = args; TRACE("%p, %#x, 0x%s, 0x%s, 0x%s\n", params->device, params->objectType, wine_dbgstr_longlong(params->objectHandle), wine_dbgstr_longlong(params->privateDataSlot), wine_dbgstr_longlong(params->data)); params->result = wine_device_from_handle(params->device)->funcs.p_vkSetPrivateData(wine_device_from_handle(params->device)->device, params->objectType, wine_vk_unwrap_handle(params->objectType, params->objectHandle), params->privateDataSlot, params->data); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSetPrivateData(void *args) { struct { PTR32 device; VkObjectType objectType; uint64_t DECLSPEC_ALIGN(8) objectHandle; VkPrivateDataSlot DECLSPEC_ALIGN(8) privateDataSlot; uint64_t DECLSPEC_ALIGN(8) data; VkResult result; } *params = args; TRACE("%#x, %#x, 0x%s, 0x%s, 0x%s\n", params->device, params->objectType, wine_dbgstr_longlong(params->objectHandle), wine_dbgstr_longlong(params->privateDataSlot), wine_dbgstr_longlong(params->data)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkSetPrivateData(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->objectType, wine_vk_unwrap_handle(params->objectType, params->objectHandle), params->privateDataSlot, params->data); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSetPrivateDataEXT(void *args) { struct vkSetPrivateDataEXT_params *params = args; TRACE("%p, %#x, 0x%s, 0x%s, 0x%s\n", params->device, params->objectType, wine_dbgstr_longlong(params->objectHandle), wine_dbgstr_longlong(params->privateDataSlot), wine_dbgstr_longlong(params->data)); params->result = wine_device_from_handle(params->device)->funcs.p_vkSetPrivateDataEXT(wine_device_from_handle(params->device)->device, params->objectType, wine_vk_unwrap_handle(params->objectType, params->objectHandle), params->privateDataSlot, params->data); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSetPrivateDataEXT(void *args) { struct { PTR32 device; VkObjectType objectType; uint64_t DECLSPEC_ALIGN(8) objectHandle; VkPrivateDataSlot DECLSPEC_ALIGN(8) privateDataSlot; uint64_t DECLSPEC_ALIGN(8) data; VkResult result; } *params = args; TRACE("%#x, %#x, 0x%s, 0x%s, 0x%s\n", params->device, params->objectType, wine_dbgstr_longlong(params->objectHandle), wine_dbgstr_longlong(params->privateDataSlot), wine_dbgstr_longlong(params->data)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkSetPrivateDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->objectType, wine_vk_unwrap_handle(params->objectType, params->objectHandle), params->privateDataSlot, params->data); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSignalSemaphore(void *args) { struct vkSignalSemaphore_params *params = args; TRACE("%p, %p\n", params->device, params->pSignalInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkSignalSemaphore(wine_device_from_handle(params->device)->device, params->pSignalInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSignalSemaphore(void *args) { struct { PTR32 device; PTR32 pSignalInfo; VkResult result; } *params = args; VkSemaphoreSignalInfo pSignalInfo_host; TRACE("%#x, %#x\n", params->device, params->pSignalInfo); convert_VkSemaphoreSignalInfo_win32_to_host((const VkSemaphoreSignalInfo32 *)UlongToPtr(params->pSignalInfo), &pSignalInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkSignalSemaphore(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pSignalInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSignalSemaphoreKHR(void *args) { struct vkSignalSemaphoreKHR_params *params = args; TRACE("%p, %p\n", params->device, params->pSignalInfo); params->result = wine_device_from_handle(params->device)->funcs.p_vkSignalSemaphoreKHR(wine_device_from_handle(params->device)->device, params->pSignalInfo); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSignalSemaphoreKHR(void *args) { struct { PTR32 device; PTR32 pSignalInfo; VkResult result; } *params = args; VkSemaphoreSignalInfo pSignalInfo_host; TRACE("%#x, %#x\n", params->device, params->pSignalInfo); convert_VkSemaphoreSignalInfo_win32_to_host((const VkSemaphoreSignalInfo32 *)UlongToPtr(params->pSignalInfo), &pSignalInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkSignalSemaphoreKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pSignalInfo_host); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkSubmitDebugUtilsMessageEXT(void *args) { struct vkSubmitDebugUtilsMessageEXT_params *params = args; VkDebugUtilsMessengerCallbackDataEXT pCallbackData_host; struct conversion_context ctx; TRACE("%p, %#x, %#x, %p\n", params->instance, params->messageSeverity, params->messageTypes, params->pCallbackData); init_conversion_context(&ctx); convert_VkDebugUtilsMessengerCallbackDataEXT_win64_to_host(&ctx, params->pCallbackData, &pCallbackData_host); wine_instance_from_handle(params->instance)->funcs.p_vkSubmitDebugUtilsMessageEXT(wine_instance_from_handle(params->instance)->instance, params->messageSeverity, params->messageTypes, &pCallbackData_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkSubmitDebugUtilsMessageEXT(void *args) { struct { PTR32 instance; VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity; VkDebugUtilsMessageTypeFlagsEXT messageTypes; PTR32 pCallbackData; } *params = args; VkDebugUtilsMessengerCallbackDataEXT pCallbackData_host; struct conversion_context ctx; TRACE("%#x, %#x, %#x, %#x\n", params->instance, params->messageSeverity, params->messageTypes, params->pCallbackData); init_conversion_context(&ctx); convert_VkDebugUtilsMessengerCallbackDataEXT_win32_to_host(&ctx, (const VkDebugUtilsMessengerCallbackDataEXT32 *)UlongToPtr(params->pCallbackData), &pCallbackData_host); wine_instance_from_handle((VkInstance)UlongToPtr(params->instance))->funcs.p_vkSubmitDebugUtilsMessageEXT(wine_instance_from_handle((VkInstance)UlongToPtr(params->instance))->instance, params->messageSeverity, params->messageTypes, &pCallbackData_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkTrimCommandPool(void *args) { struct vkTrimCommandPool_params *params = args; TRACE("%p, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->commandPool), params->flags); wine_device_from_handle(params->device)->funcs.p_vkTrimCommandPool(wine_device_from_handle(params->device)->device, wine_cmd_pool_from_handle(params->commandPool)->command_pool, params->flags); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkTrimCommandPool(void *args) { struct { PTR32 device; VkCommandPool DECLSPEC_ALIGN(8) commandPool; VkCommandPoolTrimFlags flags; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->commandPool), params->flags); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkTrimCommandPool(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, wine_cmd_pool_from_handle(params->commandPool)->command_pool, params->flags); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkTrimCommandPoolKHR(void *args) { struct vkTrimCommandPoolKHR_params *params = args; TRACE("%p, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->commandPool), params->flags); wine_device_from_handle(params->device)->funcs.p_vkTrimCommandPoolKHR(wine_device_from_handle(params->device)->device, wine_cmd_pool_from_handle(params->commandPool)->command_pool, params->flags); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkTrimCommandPoolKHR(void *args) { struct { PTR32 device; VkCommandPool DECLSPEC_ALIGN(8) commandPool; VkCommandPoolTrimFlags flags; } *params = args; TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->commandPool), params->flags); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkTrimCommandPoolKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, wine_cmd_pool_from_handle(params->commandPool)->command_pool, params->flags); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkUninitializePerformanceApiINTEL(void *args) { struct vkUninitializePerformanceApiINTEL_params *params = args; TRACE("%p\n", params->device); wine_device_from_handle(params->device)->funcs.p_vkUninitializePerformanceApiINTEL(wine_device_from_handle(params->device)->device); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkUninitializePerformanceApiINTEL(void *args) { struct { PTR32 device; } *params = args; TRACE("%#x\n", params->device); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkUninitializePerformanceApiINTEL(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkUnmapMemory(void *args) { struct vkUnmapMemory_params *params = args; TRACE("%p, 0x%s\n", params->device, wine_dbgstr_longlong(params->memory)); wine_vkUnmapMemory(params->device, params->memory); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkUnmapMemory(void *args) { struct { PTR32 device; VkDeviceMemory DECLSPEC_ALIGN(8) memory; } *params = args; TRACE("%#x, 0x%s\n", params->device, wine_dbgstr_longlong(params->memory)); wine_vkUnmapMemory((VkDevice)UlongToPtr(params->device), params->memory); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkUpdateDescriptorSetWithTemplate(void *args) { struct vkUpdateDescriptorSetWithTemplate_params *params = args; TRACE("%p, 0x%s, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->descriptorSet), wine_dbgstr_longlong(params->descriptorUpdateTemplate), params->pData); wine_device_from_handle(params->device)->funcs.p_vkUpdateDescriptorSetWithTemplate(wine_device_from_handle(params->device)->device, params->descriptorSet, params->descriptorUpdateTemplate, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkUpdateDescriptorSetWithTemplate(void *args) { struct { PTR32 device; VkDescriptorSet DECLSPEC_ALIGN(8) descriptorSet; VkDescriptorUpdateTemplate DECLSPEC_ALIGN(8) descriptorUpdateTemplate; PTR32 pData; } *params = args; TRACE("%#x, 0x%s, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorSet), wine_dbgstr_longlong(params->descriptorUpdateTemplate), params->pData); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkUpdateDescriptorSetWithTemplate(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorSet, params->descriptorUpdateTemplate, (const void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkUpdateDescriptorSetWithTemplateKHR(void *args) { struct vkUpdateDescriptorSetWithTemplateKHR_params *params = args; TRACE("%p, 0x%s, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->descriptorSet), wine_dbgstr_longlong(params->descriptorUpdateTemplate), params->pData); wine_device_from_handle(params->device)->funcs.p_vkUpdateDescriptorSetWithTemplateKHR(wine_device_from_handle(params->device)->device, params->descriptorSet, params->descriptorUpdateTemplate, params->pData); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkUpdateDescriptorSetWithTemplateKHR(void *args) { struct { PTR32 device; VkDescriptorSet DECLSPEC_ALIGN(8) descriptorSet; VkDescriptorUpdateTemplate DECLSPEC_ALIGN(8) descriptorUpdateTemplate; PTR32 pData; } *params = args; TRACE("%#x, 0x%s, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->descriptorSet), wine_dbgstr_longlong(params->descriptorUpdateTemplate), params->pData); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkUpdateDescriptorSetWithTemplateKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorSet, params->descriptorUpdateTemplate, (const void *)UlongToPtr(params->pData)); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkUpdateDescriptorSets(void *args) { struct vkUpdateDescriptorSets_params *params = args; TRACE("%p, %u, %p, %u, %p\n", params->device, params->descriptorWriteCount, params->pDescriptorWrites, params->descriptorCopyCount, params->pDescriptorCopies); wine_device_from_handle(params->device)->funcs.p_vkUpdateDescriptorSets(wine_device_from_handle(params->device)->device, params->descriptorWriteCount, params->pDescriptorWrites, params->descriptorCopyCount, params->pDescriptorCopies); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkUpdateDescriptorSets(void *args) { struct { PTR32 device; uint32_t descriptorWriteCount; PTR32 pDescriptorWrites; uint32_t descriptorCopyCount; PTR32 pDescriptorCopies; } *params = args; const VkWriteDescriptorSet *pDescriptorWrites_host; const VkCopyDescriptorSet *pDescriptorCopies_host; struct conversion_context ctx; TRACE("%#x, %u, %#x, %u, %#x\n", params->device, params->descriptorWriteCount, params->pDescriptorWrites, params->descriptorCopyCount, params->pDescriptorCopies); init_conversion_context(&ctx); pDescriptorWrites_host = convert_VkWriteDescriptorSet_array_win32_to_host(&ctx, (const VkWriteDescriptorSet32 *)UlongToPtr(params->pDescriptorWrites), params->descriptorWriteCount); pDescriptorCopies_host = convert_VkCopyDescriptorSet_array_win32_to_host(&ctx, (const VkCopyDescriptorSet32 *)UlongToPtr(params->pDescriptorCopies), params->descriptorCopyCount); wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkUpdateDescriptorSets(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->descriptorWriteCount, pDescriptorWrites_host, params->descriptorCopyCount, pDescriptorCopies_host); free_conversion_context(&ctx); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkWaitForFences(void *args) { struct vkWaitForFences_params *params = args; TRACE("%p, %u, %p, %u, 0x%s\n", params->device, params->fenceCount, params->pFences, params->waitAll, wine_dbgstr_longlong(params->timeout)); params->result = wine_device_from_handle(params->device)->funcs.p_vkWaitForFences(wine_device_from_handle(params->device)->device, params->fenceCount, params->pFences, params->waitAll, params->timeout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkWaitForFences(void *args) { struct { PTR32 device; uint32_t fenceCount; PTR32 pFences; VkBool32 waitAll; uint64_t DECLSPEC_ALIGN(8) timeout; VkResult result; } *params = args; TRACE("%#x, %u, %#x, %u, 0x%s\n", params->device, params->fenceCount, params->pFences, params->waitAll, wine_dbgstr_longlong(params->timeout)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkWaitForFences(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->fenceCount, (const VkFence *)UlongToPtr(params->pFences), params->waitAll, params->timeout); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkWaitForPresentKHR(void *args) { struct vkWaitForPresentKHR_params *params = args; TRACE("%p, 0x%s, 0x%s, 0x%s\n", params->device, wine_dbgstr_longlong(params->swapchain), wine_dbgstr_longlong(params->presentId), wine_dbgstr_longlong(params->timeout)); params->result = wine_device_from_handle(params->device)->funcs.p_vkWaitForPresentKHR(wine_device_from_handle(params->device)->device, params->swapchain, params->presentId, params->timeout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkWaitForPresentKHR(void *args) { struct { PTR32 device; VkSwapchainKHR DECLSPEC_ALIGN(8) swapchain; uint64_t DECLSPEC_ALIGN(8) presentId; uint64_t DECLSPEC_ALIGN(8) timeout; VkResult result; } *params = args; TRACE("%#x, 0x%s, 0x%s, 0x%s\n", params->device, wine_dbgstr_longlong(params->swapchain), wine_dbgstr_longlong(params->presentId), wine_dbgstr_longlong(params->timeout)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkWaitForPresentKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->swapchain, params->presentId, params->timeout); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkWaitSemaphores(void *args) { struct vkWaitSemaphores_params *params = args; TRACE("%p, %p, 0x%s\n", params->device, params->pWaitInfo, wine_dbgstr_longlong(params->timeout)); params->result = wine_device_from_handle(params->device)->funcs.p_vkWaitSemaphores(wine_device_from_handle(params->device)->device, params->pWaitInfo, params->timeout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkWaitSemaphores(void *args) { struct { PTR32 device; PTR32 pWaitInfo; uint64_t DECLSPEC_ALIGN(8) timeout; VkResult result; } *params = args; VkSemaphoreWaitInfo pWaitInfo_host; TRACE("%#x, %#x, 0x%s\n", params->device, params->pWaitInfo, wine_dbgstr_longlong(params->timeout)); convert_VkSemaphoreWaitInfo_win32_to_host((const VkSemaphoreWaitInfo32 *)UlongToPtr(params->pWaitInfo), &pWaitInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkWaitSemaphores(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pWaitInfo_host, params->timeout); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkWaitSemaphoresKHR(void *args) { struct vkWaitSemaphoresKHR_params *params = args; TRACE("%p, %p, 0x%s\n", params->device, params->pWaitInfo, wine_dbgstr_longlong(params->timeout)); params->result = wine_device_from_handle(params->device)->funcs.p_vkWaitSemaphoresKHR(wine_device_from_handle(params->device)->device, params->pWaitInfo, params->timeout); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkWaitSemaphoresKHR(void *args) { struct { PTR32 device; PTR32 pWaitInfo; uint64_t DECLSPEC_ALIGN(8) timeout; VkResult result; } *params = args; VkSemaphoreWaitInfo pWaitInfo_host; TRACE("%#x, %#x, 0x%s\n", params->device, params->pWaitInfo, wine_dbgstr_longlong(params->timeout)); convert_VkSemaphoreWaitInfo_win32_to_host((const VkSemaphoreWaitInfo32 *)UlongToPtr(params->pWaitInfo), &pWaitInfo_host); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkWaitSemaphoresKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, &pWaitInfo_host, params->timeout); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkWriteAccelerationStructuresPropertiesKHR(void *args) { struct vkWriteAccelerationStructuresPropertiesKHR_params *params = args; TRACE("%p, %u, %p, %#x, 0x%s, %p, 0x%s\n", params->device, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, wine_dbgstr_longlong(params->dataSize), params->pData, wine_dbgstr_longlong(params->stride)); params->result = wine_device_from_handle(params->device)->funcs.p_vkWriteAccelerationStructuresPropertiesKHR(wine_device_from_handle(params->device)->device, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, params->dataSize, params->pData, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkWriteAccelerationStructuresPropertiesKHR(void *args) { struct { PTR32 device; uint32_t accelerationStructureCount; PTR32 pAccelerationStructures; VkQueryType queryType; PTR32 dataSize; PTR32 pData; PTR32 stride; VkResult result; } *params = args; TRACE("%#x, %u, %#x, %#x, 0x%s, %#x, 0x%s\n", params->device, params->accelerationStructureCount, params->pAccelerationStructures, params->queryType, wine_dbgstr_longlong(params->dataSize), params->pData, wine_dbgstr_longlong(params->stride)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkWriteAccelerationStructuresPropertiesKHR(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->accelerationStructureCount, (const VkAccelerationStructureKHR *)UlongToPtr(params->pAccelerationStructures), params->queryType, params->dataSize, (void *)UlongToPtr(params->pData), params->stride); return STATUS_SUCCESS; } #ifdef _WIN64 static NTSTATUS thunk64_vkWriteMicromapsPropertiesEXT(void *args) { struct vkWriteMicromapsPropertiesEXT_params *params = args; TRACE("%p, %u, %p, %#x, 0x%s, %p, 0x%s\n", params->device, params->micromapCount, params->pMicromaps, params->queryType, wine_dbgstr_longlong(params->dataSize), params->pData, wine_dbgstr_longlong(params->stride)); params->result = wine_device_from_handle(params->device)->funcs.p_vkWriteMicromapsPropertiesEXT(wine_device_from_handle(params->device)->device, params->micromapCount, params->pMicromaps, params->queryType, params->dataSize, params->pData, params->stride); return STATUS_SUCCESS; } #endif /* _WIN64 */ static NTSTATUS thunk32_vkWriteMicromapsPropertiesEXT(void *args) { struct { PTR32 device; uint32_t micromapCount; PTR32 pMicromaps; VkQueryType queryType; PTR32 dataSize; PTR32 pData; PTR32 stride; VkResult result; } *params = args; TRACE("%#x, %u, %#x, %#x, 0x%s, %#x, 0x%s\n", params->device, params->micromapCount, params->pMicromaps, params->queryType, wine_dbgstr_longlong(params->dataSize), params->pData, wine_dbgstr_longlong(params->stride)); params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkWriteMicromapsPropertiesEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->micromapCount, (const VkMicromapEXT *)UlongToPtr(params->pMicromaps), params->queryType, params->dataSize, (void *)UlongToPtr(params->pData), params->stride); return STATUS_SUCCESS; } static const char * const vk_device_extensions[] = { "VK_AMD_buffer_marker", "VK_AMD_device_coherent_memory", "VK_AMD_draw_indirect_count", "VK_AMD_gcn_shader", "VK_AMD_gpu_shader_half_float", "VK_AMD_gpu_shader_int16", "VK_AMD_memory_overallocation_behavior", "VK_AMD_mixed_attachment_samples", "VK_AMD_negative_viewport_height", "VK_AMD_pipeline_compiler_control", "VK_AMD_rasterization_order", "VK_AMD_shader_ballot", "VK_AMD_shader_core_properties", "VK_AMD_shader_core_properties2", "VK_AMD_shader_early_and_late_fragment_tests", "VK_AMD_shader_explicit_vertex_parameter", "VK_AMD_shader_fragment_mask", "VK_AMD_shader_image_load_store_lod", "VK_AMD_shader_info", "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", "VK_EXT_blend_operation_advanced", "VK_EXT_border_color_swizzle", "VK_EXT_buffer_device_address", "VK_EXT_calibrated_timestamps", "VK_EXT_color_write_enable", "VK_EXT_conditional_rendering", "VK_EXT_conservative_rasterization", "VK_EXT_custom_border_color", "VK_EXT_debug_marker", "VK_EXT_depth_clamp_zero_one", "VK_EXT_depth_clip_control", "VK_EXT_depth_clip_enable", "VK_EXT_depth_range_unrestricted", "VK_EXT_descriptor_buffer", "VK_EXT_descriptor_indexing", "VK_EXT_device_address_binding_report", "VK_EXT_device_fault", "VK_EXT_discard_rectangles", "VK_EXT_extended_dynamic_state", "VK_EXT_extended_dynamic_state2", "VK_EXT_extended_dynamic_state3", "VK_EXT_external_memory_host", "VK_EXT_filter_cubic", "VK_EXT_fragment_density_map", "VK_EXT_fragment_density_map2", "VK_EXT_fragment_shader_interlock", "VK_EXT_global_priority", "VK_EXT_global_priority_query", "VK_EXT_graphics_pipeline_library", "VK_EXT_host_query_reset", "VK_EXT_image_2d_view_of_3d", "VK_EXT_image_compression_control", "VK_EXT_image_compression_control_swapchain", "VK_EXT_image_robustness", "VK_EXT_image_view_min_lod", "VK_EXT_index_type_uint8", "VK_EXT_inline_uniform_block", "VK_EXT_legacy_dithering", "VK_EXT_line_rasterization", "VK_EXT_load_store_op_none", "VK_EXT_memory_budget", "VK_EXT_memory_priority", "VK_EXT_mesh_shader", "VK_EXT_multi_draw", "VK_EXT_multisampled_render_to_single_sampled", "VK_EXT_mutable_descriptor_type", "VK_EXT_non_seamless_cube_map", "VK_EXT_opacity_micromap", "VK_EXT_pageable_device_local_memory", "VK_EXT_pci_bus_info", "VK_EXT_pipeline_creation_cache_control", "VK_EXT_pipeline_creation_feedback", "VK_EXT_pipeline_properties", "VK_EXT_pipeline_protected_access", "VK_EXT_pipeline_robustness", "VK_EXT_post_depth_coverage", "VK_EXT_primitive_topology_list_restart", "VK_EXT_primitives_generated_query", "VK_EXT_private_data", "VK_EXT_provoking_vertex", "VK_EXT_queue_family_foreign", "VK_EXT_rasterization_order_attachment_access", "VK_EXT_rgba10x6_formats", "VK_EXT_robustness2", "VK_EXT_sample_locations", "VK_EXT_sampler_filter_minmax", "VK_EXT_scalar_block_layout", "VK_EXT_separate_stencil_usage", "VK_EXT_shader_atomic_float", "VK_EXT_shader_atomic_float2", "VK_EXT_shader_demote_to_helper_invocation", "VK_EXT_shader_image_atomic_int64", "VK_EXT_shader_module_identifier", "VK_EXT_shader_stencil_export", "VK_EXT_shader_subgroup_ballot", "VK_EXT_shader_subgroup_vote", "VK_EXT_shader_viewport_index_layer", "VK_EXT_subgroup_size_control", "VK_EXT_subpass_merge_feedback", "VK_EXT_texel_buffer_alignment", "VK_EXT_texture_compression_astc_hdr", "VK_EXT_tooling_info", "VK_EXT_transform_feedback", "VK_EXT_validation_cache", "VK_EXT_vertex_attribute_divisor", "VK_EXT_vertex_input_dynamic_state", "VK_EXT_ycbcr_2plane_444_formats", "VK_EXT_ycbcr_image_arrays", "VK_GOOGLE_decorate_string", "VK_GOOGLE_hlsl_functionality1", "VK_GOOGLE_user_type", "VK_HUAWEI_invocation_mask", "VK_HUAWEI_subpass_shading", "VK_IMG_filter_cubic", "VK_IMG_format_pvrtc", "VK_INTEL_performance_query", "VK_INTEL_shader_integer_functions2", "VK_KHR_16bit_storage", "VK_KHR_8bit_storage", "VK_KHR_acceleration_structure", "VK_KHR_bind_memory2", "VK_KHR_buffer_device_address", "VK_KHR_copy_commands2", "VK_KHR_create_renderpass2", "VK_KHR_dedicated_allocation", "VK_KHR_deferred_host_operations", "VK_KHR_depth_stencil_resolve", "VK_KHR_descriptor_update_template", "VK_KHR_device_group", "VK_KHR_draw_indirect_count", "VK_KHR_driver_properties", "VK_KHR_dynamic_rendering", "VK_KHR_external_fence", "VK_KHR_external_memory", "VK_KHR_external_semaphore", "VK_KHR_format_feature_flags2", "VK_KHR_fragment_shader_barycentric", "VK_KHR_fragment_shading_rate", "VK_KHR_get_memory_requirements2", "VK_KHR_global_priority", "VK_KHR_image_format_list", "VK_KHR_imageless_framebuffer", "VK_KHR_incremental_present", "VK_KHR_maintenance1", "VK_KHR_maintenance2", "VK_KHR_maintenance3", "VK_KHR_maintenance4", "VK_KHR_multiview", "VK_KHR_performance_query", "VK_KHR_pipeline_executable_properties", "VK_KHR_pipeline_library", "VK_KHR_present_id", "VK_KHR_present_wait", "VK_KHR_push_descriptor", "VK_KHR_ray_query", "VK_KHR_ray_tracing_maintenance1", "VK_KHR_ray_tracing_pipeline", "VK_KHR_relaxed_block_layout", "VK_KHR_sampler_mirror_clamp_to_edge", "VK_KHR_sampler_ycbcr_conversion", "VK_KHR_separate_depth_stencil_layouts", "VK_KHR_shader_atomic_int64", "VK_KHR_shader_clock", "VK_KHR_shader_draw_parameters", "VK_KHR_shader_float16_int8", "VK_KHR_shader_float_controls", "VK_KHR_shader_integer_dot_product", "VK_KHR_shader_non_semantic_info", "VK_KHR_shader_subgroup_extended_types", "VK_KHR_shader_subgroup_uniform_control_flow", "VK_KHR_shader_terminate_invocation", "VK_KHR_spirv_1_4", "VK_KHR_storage_buffer_storage_class", "VK_KHR_swapchain", "VK_KHR_swapchain_mutable_format", "VK_KHR_synchronization2", "VK_KHR_timeline_semaphore", "VK_KHR_uniform_buffer_standard_layout", "VK_KHR_variable_pointers", "VK_KHR_vulkan_memory_model", "VK_KHR_workgroup_memory_explicit_layout", "VK_KHR_zero_initialize_workgroup_memory", "VK_NVX_binary_import", "VK_NVX_image_view_handle", "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", "VK_NV_dedicated_allocation_image_aliasing", "VK_NV_device_diagnostic_checkpoints", "VK_NV_device_diagnostics_config", "VK_NV_device_generated_commands", "VK_NV_fill_rectangle", "VK_NV_fragment_coverage_to_color", "VK_NV_fragment_shader_barycentric", "VK_NV_fragment_shading_rate_enums", "VK_NV_framebuffer_mixed_samples", "VK_NV_geometry_shader_passthrough", "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", "VK_NV_scissor_exclusive", "VK_NV_shader_image_footprint", "VK_NV_shader_sm_builtins", "VK_NV_shader_subgroup_partitioned", "VK_NV_shading_rate_image", "VK_NV_viewport_array2", "VK_NV_viewport_swizzle", "VK_QCOM_fragment_density_map_offset", "VK_QCOM_image_processing", "VK_QCOM_render_pass_shader_resolve", "VK_QCOM_render_pass_store_ops", "VK_QCOM_render_pass_transform", "VK_QCOM_rotated_copy_commands", "VK_QCOM_tile_properties", "VK_VALVE_descriptor_set_host_mapping", "VK_VALVE_mutable_descriptor_type", }; static const char * const vk_instance_extensions[] = { "VK_EXT_debug_report", "VK_EXT_debug_utils", "VK_EXT_swapchain_colorspace", "VK_EXT_validation_features", "VK_EXT_validation_flags", "VK_KHR_device_group_creation", "VK_KHR_external_fence_capabilities", "VK_KHR_external_memory_capabilities", "VK_KHR_external_semaphore_capabilities", "VK_KHR_get_physical_device_properties2", "VK_KHR_get_surface_capabilities2", "VK_KHR_portability_enumeration", "VK_KHR_surface", "VK_KHR_win32_surface", }; BOOL wine_vk_device_extension_supported(const char *name) { unsigned int i; for (i = 0; i < ARRAY_SIZE(vk_device_extensions); i++) { if (strcmp(vk_device_extensions[i], name) == 0) return TRUE; } return FALSE; } BOOL wine_vk_instance_extension_supported(const char *name) { unsigned int i; for (i = 0; i < ARRAY_SIZE(vk_instance_extensions); i++) { if (strcmp(vk_instance_extensions[i], name) == 0) return TRUE; } return FALSE; } BOOL wine_vk_is_type_wrapped(VkObjectType type) { return FALSE || type == VK_OBJECT_TYPE_COMMAND_BUFFER || type == VK_OBJECT_TYPE_COMMAND_POOL || type == VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT || type == VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT || type == VK_OBJECT_TYPE_DEVICE || type == VK_OBJECT_TYPE_DEVICE_MEMORY || type == VK_OBJECT_TYPE_INSTANCE || type == VK_OBJECT_TYPE_PHYSICAL_DEVICE || type == VK_OBJECT_TYPE_QUEUE || type == VK_OBJECT_TYPE_SURFACE_KHR; } #ifdef _WIN64 const unixlib_entry_t __wine_unix_call_funcs[] = { init_vulkan, vk_is_available_instance_function, vk_is_available_device_function, thunk64_vkAcquireNextImage2KHR, thunk64_vkAcquireNextImageKHR, thunk64_vkAcquirePerformanceConfigurationINTEL, thunk64_vkAcquireProfilingLockKHR, thunk64_vkAllocateCommandBuffers, thunk64_vkAllocateDescriptorSets, thunk64_vkAllocateMemory, thunk64_vkBeginCommandBuffer, thunk64_vkBindAccelerationStructureMemoryNV, thunk64_vkBindBufferMemory, thunk64_vkBindBufferMemory2, thunk64_vkBindBufferMemory2KHR, thunk64_vkBindImageMemory, thunk64_vkBindImageMemory2, thunk64_vkBindImageMemory2KHR, thunk64_vkBindOpticalFlowSessionImageNV, thunk64_vkBuildAccelerationStructuresKHR, thunk64_vkBuildMicromapsEXT, thunk64_vkCmdBeginConditionalRenderingEXT, thunk64_vkCmdBeginDebugUtilsLabelEXT, thunk64_vkCmdBeginQuery, thunk64_vkCmdBeginQueryIndexedEXT, thunk64_vkCmdBeginRenderPass, thunk64_vkCmdBeginRenderPass2, thunk64_vkCmdBeginRenderPass2KHR, thunk64_vkCmdBeginRendering, thunk64_vkCmdBeginRenderingKHR, thunk64_vkCmdBeginTransformFeedbackEXT, thunk64_vkCmdBindDescriptorBufferEmbeddedSamplersEXT, thunk64_vkCmdBindDescriptorBuffersEXT, thunk64_vkCmdBindDescriptorSets, thunk64_vkCmdBindIndexBuffer, thunk64_vkCmdBindInvocationMaskHUAWEI, thunk64_vkCmdBindPipeline, thunk64_vkCmdBindPipelineShaderGroupNV, thunk64_vkCmdBindShadingRateImageNV, thunk64_vkCmdBindTransformFeedbackBuffersEXT, thunk64_vkCmdBindVertexBuffers, thunk64_vkCmdBindVertexBuffers2, thunk64_vkCmdBindVertexBuffers2EXT, thunk64_vkCmdBlitImage, thunk64_vkCmdBlitImage2, thunk64_vkCmdBlitImage2KHR, thunk64_vkCmdBuildAccelerationStructureNV, thunk64_vkCmdBuildAccelerationStructuresIndirectKHR, thunk64_vkCmdBuildAccelerationStructuresKHR, thunk64_vkCmdBuildMicromapsEXT, thunk64_vkCmdClearAttachments, thunk64_vkCmdClearColorImage, thunk64_vkCmdClearDepthStencilImage, thunk64_vkCmdCopyAccelerationStructureKHR, thunk64_vkCmdCopyAccelerationStructureNV, thunk64_vkCmdCopyAccelerationStructureToMemoryKHR, thunk64_vkCmdCopyBuffer, thunk64_vkCmdCopyBuffer2, thunk64_vkCmdCopyBuffer2KHR, thunk64_vkCmdCopyBufferToImage, thunk64_vkCmdCopyBufferToImage2, thunk64_vkCmdCopyBufferToImage2KHR, thunk64_vkCmdCopyImage, thunk64_vkCmdCopyImage2, thunk64_vkCmdCopyImage2KHR, thunk64_vkCmdCopyImageToBuffer, thunk64_vkCmdCopyImageToBuffer2, thunk64_vkCmdCopyImageToBuffer2KHR, thunk64_vkCmdCopyMemoryIndirectNV, thunk64_vkCmdCopyMemoryToAccelerationStructureKHR, thunk64_vkCmdCopyMemoryToImageIndirectNV, thunk64_vkCmdCopyMemoryToMicromapEXT, thunk64_vkCmdCopyMicromapEXT, thunk64_vkCmdCopyMicromapToMemoryEXT, thunk64_vkCmdCopyQueryPoolResults, thunk64_vkCmdCuLaunchKernelNVX, thunk64_vkCmdDebugMarkerBeginEXT, thunk64_vkCmdDebugMarkerEndEXT, thunk64_vkCmdDebugMarkerInsertEXT, thunk64_vkCmdDecompressMemoryIndirectCountNV, thunk64_vkCmdDecompressMemoryNV, thunk64_vkCmdDispatch, thunk64_vkCmdDispatchBase, thunk64_vkCmdDispatchBaseKHR, thunk64_vkCmdDispatchIndirect, thunk64_vkCmdDraw, thunk64_vkCmdDrawIndexed, thunk64_vkCmdDrawIndexedIndirect, thunk64_vkCmdDrawIndexedIndirectCount, thunk64_vkCmdDrawIndexedIndirectCountAMD, thunk64_vkCmdDrawIndexedIndirectCountKHR, thunk64_vkCmdDrawIndirect, thunk64_vkCmdDrawIndirectByteCountEXT, thunk64_vkCmdDrawIndirectCount, thunk64_vkCmdDrawIndirectCountAMD, thunk64_vkCmdDrawIndirectCountKHR, thunk64_vkCmdDrawMeshTasksEXT, thunk64_vkCmdDrawMeshTasksIndirectCountEXT, thunk64_vkCmdDrawMeshTasksIndirectCountNV, thunk64_vkCmdDrawMeshTasksIndirectEXT, thunk64_vkCmdDrawMeshTasksIndirectNV, thunk64_vkCmdDrawMeshTasksNV, thunk64_vkCmdDrawMultiEXT, thunk64_vkCmdDrawMultiIndexedEXT, thunk64_vkCmdEndConditionalRenderingEXT, thunk64_vkCmdEndDebugUtilsLabelEXT, thunk64_vkCmdEndQuery, thunk64_vkCmdEndQueryIndexedEXT, thunk64_vkCmdEndRenderPass, thunk64_vkCmdEndRenderPass2, thunk64_vkCmdEndRenderPass2KHR, thunk64_vkCmdEndRendering, thunk64_vkCmdEndRenderingKHR, thunk64_vkCmdEndTransformFeedbackEXT, thunk64_vkCmdExecuteCommands, thunk64_vkCmdExecuteGeneratedCommandsNV, thunk64_vkCmdFillBuffer, thunk64_vkCmdInsertDebugUtilsLabelEXT, thunk64_vkCmdNextSubpass, thunk64_vkCmdNextSubpass2, thunk64_vkCmdNextSubpass2KHR, thunk64_vkCmdOpticalFlowExecuteNV, thunk64_vkCmdPipelineBarrier, thunk64_vkCmdPipelineBarrier2, thunk64_vkCmdPipelineBarrier2KHR, thunk64_vkCmdPreprocessGeneratedCommandsNV, thunk64_vkCmdPushConstants, thunk64_vkCmdPushDescriptorSetKHR, thunk64_vkCmdPushDescriptorSetWithTemplateKHR, thunk64_vkCmdResetEvent, thunk64_vkCmdResetEvent2, thunk64_vkCmdResetEvent2KHR, thunk64_vkCmdResetQueryPool, thunk64_vkCmdResolveImage, thunk64_vkCmdResolveImage2, thunk64_vkCmdResolveImage2KHR, thunk64_vkCmdSetAlphaToCoverageEnableEXT, thunk64_vkCmdSetAlphaToOneEnableEXT, thunk64_vkCmdSetBlendConstants, thunk64_vkCmdSetCheckpointNV, thunk64_vkCmdSetCoarseSampleOrderNV, thunk64_vkCmdSetColorBlendAdvancedEXT, thunk64_vkCmdSetColorBlendEnableEXT, thunk64_vkCmdSetColorBlendEquationEXT, thunk64_vkCmdSetColorWriteEnableEXT, thunk64_vkCmdSetColorWriteMaskEXT, thunk64_vkCmdSetConservativeRasterizationModeEXT, thunk64_vkCmdSetCoverageModulationModeNV, thunk64_vkCmdSetCoverageModulationTableEnableNV, thunk64_vkCmdSetCoverageModulationTableNV, thunk64_vkCmdSetCoverageReductionModeNV, thunk64_vkCmdSetCoverageToColorEnableNV, thunk64_vkCmdSetCoverageToColorLocationNV, thunk64_vkCmdSetCullMode, thunk64_vkCmdSetCullModeEXT, thunk64_vkCmdSetDepthBias, thunk64_vkCmdSetDepthBiasEnable, thunk64_vkCmdSetDepthBiasEnableEXT, thunk64_vkCmdSetDepthBounds, thunk64_vkCmdSetDepthBoundsTestEnable, thunk64_vkCmdSetDepthBoundsTestEnableEXT, thunk64_vkCmdSetDepthClampEnableEXT, thunk64_vkCmdSetDepthClipEnableEXT, thunk64_vkCmdSetDepthClipNegativeOneToOneEXT, thunk64_vkCmdSetDepthCompareOp, thunk64_vkCmdSetDepthCompareOpEXT, thunk64_vkCmdSetDepthTestEnable, thunk64_vkCmdSetDepthTestEnableEXT, thunk64_vkCmdSetDepthWriteEnable, thunk64_vkCmdSetDepthWriteEnableEXT, thunk64_vkCmdSetDescriptorBufferOffsetsEXT, thunk64_vkCmdSetDeviceMask, thunk64_vkCmdSetDeviceMaskKHR, thunk64_vkCmdSetDiscardRectangleEXT, thunk64_vkCmdSetEvent, thunk64_vkCmdSetEvent2, thunk64_vkCmdSetEvent2KHR, thunk64_vkCmdSetExclusiveScissorNV, thunk64_vkCmdSetExtraPrimitiveOverestimationSizeEXT, thunk64_vkCmdSetFragmentShadingRateEnumNV, thunk64_vkCmdSetFragmentShadingRateKHR, thunk64_vkCmdSetFrontFace, thunk64_vkCmdSetFrontFaceEXT, thunk64_vkCmdSetLineRasterizationModeEXT, thunk64_vkCmdSetLineStippleEXT, thunk64_vkCmdSetLineStippleEnableEXT, thunk64_vkCmdSetLineWidth, thunk64_vkCmdSetLogicOpEXT, thunk64_vkCmdSetLogicOpEnableEXT, thunk64_vkCmdSetPatchControlPointsEXT, thunk64_vkCmdSetPerformanceMarkerINTEL, thunk64_vkCmdSetPerformanceOverrideINTEL, thunk64_vkCmdSetPerformanceStreamMarkerINTEL, thunk64_vkCmdSetPolygonModeEXT, thunk64_vkCmdSetPrimitiveRestartEnable, thunk64_vkCmdSetPrimitiveRestartEnableEXT, thunk64_vkCmdSetPrimitiveTopology, thunk64_vkCmdSetPrimitiveTopologyEXT, thunk64_vkCmdSetProvokingVertexModeEXT, thunk64_vkCmdSetRasterizationSamplesEXT, thunk64_vkCmdSetRasterizationStreamEXT, thunk64_vkCmdSetRasterizerDiscardEnable, thunk64_vkCmdSetRasterizerDiscardEnableEXT, thunk64_vkCmdSetRayTracingPipelineStackSizeKHR, thunk64_vkCmdSetRepresentativeFragmentTestEnableNV, thunk64_vkCmdSetSampleLocationsEXT, thunk64_vkCmdSetSampleLocationsEnableEXT, thunk64_vkCmdSetSampleMaskEXT, thunk64_vkCmdSetScissor, thunk64_vkCmdSetScissorWithCount, thunk64_vkCmdSetScissorWithCountEXT, thunk64_vkCmdSetShadingRateImageEnableNV, thunk64_vkCmdSetStencilCompareMask, thunk64_vkCmdSetStencilOp, thunk64_vkCmdSetStencilOpEXT, thunk64_vkCmdSetStencilReference, thunk64_vkCmdSetStencilTestEnable, thunk64_vkCmdSetStencilTestEnableEXT, thunk64_vkCmdSetStencilWriteMask, thunk64_vkCmdSetTessellationDomainOriginEXT, thunk64_vkCmdSetVertexInputEXT, thunk64_vkCmdSetViewport, thunk64_vkCmdSetViewportShadingRatePaletteNV, thunk64_vkCmdSetViewportSwizzleNV, thunk64_vkCmdSetViewportWScalingEnableNV, thunk64_vkCmdSetViewportWScalingNV, thunk64_vkCmdSetViewportWithCount, thunk64_vkCmdSetViewportWithCountEXT, thunk64_vkCmdSubpassShadingHUAWEI, thunk64_vkCmdTraceRaysIndirect2KHR, thunk64_vkCmdTraceRaysIndirectKHR, thunk64_vkCmdTraceRaysKHR, thunk64_vkCmdTraceRaysNV, thunk64_vkCmdUpdateBuffer, thunk64_vkCmdWaitEvents, thunk64_vkCmdWaitEvents2, thunk64_vkCmdWaitEvents2KHR, thunk64_vkCmdWriteAccelerationStructuresPropertiesKHR, thunk64_vkCmdWriteAccelerationStructuresPropertiesNV, thunk64_vkCmdWriteBufferMarker2AMD, thunk64_vkCmdWriteBufferMarkerAMD, thunk64_vkCmdWriteMicromapsPropertiesEXT, thunk64_vkCmdWriteTimestamp, thunk64_vkCmdWriteTimestamp2, thunk64_vkCmdWriteTimestamp2KHR, thunk64_vkCompileDeferredNV, thunk64_vkCopyAccelerationStructureKHR, thunk64_vkCopyAccelerationStructureToMemoryKHR, thunk64_vkCopyMemoryToAccelerationStructureKHR, thunk64_vkCopyMemoryToMicromapEXT, thunk64_vkCopyMicromapEXT, thunk64_vkCopyMicromapToMemoryEXT, thunk64_vkCreateAccelerationStructureKHR, thunk64_vkCreateAccelerationStructureNV, thunk64_vkCreateBuffer, thunk64_vkCreateBufferView, thunk64_vkCreateCommandPool, thunk64_vkCreateComputePipelines, thunk64_vkCreateCuFunctionNVX, thunk64_vkCreateCuModuleNVX, thunk64_vkCreateDebugReportCallbackEXT, thunk64_vkCreateDebugUtilsMessengerEXT, thunk64_vkCreateDeferredOperationKHR, thunk64_vkCreateDescriptorPool, thunk64_vkCreateDescriptorSetLayout, thunk64_vkCreateDescriptorUpdateTemplate, thunk64_vkCreateDescriptorUpdateTemplateKHR, thunk64_vkCreateDevice, thunk64_vkCreateEvent, thunk64_vkCreateFence, thunk64_vkCreateFramebuffer, thunk64_vkCreateGraphicsPipelines, thunk64_vkCreateImage, thunk64_vkCreateImageView, thunk64_vkCreateIndirectCommandsLayoutNV, thunk64_vkCreateInstance, thunk64_vkCreateMicromapEXT, thunk64_vkCreateOpticalFlowSessionNV, thunk64_vkCreatePipelineCache, thunk64_vkCreatePipelineLayout, thunk64_vkCreatePrivateDataSlot, thunk64_vkCreatePrivateDataSlotEXT, thunk64_vkCreateQueryPool, thunk64_vkCreateRayTracingPipelinesKHR, thunk64_vkCreateRayTracingPipelinesNV, thunk64_vkCreateRenderPass, thunk64_vkCreateRenderPass2, thunk64_vkCreateRenderPass2KHR, thunk64_vkCreateSampler, thunk64_vkCreateSamplerYcbcrConversion, thunk64_vkCreateSamplerYcbcrConversionKHR, thunk64_vkCreateSemaphore, thunk64_vkCreateShaderModule, thunk64_vkCreateSwapchainKHR, thunk64_vkCreateValidationCacheEXT, thunk64_vkCreateWin32SurfaceKHR, thunk64_vkDebugMarkerSetObjectNameEXT, thunk64_vkDebugMarkerSetObjectTagEXT, thunk64_vkDebugReportMessageEXT, thunk64_vkDeferredOperationJoinKHR, thunk64_vkDestroyAccelerationStructureKHR, thunk64_vkDestroyAccelerationStructureNV, thunk64_vkDestroyBuffer, thunk64_vkDestroyBufferView, thunk64_vkDestroyCommandPool, thunk64_vkDestroyCuFunctionNVX, thunk64_vkDestroyCuModuleNVX, thunk64_vkDestroyDebugReportCallbackEXT, thunk64_vkDestroyDebugUtilsMessengerEXT, thunk64_vkDestroyDeferredOperationKHR, thunk64_vkDestroyDescriptorPool, thunk64_vkDestroyDescriptorSetLayout, thunk64_vkDestroyDescriptorUpdateTemplate, thunk64_vkDestroyDescriptorUpdateTemplateKHR, thunk64_vkDestroyDevice, thunk64_vkDestroyEvent, thunk64_vkDestroyFence, thunk64_vkDestroyFramebuffer, thunk64_vkDestroyImage, thunk64_vkDestroyImageView, thunk64_vkDestroyIndirectCommandsLayoutNV, thunk64_vkDestroyInstance, thunk64_vkDestroyMicromapEXT, thunk64_vkDestroyOpticalFlowSessionNV, thunk64_vkDestroyPipeline, thunk64_vkDestroyPipelineCache, thunk64_vkDestroyPipelineLayout, thunk64_vkDestroyPrivateDataSlot, thunk64_vkDestroyPrivateDataSlotEXT, thunk64_vkDestroyQueryPool, thunk64_vkDestroyRenderPass, thunk64_vkDestroySampler, thunk64_vkDestroySamplerYcbcrConversion, thunk64_vkDestroySamplerYcbcrConversionKHR, thunk64_vkDestroySemaphore, thunk64_vkDestroyShaderModule, thunk64_vkDestroySurfaceKHR, thunk64_vkDestroySwapchainKHR, thunk64_vkDestroyValidationCacheEXT, thunk64_vkDeviceWaitIdle, thunk64_vkEndCommandBuffer, thunk64_vkEnumerateDeviceExtensionProperties, thunk64_vkEnumerateDeviceLayerProperties, thunk64_vkEnumerateInstanceExtensionProperties, thunk64_vkEnumerateInstanceVersion, thunk64_vkEnumeratePhysicalDeviceGroups, thunk64_vkEnumeratePhysicalDeviceGroupsKHR, thunk64_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, thunk64_vkEnumeratePhysicalDevices, thunk64_vkFlushMappedMemoryRanges, thunk64_vkFreeCommandBuffers, thunk64_vkFreeDescriptorSets, thunk64_vkFreeMemory, thunk64_vkGetAccelerationStructureBuildSizesKHR, thunk64_vkGetAccelerationStructureDeviceAddressKHR, thunk64_vkGetAccelerationStructureHandleNV, thunk64_vkGetAccelerationStructureMemoryRequirementsNV, thunk64_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, thunk64_vkGetBufferDeviceAddress, thunk64_vkGetBufferDeviceAddressEXT, thunk64_vkGetBufferDeviceAddressKHR, thunk64_vkGetBufferMemoryRequirements, thunk64_vkGetBufferMemoryRequirements2, thunk64_vkGetBufferMemoryRequirements2KHR, thunk64_vkGetBufferOpaqueCaptureAddress, thunk64_vkGetBufferOpaqueCaptureAddressKHR, thunk64_vkGetBufferOpaqueCaptureDescriptorDataEXT, thunk64_vkGetCalibratedTimestampsEXT, thunk64_vkGetDeferredOperationMaxConcurrencyKHR, thunk64_vkGetDeferredOperationResultKHR, thunk64_vkGetDescriptorEXT, thunk64_vkGetDescriptorSetHostMappingVALVE, thunk64_vkGetDescriptorSetLayoutBindingOffsetEXT, thunk64_vkGetDescriptorSetLayoutHostMappingInfoVALVE, thunk64_vkGetDescriptorSetLayoutSizeEXT, thunk64_vkGetDescriptorSetLayoutSupport, thunk64_vkGetDescriptorSetLayoutSupportKHR, thunk64_vkGetDeviceAccelerationStructureCompatibilityKHR, thunk64_vkGetDeviceBufferMemoryRequirements, thunk64_vkGetDeviceBufferMemoryRequirementsKHR, thunk64_vkGetDeviceFaultInfoEXT, thunk64_vkGetDeviceGroupPeerMemoryFeatures, thunk64_vkGetDeviceGroupPeerMemoryFeaturesKHR, thunk64_vkGetDeviceGroupPresentCapabilitiesKHR, thunk64_vkGetDeviceGroupSurfacePresentModesKHR, thunk64_vkGetDeviceImageMemoryRequirements, thunk64_vkGetDeviceImageMemoryRequirementsKHR, thunk64_vkGetDeviceImageSparseMemoryRequirements, thunk64_vkGetDeviceImageSparseMemoryRequirementsKHR, thunk64_vkGetDeviceMemoryCommitment, thunk64_vkGetDeviceMemoryOpaqueCaptureAddress, thunk64_vkGetDeviceMemoryOpaqueCaptureAddressKHR, thunk64_vkGetDeviceMicromapCompatibilityEXT, thunk64_vkGetDeviceQueue, thunk64_vkGetDeviceQueue2, thunk64_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, thunk64_vkGetDynamicRenderingTilePropertiesQCOM, thunk64_vkGetEventStatus, thunk64_vkGetFenceStatus, thunk64_vkGetFramebufferTilePropertiesQCOM, thunk64_vkGetGeneratedCommandsMemoryRequirementsNV, thunk64_vkGetImageMemoryRequirements, thunk64_vkGetImageMemoryRequirements2, thunk64_vkGetImageMemoryRequirements2KHR, thunk64_vkGetImageOpaqueCaptureDescriptorDataEXT, thunk64_vkGetImageSparseMemoryRequirements, thunk64_vkGetImageSparseMemoryRequirements2, thunk64_vkGetImageSparseMemoryRequirements2KHR, thunk64_vkGetImageSubresourceLayout, thunk64_vkGetImageSubresourceLayout2EXT, thunk64_vkGetImageViewAddressNVX, thunk64_vkGetImageViewHandleNVX, thunk64_vkGetImageViewOpaqueCaptureDescriptorDataEXT, thunk64_vkGetMemoryHostPointerPropertiesEXT, thunk64_vkGetMicromapBuildSizesEXT, thunk64_vkGetPerformanceParameterINTEL, thunk64_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, thunk64_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, thunk64_vkGetPhysicalDeviceExternalBufferProperties, thunk64_vkGetPhysicalDeviceExternalBufferPropertiesKHR, thunk64_vkGetPhysicalDeviceExternalFenceProperties, thunk64_vkGetPhysicalDeviceExternalFencePropertiesKHR, thunk64_vkGetPhysicalDeviceExternalSemaphoreProperties, thunk64_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, thunk64_vkGetPhysicalDeviceFeatures, thunk64_vkGetPhysicalDeviceFeatures2, thunk64_vkGetPhysicalDeviceFeatures2KHR, thunk64_vkGetPhysicalDeviceFormatProperties, thunk64_vkGetPhysicalDeviceFormatProperties2, thunk64_vkGetPhysicalDeviceFormatProperties2KHR, thunk64_vkGetPhysicalDeviceFragmentShadingRatesKHR, thunk64_vkGetPhysicalDeviceImageFormatProperties, thunk64_vkGetPhysicalDeviceImageFormatProperties2, thunk64_vkGetPhysicalDeviceImageFormatProperties2KHR, thunk64_vkGetPhysicalDeviceMemoryProperties, thunk64_vkGetPhysicalDeviceMemoryProperties2, thunk64_vkGetPhysicalDeviceMemoryProperties2KHR, thunk64_vkGetPhysicalDeviceMultisamplePropertiesEXT, thunk64_vkGetPhysicalDeviceOpticalFlowImageFormatsNV, thunk64_vkGetPhysicalDevicePresentRectanglesKHR, thunk64_vkGetPhysicalDeviceProperties, thunk64_vkGetPhysicalDeviceProperties2, thunk64_vkGetPhysicalDeviceProperties2KHR, thunk64_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, thunk64_vkGetPhysicalDeviceQueueFamilyProperties, thunk64_vkGetPhysicalDeviceQueueFamilyProperties2, thunk64_vkGetPhysicalDeviceQueueFamilyProperties2KHR, thunk64_vkGetPhysicalDeviceSparseImageFormatProperties, thunk64_vkGetPhysicalDeviceSparseImageFormatProperties2, thunk64_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, thunk64_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, thunk64_vkGetPhysicalDeviceSurfaceCapabilities2KHR, thunk64_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, thunk64_vkGetPhysicalDeviceSurfaceFormats2KHR, thunk64_vkGetPhysicalDeviceSurfaceFormatsKHR, thunk64_vkGetPhysicalDeviceSurfacePresentModesKHR, thunk64_vkGetPhysicalDeviceSurfaceSupportKHR, thunk64_vkGetPhysicalDeviceToolProperties, thunk64_vkGetPhysicalDeviceToolPropertiesEXT, thunk64_vkGetPhysicalDeviceWin32PresentationSupportKHR, thunk64_vkGetPipelineCacheData, thunk64_vkGetPipelineExecutableInternalRepresentationsKHR, thunk64_vkGetPipelineExecutablePropertiesKHR, thunk64_vkGetPipelineExecutableStatisticsKHR, thunk64_vkGetPipelinePropertiesEXT, thunk64_vkGetPrivateData, thunk64_vkGetPrivateDataEXT, thunk64_vkGetQueryPoolResults, thunk64_vkGetQueueCheckpointData2NV, thunk64_vkGetQueueCheckpointDataNV, thunk64_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, thunk64_vkGetRayTracingShaderGroupHandlesKHR, thunk64_vkGetRayTracingShaderGroupHandlesNV, thunk64_vkGetRayTracingShaderGroupStackSizeKHR, thunk64_vkGetRenderAreaGranularity, thunk64_vkGetSamplerOpaqueCaptureDescriptorDataEXT, thunk64_vkGetSemaphoreCounterValue, thunk64_vkGetSemaphoreCounterValueKHR, thunk64_vkGetShaderInfoAMD, thunk64_vkGetShaderModuleCreateInfoIdentifierEXT, thunk64_vkGetShaderModuleIdentifierEXT, thunk64_vkGetSwapchainImagesKHR, thunk64_vkGetValidationCacheDataEXT, thunk64_vkInitializePerformanceApiINTEL, thunk64_vkInvalidateMappedMemoryRanges, thunk64_vkMapMemory, thunk64_vkMergePipelineCaches, thunk64_vkMergeValidationCachesEXT, thunk64_vkQueueBeginDebugUtilsLabelEXT, thunk64_vkQueueBindSparse, thunk64_vkQueueEndDebugUtilsLabelEXT, thunk64_vkQueueInsertDebugUtilsLabelEXT, thunk64_vkQueuePresentKHR, thunk64_vkQueueSetPerformanceConfigurationINTEL, thunk64_vkQueueSubmit, thunk64_vkQueueSubmit2, thunk64_vkQueueSubmit2KHR, thunk64_vkQueueWaitIdle, thunk64_vkReleasePerformanceConfigurationINTEL, thunk64_vkReleaseProfilingLockKHR, thunk64_vkResetCommandBuffer, thunk64_vkResetCommandPool, thunk64_vkResetDescriptorPool, thunk64_vkResetEvent, thunk64_vkResetFences, thunk64_vkResetQueryPool, thunk64_vkResetQueryPoolEXT, thunk64_vkSetDebugUtilsObjectNameEXT, thunk64_vkSetDebugUtilsObjectTagEXT, thunk64_vkSetDeviceMemoryPriorityEXT, thunk64_vkSetEvent, thunk64_vkSetPrivateData, thunk64_vkSetPrivateDataEXT, thunk64_vkSignalSemaphore, thunk64_vkSignalSemaphoreKHR, thunk64_vkSubmitDebugUtilsMessageEXT, thunk64_vkTrimCommandPool, thunk64_vkTrimCommandPoolKHR, thunk64_vkUninitializePerformanceApiINTEL, thunk64_vkUnmapMemory, thunk64_vkUpdateDescriptorSetWithTemplate, thunk64_vkUpdateDescriptorSetWithTemplateKHR, thunk64_vkUpdateDescriptorSets, thunk64_vkWaitForFences, thunk64_vkWaitForPresentKHR, thunk64_vkWaitSemaphores, thunk64_vkWaitSemaphoresKHR, thunk64_vkWriteAccelerationStructuresPropertiesKHR, thunk64_vkWriteMicromapsPropertiesEXT, }; C_ASSERT(ARRAYSIZE(__wine_unix_call_funcs) == unix_count); #endif /* _WIN64 */ #ifdef _WIN64 const unixlib_entry_t __wine_unix_call_wow64_funcs[] = #else const unixlib_entry_t __wine_unix_call_funcs[] = #endif { init_vulkan, vk_is_available_instance_function32, vk_is_available_device_function32, thunk32_vkAcquireNextImage2KHR, thunk32_vkAcquireNextImageKHR, thunk32_vkAcquirePerformanceConfigurationINTEL, thunk32_vkAcquireProfilingLockKHR, thunk32_vkAllocateCommandBuffers, thunk32_vkAllocateDescriptorSets, thunk32_vkAllocateMemory, thunk32_vkBeginCommandBuffer, thunk32_vkBindAccelerationStructureMemoryNV, thunk32_vkBindBufferMemory, thunk32_vkBindBufferMemory2, thunk32_vkBindBufferMemory2KHR, thunk32_vkBindImageMemory, thunk32_vkBindImageMemory2, thunk32_vkBindImageMemory2KHR, thunk32_vkBindOpticalFlowSessionImageNV, thunk32_vkBuildAccelerationStructuresKHR, thunk32_vkBuildMicromapsEXT, thunk32_vkCmdBeginConditionalRenderingEXT, thunk32_vkCmdBeginDebugUtilsLabelEXT, thunk32_vkCmdBeginQuery, thunk32_vkCmdBeginQueryIndexedEXT, thunk32_vkCmdBeginRenderPass, thunk32_vkCmdBeginRenderPass2, thunk32_vkCmdBeginRenderPass2KHR, thunk32_vkCmdBeginRendering, thunk32_vkCmdBeginRenderingKHR, thunk32_vkCmdBeginTransformFeedbackEXT, thunk32_vkCmdBindDescriptorBufferEmbeddedSamplersEXT, thunk32_vkCmdBindDescriptorBuffersEXT, thunk32_vkCmdBindDescriptorSets, thunk32_vkCmdBindIndexBuffer, thunk32_vkCmdBindInvocationMaskHUAWEI, thunk32_vkCmdBindPipeline, thunk32_vkCmdBindPipelineShaderGroupNV, thunk32_vkCmdBindShadingRateImageNV, thunk32_vkCmdBindTransformFeedbackBuffersEXT, thunk32_vkCmdBindVertexBuffers, thunk32_vkCmdBindVertexBuffers2, thunk32_vkCmdBindVertexBuffers2EXT, thunk32_vkCmdBlitImage, thunk32_vkCmdBlitImage2, thunk32_vkCmdBlitImage2KHR, thunk32_vkCmdBuildAccelerationStructureNV, thunk32_vkCmdBuildAccelerationStructuresIndirectKHR, thunk32_vkCmdBuildAccelerationStructuresKHR, thunk32_vkCmdBuildMicromapsEXT, thunk32_vkCmdClearAttachments, thunk32_vkCmdClearColorImage, thunk32_vkCmdClearDepthStencilImage, thunk32_vkCmdCopyAccelerationStructureKHR, thunk32_vkCmdCopyAccelerationStructureNV, thunk32_vkCmdCopyAccelerationStructureToMemoryKHR, thunk32_vkCmdCopyBuffer, thunk32_vkCmdCopyBuffer2, thunk32_vkCmdCopyBuffer2KHR, thunk32_vkCmdCopyBufferToImage, thunk32_vkCmdCopyBufferToImage2, thunk32_vkCmdCopyBufferToImage2KHR, thunk32_vkCmdCopyImage, thunk32_vkCmdCopyImage2, thunk32_vkCmdCopyImage2KHR, thunk32_vkCmdCopyImageToBuffer, thunk32_vkCmdCopyImageToBuffer2, thunk32_vkCmdCopyImageToBuffer2KHR, thunk32_vkCmdCopyMemoryIndirectNV, thunk32_vkCmdCopyMemoryToAccelerationStructureKHR, thunk32_vkCmdCopyMemoryToImageIndirectNV, thunk32_vkCmdCopyMemoryToMicromapEXT, thunk32_vkCmdCopyMicromapEXT, thunk32_vkCmdCopyMicromapToMemoryEXT, thunk32_vkCmdCopyQueryPoolResults, thunk32_vkCmdCuLaunchKernelNVX, thunk32_vkCmdDebugMarkerBeginEXT, thunk32_vkCmdDebugMarkerEndEXT, thunk32_vkCmdDebugMarkerInsertEXT, thunk32_vkCmdDecompressMemoryIndirectCountNV, thunk32_vkCmdDecompressMemoryNV, thunk32_vkCmdDispatch, thunk32_vkCmdDispatchBase, thunk32_vkCmdDispatchBaseKHR, thunk32_vkCmdDispatchIndirect, thunk32_vkCmdDraw, thunk32_vkCmdDrawIndexed, thunk32_vkCmdDrawIndexedIndirect, thunk32_vkCmdDrawIndexedIndirectCount, thunk32_vkCmdDrawIndexedIndirectCountAMD, thunk32_vkCmdDrawIndexedIndirectCountKHR, thunk32_vkCmdDrawIndirect, thunk32_vkCmdDrawIndirectByteCountEXT, thunk32_vkCmdDrawIndirectCount, thunk32_vkCmdDrawIndirectCountAMD, thunk32_vkCmdDrawIndirectCountKHR, thunk32_vkCmdDrawMeshTasksEXT, thunk32_vkCmdDrawMeshTasksIndirectCountEXT, thunk32_vkCmdDrawMeshTasksIndirectCountNV, thunk32_vkCmdDrawMeshTasksIndirectEXT, thunk32_vkCmdDrawMeshTasksIndirectNV, thunk32_vkCmdDrawMeshTasksNV, thunk32_vkCmdDrawMultiEXT, thunk32_vkCmdDrawMultiIndexedEXT, thunk32_vkCmdEndConditionalRenderingEXT, thunk32_vkCmdEndDebugUtilsLabelEXT, thunk32_vkCmdEndQuery, thunk32_vkCmdEndQueryIndexedEXT, thunk32_vkCmdEndRenderPass, thunk32_vkCmdEndRenderPass2, thunk32_vkCmdEndRenderPass2KHR, thunk32_vkCmdEndRendering, thunk32_vkCmdEndRenderingKHR, thunk32_vkCmdEndTransformFeedbackEXT, thunk32_vkCmdExecuteCommands, thunk32_vkCmdExecuteGeneratedCommandsNV, thunk32_vkCmdFillBuffer, thunk32_vkCmdInsertDebugUtilsLabelEXT, thunk32_vkCmdNextSubpass, thunk32_vkCmdNextSubpass2, thunk32_vkCmdNextSubpass2KHR, thunk32_vkCmdOpticalFlowExecuteNV, thunk32_vkCmdPipelineBarrier, thunk32_vkCmdPipelineBarrier2, thunk32_vkCmdPipelineBarrier2KHR, thunk32_vkCmdPreprocessGeneratedCommandsNV, thunk32_vkCmdPushConstants, thunk32_vkCmdPushDescriptorSetKHR, thunk32_vkCmdPushDescriptorSetWithTemplateKHR, thunk32_vkCmdResetEvent, thunk32_vkCmdResetEvent2, thunk32_vkCmdResetEvent2KHR, thunk32_vkCmdResetQueryPool, thunk32_vkCmdResolveImage, thunk32_vkCmdResolveImage2, thunk32_vkCmdResolveImage2KHR, thunk32_vkCmdSetAlphaToCoverageEnableEXT, thunk32_vkCmdSetAlphaToOneEnableEXT, thunk32_vkCmdSetBlendConstants, thunk32_vkCmdSetCheckpointNV, thunk32_vkCmdSetCoarseSampleOrderNV, thunk32_vkCmdSetColorBlendAdvancedEXT, thunk32_vkCmdSetColorBlendEnableEXT, thunk32_vkCmdSetColorBlendEquationEXT, thunk32_vkCmdSetColorWriteEnableEXT, thunk32_vkCmdSetColorWriteMaskEXT, thunk32_vkCmdSetConservativeRasterizationModeEXT, thunk32_vkCmdSetCoverageModulationModeNV, thunk32_vkCmdSetCoverageModulationTableEnableNV, thunk32_vkCmdSetCoverageModulationTableNV, thunk32_vkCmdSetCoverageReductionModeNV, thunk32_vkCmdSetCoverageToColorEnableNV, thunk32_vkCmdSetCoverageToColorLocationNV, thunk32_vkCmdSetCullMode, thunk32_vkCmdSetCullModeEXT, thunk32_vkCmdSetDepthBias, thunk32_vkCmdSetDepthBiasEnable, thunk32_vkCmdSetDepthBiasEnableEXT, thunk32_vkCmdSetDepthBounds, thunk32_vkCmdSetDepthBoundsTestEnable, thunk32_vkCmdSetDepthBoundsTestEnableEXT, thunk32_vkCmdSetDepthClampEnableEXT, thunk32_vkCmdSetDepthClipEnableEXT, thunk32_vkCmdSetDepthClipNegativeOneToOneEXT, thunk32_vkCmdSetDepthCompareOp, thunk32_vkCmdSetDepthCompareOpEXT, thunk32_vkCmdSetDepthTestEnable, thunk32_vkCmdSetDepthTestEnableEXT, thunk32_vkCmdSetDepthWriteEnable, thunk32_vkCmdSetDepthWriteEnableEXT, thunk32_vkCmdSetDescriptorBufferOffsetsEXT, thunk32_vkCmdSetDeviceMask, thunk32_vkCmdSetDeviceMaskKHR, thunk32_vkCmdSetDiscardRectangleEXT, thunk32_vkCmdSetEvent, thunk32_vkCmdSetEvent2, thunk32_vkCmdSetEvent2KHR, thunk32_vkCmdSetExclusiveScissorNV, thunk32_vkCmdSetExtraPrimitiveOverestimationSizeEXT, thunk32_vkCmdSetFragmentShadingRateEnumNV, thunk32_vkCmdSetFragmentShadingRateKHR, thunk32_vkCmdSetFrontFace, thunk32_vkCmdSetFrontFaceEXT, thunk32_vkCmdSetLineRasterizationModeEXT, thunk32_vkCmdSetLineStippleEXT, thunk32_vkCmdSetLineStippleEnableEXT, thunk32_vkCmdSetLineWidth, thunk32_vkCmdSetLogicOpEXT, thunk32_vkCmdSetLogicOpEnableEXT, thunk32_vkCmdSetPatchControlPointsEXT, thunk32_vkCmdSetPerformanceMarkerINTEL, thunk32_vkCmdSetPerformanceOverrideINTEL, thunk32_vkCmdSetPerformanceStreamMarkerINTEL, thunk32_vkCmdSetPolygonModeEXT, thunk32_vkCmdSetPrimitiveRestartEnable, thunk32_vkCmdSetPrimitiveRestartEnableEXT, thunk32_vkCmdSetPrimitiveTopology, thunk32_vkCmdSetPrimitiveTopologyEXT, thunk32_vkCmdSetProvokingVertexModeEXT, thunk32_vkCmdSetRasterizationSamplesEXT, thunk32_vkCmdSetRasterizationStreamEXT, thunk32_vkCmdSetRasterizerDiscardEnable, thunk32_vkCmdSetRasterizerDiscardEnableEXT, thunk32_vkCmdSetRayTracingPipelineStackSizeKHR, thunk32_vkCmdSetRepresentativeFragmentTestEnableNV, thunk32_vkCmdSetSampleLocationsEXT, thunk32_vkCmdSetSampleLocationsEnableEXT, thunk32_vkCmdSetSampleMaskEXT, thunk32_vkCmdSetScissor, thunk32_vkCmdSetScissorWithCount, thunk32_vkCmdSetScissorWithCountEXT, thunk32_vkCmdSetShadingRateImageEnableNV, thunk32_vkCmdSetStencilCompareMask, thunk32_vkCmdSetStencilOp, thunk32_vkCmdSetStencilOpEXT, thunk32_vkCmdSetStencilReference, thunk32_vkCmdSetStencilTestEnable, thunk32_vkCmdSetStencilTestEnableEXT, thunk32_vkCmdSetStencilWriteMask, thunk32_vkCmdSetTessellationDomainOriginEXT, thunk32_vkCmdSetVertexInputEXT, thunk32_vkCmdSetViewport, thunk32_vkCmdSetViewportShadingRatePaletteNV, thunk32_vkCmdSetViewportSwizzleNV, thunk32_vkCmdSetViewportWScalingEnableNV, thunk32_vkCmdSetViewportWScalingNV, thunk32_vkCmdSetViewportWithCount, thunk32_vkCmdSetViewportWithCountEXT, thunk32_vkCmdSubpassShadingHUAWEI, thunk32_vkCmdTraceRaysIndirect2KHR, thunk32_vkCmdTraceRaysIndirectKHR, thunk32_vkCmdTraceRaysKHR, thunk32_vkCmdTraceRaysNV, thunk32_vkCmdUpdateBuffer, thunk32_vkCmdWaitEvents, thunk32_vkCmdWaitEvents2, thunk32_vkCmdWaitEvents2KHR, thunk32_vkCmdWriteAccelerationStructuresPropertiesKHR, thunk32_vkCmdWriteAccelerationStructuresPropertiesNV, thunk32_vkCmdWriteBufferMarker2AMD, thunk32_vkCmdWriteBufferMarkerAMD, thunk32_vkCmdWriteMicromapsPropertiesEXT, thunk32_vkCmdWriteTimestamp, thunk32_vkCmdWriteTimestamp2, thunk32_vkCmdWriteTimestamp2KHR, thunk32_vkCompileDeferredNV, thunk32_vkCopyAccelerationStructureKHR, thunk32_vkCopyAccelerationStructureToMemoryKHR, thunk32_vkCopyMemoryToAccelerationStructureKHR, thunk32_vkCopyMemoryToMicromapEXT, thunk32_vkCopyMicromapEXT, thunk32_vkCopyMicromapToMemoryEXT, thunk32_vkCreateAccelerationStructureKHR, thunk32_vkCreateAccelerationStructureNV, thunk32_vkCreateBuffer, thunk32_vkCreateBufferView, thunk32_vkCreateCommandPool, thunk32_vkCreateComputePipelines, thunk32_vkCreateCuFunctionNVX, thunk32_vkCreateCuModuleNVX, thunk32_vkCreateDebugReportCallbackEXT, thunk32_vkCreateDebugUtilsMessengerEXT, thunk32_vkCreateDeferredOperationKHR, thunk32_vkCreateDescriptorPool, thunk32_vkCreateDescriptorSetLayout, thunk32_vkCreateDescriptorUpdateTemplate, thunk32_vkCreateDescriptorUpdateTemplateKHR, thunk32_vkCreateDevice, thunk32_vkCreateEvent, thunk32_vkCreateFence, thunk32_vkCreateFramebuffer, thunk32_vkCreateGraphicsPipelines, thunk32_vkCreateImage, thunk32_vkCreateImageView, thunk32_vkCreateIndirectCommandsLayoutNV, thunk32_vkCreateInstance, thunk32_vkCreateMicromapEXT, thunk32_vkCreateOpticalFlowSessionNV, thunk32_vkCreatePipelineCache, thunk32_vkCreatePipelineLayout, thunk32_vkCreatePrivateDataSlot, thunk32_vkCreatePrivateDataSlotEXT, thunk32_vkCreateQueryPool, thunk32_vkCreateRayTracingPipelinesKHR, thunk32_vkCreateRayTracingPipelinesNV, thunk32_vkCreateRenderPass, thunk32_vkCreateRenderPass2, thunk32_vkCreateRenderPass2KHR, thunk32_vkCreateSampler, thunk32_vkCreateSamplerYcbcrConversion, thunk32_vkCreateSamplerYcbcrConversionKHR, thunk32_vkCreateSemaphore, thunk32_vkCreateShaderModule, thunk32_vkCreateSwapchainKHR, thunk32_vkCreateValidationCacheEXT, thunk32_vkCreateWin32SurfaceKHR, thunk32_vkDebugMarkerSetObjectNameEXT, thunk32_vkDebugMarkerSetObjectTagEXT, thunk32_vkDebugReportMessageEXT, thunk32_vkDeferredOperationJoinKHR, thunk32_vkDestroyAccelerationStructureKHR, thunk32_vkDestroyAccelerationStructureNV, thunk32_vkDestroyBuffer, thunk32_vkDestroyBufferView, thunk32_vkDestroyCommandPool, thunk32_vkDestroyCuFunctionNVX, thunk32_vkDestroyCuModuleNVX, thunk32_vkDestroyDebugReportCallbackEXT, thunk32_vkDestroyDebugUtilsMessengerEXT, thunk32_vkDestroyDeferredOperationKHR, thunk32_vkDestroyDescriptorPool, thunk32_vkDestroyDescriptorSetLayout, thunk32_vkDestroyDescriptorUpdateTemplate, thunk32_vkDestroyDescriptorUpdateTemplateKHR, thunk32_vkDestroyDevice, thunk32_vkDestroyEvent, thunk32_vkDestroyFence, thunk32_vkDestroyFramebuffer, thunk32_vkDestroyImage, thunk32_vkDestroyImageView, thunk32_vkDestroyIndirectCommandsLayoutNV, thunk32_vkDestroyInstance, thunk32_vkDestroyMicromapEXT, thunk32_vkDestroyOpticalFlowSessionNV, thunk32_vkDestroyPipeline, thunk32_vkDestroyPipelineCache, thunk32_vkDestroyPipelineLayout, thunk32_vkDestroyPrivateDataSlot, thunk32_vkDestroyPrivateDataSlotEXT, thunk32_vkDestroyQueryPool, thunk32_vkDestroyRenderPass, thunk32_vkDestroySampler, thunk32_vkDestroySamplerYcbcrConversion, thunk32_vkDestroySamplerYcbcrConversionKHR, thunk32_vkDestroySemaphore, thunk32_vkDestroyShaderModule, thunk32_vkDestroySurfaceKHR, thunk32_vkDestroySwapchainKHR, thunk32_vkDestroyValidationCacheEXT, thunk32_vkDeviceWaitIdle, thunk32_vkEndCommandBuffer, thunk32_vkEnumerateDeviceExtensionProperties, thunk32_vkEnumerateDeviceLayerProperties, thunk32_vkEnumerateInstanceExtensionProperties, thunk32_vkEnumerateInstanceVersion, thunk32_vkEnumeratePhysicalDeviceGroups, thunk32_vkEnumeratePhysicalDeviceGroupsKHR, thunk32_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, thunk32_vkEnumeratePhysicalDevices, thunk32_vkFlushMappedMemoryRanges, thunk32_vkFreeCommandBuffers, thunk32_vkFreeDescriptorSets, thunk32_vkFreeMemory, thunk32_vkGetAccelerationStructureBuildSizesKHR, thunk32_vkGetAccelerationStructureDeviceAddressKHR, thunk32_vkGetAccelerationStructureHandleNV, thunk32_vkGetAccelerationStructureMemoryRequirementsNV, thunk32_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, thunk32_vkGetBufferDeviceAddress, thunk32_vkGetBufferDeviceAddressEXT, thunk32_vkGetBufferDeviceAddressKHR, thunk32_vkGetBufferMemoryRequirements, thunk32_vkGetBufferMemoryRequirements2, thunk32_vkGetBufferMemoryRequirements2KHR, thunk32_vkGetBufferOpaqueCaptureAddress, thunk32_vkGetBufferOpaqueCaptureAddressKHR, thunk32_vkGetBufferOpaqueCaptureDescriptorDataEXT, thunk32_vkGetCalibratedTimestampsEXT, thunk32_vkGetDeferredOperationMaxConcurrencyKHR, thunk32_vkGetDeferredOperationResultKHR, thunk32_vkGetDescriptorEXT, thunk32_vkGetDescriptorSetHostMappingVALVE, thunk32_vkGetDescriptorSetLayoutBindingOffsetEXT, thunk32_vkGetDescriptorSetLayoutHostMappingInfoVALVE, thunk32_vkGetDescriptorSetLayoutSizeEXT, thunk32_vkGetDescriptorSetLayoutSupport, thunk32_vkGetDescriptorSetLayoutSupportKHR, thunk32_vkGetDeviceAccelerationStructureCompatibilityKHR, thunk32_vkGetDeviceBufferMemoryRequirements, thunk32_vkGetDeviceBufferMemoryRequirementsKHR, thunk32_vkGetDeviceFaultInfoEXT, thunk32_vkGetDeviceGroupPeerMemoryFeatures, thunk32_vkGetDeviceGroupPeerMemoryFeaturesKHR, thunk32_vkGetDeviceGroupPresentCapabilitiesKHR, thunk32_vkGetDeviceGroupSurfacePresentModesKHR, thunk32_vkGetDeviceImageMemoryRequirements, thunk32_vkGetDeviceImageMemoryRequirementsKHR, thunk32_vkGetDeviceImageSparseMemoryRequirements, thunk32_vkGetDeviceImageSparseMemoryRequirementsKHR, thunk32_vkGetDeviceMemoryCommitment, thunk32_vkGetDeviceMemoryOpaqueCaptureAddress, thunk32_vkGetDeviceMemoryOpaqueCaptureAddressKHR, thunk32_vkGetDeviceMicromapCompatibilityEXT, thunk32_vkGetDeviceQueue, thunk32_vkGetDeviceQueue2, thunk32_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, thunk32_vkGetDynamicRenderingTilePropertiesQCOM, thunk32_vkGetEventStatus, thunk32_vkGetFenceStatus, thunk32_vkGetFramebufferTilePropertiesQCOM, thunk32_vkGetGeneratedCommandsMemoryRequirementsNV, thunk32_vkGetImageMemoryRequirements, thunk32_vkGetImageMemoryRequirements2, thunk32_vkGetImageMemoryRequirements2KHR, thunk32_vkGetImageOpaqueCaptureDescriptorDataEXT, thunk32_vkGetImageSparseMemoryRequirements, thunk32_vkGetImageSparseMemoryRequirements2, thunk32_vkGetImageSparseMemoryRequirements2KHR, thunk32_vkGetImageSubresourceLayout, thunk32_vkGetImageSubresourceLayout2EXT, thunk32_vkGetImageViewAddressNVX, thunk32_vkGetImageViewHandleNVX, thunk32_vkGetImageViewOpaqueCaptureDescriptorDataEXT, thunk32_vkGetMemoryHostPointerPropertiesEXT, thunk32_vkGetMicromapBuildSizesEXT, thunk32_vkGetPerformanceParameterINTEL, thunk32_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, thunk32_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, thunk32_vkGetPhysicalDeviceExternalBufferProperties, thunk32_vkGetPhysicalDeviceExternalBufferPropertiesKHR, thunk32_vkGetPhysicalDeviceExternalFenceProperties, thunk32_vkGetPhysicalDeviceExternalFencePropertiesKHR, thunk32_vkGetPhysicalDeviceExternalSemaphoreProperties, thunk32_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, thunk32_vkGetPhysicalDeviceFeatures, thunk32_vkGetPhysicalDeviceFeatures2, thunk32_vkGetPhysicalDeviceFeatures2KHR, thunk32_vkGetPhysicalDeviceFormatProperties, thunk32_vkGetPhysicalDeviceFormatProperties2, thunk32_vkGetPhysicalDeviceFormatProperties2KHR, thunk32_vkGetPhysicalDeviceFragmentShadingRatesKHR, thunk32_vkGetPhysicalDeviceImageFormatProperties, thunk32_vkGetPhysicalDeviceImageFormatProperties2, thunk32_vkGetPhysicalDeviceImageFormatProperties2KHR, thunk32_vkGetPhysicalDeviceMemoryProperties, thunk32_vkGetPhysicalDeviceMemoryProperties2, thunk32_vkGetPhysicalDeviceMemoryProperties2KHR, thunk32_vkGetPhysicalDeviceMultisamplePropertiesEXT, thunk32_vkGetPhysicalDeviceOpticalFlowImageFormatsNV, thunk32_vkGetPhysicalDevicePresentRectanglesKHR, thunk32_vkGetPhysicalDeviceProperties, thunk32_vkGetPhysicalDeviceProperties2, thunk32_vkGetPhysicalDeviceProperties2KHR, thunk32_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, thunk32_vkGetPhysicalDeviceQueueFamilyProperties, thunk32_vkGetPhysicalDeviceQueueFamilyProperties2, thunk32_vkGetPhysicalDeviceQueueFamilyProperties2KHR, thunk32_vkGetPhysicalDeviceSparseImageFormatProperties, thunk32_vkGetPhysicalDeviceSparseImageFormatProperties2, thunk32_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, thunk32_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, thunk32_vkGetPhysicalDeviceSurfaceCapabilities2KHR, thunk32_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, thunk32_vkGetPhysicalDeviceSurfaceFormats2KHR, thunk32_vkGetPhysicalDeviceSurfaceFormatsKHR, thunk32_vkGetPhysicalDeviceSurfacePresentModesKHR, thunk32_vkGetPhysicalDeviceSurfaceSupportKHR, thunk32_vkGetPhysicalDeviceToolProperties, thunk32_vkGetPhysicalDeviceToolPropertiesEXT, thunk32_vkGetPhysicalDeviceWin32PresentationSupportKHR, thunk32_vkGetPipelineCacheData, thunk32_vkGetPipelineExecutableInternalRepresentationsKHR, thunk32_vkGetPipelineExecutablePropertiesKHR, thunk32_vkGetPipelineExecutableStatisticsKHR, thunk32_vkGetPipelinePropertiesEXT, thunk32_vkGetPrivateData, thunk32_vkGetPrivateDataEXT, thunk32_vkGetQueryPoolResults, thunk32_vkGetQueueCheckpointData2NV, thunk32_vkGetQueueCheckpointDataNV, thunk32_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, thunk32_vkGetRayTracingShaderGroupHandlesKHR, thunk32_vkGetRayTracingShaderGroupHandlesNV, thunk32_vkGetRayTracingShaderGroupStackSizeKHR, thunk32_vkGetRenderAreaGranularity, thunk32_vkGetSamplerOpaqueCaptureDescriptorDataEXT, thunk32_vkGetSemaphoreCounterValue, thunk32_vkGetSemaphoreCounterValueKHR, thunk32_vkGetShaderInfoAMD, thunk32_vkGetShaderModuleCreateInfoIdentifierEXT, thunk32_vkGetShaderModuleIdentifierEXT, thunk32_vkGetSwapchainImagesKHR, thunk32_vkGetValidationCacheDataEXT, thunk32_vkInitializePerformanceApiINTEL, thunk32_vkInvalidateMappedMemoryRanges, thunk32_vkMapMemory, thunk32_vkMergePipelineCaches, thunk32_vkMergeValidationCachesEXT, thunk32_vkQueueBeginDebugUtilsLabelEXT, thunk32_vkQueueBindSparse, thunk32_vkQueueEndDebugUtilsLabelEXT, thunk32_vkQueueInsertDebugUtilsLabelEXT, thunk32_vkQueuePresentKHR, thunk32_vkQueueSetPerformanceConfigurationINTEL, thunk32_vkQueueSubmit, thunk32_vkQueueSubmit2, thunk32_vkQueueSubmit2KHR, thunk32_vkQueueWaitIdle, thunk32_vkReleasePerformanceConfigurationINTEL, thunk32_vkReleaseProfilingLockKHR, thunk32_vkResetCommandBuffer, thunk32_vkResetCommandPool, thunk32_vkResetDescriptorPool, thunk32_vkResetEvent, thunk32_vkResetFences, thunk32_vkResetQueryPool, thunk32_vkResetQueryPoolEXT, thunk32_vkSetDebugUtilsObjectNameEXT, thunk32_vkSetDebugUtilsObjectTagEXT, thunk32_vkSetDeviceMemoryPriorityEXT, thunk32_vkSetEvent, thunk32_vkSetPrivateData, thunk32_vkSetPrivateDataEXT, thunk32_vkSignalSemaphore, thunk32_vkSignalSemaphoreKHR, thunk32_vkSubmitDebugUtilsMessageEXT, thunk32_vkTrimCommandPool, thunk32_vkTrimCommandPoolKHR, thunk32_vkUninitializePerformanceApiINTEL, thunk32_vkUnmapMemory, thunk32_vkUpdateDescriptorSetWithTemplate, thunk32_vkUpdateDescriptorSetWithTemplateKHR, thunk32_vkUpdateDescriptorSets, thunk32_vkWaitForFences, thunk32_vkWaitForPresentKHR, thunk32_vkWaitSemaphores, thunk32_vkWaitSemaphoresKHR, thunk32_vkWriteAccelerationStructuresPropertiesKHR, thunk32_vkWriteMicromapsPropertiesEXT, }; C_ASSERT(ARRAYSIZE(__wine_unix_call_funcs) == unix_count);