mirror of
https://github.com/Kbz-8/42_vox.git
synced 2026-01-11 14:43:34 +00:00
fixing buffers issue
This commit is contained in:
@@ -43,7 +43,7 @@ namespace Scop
|
||||
MemoryBlock m_memory = NULL_MEMORY_BLOCK;
|
||||
|
||||
private:
|
||||
void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, bool use_raw_size);
|
||||
void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties);
|
||||
|
||||
private:
|
||||
inline static std::size_t s_buffer_count = 0;
|
||||
|
||||
@@ -43,11 +43,11 @@ namespace Scop
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case LogType::Debug: std::cout << Ansi::blue << "[Scop Debug] "; break;
|
||||
case LogType::Message: std::cout << Ansi::blue << "[Scop Message] "; break;
|
||||
case LogType::Warning: std::cout << Ansi::magenta << "[Scop Warning] "; break;
|
||||
case LogType::Error: std::cerr << Ansi::red << "[Scop Error] "; break;
|
||||
case LogType::FatalError: std::cerr << Ansi::red << "[Scop Fatal Error] "; break;
|
||||
case LogType::Debug: std::cout << Ansi::blue << "[Scop Debug] "; break;
|
||||
case LogType::Message: std::cout << Ansi::blue << "[Scop Message] "; break;
|
||||
case LogType::Warning: std::cout << Ansi::magenta << "[Scop Warning] "; break;
|
||||
case LogType::Error: std::cerr << Ansi::red << "[Scop Error] "; break;
|
||||
case LogType::FatalError: std::cerr << Ansi::red << "[Scop Fatal Error] "; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace Scop
|
||||
if(type == BufferType::Staging && data.Empty())
|
||||
Warning("Vulkan: trying to create staging buffer without data (wtf?)");
|
||||
|
||||
CreateBuffer(size, m_usage, m_flags, false);
|
||||
CreateBuffer(size, m_usage, m_flags);
|
||||
|
||||
if(!data.Empty())
|
||||
{
|
||||
@@ -41,7 +41,7 @@ namespace Scop
|
||||
PushToGPU();
|
||||
}
|
||||
|
||||
void GPUBuffer::CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, bool use_raw_size)
|
||||
void GPUBuffer::CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties)
|
||||
{
|
||||
auto device = RenderCore::Get().GetDevice();
|
||||
m_buffer = kvfCreateBuffer(device, usage, size);
|
||||
@@ -49,13 +49,8 @@ namespace Scop
|
||||
VkMemoryRequirements mem_requirements;
|
||||
RenderCore::Get().vkGetBufferMemoryRequirements(device, m_buffer, &mem_requirements);
|
||||
|
||||
if(use_raw_size)
|
||||
{
|
||||
m_memory = RenderCore::Get().GetAllocator().Allocate(size, mem_requirements.alignment, *FindMemoryType(mem_requirements.memoryTypeBits, properties));
|
||||
Message("test % - %", size, m_memory.size);
|
||||
}
|
||||
else
|
||||
m_memory = RenderCore::Get().GetAllocator().Allocate(mem_requirements.size, mem_requirements.alignment, *FindMemoryType(mem_requirements.memoryTypeBits, properties));
|
||||
m_memory = RenderCore::Get().GetAllocator().Allocate(size, mem_requirements.alignment, *FindMemoryType(mem_requirements.memoryTypeBits, properties));
|
||||
//m_memory = RenderCore::Get().GetAllocator().Allocate(mem_requirements.size, mem_requirements.alignment, *FindMemoryType(mem_requirements.memoryTypeBits, properties));
|
||||
RenderCore::Get().vkBindBufferMemory(device, m_buffer, m_memory.memory, m_memory.offset);
|
||||
Message("Vulkan: created buffer");
|
||||
s_buffer_count++;
|
||||
@@ -90,7 +85,7 @@ namespace Scop
|
||||
GPUBuffer new_buffer;
|
||||
new_buffer.m_usage = (this->m_usage & 0xFFFFFFFC) | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
||||
new_buffer.m_flags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
|
||||
new_buffer.CreateBuffer(m_memory.size, new_buffer.m_usage, new_buffer.m_flags, true);
|
||||
new_buffer.CreateBuffer(m_memory.size, new_buffer.m_usage, new_buffer.m_flags);
|
||||
|
||||
if(new_buffer.CopyFrom(*this))
|
||||
Swap(new_buffer);
|
||||
@@ -167,7 +162,7 @@ namespace Scop
|
||||
|
||||
void UniformBuffer::SetData(CPUBuffer data, std::size_t frame_index)
|
||||
{
|
||||
if(data.GetSize() != m_buffers[frame_index].GetSize())
|
||||
if(data.GetSize() > m_buffers[frame_index].GetSize())
|
||||
{
|
||||
Error("Vulkan: invalid data size to update to a uniform buffer, % != %", data.GetSize(), m_buffers[frame_index].GetSize());
|
||||
return;
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Scop
|
||||
{
|
||||
case ImageType::Color: kvf_type = KVF_IMAGE_COLOR; break;
|
||||
case ImageType::Depth: kvf_type = KVF_IMAGE_DEPTH; break;
|
||||
case ImageType::Cube: kvf_type = KVF_IMAGE_CUBE; break;
|
||||
case ImageType::Cube: kvf_type = KVF_IMAGE_CUBE; break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user