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;
|
MemoryBlock m_memory = NULL_MEMORY_BLOCK;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, bool use_raw_size);
|
void CreateBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline static std::size_t s_buffer_count = 0;
|
inline static std::size_t s_buffer_count = 0;
|
||||||
|
|||||||
@@ -43,11 +43,11 @@ namespace Scop
|
|||||||
|
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case LogType::Debug: std::cout << Ansi::blue << "[Scop Debug] "; break;
|
case LogType::Debug: std::cout << Ansi::blue << "[Scop Debug] "; break;
|
||||||
case LogType::Message: std::cout << Ansi::blue << "[Scop Message] "; break;
|
case LogType::Message: std::cout << Ansi::blue << "[Scop Message] "; break;
|
||||||
case LogType::Warning: std::cout << Ansi::magenta << "[Scop Warning] "; break;
|
case LogType::Warning: std::cout << Ansi::magenta << "[Scop Warning] "; break;
|
||||||
case LogType::Error: std::cerr << Ansi::red << "[Scop Error] "; break;
|
case LogType::Error: std::cerr << Ansi::red << "[Scop Error] "; break;
|
||||||
case LogType::FatalError: std::cerr << Ansi::red << "[Scop Fatal Error] "; break;
|
case LogType::FatalError: std::cerr << Ansi::red << "[Scop Fatal Error] "; break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace Scop
|
|||||||
if(type == BufferType::Staging && data.Empty())
|
if(type == BufferType::Staging && data.Empty())
|
||||||
Warning("Vulkan: trying to create staging buffer without data (wtf?)");
|
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())
|
if(!data.Empty())
|
||||||
{
|
{
|
||||||
@@ -41,7 +41,7 @@ namespace Scop
|
|||||||
PushToGPU();
|
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();
|
auto device = RenderCore::Get().GetDevice();
|
||||||
m_buffer = kvfCreateBuffer(device, usage, size);
|
m_buffer = kvfCreateBuffer(device, usage, size);
|
||||||
@@ -49,13 +49,8 @@ namespace Scop
|
|||||||
VkMemoryRequirements mem_requirements;
|
VkMemoryRequirements mem_requirements;
|
||||||
RenderCore::Get().vkGetBufferMemoryRequirements(device, m_buffer, &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));
|
||||||
{
|
//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));
|
|
||||||
Message("test % - %", size, m_memory.size);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
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);
|
RenderCore::Get().vkBindBufferMemory(device, m_buffer, m_memory.memory, m_memory.offset);
|
||||||
Message("Vulkan: created buffer");
|
Message("Vulkan: created buffer");
|
||||||
s_buffer_count++;
|
s_buffer_count++;
|
||||||
@@ -90,7 +85,7 @@ namespace Scop
|
|||||||
GPUBuffer new_buffer;
|
GPUBuffer new_buffer;
|
||||||
new_buffer.m_usage = (this->m_usage & 0xFFFFFFFC) | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
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.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))
|
if(new_buffer.CopyFrom(*this))
|
||||||
Swap(new_buffer);
|
Swap(new_buffer);
|
||||||
@@ -167,7 +162,7 @@ namespace Scop
|
|||||||
|
|
||||||
void UniformBuffer::SetData(CPUBuffer data, std::size_t frame_index)
|
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());
|
Error("Vulkan: invalid data size to update to a uniform buffer, % != %", data.GetSize(), m_buffers[frame_index].GetSize());
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace Scop
|
|||||||
{
|
{
|
||||||
case ImageType::Color: kvf_type = KVF_IMAGE_COLOR; break;
|
case ImageType::Color: kvf_type = KVF_IMAGE_COLOR; break;
|
||||||
case ImageType::Depth: kvf_type = KVF_IMAGE_DEPTH; 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;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user