diff --git a/include/vulkan/utility/vk_struct_helper.hpp b/include/vulkan/utility/vk_struct_helper.hpp index 4468d2b..6993f5a 100644 --- a/include/vulkan/utility/vk_struct_helper.hpp +++ b/include/vulkan/utility/vk_struct_helper.hpp @@ -1038,13 +1038,12 @@ class InitStructHelper { return InitStruct(p_next); } }; - +#if VK_USE_64_BIT_PTR_DEFINES == 1 template VkObjectType GetObjectType() { static_assert(sizeof(T) == 0, "GetObjectType() is being used with an unsupported Type! Is the code-gen up to date?"); return VK_OBJECT_TYPE_UNKNOWN; } -#if VK_USE_64_BIT_PTR_DEFINES == 1 template<> inline VkObjectType GetObjectType() { return VK_OBJECT_TYPE_BUFFER; } template<> inline VkObjectType GetObjectType() { return VK_OBJECT_TYPE_IMAGE; } template<> inline VkObjectType GetObjectType() { return VK_OBJECT_TYPE_INSTANCE; } @@ -1098,7 +1097,12 @@ template<> inline VkObjectType GetObjectType() { return VK_OBJECT template<> inline VkObjectType GetObjectType() { return VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV; } template<> inline VkObjectType GetObjectType() { return VK_OBJECT_TYPE_SHADER_EXT; } -#endif // VK_USE_64_BIT_PTR_DEFINES == 1 +# else // 32 bit +template VkObjectType GetObjectType() { + static_assert(sizeof(T) == 0, "GetObjectType() does not support 32 bit builds! This is a limitation of the vulkan.h headers"); + return VK_OBJECT_TYPE_UNKNOWN; +} +# endif // VK_USE_64_BIT_PTR_DEFINES == 1 } // namespace vku // NOLINTEND// clang-format on diff --git a/scripts/generators/struct_helper_generator.py b/scripts/generators/struct_helper_generator.py index b84a1ca..f92a872 100644 --- a/scripts/generators/struct_helper_generator.py +++ b/scripts/generators/struct_helper_generator.py @@ -123,20 +123,24 @@ class InitStructHelper { return InitStruct(p_next); } }; - +#if VK_USE_64_BIT_PTR_DEFINES == 1 template VkObjectType GetObjectType() { static_assert(sizeof(T) == 0, "GetObjectType() is being used with an unsupported Type! Is the code-gen up to date?"); return VK_OBJECT_TYPE_UNKNOWN; } -#if VK_USE_64_BIT_PTR_DEFINES == 1 ''') for handle in self.vk.handles.values(): out.extend(guard_helper.add_guard(handle.protect)) out.append(f'template<> inline VkObjectType GetObjectType<{handle.name}>() {{ return {handle.type}; }}\n') out.extend(guard_helper.add_guard(None)) out.append(''' -#endif // VK_USE_64_BIT_PTR_DEFINES == 1 +# else // 32 bit +template VkObjectType GetObjectType() { + static_assert(sizeof(T) == 0, "GetObjectType() does not support 32 bit builds! This is a limitation of the vulkan.h headers"); + return VK_OBJECT_TYPE_UNKNOWN; +} +# endif // VK_USE_64_BIT_PTR_DEFINES == 1 } // namespace vku \n''')