Skip to content

Commit b34541f

Browse files
authored
Add buffer tags for debugging (#27)
1 parent dc69867 commit b34541f

3 files changed

Lines changed: 19 additions & 11 deletions

File tree

src/Renderer.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,13 +233,13 @@ void Renderer::createPrefixSumPipeline() {
233233
void Renderer::createRadixSortPipeline() {
234234
spdlog::debug("Creating radix sort pipeline");
235235
sortKBufferEven = Buffer::storage(context, scene->getNumVertices() * sizeof(uint64_t) * sortBufferSizeMultiplier,
236-
false);
236+
false, 0, "sortKBufferEven");
237237
sortKBufferOdd = Buffer::storage(context, scene->getNumVertices() * sizeof(uint64_t) * sortBufferSizeMultiplier,
238-
false);
238+
false, 0, "sortKBufferOdd");
239239
sortVBufferEven = Buffer::storage(context, scene->getNumVertices() * sizeof(uint32_t) * sortBufferSizeMultiplier,
240-
false);
240+
false, 0, "sortVBufferEven");
241241
sortVBufferOdd = Buffer::storage(context, scene->getNumVertices() * sizeof(uint32_t) * sortBufferSizeMultiplier,
242-
false);
242+
false, 0, "sortVBufferOdd");
243243

244244
uint32_t globalInvocationSize = scene->getNumVertices() * sortBufferSizeMultiplier / numRadixSortBlocksPerWorkgroup;
245245
uint32_t remainder = scene->getNumVertices() * sortBufferSizeMultiplier % numRadixSortBlocksPerWorkgroup;

src/vulkan/Buffer.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void Buffer::alloc() {
2323
allocInfo.usage = vmaUsage;
2424
allocInfo.flags = flags;
2525

26-
VkBuffer vkBuffer;
26+
VkBuffer vkBuffer = VK_NULL_HANDLE;
2727

2828
VkResult res;
2929
if (alignment != 0) {
@@ -36,18 +36,24 @@ void Buffer::alloc() {
3636
throw std::runtime_error("Failed to create buffer");
3737
}
3838
buffer = vk::Buffer(vkBuffer);
39+
40+
if (context->validationLayersEnabled) {
41+
context->device->setDebugUtilsObjectNameEXT(
42+
vk::DebugUtilsObjectNameInfoEXT {vk::ObjectType::eBuffer, reinterpret_cast<uint64_t>(static_cast<VkBuffer>(buffer)), debugName.c_str()});
43+
}
3944
}
4045

4146
Buffer::Buffer(const std::shared_ptr<VulkanContext>& _context, uint32_t size, vk::BufferUsageFlags usage,
42-
VmaMemoryUsage vmaUsage, VmaAllocationCreateFlags flags, bool shared, vk::DeviceSize alignment)
47+
VmaMemoryUsage vmaUsage, VmaAllocationCreateFlags flags, bool shared, vk::DeviceSize alignment, std::string debugName)
4348
: context(_context),
4449
size(size),
4550
alignment(alignment),
4651
shared(shared),
4752
usage(usage),
4853
vmaUsage(vmaUsage),
4954
flags(flags),
50-
allocation(nullptr) {
55+
allocation(nullptr),
56+
debugName(std::move(debugName)) {
5157
alloc();
5258
}
5359

@@ -159,12 +165,12 @@ std::shared_ptr<Buffer> Buffer::staging(std::shared_ptr<VulkanContext> context,
159165
}
160166

161167
std::shared_ptr<Buffer> Buffer::storage(std::shared_ptr<VulkanContext> context, uint64_t size, bool concurrentSharing,
162-
vk::DeviceSize alignment) {
168+
vk::DeviceSize alignment, std::string debugName) {
163169
return std::make_shared<Buffer>(context, size,
164170
vk::BufferUsageFlagBits::eStorageBuffer | vk::BufferUsageFlagBits::eTransferDst |
165171
vk::BufferUsageFlagBits::eTransferSrc,
166172
VMA_MEMORY_USAGE_GPU_ONLY, VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT,
167-
concurrentSharing, alignment);
173+
concurrentSharing, alignment, debugName);
168174
}
169175

170176
void Buffer::assertEquals(char* data, size_t length) {

src/vulkan/Buffer.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class DescriptorSet;
1313
class Buffer : public std::enable_shared_from_this<Buffer> {
1414
public:
1515
Buffer(const std::shared_ptr<VulkanContext>& context, uint32_t size, vk::BufferUsageFlags usage, VmaMemoryUsage vmaUsage,
16-
VmaAllocationCreateFlags flags, bool concurrentSharing = false, VkDeviceSize alignment = 0);
16+
VmaAllocationCreateFlags flags, bool concurrentSharing = false, VkDeviceSize alignment = 0, std::string debugName = "Unnamed");
1717

1818
Buffer(const Buffer &) = delete;
1919

@@ -33,7 +33,8 @@ class Buffer : public std::enable_shared_from_this<Buffer> {
3333

3434
static std::shared_ptr<Buffer> staging(std::shared_ptr<VulkanContext> context, unsigned long size);
3535

36-
static std::shared_ptr<Buffer> storage(std::shared_ptr<VulkanContext> context, uint64_t size, bool concurrentSharing = false, vk::DeviceSize alignment = 0);
36+
static std::shared_ptr<Buffer> storage(std::shared_ptr<VulkanContext> context, uint64_t size, bool concurrentSharing = false, vk::DeviceSize alignment = 0, std
37+
::string debugName = "Unnamed Storage Buffer");
3738

3839
void upload(const void *data, uint32_t size, uint32_t offset = 0);
3940

@@ -82,6 +83,7 @@ class Buffer : public std::enable_shared_from_this<Buffer> {
8283
std::shared_ptr<VulkanContext> context;
8384

8485
std::vector<std::tuple<std::weak_ptr<DescriptorSet>, uint32_t, uint32_t, vk::DescriptorType>> boundDescriptorSets;
86+
std::string debugName;
8587
};
8688

8789

0 commit comments

Comments
 (0)