From 008dfc5d0ba524c308540cf90aef6432362fbc3b Mon Sep 17 00:00:00 2001 From: Nicolas James Date: Fri, 20 Feb 2026 11:39:17 +1100 Subject: Do not use designated initializers for positionally unstable dispatch table entries --- src/layer.cc | 74 +++++++++++++++++++++++++++++------------------------------- 1 file changed, 36 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/layer.cc b/src/layer.cc index 02acb03..c54dc9f 100644 --- a/src/layer.cc +++ b/src/layer.cc @@ -84,15 +84,14 @@ CreateInstance(const VkInstanceCreateInfo* pCreateInfo, const auto key = layer_context.get_key(*pInstance); #define INSTANCE_VTABLE_LOAD(name) \ - .name = reinterpret_cast(gipa(*pInstance, "vk" #name)) - auto vtable = VkuInstanceDispatchTable{ - INSTANCE_VTABLE_LOAD(DestroyInstance), - INSTANCE_VTABLE_LOAD(EnumeratePhysicalDevices), - INSTANCE_VTABLE_LOAD(GetPhysicalDeviceProperties), - INSTANCE_VTABLE_LOAD(GetInstanceProcAddr), - INSTANCE_VTABLE_LOAD(CreateDevice), - INSTANCE_VTABLE_LOAD(EnumerateDeviceExtensionProperties), - }; + vtable.name = reinterpret_cast(gipa(*pInstance, "vk" #name)) + auto vtable = VkuInstanceDispatchTable{}; + INSTANCE_VTABLE_LOAD(DestroyInstance); + INSTANCE_VTABLE_LOAD(EnumeratePhysicalDevices); + INSTANCE_VTABLE_LOAD(GetPhysicalDeviceProperties); + INSTANCE_VTABLE_LOAD(GetInstanceProcAddr); + INSTANCE_VTABLE_LOAD(CreateDevice); + INSTANCE_VTABLE_LOAD(EnumerateDeviceExtensionProperties); #undef INSTANCE_VTABLE_LOAD const auto lock = std::scoped_lock{layer_context.mutex}; @@ -274,35 +273,34 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice( } #define DEVICE_VTABLE_LOAD(name) \ - .name = reinterpret_cast(gdpa(*pDevice, "vk" #name)) - auto vtable = VkuDeviceDispatchTable{ - DEVICE_VTABLE_LOAD(GetDeviceProcAddr), - DEVICE_VTABLE_LOAD(DestroyDevice), - DEVICE_VTABLE_LOAD(GetDeviceQueue), - DEVICE_VTABLE_LOAD(QueueSubmit), - DEVICE_VTABLE_LOAD(CreateQueryPool), - DEVICE_VTABLE_LOAD(DestroyQueryPool), - DEVICE_VTABLE_LOAD(GetQueryPoolResults), - DEVICE_VTABLE_LOAD(CreateCommandPool), - DEVICE_VTABLE_LOAD(DestroyCommandPool), - DEVICE_VTABLE_LOAD(AllocateCommandBuffers), - DEVICE_VTABLE_LOAD(FreeCommandBuffers), - DEVICE_VTABLE_LOAD(BeginCommandBuffer), - DEVICE_VTABLE_LOAD(EndCommandBuffer), - DEVICE_VTABLE_LOAD(ResetCommandBuffer), - DEVICE_VTABLE_LOAD(CmdDraw), - DEVICE_VTABLE_LOAD(CmdDrawIndexed), - DEVICE_VTABLE_LOAD(CmdResetQueryPool), - DEVICE_VTABLE_LOAD(GetDeviceQueue2), - DEVICE_VTABLE_LOAD(QueueSubmit2), - DEVICE_VTABLE_LOAD(AcquireNextImageKHR), - DEVICE_VTABLE_LOAD(QueuePresentKHR), - DEVICE_VTABLE_LOAD(AcquireNextImage2KHR), - DEVICE_VTABLE_LOAD(CmdWriteTimestamp2KHR), - DEVICE_VTABLE_LOAD(QueueSubmit2KHR), - DEVICE_VTABLE_LOAD(GetCalibratedTimestampsKHR), - DEVICE_VTABLE_LOAD(ResetQueryPoolEXT), - }; + vtable.name = reinterpret_cast(gdpa(*pDevice, "vk" #name)) + auto vtable = VkuDeviceDispatchTable{}; + DEVICE_VTABLE_LOAD(GetDeviceProcAddr); + DEVICE_VTABLE_LOAD(DestroyDevice); + DEVICE_VTABLE_LOAD(GetDeviceQueue); + DEVICE_VTABLE_LOAD(QueueSubmit); + DEVICE_VTABLE_LOAD(CreateQueryPool); + DEVICE_VTABLE_LOAD(DestroyQueryPool); + DEVICE_VTABLE_LOAD(GetQueryPoolResults); + DEVICE_VTABLE_LOAD(CreateCommandPool); + DEVICE_VTABLE_LOAD(DestroyCommandPool); + DEVICE_VTABLE_LOAD(AllocateCommandBuffers); + DEVICE_VTABLE_LOAD(FreeCommandBuffers); + DEVICE_VTABLE_LOAD(BeginCommandBuffer); + DEVICE_VTABLE_LOAD(EndCommandBuffer); + DEVICE_VTABLE_LOAD(ResetCommandBuffer); + DEVICE_VTABLE_LOAD(CmdDraw); + DEVICE_VTABLE_LOAD(CmdDrawIndexed); + DEVICE_VTABLE_LOAD(CmdResetQueryPool); + DEVICE_VTABLE_LOAD(GetDeviceQueue2); + DEVICE_VTABLE_LOAD(QueueSubmit2); + DEVICE_VTABLE_LOAD(AcquireNextImageKHR); + DEVICE_VTABLE_LOAD(QueuePresentKHR); + DEVICE_VTABLE_LOAD(AcquireNextImage2KHR); + DEVICE_VTABLE_LOAD(CmdWriteTimestamp2KHR); + DEVICE_VTABLE_LOAD(QueueSubmit2KHR); + DEVICE_VTABLE_LOAD(GetCalibratedTimestampsKHR); + DEVICE_VTABLE_LOAD(ResetQueryPoolEXT); #undef DEVICE_VTABLE_LOAD const auto physical_context = layer_context.get_context(physical_device); -- cgit v1.2.3