mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 08:27:05 +00:00
Remove VK_DEFINE_NON_DISPATCHABLE_HANDLE magic, use explicit VkHandle wrapper
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. Bug: chromium:1046362 Change-Id: I9c5691b6e295aca1b46d4e3d0203956e4d570285 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15580 Reviewed-by: Austin Eng <enga@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
1edaa1d1e1
commit
4e17d5c248
@@ -47,8 +47,8 @@ namespace dawn_native { namespace vulkan {
|
||||
|
||||
DAWN_NATIVE_EXPORT PFN_vkVoidFunction GetInstanceProcAddr(WGPUDevice device, const char* pName);
|
||||
|
||||
DAWN_NATIVE_EXPORT DawnSwapChainImplementation CreateNativeSwapChainImpl(WGPUDevice device,
|
||||
VkSurfaceKHR surface);
|
||||
DAWN_NATIVE_EXPORT DawnSwapChainImplementation
|
||||
CreateNativeSwapChainImpl(WGPUDevice device, ::VkSurfaceKHR surface);
|
||||
DAWN_NATIVE_EXPORT WGPUTextureFormat
|
||||
GetNativeSwapChainPreferredFormat(const DawnSwapChainImplementation* swapChain);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user