From 5b922cf52f15442dd081076ea6e28af09a22368e Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 6 Aug 2017 12:13:08 +0200 Subject: [PATCH] Vulkan: Add buffer placeholder --- include/Nazara/Renderer/RendererImpl.hpp | 2 +- .../Nazara/VulkanRenderer/VulkanBuffer.hpp | 49 +++++++++++++++++++ .../Nazara/VulkanRenderer/VulkanBuffer.inl | 16 ++++++ src/Nazara/VulkanRenderer/VulkanBuffer.cpp | 37 ++++++++++++++ src/Nazara/VulkanRenderer/VulkanRenderer.cpp | 4 +- 5 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 include/Nazara/VulkanRenderer/VulkanBuffer.hpp create mode 100644 include/Nazara/VulkanRenderer/VulkanBuffer.inl create mode 100644 src/Nazara/VulkanRenderer/VulkanBuffer.cpp diff --git a/include/Nazara/Renderer/RendererImpl.hpp b/include/Nazara/Renderer/RendererImpl.hpp index 0c0501e99..38b043980 100644 --- a/include/Nazara/Renderer/RendererImpl.hpp +++ b/include/Nazara/Renderer/RendererImpl.hpp @@ -13,12 +13,12 @@ #include #include #include +#include #include #include namespace Nz { - class AbstractBuffer; class Buffer; class RendererImpl; class RenderDeviceInstance; diff --git a/include/Nazara/VulkanRenderer/VulkanBuffer.hpp b/include/Nazara/VulkanRenderer/VulkanBuffer.hpp new file mode 100644 index 000000000..597cc7236 --- /dev/null +++ b/include/Nazara/VulkanRenderer/VulkanBuffer.hpp @@ -0,0 +1,49 @@ +// Copyright (C) 2015 Jérôme Leclercq +// This file is part of the "Nazara Engine - Vulkan Renderer" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_VULKANRENDERER_BUFFER_HPP +#define NAZARA_VULKANRENDERER_BUFFER_HPP + +#include +#include +#include +#include +#include +#include + +namespace Nz +{ + //TODO: Move all the software stuff to the Renderer + + class NAZARA_VULKANRENDERER_API VulkanBuffer : public AbstractBuffer + { + public: + inline VulkanBuffer(Buffer* parent, BufferType type); + VulkanBuffer(const VulkanBuffer&) = delete; + VulkanBuffer(VulkanBuffer&&) = delete; ///TODO + virtual ~VulkanBuffer(); + + bool Fill(const void* data, UInt32 offset, UInt32 size) override; + + bool Initialize(UInt32 size, BufferUsageFlags usage) override; + + DataStorage GetStorage() const override; + + void* Map(BufferAccess access, UInt32 offset = 0, UInt32 size = 0) override; + bool Unmap() override; + + VulkanBuffer& operator=(const VulkanBuffer&) = delete; + VulkanBuffer& operator=(VulkanBuffer&&) = delete; ///TODO + + private: + BufferUsageFlags m_usage; + SoftwareBuffer m_softwareData; + }; +} + +#include + +#endif // NAZARA_VULKANRENDERER_BUFFER_HPP diff --git a/include/Nazara/VulkanRenderer/VulkanBuffer.inl b/include/Nazara/VulkanRenderer/VulkanBuffer.inl new file mode 100644 index 000000000..7638ebb80 --- /dev/null +++ b/include/Nazara/VulkanRenderer/VulkanBuffer.inl @@ -0,0 +1,16 @@ +// Copyright (C) 2016 Jérôme Leclercq +// This file is part of the "Nazara Engine - Vulkan Renderer" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include + +namespace Nz +{ + inline VulkanBuffer::VulkanBuffer(Buffer* parent, BufferType type) : + m_softwareData(parent, type) + { + } +} + +#include diff --git a/src/Nazara/VulkanRenderer/VulkanBuffer.cpp b/src/Nazara/VulkanRenderer/VulkanBuffer.cpp new file mode 100644 index 000000000..530c345b4 --- /dev/null +++ b/src/Nazara/VulkanRenderer/VulkanBuffer.cpp @@ -0,0 +1,37 @@ +// Copyright (C) 2016 Jérôme Leclercq +// This file is part of the "Nazara Engine - Vulkan Renderer" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include + +namespace Nz +{ + VulkanBuffer::~VulkanBuffer() = default; + + bool VulkanBuffer::Fill(const void* data, UInt32 offset, UInt32 size) + { + return m_softwareData.Fill(data, offset, size); + } + + bool VulkanBuffer::Initialize(UInt32 size, BufferUsageFlags usage) + { + m_usage = usage; + return m_softwareData.Initialize(size, usage); + } + + DataStorage VulkanBuffer::GetStorage() const + { + return DataStorage_Hardware; + } + + void* VulkanBuffer::Map(BufferAccess access, UInt32 offset, UInt32 size) + { + return m_softwareData.Map(access, offset, size); + } + + bool VulkanBuffer::Unmap() + { + return m_softwareData.Unmap(); + } +} diff --git a/src/Nazara/VulkanRenderer/VulkanRenderer.cpp b/src/Nazara/VulkanRenderer/VulkanRenderer.cpp index 3db104ee6..57db953d4 100644 --- a/src/Nazara/VulkanRenderer/VulkanRenderer.cpp +++ b/src/Nazara/VulkanRenderer/VulkanRenderer.cpp @@ -5,7 +5,7 @@ #include #include #include -//#include +#include #include #include #include @@ -20,7 +20,7 @@ namespace Nz std::unique_ptr VulkanRenderer::CreateHardwareBufferImpl(Buffer* parent, BufferType type) { - return nullptr; //< TODO + return std::make_unique(parent, type); //< TODO } std::unique_ptr VulkanRenderer::CreateRenderSurfaceImpl()