diff --git a/CMakeLists.txt b/CMakeLists.txt index ba0da74..d941777 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,7 +50,7 @@ add_dependencies(pleascach shaders) # copy assets somewhere accessible by the accessable add_custom_command( TARGET shaders POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory + COMMAND cmake -E copy_directory "$/assets" "$/assets") diff --git a/Memory/Buffer.cpp b/Memory/Buffer.cpp index 00d904d..1dec373 100644 --- a/Memory/Buffer.cpp +++ b/Memory/Buffer.cpp @@ -1,6 +1,8 @@ #include #include +#include + Buffer::Buffer(vk::PhysicalDevice phys_dev, vk::Device dev, vk::DeviceSize sz, vk::BufferUsageFlags usage, vk::MemoryPropertyFlags mem_flags, vk::SharingMode sharing) : dev(dev), size(sz) { auto info = vk::BufferCreateInfo { .size = sz, @@ -9,6 +11,8 @@ Buffer::Buffer(vk::PhysicalDevice phys_dev, vk::Device dev, vk::DeviceSize sz, v }; buffer = dev.createBuffer(info); + Log::debug("Is memory flagged for host: %d\n", mem_flags & vk::MemoryPropertyFlagBits::eHostVisible); + auto reqs = dev.getBufferMemoryRequirements(buffer); auto alloc_info = vk::MemoryAllocateInfo{ .allocationSize = reqs.size, diff --git a/Memory/Buffer.hpp b/Memory/Buffer.hpp index 2b83235..d29d049 100644 --- a/Memory/Buffer.hpp +++ b/Memory/Buffer.hpp @@ -6,8 +6,8 @@ struct Buffer { Buffer(vk::PhysicalDevice phys_dev, vk::Device dev, vk::DeviceSize sz, vk::BufferUsageFlags usage, vk::MemoryPropertyFlags mem_flags, vk::SharingMode sharing = vk::SharingMode::eExclusive); - vk::DeviceSize size; vk::Device dev; + vk::DeviceSize size; vk::DeviceMemory memory; vk::Buffer buffer; diff --git a/Memory/Memory.cpp b/Memory/Memory.cpp index a365f22..0f1ce7d 100644 --- a/Memory/Memory.cpp +++ b/Memory/Memory.cpp @@ -5,7 +5,6 @@ namespace mem { auto dev_props = phys_dev.getMemoryProperties(); if(static_cast(pref_flags.operator VkImageCreateFlags()) != -1) { - /* try to find an exact match for preferred flags first */ for (u32 memory_type = 0; memory_type < 32; memory_type++) { if (requirements.memoryTypeBits & (1 << memory_type)) { @@ -17,11 +16,11 @@ namespace mem { } } - for (u32 memory_type = 0; memory_type < 32; memory_type++) { + for (u32 memory_type = 0; memory_type < dev_props.memoryTypeCount; memory_type++) { if (requirements.memoryTypeBits & (1 << memory_type)) { const auto& type = dev_props.memoryTypes[memory_type]; if ((type.propertyFlags & req_flags) == req_flags) { - return type.heapIndex; + return memory_type; } } } diff --git a/Renderer/Pipeline.cpp b/Renderer/Pipeline.cpp index 3906cb6..9863795 100644 --- a/Renderer/Pipeline.cpp +++ b/Renderer/Pipeline.cpp @@ -173,6 +173,7 @@ GraphicsPipeline::GraphicsPipeline(vk::Device dev, const std::vector& sh } pipeline = res.value; + dev.destroyPipelineLayout(layout); } diff --git a/Renderer/Shader.hpp b/Renderer/Shader.hpp index 02c83a3..12b5548 100644 --- a/Renderer/Shader.hpp +++ b/Renderer/Shader.hpp @@ -5,10 +5,12 @@ struct Shader { vk::Device dev; - vk::ShaderModule module; + std::string fname; vk::ShaderStageFlagBits stage; + vk::ShaderModule module; Shader(vk::Device dev, const std::string& fname, vk::ShaderStageFlagBits stage); + void cleanup(); inline operator vk::ShaderModule() const { return module; @@ -26,7 +28,4 @@ struct Shader { }; } - std::string fname; - - void cleanup(); }; diff --git a/Renderer/UniformBuffer.hpp b/Renderer/UniformBuffer.hpp index a482657..9c89869 100644 --- a/Renderer/UniformBuffer.hpp +++ b/Renderer/UniformBuffer.hpp @@ -7,6 +7,8 @@ #include +#include + struct UniformData { glm::mat4 mvp; float time; diff --git a/Renderer/VertexBuffer.hpp b/Renderer/VertexBuffer.hpp index 540f84b..677098d 100644 --- a/Renderer/VertexBuffer.hpp +++ b/Renderer/VertexBuffer.hpp @@ -1,5 +1,7 @@ #include +#include + #include struct Vertex {