mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-06 13:15:59 +00:00
Overriding VK_DEFINE_NON_DISPATCHABLE_HANDLE changes the function signatures of Vulkan functions, changing their ABI and making us incompatible with real drivers. This removes that magic, and replaces it with an explicit wrapper, VkHandle, which has much of the same functionality as the original VkNonDispatchableHandle. It adds definitions for dawn_native::vulkan::VkBuffer et al, which shadow the native ::VkBuffer et al. This retains type safety throughout the Vulkan backend without changing every single usage. Notably, the following things had to change: - An explicit conversion from VkBuffer* to ::VkBuffer* is needed for arrays. This is implemented as a reinterpret_cast, which is still safe as the new VkHandle still has the same memory layout properties as VkNonDispatchableHandle did. - When pointing to a VkHandle as an output pointer, it's now necessary to explicitly get the native ::VkBuffer (via operator*) and point to it. Previously reviewed on: https://dawn-review.googlesource.com/c/dawn/+/15580 Bug: chromium:1046362 Change-Id: I7d34ec38a805025f92165ea9a7ee07ae5c182076 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15641 Reviewed-by: Kai Ninomiya <kainino@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org>