Format all files based on clang-format file
This commit is contained in:
@@ -5,7 +5,8 @@
|
||||
namespace Copium
|
||||
{
|
||||
Buffer::Buffer(VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkDeviceSize size, int count)
|
||||
: size{size}, count{count}
|
||||
: size{size},
|
||||
count{count}
|
||||
{
|
||||
VkBufferCreateInfo createInfo{};
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||
@@ -23,7 +24,8 @@ namespace Copium
|
||||
allocateInfo.allocationSize = memoryRequirements.size;
|
||||
allocateInfo.memoryTypeIndex = Vulkan::GetDevice().FindMemoryType(memoryRequirements.memoryTypeBits, properties);
|
||||
|
||||
CP_VK_ASSERT(vkAllocateMemory(Vulkan::GetDevice(), &allocateInfo, nullptr, &memory), "Failed to allocate buffer memory");
|
||||
CP_VK_ASSERT(vkAllocateMemory(Vulkan::GetDevice(), &allocateInfo, nullptr, &memory),
|
||||
"Failed to allocate buffer memory");
|
||||
|
||||
vkBindBufferMemory(Vulkan::GetDevice(), handle, memory, 0);
|
||||
}
|
||||
@@ -32,10 +34,12 @@ namespace Copium
|
||||
{
|
||||
VkDeviceMemory memoryCpy = memory;
|
||||
VkBuffer handleCpy = handle;
|
||||
Vulkan::GetDevice().QueueIdleCommand([memoryCpy, handleCpy]() {
|
||||
vkFreeMemory(Vulkan::GetDevice(), memoryCpy, nullptr);
|
||||
vkDestroyBuffer(Vulkan::GetDevice(), handleCpy, nullptr);
|
||||
});
|
||||
Vulkan::GetDevice().QueueIdleCommand(
|
||||
[memoryCpy, handleCpy]()
|
||||
{
|
||||
vkFreeMemory(Vulkan::GetDevice(), memoryCpy, nullptr);
|
||||
vkDestroyBuffer(Vulkan::GetDevice(), handleCpy, nullptr);
|
||||
});
|
||||
}
|
||||
|
||||
void Buffer::Update(void* indexData, int index)
|
||||
@@ -58,7 +62,10 @@ namespace Copium
|
||||
void Buffer::UpdateStaging(void* data)
|
||||
{
|
||||
VkDeviceSize bufferSize = size * count;
|
||||
Buffer stagingBuffer{VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, bufferSize, 1};
|
||||
Buffer stagingBuffer{VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
|
||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
|
||||
bufferSize,
|
||||
1};
|
||||
|
||||
stagingBuffer.Update(data, 0);
|
||||
|
||||
@@ -67,7 +74,10 @@ namespace Copium
|
||||
|
||||
void Buffer::UpdateStaging(void* data, VkDeviceSize offset, VkDeviceSize size)
|
||||
{
|
||||
Buffer stagingBuffer{VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, size, 1};
|
||||
Buffer stagingBuffer{VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
|
||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
|
||||
size,
|
||||
1};
|
||||
|
||||
stagingBuffer.Update(data, 0);
|
||||
|
||||
@@ -89,7 +99,7 @@ namespace Copium
|
||||
mappedData = nullptr;
|
||||
}
|
||||
|
||||
Buffer::operator VkBuffer() const
|
||||
Buffer::operator VkBuffer() const
|
||||
{
|
||||
return handle;
|
||||
}
|
||||
@@ -115,7 +125,8 @@ namespace Copium
|
||||
allocateInfo.commandBufferCount = 1;
|
||||
|
||||
VkCommandBuffer commandBuffer;
|
||||
CP_VK_ASSERT(vkAllocateCommandBuffers(Vulkan::GetDevice(), &allocateInfo, &commandBuffer), "Failed to initialize command buffer");
|
||||
CP_VK_ASSERT(vkAllocateCommandBuffers(Vulkan::GetDevice(), &allocateInfo, &commandBuffer),
|
||||
"Failed to initialize command buffer");
|
||||
|
||||
VkCommandBufferBeginInfo beginInfo{};
|
||||
beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include "copium/util/Common.h"
|
||||
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
#include "copium/util/Common.h"
|
||||
|
||||
namespace Copium
|
||||
{
|
||||
class Buffer
|
||||
{
|
||||
CP_DELETE_COPY_AND_MOVE_CTOR(Buffer);
|
||||
|
||||
protected:
|
||||
VkDeviceMemory memory;
|
||||
VkBuffer handle;
|
||||
|
||||
@@ -9,14 +9,14 @@ namespace Copium
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case CommandBufferType::SingleUse:
|
||||
commandBuffers.resize(1);
|
||||
break;
|
||||
case CommandBufferType::Dynamic:
|
||||
commandBuffers.resize(SwapChain::MAX_FRAMES_IN_FLIGHT);
|
||||
break;
|
||||
default:
|
||||
CP_ABORT("Unreachable switch case: %s", ToString(type).c_str());
|
||||
case CommandBufferType::SingleUse:
|
||||
commandBuffers.resize(1);
|
||||
break;
|
||||
case CommandBufferType::Dynamic:
|
||||
commandBuffers.resize(SwapChain::MAX_FRAMES_IN_FLIGHT);
|
||||
break;
|
||||
default:
|
||||
CP_ABORT("Unreachable switch case: %s", ToString(type).c_str());
|
||||
}
|
||||
|
||||
VkCommandBufferAllocateInfo allocateInfo{};
|
||||
@@ -24,15 +24,21 @@ namespace Copium
|
||||
allocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
|
||||
allocateInfo.commandPool = Vulkan::GetDevice().GetCommandPool();
|
||||
allocateInfo.commandBufferCount = commandBuffers.size();
|
||||
CP_VK_ASSERT(vkAllocateCommandBuffers(Vulkan::GetDevice(), &allocateInfo, commandBuffers.data()), "Failed to allocate CommandBuffer");
|
||||
CP_VK_ASSERT(vkAllocateCommandBuffers(Vulkan::GetDevice(), &allocateInfo, commandBuffers.data()),
|
||||
"Failed to allocate CommandBuffer");
|
||||
}
|
||||
|
||||
CommandBuffer::~CommandBuffer()
|
||||
{
|
||||
std::vector<VkCommandBuffer> commandBuffersCpy = commandBuffers;
|
||||
Vulkan::GetDevice().QueueIdleCommand([commandBuffersCpy]() {
|
||||
vkFreeCommandBuffers(Vulkan::GetDevice(), Vulkan::GetDevice().GetCommandPool(), commandBuffersCpy.size(), commandBuffersCpy.data());
|
||||
});
|
||||
Vulkan::GetDevice().QueueIdleCommand(
|
||||
[commandBuffersCpy]()
|
||||
{
|
||||
vkFreeCommandBuffers(Vulkan::GetDevice(),
|
||||
Vulkan::GetDevice().GetCommandPool(),
|
||||
commandBuffersCpy.size(),
|
||||
commandBuffersCpy.data());
|
||||
});
|
||||
}
|
||||
|
||||
// TODO: Test as constexpr function to see if it avoids the switch case
|
||||
@@ -45,17 +51,18 @@ namespace Copium
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case CommandBufferType::SingleUse:
|
||||
beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
|
||||
break;
|
||||
case CommandBufferType::Dynamic:
|
||||
break;
|
||||
default:
|
||||
CP_ABORT("Unreachable switch case: %s", ToString(type).c_str());
|
||||
case CommandBufferType::SingleUse:
|
||||
beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
|
||||
break;
|
||||
case CommandBufferType::Dynamic:
|
||||
break;
|
||||
default:
|
||||
CP_ABORT("Unreachable switch case: %s", ToString(type).c_str());
|
||||
}
|
||||
|
||||
vkResetCommandBuffer(commandBuffers[Vulkan::GetSwapChain().GetFlightIndex()], 0);
|
||||
CP_VK_ASSERT(vkBeginCommandBuffer(commandBuffers[Vulkan::GetSwapChain().GetFlightIndex()], &beginInfo), "Failed to begin command buffer");
|
||||
CP_VK_ASSERT(vkBeginCommandBuffer(commandBuffers[Vulkan::GetSwapChain().GetFlightIndex()], &beginInfo),
|
||||
"Failed to begin command buffer");
|
||||
}
|
||||
|
||||
void CommandBuffer::End()
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
#include "copium/util/Common.h"
|
||||
#include "copium/util/Enum.h"
|
||||
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
#define CP_COMMAND_BUFFER_TYPE_ENUMS SingleUse, Dynamic
|
||||
CP_ENUM_CREATOR(Copium, CommandBufferType, CP_COMMAND_BUFFER_TYPE_ENUMS);
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Copium
|
||||
class CommandBuffer
|
||||
{
|
||||
CP_DELETE_COPY_AND_MOVE_CTOR(CommandBuffer);
|
||||
|
||||
private:
|
||||
std::vector<VkCommandBuffer> commandBuffers;
|
||||
const CommandBufferType type;
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace Copium
|
||||
class CommandBufferScoped final : public CommandBuffer
|
||||
{
|
||||
CP_DELETE_COPY_AND_MOVE_CTOR(CommandBufferScoped);
|
||||
|
||||
public:
|
||||
CommandBufferScoped();
|
||||
|
||||
|
||||
@@ -24,7 +24,8 @@ namespace Copium
|
||||
}
|
||||
|
||||
Framebuffer::Framebuffer(int width, int height, const SamplerCreator& samplerCreator)
|
||||
: width{width}, height{height}
|
||||
: width{width},
|
||||
height{height}
|
||||
{
|
||||
CP_ASSERT(width > 0, "Width of framebuffer is less than 1: %d", width);
|
||||
CP_ASSERT(height > 0, "Height of framebuffer is less than 1: %d", height);
|
||||
@@ -39,11 +40,13 @@ namespace Copium
|
||||
{
|
||||
std::vector<VkFramebuffer> framebuffersCpy = framebuffers;
|
||||
VkRenderPass renderPassCpy = renderPass;
|
||||
Vulkan::GetDevice().QueueIdleCommand([framebuffersCpy, renderPassCpy]() {
|
||||
for (auto& framebuffer : framebuffersCpy)
|
||||
vkDestroyFramebuffer(Vulkan::GetDevice(), framebuffer, nullptr);
|
||||
vkDestroyRenderPass(Vulkan::GetDevice(), renderPassCpy, nullptr);
|
||||
});
|
||||
Vulkan::GetDevice().QueueIdleCommand(
|
||||
[framebuffersCpy, renderPassCpy]()
|
||||
{
|
||||
for (auto& framebuffer : framebuffersCpy)
|
||||
vkDestroyFramebuffer(Vulkan::GetDevice(), framebuffer, nullptr);
|
||||
vkDestroyRenderPass(Vulkan::GetDevice(), renderPassCpy, nullptr);
|
||||
});
|
||||
}
|
||||
|
||||
void Framebuffer::Resize(int width, int height)
|
||||
@@ -193,7 +196,8 @@ namespace Copium
|
||||
renderPassCreateInfo.dependencyCount = dependencies.size();
|
||||
renderPassCreateInfo.pDependencies = dependencies.data();
|
||||
|
||||
CP_VK_ASSERT(vkCreateRenderPass(Vulkan::GetDevice(), &renderPassCreateInfo, nullptr, &renderPass), "Failed to initialze render pass");
|
||||
CP_VK_ASSERT(vkCreateRenderPass(Vulkan::GetDevice(), &renderPassCreateInfo, nullptr, &renderPass),
|
||||
"Failed to initialze render pass");
|
||||
}
|
||||
|
||||
void Framebuffer::InitializeFramebuffers()
|
||||
@@ -213,7 +217,8 @@ namespace Copium
|
||||
createInfo.height = height;
|
||||
createInfo.layers = 1;
|
||||
|
||||
CP_VK_ASSERT(vkCreateFramebuffer(Vulkan::GetDevice(), &createInfo, nullptr, &framebuffers[i]), "Failed to initialize framebuffer");
|
||||
CP_VK_ASSERT(vkCreateFramebuffer(Vulkan::GetDevice(), &createInfo, nullptr, &framebuffers[i]),
|
||||
"Failed to initialize framebuffer");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
#include "copium/asset/Asset.h"
|
||||
#include "copium/asset/AssetRef.h"
|
||||
#include "copium/buffer/CommandBuffer.h"
|
||||
@@ -7,13 +9,12 @@
|
||||
#include "copium/sampler/DepthAttachment.h"
|
||||
#include "copium/util/Common.h"
|
||||
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
namespace Copium
|
||||
{
|
||||
class Framebuffer final : public Asset
|
||||
{
|
||||
CP_DELETE_COPY_AND_MOVE_CTOR(Framebuffer);
|
||||
|
||||
private:
|
||||
AssetRef<ColorAttachment> colorAttachment;
|
||||
std::unique_ptr<DepthAttachment> depthAttachment;
|
||||
@@ -22,6 +23,7 @@ namespace Copium
|
||||
|
||||
int width;
|
||||
int height;
|
||||
|
||||
public:
|
||||
Framebuffer(const MetaFile& metaFile);
|
||||
Framebuffer(int width, int height, const SamplerCreator& samplerCreator);
|
||||
|
||||
@@ -7,9 +7,11 @@ namespace Copium
|
||||
IndexBuffer::IndexBuffer(int indexCount)
|
||||
: Buffer{VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
|
||||
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
|
||||
indexCount * sizeof(uint16_t), 1},
|
||||
indexCount * sizeof(uint16_t),
|
||||
1},
|
||||
indexCount{indexCount}
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
void IndexBuffer::Bind(const CommandBuffer& commandBuffer)
|
||||
{
|
||||
|
||||
@@ -9,8 +9,10 @@ namespace Copium
|
||||
class IndexBuffer final : public Buffer
|
||||
{
|
||||
CP_DELETE_COPY_AND_MOVE_CTOR(IndexBuffer);
|
||||
|
||||
private:
|
||||
int indexCount;
|
||||
|
||||
public:
|
||||
IndexBuffer(int indexCount);
|
||||
|
||||
|
||||
@@ -6,8 +6,12 @@ namespace Copium
|
||||
{
|
||||
|
||||
RendererVertexBuffer::RendererVertexBuffer(const VertexDescriptor& descriptor, int vertexCount)
|
||||
: Buffer{VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, descriptor.GetVertexSize() * vertexCount, SwapChain::MAX_FRAMES_IN_FLIGHT}
|
||||
{}
|
||||
: Buffer{VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
|
||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
|
||||
descriptor.GetVertexSize() * vertexCount,
|
||||
SwapChain::MAX_FRAMES_IN_FLIGHT}
|
||||
{
|
||||
}
|
||||
|
||||
void RendererVertexBuffer::Bind(const CommandBuffer& commandBuffer)
|
||||
{
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace Copium
|
||||
class RendererVertexBuffer : public Buffer
|
||||
{
|
||||
CP_DELETE_COPY_AND_MOVE_CTOR(RendererVertexBuffer);
|
||||
|
||||
public:
|
||||
RendererVertexBuffer(const VertexDescriptor& descriptor, int vertexCount);
|
||||
|
||||
|
||||
@@ -5,7 +5,11 @@
|
||||
namespace Copium
|
||||
{
|
||||
UniformBuffer::UniformBuffer(ShaderBinding binding)
|
||||
: Buffer{VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, binding.GetUniformBufferSize(), SwapChain::MAX_FRAMES_IN_FLIGHT}, binding{binding}
|
||||
: Buffer{VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
|
||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
|
||||
binding.GetUniformBufferSize(),
|
||||
SwapChain::MAX_FRAMES_IN_FLIGHT},
|
||||
binding{binding}
|
||||
{
|
||||
buffer.resize(Buffer::GetSize());
|
||||
}
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
#include "copium/buffer/Buffer.h"
|
||||
#include "copium/pipeline/ShaderBinding.h"
|
||||
#include "copium/util/Common.h"
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
namespace Copium
|
||||
{
|
||||
class UniformBuffer final : public Buffer
|
||||
{
|
||||
CP_DELETE_COPY_AND_MOVE_CTOR(UniformBuffer);
|
||||
|
||||
private:
|
||||
ShaderBinding binding;
|
||||
std::vector<uint8_t> buffer;
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
namespace Copium
|
||||
{
|
||||
VertexBuffer::VertexBuffer(const VertexDescriptor& descriptor, int vertexCount)
|
||||
: Buffer{VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, descriptor.GetVertexSize() * vertexCount, 1}
|
||||
: Buffer{VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
|
||||
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
|
||||
descriptor.GetVertexSize() * vertexCount,
|
||||
1}
|
||||
{
|
||||
VkDeviceSize offset = 0;
|
||||
for (auto&& binding : descriptor.GetBindings())
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
#include "copium/buffer/Buffer.h"
|
||||
#include "copium/buffer/CommandBuffer.h"
|
||||
#include "copium/pipeline/VertexDescriptor.h"
|
||||
#include "copium/util/Common.h"
|
||||
|
||||
#include <vector>
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
namespace Copium
|
||||
{
|
||||
class VertexBuffer final : public Buffer
|
||||
{
|
||||
CP_DELETE_COPY_AND_MOVE_CTOR(VertexBuffer);
|
||||
|
||||
private:
|
||||
std::vector<VkDeviceSize> bindingOffsets;
|
||||
std::vector<VkDeviceSize> bindingSizes;
|
||||
|
||||
public:
|
||||
VertexBuffer(const VertexDescriptor& descriptor, int vertexCount);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user