From cc1246dcaca93fbdcecb9c6aece434cf8a6127c4 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 2 Jan 2023 22:11:00 +0100 Subject: [PATCH] VulkanRenderer: Fix 32bits compilation --- include/Nazara/VulkanRenderer/Utils.hpp | 2 ++ include/Nazara/VulkanRenderer/Utils.inl | 12 ++++++++++++ .../Nazara/VulkanRenderer/Wrapper/DeviceObject.inl | 8 +------- include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl | 2 +- src/Nazara/VulkanRenderer/VulkanBuffer.cpp | 2 +- src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp | 2 +- src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp | 2 +- src/Nazara/VulkanRenderer/VulkanTexture.cpp | 2 +- 8 files changed, 20 insertions(+), 12 deletions(-) diff --git a/include/Nazara/VulkanRenderer/Utils.hpp b/include/Nazara/VulkanRenderer/Utils.hpp index 53f43c069..1e948393d 100644 --- a/include/Nazara/VulkanRenderer/Utils.hpp +++ b/include/Nazara/VulkanRenderer/Utils.hpp @@ -48,6 +48,8 @@ namespace Nz inline VkVertexInputRate ToVulkan(VertexInputRate inputRate); NAZARA_VULKANRENDERER_API std::string TranslateVulkanError(VkResult code); + + template UInt64 VulkanHandleToInteger(T handle); } #include diff --git a/include/Nazara/VulkanRenderer/Utils.inl b/include/Nazara/VulkanRenderer/Utils.inl index 9db682e7b..43be869d3 100644 --- a/include/Nazara/VulkanRenderer/Utils.inl +++ b/include/Nazara/VulkanRenderer/Utils.inl @@ -497,6 +497,18 @@ namespace Nz NazaraError("Unhandled VertexInputRate 0x" + NumberToString(UnderlyingCast(inputRate), 16)); return {}; } + + template + UInt64 VulkanHandleToInteger(T handle) + { + if constexpr (std::is_pointer_v) + return static_cast(reinterpret_cast(handle)); + else + { + static_assert(std::is_integral_v); + return static_cast(handle); + } + } } #include diff --git a/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.inl b/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.inl index a94fbb014..f67fddd5b 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.inl @@ -86,13 +86,7 @@ namespace Nz::Vk template void DeviceObject::SetDebugName(T&& name) { - UInt64 objectHandle; - if constexpr (std::is_pointer_v) - objectHandle = static_cast(reinterpret_cast(m_handle)); - else - objectHandle = static_cast(m_handle); - - return m_device->SetDebugName(ObjectType, objectHandle, std::forward(name)); + return m_device->SetDebugName(ObjectType, VulkanHandleToInteger(m_handle), std::forward(name)); } template diff --git a/include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl b/include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl index 3d3525931..cb4f7c187 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl @@ -61,7 +61,7 @@ namespace Nz inline void Pipeline::SetDebugName(std::string_view name) { - return m_device->SetDebugName(VK_OBJECT_TYPE_PIPELINE, static_cast(reinterpret_cast(m_handle)), name); + return m_device->SetDebugName(VK_OBJECT_TYPE_PIPELINE, VulkanHandleToInteger(m_handle), name); } inline Pipeline::operator VkPipeline() const diff --git a/src/Nazara/VulkanRenderer/VulkanBuffer.cpp b/src/Nazara/VulkanRenderer/VulkanBuffer.cpp index 1a5c69cfb..9907756b2 100644 --- a/src/Nazara/VulkanRenderer/VulkanBuffer.cpp +++ b/src/Nazara/VulkanRenderer/VulkanBuffer.cpp @@ -139,7 +139,7 @@ namespace Nz void VulkanBuffer::UpdateDebugName(std::string_view name) { - return m_device.SetDebugName(VK_OBJECT_TYPE_BUFFER, static_cast(reinterpret_cast(m_buffer)), name); + return m_device.SetDebugName(VK_OBJECT_TYPE_BUFFER, VulkanHandleToInteger(m_buffer), name); } } diff --git a/src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp b/src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp index 409e066b3..a3bfc5155 100644 --- a/src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp +++ b/src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp @@ -10,7 +10,7 @@ namespace Nz { void VulkanCommandBuffer::UpdateDebugName(std::string_view name) { - return m_owner.m_device->SetDebugName(VK_OBJECT_TYPE_COMMAND_BUFFER, static_cast(reinterpret_cast(static_cast(m_commandBuffer))), name); + return m_owner.m_device->SetDebugName(VK_OBJECT_TYPE_COMMAND_BUFFER, VulkanHandleToInteger(static_cast(m_commandBuffer)), name); } void VulkanCommandBuffer::Release() diff --git a/src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp b/src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp index a0d4702d5..7bb7a5d36 100644 --- a/src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp +++ b/src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp @@ -139,7 +139,7 @@ namespace Nz void VulkanShaderBinding::UpdateDebugName(std::string_view name) { - return m_owner.m_device->SetDebugName(VK_OBJECT_TYPE_DESCRIPTOR_SET, static_cast(reinterpret_cast(static_cast(m_descriptorSet))), name); + return m_owner.m_device->SetDebugName(VK_OBJECT_TYPE_DESCRIPTOR_SET, VulkanHandleToInteger(static_cast(m_descriptorSet)), name); } void VulkanShaderBinding::Release() diff --git a/src/Nazara/VulkanRenderer/VulkanTexture.cpp b/src/Nazara/VulkanRenderer/VulkanTexture.cpp index cc07cdaf6..87c357f88 100644 --- a/src/Nazara/VulkanRenderer/VulkanTexture.cpp +++ b/src/Nazara/VulkanRenderer/VulkanTexture.cpp @@ -420,7 +420,7 @@ namespace Nz void VulkanTexture::UpdateDebugName(std::string_view name) { - return m_device.SetDebugName(VK_OBJECT_TYPE_IMAGE, static_cast(reinterpret_cast(m_image)), name); + return m_device.SetDebugName(VK_OBJECT_TYPE_IMAGE, VulkanHandleToInteger(m_image), name); } void VulkanTexture::InitViewForFormat(PixelFormat pixelFormat, VkImageViewCreateInfo& createImageView)