diff --git a/include/Nazara/VulkanRenderer/VulkanBuffer.inl b/include/Nazara/VulkanRenderer/VulkanBuffer.inl index a68a4ac64..e11cf5cd2 100644 --- a/include/Nazara/VulkanRenderer/VulkanBuffer.inl +++ b/include/Nazara/VulkanRenderer/VulkanBuffer.inl @@ -8,8 +8,8 @@ namespace Nz { inline VulkanBuffer::VulkanBuffer(Vk::Device& device, BufferType type) : - m_device(device), - m_type(type) + m_type(type), + m_device(device) { } diff --git a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl index 96cadade6..2e33e57b2 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl @@ -120,14 +120,7 @@ namespace Nz inline void CommandBuffer::BeginDebugRegion(const char* label) { - Vk::Device* device = m_pool->GetDevice(); - if (device->vkCmdBeginDebugUtilsLabelEXT) - { - VkDebugUtilsLabelEXT debugLabel = { VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT }; - debugLabel.pLabelName = label; - - device->vkCmdBeginDebugUtilsLabelEXT(m_handle, &debugLabel); - } + return BeginDebugRegion(label, Nz::Color(0, 0, 0, 0)); } inline void CommandBuffer::BeginDebugRegion(const char* label, Nz::Color color) @@ -135,12 +128,17 @@ namespace Nz Vk::Device* device = m_pool->GetDevice(); if (device->vkCmdBeginDebugUtilsLabelEXT) { - VkDebugUtilsLabelEXT debugLabel = { VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT }; - debugLabel.pLabelName = label; - debugLabel.color[0] = color.r / 255.f; - debugLabel.color[1] = color.g / 255.f; - debugLabel.color[2] = color.b / 255.f; - debugLabel.color[3] = color.a / 255.f; + VkDebugUtilsLabelEXT debugLabel = { + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, + nullptr, + label, + { + color.r / 255.f, + color.g / 255.f, + color.b / 255.f, + color.a / 255.f + } + }; device->vkCmdBeginDebugUtilsLabelEXT(m_handle, &debugLabel); } @@ -299,14 +297,7 @@ namespace Nz inline void CommandBuffer::InsertDebugLabel(const char* label) { - Vk::Device* device = m_pool->GetDevice(); - if (device->vkCmdInsertDebugUtilsLabelEXT) - { - VkDebugUtilsLabelEXT debugLabel = { VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT }; - debugLabel.pLabelName = label; - - device->vkCmdInsertDebugUtilsLabelEXT(m_handle, &debugLabel); - } + return InsertDebugLabel(label, Nz::Color(0, 0, 0, 0)); } inline void CommandBuffer::InsertDebugLabel(const char* label, Nz::Color color) @@ -314,12 +305,17 @@ namespace Nz Vk::Device* device = m_pool->GetDevice(); if (device->vkCmdInsertDebugUtilsLabelEXT) { - VkDebugUtilsLabelEXT debugLabel = { VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT }; - debugLabel.pLabelName = label; - debugLabel.color[0] = color.r / 255.f; - debugLabel.color[1] = color.g / 255.f; - debugLabel.color[2] = color.b / 255.f; - debugLabel.color[3] = color.a / 255.f; + VkDebugUtilsLabelEXT debugLabel = { + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, + nullptr, + label, + { + color.r / 255.f, + color.g / 255.f, + color.b / 255.f, + color.a / 255.f + } + }; device->vkCmdInsertDebugUtilsLabelEXT(m_handle, &debugLabel); } diff --git a/include/Nazara/VulkanRenderer/Wrapper/Instance.hpp b/include/Nazara/VulkanRenderer/Wrapper/Instance.hpp index 7b67d5c98..3ab30645e 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/Instance.hpp +++ b/include/Nazara/VulkanRenderer/Wrapper/Instance.hpp @@ -56,7 +56,7 @@ namespace Nz ~Instance(); bool Create(const VkInstanceCreateInfo& createInfo, const VkAllocationCallbacks* allocator = nullptr); - inline bool Create(const std::string& appName, UInt32 appVersion, const std::string& engineName, UInt32 engineVersion, const std::vector& layers, const std::vector& extensions, const VkAllocationCallbacks* allocator = nullptr); + inline bool Create(const std::string& appName, UInt32 appVersion, const std::string& engineName, UInt32 engineVersion, UInt32 apiVersion, const std::vector& layers, const std::vector& extensions, const VkAllocationCallbacks* allocator = nullptr); inline void Destroy(); bool EnumeratePhysicalDevices(std::vector* physicalDevices); diff --git a/include/Nazara/VulkanRenderer/Wrapper/Instance.inl b/include/Nazara/VulkanRenderer/Wrapper/Instance.inl index 0a2e6d0b5..e66261801 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/Instance.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/Instance.inl @@ -12,7 +12,7 @@ namespace Nz { namespace Vk { - inline bool Instance::Create(const std::string& appName, UInt32 appVersion, const std::string& engineName, UInt32 engineVersion, const std::vector& layers, const std::vector& extensions, const VkAllocationCallbacks* allocator) + inline bool Instance::Create(const std::string& appName, UInt32 appVersion, const std::string& engineName, UInt32 engineVersion, UInt32 apiVersion, const std::vector& layers, const std::vector& extensions, const VkAllocationCallbacks* allocator) { VkApplicationInfo appInfo = { @@ -21,7 +21,8 @@ namespace Nz appName.data(), appVersion, engineName.data(), - engineVersion + engineVersion, + apiVersion }; VkInstanceCreateInfo instanceInfo = diff --git a/src/Nazara/VulkanRenderer/VkRenderWindow.cpp b/src/Nazara/VulkanRenderer/VkRenderWindow.cpp index 12137f0f1..3ed481a3e 100644 --- a/src/Nazara/VulkanRenderer/VkRenderWindow.cpp +++ b/src/Nazara/VulkanRenderer/VkRenderWindow.cpp @@ -21,8 +21,8 @@ namespace Nz { VkRenderWindow::VkRenderWindow(RenderWindow& owner) : m_currentFrame(0), - m_depthStencilFormat(VK_FORMAT_MAX_ENUM), m_owner(owner), + m_depthStencilFormat(VK_FORMAT_MAX_ENUM), m_shouldRecreateSwapchain(false) { } @@ -221,21 +221,21 @@ namespace Nz std::unique_ptr VkRenderWindow::CreateCommandPool(QueueType queueType) { - UInt32 queueFamilyIndex; - switch (queueType) - { - case QueueType::Compute: - queueFamilyIndex = m_device->GetDefaultFamilyIndex(QueueType::Compute); - break; + UInt32 queueFamilyIndex = [&] { + switch (queueType) + { + case QueueType::Compute: + return m_device->GetDefaultFamilyIndex(QueueType::Compute); - case QueueType::Graphics: - queueFamilyIndex = m_graphicsQueue.GetQueueFamilyIndex(); - break; + case QueueType::Graphics: + return m_graphicsQueue.GetQueueFamilyIndex(); - case QueueType::Transfer: - queueFamilyIndex = m_transferQueue.GetQueueFamilyIndex(); - break; - } + case QueueType::Transfer: + return m_transferQueue.GetQueueFamilyIndex(); + } + + throw std::runtime_error("invalid queue type " + std::to_string(UnderlyingCast(queueType))); + }(); return std::make_unique(*m_device, queueFamilyIndex); } @@ -509,7 +509,7 @@ namespace Nz imageCount = surfaceCapabilities.maxImageCount; VkExtent2D extent; - if (surfaceCapabilities.currentExtent.width == -1) + if (surfaceCapabilities.currentExtent.width == 0xFFFFFFFF) { extent.width = Nz::Clamp(size.x, surfaceCapabilities.minImageExtent.width, surfaceCapabilities.maxImageExtent.width); extent.height = Nz::Clamp(size.y, surfaceCapabilities.minImageExtent.height, surfaceCapabilities.maxImageExtent.height); diff --git a/src/Nazara/VulkanRenderer/VulkanCommandBufferBuilder.cpp b/src/Nazara/VulkanRenderer/VulkanCommandBufferBuilder.cpp index 69f839e23..8e027e923 100644 --- a/src/Nazara/VulkanRenderer/VulkanCommandBufferBuilder.cpp +++ b/src/Nazara/VulkanRenderer/VulkanCommandBufferBuilder.cpp @@ -49,12 +49,6 @@ namespace Nz throw std::runtime_error("Unhandled framebuffer type " + std::to_string(UnderlyingCast(vkFramebuffer.GetType()))); }(); - VkRect2D renderArea; - renderArea.offset.x = renderRect.x; - renderArea.offset.y = renderRect.y; - renderArea.extent.width = renderRect.width; - renderArea.extent.height = renderRect.height; - StackArray vkClearValues = NazaraStackArray(VkClearValue, clearValues.size()); std::size_t index = 0; diff --git a/src/Nazara/VulkanRenderer/VulkanRenderer.cpp b/src/Nazara/VulkanRenderer/VulkanRenderer.cpp index aa0edcb5a..3a29f76b9 100644 --- a/src/Nazara/VulkanRenderer/VulkanRenderer.cpp +++ b/src/Nazara/VulkanRenderer/VulkanRenderer.cpp @@ -89,6 +89,7 @@ namespace Nz default: NazaraWarning("Device " + device.name + " has handled device type (0x" + String::Number(physDevice.properties.deviceType, 16) + ')'); + // fallthrough case VK_PHYSICAL_DEVICE_TYPE_OTHER: device.type = RenderDeviceType::Unknown; break;