LATX, fix: Cover Vulkan proc-address wrappers - #401
Merged
LaurenIsACoder merged 2 commits intoAug 15, 2026
Merged
Conversation
Signed-off-by: Hanlu Li <heuleehanlu@gmail.com>
Vulkan implementations may return supported extension entry points through vkGetInstanceProcAddr or vkGetDeviceProcAddr even when those names are not exported as ordinary symbols. Missing signature entries made LAT return NULL after the host had returned a valid function pointer. Add the stable generic/Linux entry points observed during the Steam and DXVK coverage run. Add the two exact generic bridge shapes needed by those signatures. Signed-off-by: Hanlu Li <heuleehanlu@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
Vulkan applications do not necessarily import every command as an exported
libvulkan.so.1symbol. Extension commands are commonly requested at runtime throughvkGetInstanceProcAddrorvkGetDeviceProcAddr.The host Vulkan implementation can return a valid native function pointer for a supported command, but LAT can only expose that pointer to the x86 guest when the command has a known wrapper signature. If the signature is absent from
wrappedvulkan_private.h,resolveSymbol()returnsNULLeven though the host lookup succeeded. A guest that later calls the returned entry point then fails through a null function pointer.This was observed with Steam using DXVK when it requested
vkCmdSetDescriptorBufferOffsets2EXTfromVK_KHR_maintenance6.Changes
VK_KHR_maintenance6commands involved in the failing descriptor-buffer path.UFpu: a 64-bit result with pointer and 32-bit integer arguments.iFpupppp: a 32-bit result with pointer, 32-bit integer, and four pointer arguments.This PR is independent of the KZT host-pointer address-policy work: it fixes missing Vulkan proc-address metadata rather than guest/host virtual-address classification.
Validation
latx-x86_64successfully on LoongArch64.LATX_KZT=1for 90 seconds:test-kzt-address-policypassed.git diff --checkpassed.Scope
This covers the stable generic/Linux Vulkan entry points observed from the tested driver. It does not claim blanket support for every future, provisional, vendor-only, or non-Linux platform command in the Vulkan registry.