From 8d7f587d7e57666eb1af1af79a1147f2589a2b90 Mon Sep 17 00:00:00 2001 From: antopilo Date: Sat, 4 Jan 2025 11:24:50 -0500 Subject: [PATCH] Display buffer names instead in GPU Resources explorer --- Editor/src/Windows/EditorInterface.cpp | 4 ++-- Nuake/src/Rendering/Vulkan/VkMesh.cpp | 4 ++-- Nuake/src/Rendering/Vulkan/VkResources.h | 14 ++++++++------ .../src/Rendering/Vulkan/VulkanAllocatedBuffer.cpp | 6 ++++++ Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.h | 4 ++++ Nuake/src/Rendering/Vulkan/VulkanRenderer.cpp | 6 +++--- Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp | 4 ++-- 7 files changed, 27 insertions(+), 15 deletions(-) diff --git a/Editor/src/Windows/EditorInterface.cpp b/Editor/src/Windows/EditorInterface.cpp index 1e5c5681..fdc84a95 100644 --- a/Editor/src/Windows/EditorInterface.cpp +++ b/Editor/src/Windows/EditorInterface.cpp @@ -2564,10 +2564,10 @@ namespace Nuake { for (auto& buffer : buffers) { - ImGui::Text(std::to_string(buffer->GetID()).c_str()); + ImGui::Text(buffer->GetName().c_str()); ImGui::TableNextColumn(); - + ImGui::Text(std::to_string(buffer->GetSize()).c_str()); ImGui::TableNextColumn(); } diff --git a/Nuake/src/Rendering/Vulkan/VkMesh.cpp b/Nuake/src/Rendering/Vulkan/VkMesh.cpp index 66d2e983..17d08aae 100644 --- a/Nuake/src/Rendering/Vulkan/VkMesh.cpp +++ b/Nuake/src/Rendering/Vulkan/VkMesh.cpp @@ -13,8 +13,8 @@ VkMesh::VkMesh(const std::vector& vertices, const std::vector& const size_t indexBufferSize = indices.size() * sizeof(uint32_t); GPUResources& resources = GPUResources::Get(); - VertexBuffer = resources.CreateBuffer(vertexBufferSize, BufferUsage::STORAGE_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY); - IndexBuffer = resources.CreateBuffer(indexBufferSize, BufferUsage::INDEX_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY); + VertexBuffer = resources.CreateBuffer(vertexBufferSize, BufferUsage::STORAGE_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY, "VertexBuffer"); + IndexBuffer = resources.CreateBuffer(indexBufferSize, BufferUsage::INDEX_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY, "IndexBuffer"); // Then we upload to data to those buffers. UploadToGPU(vertices, indices); diff --git a/Nuake/src/Rendering/Vulkan/VkResources.h b/Nuake/src/Rendering/Vulkan/VkResources.h index 459013ff..559cbf7e 100644 --- a/Nuake/src/Rendering/Vulkan/VkResources.h +++ b/Nuake/src/Rendering/Vulkan/VkResources.h @@ -1,9 +1,11 @@ #pragma once #include "src/Core/Core.h" -#include "src/Resource/UUID.h" -#include "src/Rendering/Vertex.h" -#include "VulkanAllocatedBuffer.h" #include "src/Core/Logger.h" +#include "src/Resource/UUID.h" + +#include "src/Rendering/Vertex.h" +#include "src/Rendering/Vulkan/VulkanAllocatedBuffer.h" +#include "src/Rendering/Vulkan/VulkanImage/VulkanImage.h" namespace Nuake { @@ -12,7 +14,7 @@ namespace Nuake private: std::map> Buffers; std::map> Meshes; - + std::map> Images; public: static GPUResources& Get() @@ -24,9 +26,9 @@ namespace Nuake GPUResources() = default; ~GPUResources() = default; - Ref CreateBuffer(size_t size, BufferUsage flags, MemoryUsage usage) + Ref CreateBuffer(size_t size, BufferUsage flags, MemoryUsage usage, const std::string& name = "") { - Ref buffer = CreateRef(size, flags, usage); + Ref buffer = CreateRef(name, size, flags, usage); Buffers[buffer->GetID()] = buffer; return buffer; } diff --git a/Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.cpp b/Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.cpp index e8113454..2239f1d3 100644 --- a/Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.cpp +++ b/Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.cpp @@ -29,6 +29,12 @@ AllocatedBuffer::AllocatedBuffer(size_t inSize, BufferUsage inFlags, MemoryUsage &Info)); } +AllocatedBuffer::AllocatedBuffer(const std::string& name, size_t inSize, BufferUsage inFlags, MemoryUsage inUsage) : + AllocatedBuffer::AllocatedBuffer(inSize, inFlags, inUsage) +{ + Name = name.empty() ? std::to_string(ID) : name; // Default name is just ID +} + AllocatedBuffer::~AllocatedBuffer() { // TODO: deletion of buffer diff --git a/Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.h b/Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.h index cfa2881e..f117bf92 100644 --- a/Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.h +++ b/Nuake/src/Rendering/Vulkan/VulkanAllocatedBuffer.h @@ -4,6 +4,7 @@ #include "src/Resource/UUID.h" #include "src/Rendering/Vulkan/VkVertex.h" +#include #include #include "volk/volk.h" @@ -36,6 +37,7 @@ namespace Nuake class AllocatedBuffer { private: + std::string Name; UUID ID; VkBuffer Buffer; VmaAllocation Allocation; @@ -44,6 +46,7 @@ namespace Nuake public: AllocatedBuffer(size_t size, BufferUsage flags, MemoryUsage usage); + AllocatedBuffer(const std::string& name, size_t size, BufferUsage flags, MemoryUsage usage); AllocatedBuffer() = default; ~AllocatedBuffer(); @@ -51,6 +54,7 @@ namespace Nuake VmaAllocation GetAllocation() const { return Allocation; } UUID GetID() const { return ID; } size_t GetSize() const { return Size; } + std::string GetName() const { return Name; } }; // push constants for our mesh object draws diff --git a/Nuake/src/Rendering/Vulkan/VulkanRenderer.cpp b/Nuake/src/Rendering/Vulkan/VulkanRenderer.cpp index 1422e018..3f8e5bed 100644 --- a/Nuake/src/Rendering/Vulkan/VulkanRenderer.cpp +++ b/Nuake/src/Rendering/Vulkan/VulkanRenderer.cpp @@ -122,7 +122,7 @@ void VkRenderer::Initialize() camData.Projection = Matrix4(1.0f); // init camera buffer - CameraBuffer = resources.CreateBuffer(sizeof(CameraData), BufferUsage::STORAGE_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY); + CameraBuffer = resources.CreateBuffer(sizeof(CameraData), BufferUsage::STORAGE_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY, "CameraBuffer"); UploadCameraData(camData); InitDescriptors(); @@ -294,8 +294,8 @@ void VkRenderer::InitCommands() VK_CALL(vkAllocateCommandBuffers(Device, &cmdAllocInfo, &Frames[i].CommandBuffer)); GPUResources& resources = GPUResources::Get(); - Frames[i].CameraStagingBuffer = resources.CreateBuffer(sizeof(CameraData), BufferUsage::TRANSFER_SRC, MemoryUsage::CPU_ONLY); - Frames[i].ModelStagingBuffer = resources.CreateBuffer(sizeof(Matrix4) * MAX_MODEL_MATRIX, BufferUsage::TRANSFER_SRC, MemoryUsage::CPU_ONLY); + Frames[i].CameraStagingBuffer = resources.CreateBuffer(sizeof(CameraData), BufferUsage::TRANSFER_SRC, MemoryUsage::CPU_ONLY, "CameraStaging" + std::to_string(i) ); + Frames[i].ModelStagingBuffer = resources.CreateBuffer(sizeof(Matrix4) * MAX_MODEL_MATRIX, BufferUsage::TRANSFER_SRC, MemoryUsage::CPU_ONLY, "TransformStaging" + std::to_string(i)); } VK_CALL(vkCreateCommandPool(Device, &cmdPoolInfo, nullptr, &ImguiCommandPool)); diff --git a/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp b/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp index 14e48e20..202054cb 100644 --- a/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp +++ b/Nuake/src/Rendering/Vulkan/VulkanSceneRenderer.cpp @@ -162,10 +162,10 @@ void VkSceneRenderer::CreateBuffers() // init camera buffer GPUResources& resources = GPUResources::Get(); - CameraBuffer = resources.CreateBuffer(sizeof(CameraData), BufferUsage::STORAGE_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY); + CameraBuffer = resources.CreateBuffer(sizeof(CameraData), BufferUsage::STORAGE_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY, "CameraBuffer"); UpdateCameraData(camData); - ModelBuffer = resources.CreateBuffer(sizeof(Matrix4) * MAX_MODEL_MATRIX, BufferUsage::STORAGE_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY); + ModelBuffer = resources.CreateBuffer(sizeof(Matrix4) * MAX_MODEL_MATRIX, BufferUsage::STORAGE_BUFFER | BufferUsage::TRANSFER_DST, MemoryUsage::GPU_ONLY, "TransformBuffer"); } void VkSceneRenderer::LoadShaders()