From 15b95ca4a16562414d9a746fbae462e6133fd55d Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 26 Mar 2020 21:20:00 +0100 Subject: [PATCH] Minor and forgotten stuff --- include/Nazara/Renderer/RendererImpl.hpp | 4 ++-- .../Nazara/VulkanRenderer/VulkanRenderer.hpp | 2 +- .../VulkanRenderer/Wrapper/CommandBuffer.hpp | 6 ++++-- .../VulkanRenderer/Wrapper/CommandBuffer.inl | 20 +++++++++++++++---- plugins/Assimp/Plugin.cpp | 2 +- src/Nazara/Core/PluginManager.cpp | 4 ++-- src/Nazara/VulkanRenderer/VulkanRenderer.cpp | 7 ++++--- 7 files changed, 30 insertions(+), 15 deletions(-) diff --git a/include/Nazara/Renderer/RendererImpl.hpp b/include/Nazara/Renderer/RendererImpl.hpp index f9b5f4d10..67eeafe64 100644 --- a/include/Nazara/Renderer/RendererImpl.hpp +++ b/include/Nazara/Renderer/RendererImpl.hpp @@ -9,12 +9,12 @@ #include #include -#include #include #include #include #include #include +#include #include namespace Nz @@ -41,7 +41,7 @@ namespace Nz virtual bool IsBetterThan(const RendererImpl* other) const = 0; virtual RenderAPI QueryAPI() const = 0; - virtual String QueryAPIString() const = 0; + virtual std::string QueryAPIString() const = 0; virtual UInt32 QueryAPIVersion() const = 0; virtual std::vector QueryRenderDevices() const = 0; diff --git a/include/Nazara/VulkanRenderer/VulkanRenderer.hpp b/include/Nazara/VulkanRenderer/VulkanRenderer.hpp index 2d7b2f779..e228170a4 100644 --- a/include/Nazara/VulkanRenderer/VulkanRenderer.hpp +++ b/include/Nazara/VulkanRenderer/VulkanRenderer.hpp @@ -33,7 +33,7 @@ namespace Nz bool IsBetterThan(const RendererImpl* other) const override; RenderAPI QueryAPI() const override; - String QueryAPIString() const override; + std::string QueryAPIString() const override; UInt32 QueryAPIVersion() const override; std::vector QueryRenderDevices() const override; diff --git a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp index 8e058256a..bac7e5f61 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp +++ b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp @@ -53,7 +53,7 @@ namespace Nz inline void ClearDepthStencilImage(VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue& depthStencil, UInt32 rangeCount, const VkImageSubresourceRange* ranges); inline void CopyBuffer(VkBuffer source, VkBuffer target, UInt32 size, UInt32 sourceOffset = 0, UInt32 targetOffset = 0); - inline void CopyBufferToImage(VkBuffer source, VkImage target, VkImageLayout targetLayout, UInt32 width, UInt32 height); + inline void CopyBufferToImage(VkBuffer source, VkImage target, VkImageLayout targetLayout, UInt32 width, UInt32 height, UInt32 depth = 1); inline void Draw(UInt32 vertexCount, UInt32 instanceCount = 1, UInt32 firstVertex = 0, UInt32 firstInstance = 0); inline void DrawIndexed(UInt32 indexCount, UInt32 instanceCount = 1, UInt32 firstVertex = 0, Int32 vertexOffset = 0, UInt32 firstInstance = 0); @@ -64,8 +64,10 @@ namespace Nz inline void Free(); + inline void MemoryBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask); + inline void PipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, const VkImageMemoryBarrier& imageMemoryBarrier); - inline void PipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, const VkMemoryBarrier& memoryBarrier, const VkBufferMemoryBarrier& bufferMemoryBarrier, const VkImageMemoryBarrier& imageMemoryBarrier); + inline void PipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, const VkMemoryBarrier& memoryBarrier); inline void PipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, UInt32 memoryBarrierCount, const VkMemoryBarrier* memoryBarriers, UInt32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* bufferMemoryBarriers, UInt32 imageMemoryBarrierCount, const VkImageMemoryBarrier* imageMemoryBarriers); inline void SetScissor(const Recti& scissorRegion); diff --git a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl index f504a0df8..9b2558a63 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl @@ -198,7 +198,7 @@ namespace Nz return m_pool->GetDevice()->vkCmdCopyBuffer(m_handle, source, target, 1, ®ion); } - inline void CommandBuffer::CopyBufferToImage(VkBuffer source, VkImage target, VkImageLayout targetLayout, UInt32 width, UInt32 height) + inline void CommandBuffer::CopyBufferToImage(VkBuffer source, VkImage target, VkImageLayout targetLayout, UInt32 width, UInt32 height, UInt32 depth) { VkBufferImageCopy region = { 0, @@ -214,7 +214,7 @@ namespace Nz 0, 0, 0 }, { // imageExtent - width, height, 1U + width, height, depth } }; @@ -257,14 +257,26 @@ namespace Nz } } + inline void CommandBuffer::MemoryBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask) + { + VkMemoryBarrier memoryBarrier = { + VK_STRUCTURE_TYPE_MEMORY_BARRIER, + nullptr, + srcAccessMask, + dstAccessMask + }; + + return PipelineBarrier(srcStageMask, dstStageMask, 0U, memoryBarrier); + } + inline void CommandBuffer::PipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, const VkImageMemoryBarrier& imageMemoryBarrier) { return PipelineBarrier(srcStageMask, dstStageMask, dependencyFlags, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier); } - inline void CommandBuffer::PipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, const VkMemoryBarrier& memoryBarrier, const VkBufferMemoryBarrier& bufferMemoryBarrier, const VkImageMemoryBarrier& imageMemoryBarrier) + inline void CommandBuffer::PipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, const VkMemoryBarrier& memoryBarrier) { - return PipelineBarrier(srcStageMask, dstStageMask, dependencyFlags, 1, &memoryBarrier, 1, &bufferMemoryBarrier, 1, &imageMemoryBarrier); + return PipelineBarrier(srcStageMask, dstStageMask, dependencyFlags, 1, &memoryBarrier, 0, nullptr, 0, nullptr); } inline void CommandBuffer::PipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, UInt32 memoryBarrierCount, const VkMemoryBarrier* memoryBarriers, UInt32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* bufferMemoryBarriers, UInt32 imageMemoryBarrierCount, const VkImageMemoryBarrier* imageMemoryBarriers) diff --git a/plugins/Assimp/Plugin.cpp b/plugins/Assimp/Plugin.cpp index 79efd69f0..e84b9f4f5 100644 --- a/plugins/Assimp/Plugin.cpp +++ b/plugins/Assimp/Plugin.cpp @@ -320,7 +320,7 @@ MeshRef LoadMesh(Stream& stream, const MeshParams& parameters) if (normalTangentMatrix.HasScale()) normalTangentMatrix.ApplyScale(1.f / normalTangentMatrix.GetScale()); - VertexBufferRef vertexBuffer = VertexBuffer::New(VertexDeclaration::Get(VertexLayout_XYZ_Normal_UV_Tangent_Skinning), vertexCount, parameters.storage, parameters.vertexBufferFlags | BufferUsage_Dynamic); + VertexBufferRef vertexBuffer = VertexBuffer::New(VertexDeclaration::Get(VertexLayout_XYZ_Normal_UV_Tangent_Skinning), vertexCount, parameters.storage, parameters.vertexBufferFlags); BufferMapper vertexMapper(vertexBuffer, BufferAccess_ReadWrite); SkeletalMeshVertex* vertices = static_cast(vertexMapper.GetPointer()); diff --git a/src/Nazara/Core/PluginManager.cpp b/src/Nazara/Core/PluginManager.cpp index 215854c15..ffbbeda67 100644 --- a/src/Nazara/Core/PluginManager.cpp +++ b/src/Nazara/Core/PluginManager.cpp @@ -113,7 +113,7 @@ namespace Nz } std::filesystem::path path = pluginPath; - if (appendExtension && path.extension() == NAZARA_DYNLIB_EXTENSION) + if (appendExtension && path.extension() != NAZARA_DYNLIB_EXTENSION) path += NAZARA_DYNLIB_EXTENSION; bool exists = false; @@ -159,7 +159,7 @@ namespace Nz return false; } - std::filesystem::path canonicalPath = std::filesystem::canonical(pluginPath); + std::filesystem::path canonicalPath = std::filesystem::canonical(path); s_plugins[canonicalPath] = std::move(library); return true; diff --git a/src/Nazara/VulkanRenderer/VulkanRenderer.cpp b/src/Nazara/VulkanRenderer/VulkanRenderer.cpp index ee06a5bf9..dfc11eeb5 100644 --- a/src/Nazara/VulkanRenderer/VulkanRenderer.cpp +++ b/src/Nazara/VulkanRenderer/VulkanRenderer.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include namespace Nz @@ -53,12 +54,12 @@ namespace Nz return RenderAPI::Vulkan; } - String VulkanRenderer::QueryAPIString() const + std::string VulkanRenderer::QueryAPIString() const { - StringStream ss; + std::ostringstream ss; ss << "Vulkan renderer " << VK_VERSION_MAJOR(APIVersion) << '.' << VK_VERSION_MINOR(APIVersion) << '.' << VK_VERSION_PATCH(APIVersion); - return ss; + return ss.str(); } UInt32 VulkanRenderer::QueryAPIVersion() const