Adding object debug naming
This commit is contained in:
@@ -66,6 +66,7 @@ struct TextureCreateInfo
|
|||||||
uint32 samples = 1;
|
uint32 samples = 1;
|
||||||
Gfx::SeImageUsageFlags usage = Gfx::SE_IMAGE_USAGE_SAMPLED_BIT;
|
Gfx::SeImageUsageFlags usage = Gfx::SE_IMAGE_USAGE_SAMPLED_BIT;
|
||||||
Gfx::SeMemoryPropertyFlags memoryProps = Gfx::SE_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
|
Gfx::SeMemoryPropertyFlags memoryProps = Gfx::SE_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
|
||||||
|
std::string name;
|
||||||
};
|
};
|
||||||
struct SamplerCreateInfo
|
struct SamplerCreateInfo
|
||||||
{
|
{
|
||||||
@@ -85,6 +86,7 @@ struct SamplerCreateInfo
|
|||||||
float maxLod = 0.0f;
|
float maxLod = 0.0f;
|
||||||
Gfx::SeBorderColor borderColor = Gfx::SE_BORDER_COLOR_FLOAT_OPAQUE_BLACK;
|
Gfx::SeBorderColor borderColor = Gfx::SE_BORDER_COLOR_FLOAT_OPAQUE_BLACK;
|
||||||
uint32 unnormalizedCoordinates = 0;
|
uint32 unnormalizedCoordinates = 0;
|
||||||
|
std::string name;
|
||||||
};
|
};
|
||||||
struct VertexBufferCreateInfo
|
struct VertexBufferCreateInfo
|
||||||
{
|
{
|
||||||
@@ -92,22 +94,26 @@ struct VertexBufferCreateInfo
|
|||||||
// bytes per vertex
|
// bytes per vertex
|
||||||
uint32 vertexSize = 0;
|
uint32 vertexSize = 0;
|
||||||
uint32 numVertices = 0;
|
uint32 numVertices = 0;
|
||||||
|
std::string name;
|
||||||
};
|
};
|
||||||
struct IndexBufferCreateInfo
|
struct IndexBufferCreateInfo
|
||||||
{
|
{
|
||||||
DataSource sourceData = DataSource();
|
DataSource sourceData = DataSource();
|
||||||
Gfx::SeIndexType indexType = Gfx::SeIndexType::SE_INDEX_TYPE_UINT16;
|
Gfx::SeIndexType indexType = Gfx::SeIndexType::SE_INDEX_TYPE_UINT16;
|
||||||
|
std::string name;
|
||||||
};
|
};
|
||||||
struct UniformBufferCreateInfo
|
struct UniformBufferCreateInfo
|
||||||
{
|
{
|
||||||
DataSource sourceData = DataSource();
|
DataSource sourceData = DataSource();
|
||||||
uint8 dynamic = 0;
|
uint8 dynamic = 0;
|
||||||
|
std::string name;
|
||||||
};
|
};
|
||||||
struct ShaderBufferCreateInfo
|
struct ShaderBufferCreateInfo
|
||||||
{
|
{
|
||||||
DataSource sourceData = DataSource();
|
DataSource sourceData = DataSource();
|
||||||
uint64 numElements = 1;
|
uint64 numElements = 1;
|
||||||
uint8 dynamic = 0;
|
uint8 dynamic = 0;
|
||||||
|
std::string name;
|
||||||
};
|
};
|
||||||
struct ShaderCreateInfo
|
struct ShaderCreateInfo
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ void LightCullingPass::render()
|
|||||||
{
|
{
|
||||||
oLightIndexCounter->pipelineBarrier(
|
oLightIndexCounter->pipelineBarrier(
|
||||||
Gfx::SE_ACCESS_MEMORY_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT,
|
Gfx::SE_ACCESS_MEMORY_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
Gfx::SE_ACCESS_MEMORY_WRITE_BIT | Gfx::SE_ACCESS_MEMORY_READ_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
Gfx::SE_ACCESS_MEMORY_READ_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||||
oLightIndexList->pipelineBarrier(
|
oLightIndexList->pipelineBarrier(
|
||||||
Gfx::SE_ACCESS_SHADER_READ_BIT, Gfx::SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
Gfx::SE_ACCESS_SHADER_READ_BIT, Gfx::SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||||
Gfx::SE_ACCESS_SHADER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
Gfx::SE_ACCESS_SHADER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||||
@@ -58,7 +58,7 @@ void LightCullingPass::render()
|
|||||||
Gfx::SE_ACCESS_SHADER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
Gfx::SE_ACCESS_SHADER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||||
tLightIndexCounter->pipelineBarrier(
|
tLightIndexCounter->pipelineBarrier(
|
||||||
Gfx::SE_ACCESS_MEMORY_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT,
|
Gfx::SE_ACCESS_MEMORY_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
Gfx::SE_ACCESS_MEMORY_WRITE_BIT | Gfx::SE_ACCESS_MEMORY_READ_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
Gfx::SE_ACCESS_MEMORY_READ_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||||
tLightIndexList->pipelineBarrier(
|
tLightIndexList->pipelineBarrier(
|
||||||
Gfx::SE_ACCESS_SHADER_READ_BIT, Gfx::SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
Gfx::SE_ACCESS_SHADER_READ_BIT, Gfx::SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||||
Gfx::SE_ACCESS_SHADER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
Gfx::SE_ACCESS_SHADER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||||
@@ -82,6 +82,7 @@ void LightCullingPass::render()
|
|||||||
computeCommand->bindDescriptor({ viewParamsSet, dispatchParamsSet, cullingDescriptorSet, lightEnv->getDescriptorSet() });
|
computeCommand->bindDescriptor({ viewParamsSet, dispatchParamsSet, cullingDescriptorSet, lightEnv->getDescriptorSet() });
|
||||||
computeCommand->dispatch(dispatchParams.numThreadGroups.x, dispatchParams.numThreadGroups.y, dispatchParams.numThreadGroups.z);
|
computeCommand->dispatch(dispatchParams.numThreadGroups.x, dispatchParams.numThreadGroups.y, dispatchParams.numThreadGroups.z);
|
||||||
Array<Gfx::PComputeCommand> commands = {computeCommand};
|
Array<Gfx::PComputeCommand> commands = {computeCommand};
|
||||||
|
std::cout << "Execute" << std::endl;
|
||||||
graphics->executeCommands(commands);
|
graphics->executeCommands(commands);
|
||||||
//std::cout << "LightCulling render()" << std::endl;
|
//std::cout << "LightCulling render()" << std::endl;
|
||||||
//co_return;
|
//co_return;
|
||||||
@@ -156,8 +157,10 @@ void LightCullingPass::publishOutputs()
|
|||||||
},
|
},
|
||||||
.numElements = 1,
|
.numElements = 1,
|
||||||
.dynamic = true,
|
.dynamic = true,
|
||||||
|
//.name = "oLightIndexCounter",
|
||||||
};
|
};
|
||||||
oLightIndexCounter = graphics->createShaderBuffer(structInfo);
|
oLightIndexCounter = graphics->createShaderBuffer(structInfo);
|
||||||
|
//structInfo.name = "tLightIndexCounter";
|
||||||
tLightIndexCounter = graphics->createShaderBuffer(structInfo);
|
tLightIndexCounter = graphics->createShaderBuffer(structInfo);
|
||||||
structInfo = {
|
structInfo = {
|
||||||
.sourceData = {
|
.sourceData = {
|
||||||
@@ -169,8 +172,10 @@ void LightCullingPass::publishOutputs()
|
|||||||
.owner = Gfx::QueueType::COMPUTE
|
.owner = Gfx::QueueType::COMPUTE
|
||||||
},
|
},
|
||||||
.dynamic = false,
|
.dynamic = false,
|
||||||
|
//.name = "oLightIndexList",
|
||||||
};
|
};
|
||||||
oLightIndexList = graphics->createShaderBuffer(structInfo);
|
oLightIndexList = graphics->createShaderBuffer(structInfo);
|
||||||
|
//structInfo.name = "tLightIndexList";
|
||||||
tLightIndexList = graphics->createShaderBuffer(structInfo);
|
tLightIndexList = graphics->createShaderBuffer(structInfo);
|
||||||
resources->registerBufferOutput("LIGHTCULLING_OLIGHTLIST", oLightIndexList);
|
resources->registerBufferOutput("LIGHTCULLING_OLIGHTLIST", oLightIndexList);
|
||||||
resources->registerBufferOutput("LIGHTCULLING_TLIGHTLIST", tLightIndexList);
|
resources->registerBufferOutput("LIGHTCULLING_TLIGHTLIST", tLightIndexList);
|
||||||
|
|||||||
@@ -16,8 +16,13 @@ struct PendingBuffer
|
|||||||
|
|
||||||
static Map<Vulkan::Buffer *, PendingBuffer> pendingBuffers;
|
static Map<Vulkan::Buffer *, PendingBuffer> pendingBuffers;
|
||||||
|
|
||||||
Buffer::Buffer(PGraphics graphics, uint64 size, VkBufferUsageFlags usage, Gfx::QueueType &queueType, bool dynamic)
|
Buffer::Buffer(PGraphics graphics,
|
||||||
: graphics(graphics), currentBuffer(0), size(size), owner(queueType)
|
uint64 size,
|
||||||
|
VkBufferUsageFlags usage,
|
||||||
|
Gfx::QueueType &queueType,
|
||||||
|
bool dynamic,
|
||||||
|
std::string name)
|
||||||
|
: graphics(graphics), currentBuffer(0), size(size), owner(queueType), name(name)
|
||||||
{
|
{
|
||||||
if (dynamic)
|
if (dynamic)
|
||||||
{
|
{
|
||||||
@@ -42,6 +47,17 @@ Buffer::Buffer(PGraphics graphics, uint64 size, VkBufferUsageFlags usage, Gfx::Q
|
|||||||
{
|
{
|
||||||
vmaCreateBuffer(graphics->getAllocator(), &info, &allocInfo, &buffers[i].buffer, &buffers[i].allocation, &buffers[i].info);
|
vmaCreateBuffer(graphics->getAllocator(), &info, &allocInfo, &buffers[i].buffer, &buffers[i].allocation, &buffers[i].info);
|
||||||
vmaGetAllocationMemoryProperties(graphics->getAllocator(), buffers[i].allocation, &buffers[i].properties);
|
vmaGetAllocationMemoryProperties(graphics->getAllocator(), buffers[i].allocation, &buffers[i].properties);
|
||||||
|
if (!name.empty())
|
||||||
|
{
|
||||||
|
VkDebugMarkerObjectNameInfoEXT nameInfo = {
|
||||||
|
.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
|
||||||
|
.pNext = nullptr,
|
||||||
|
.objectType = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
|
||||||
|
.object = (uint64)buffers[i].buffer,
|
||||||
|
.pObjectName = this->name.c_str()
|
||||||
|
};
|
||||||
|
graphics->vkDebugMarkerSetObjectNameEXT(&nameInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,7 +267,8 @@ void Buffer::unmap()
|
|||||||
}
|
}
|
||||||
|
|
||||||
UniformBuffer::UniformBuffer(PGraphics graphics, const UniformBufferCreateInfo &createInfo)
|
UniformBuffer::UniformBuffer(PGraphics graphics, const UniformBufferCreateInfo &createInfo)
|
||||||
: Gfx::UniformBuffer(graphics->getFamilyMapping(), createInfo.sourceData), Vulkan::Buffer(graphics, createInfo.sourceData.size, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, currentOwner, createInfo.dynamic)
|
: Gfx::UniformBuffer(graphics->getFamilyMapping(), createInfo.sourceData),
|
||||||
|
Vulkan::Buffer(graphics, createInfo.sourceData.size, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, currentOwner, createInfo.dynamic, createInfo.name)
|
||||||
{
|
{
|
||||||
if (createInfo.sourceData.data != nullptr)
|
if (createInfo.sourceData.data != nullptr)
|
||||||
{
|
{
|
||||||
@@ -310,7 +327,7 @@ VkAccessFlags UniformBuffer::getDestAccessMask()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ShaderBuffer::ShaderBuffer(PGraphics graphics, const ShaderBufferCreateInfo &sourceData)
|
ShaderBuffer::ShaderBuffer(PGraphics graphics, const ShaderBufferCreateInfo &sourceData)
|
||||||
: Gfx::ShaderBuffer(graphics->getFamilyMapping(), sourceData.numElements, sourceData.sourceData), Vulkan::Buffer(graphics, sourceData.sourceData.size, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, currentOwner, sourceData.dynamic)
|
: Gfx::ShaderBuffer(graphics->getFamilyMapping(), sourceData.numElements, sourceData.sourceData), Vulkan::Buffer(graphics, sourceData.sourceData.size, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, currentOwner, sourceData.dynamic, sourceData.name)
|
||||||
{
|
{
|
||||||
if (sourceData.sourceData.data != nullptr)
|
if (sourceData.sourceData.data != nullptr)
|
||||||
{
|
{
|
||||||
@@ -367,7 +384,7 @@ VkAccessFlags ShaderBuffer::getDestAccessMask()
|
|||||||
}
|
}
|
||||||
|
|
||||||
VertexBuffer::VertexBuffer(PGraphics graphics, const VertexBufferCreateInfo &sourceData)
|
VertexBuffer::VertexBuffer(PGraphics graphics, const VertexBufferCreateInfo &sourceData)
|
||||||
: Gfx::VertexBuffer(graphics->getFamilyMapping(), sourceData.numVertices, sourceData.vertexSize, sourceData.sourceData.owner), Vulkan::Buffer(graphics, sourceData.sourceData.size, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, currentOwner)
|
: Gfx::VertexBuffer(graphics->getFamilyMapping(), sourceData.numVertices, sourceData.vertexSize, sourceData.sourceData.owner), Vulkan::Buffer(graphics, sourceData.sourceData.size, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, currentOwner, false, sourceData.name)
|
||||||
{
|
{
|
||||||
if (sourceData.sourceData.data != nullptr)
|
if (sourceData.sourceData.data != nullptr)
|
||||||
{
|
{
|
||||||
@@ -428,7 +445,7 @@ VkAccessFlags VertexBuffer::getDestAccessMask()
|
|||||||
}
|
}
|
||||||
|
|
||||||
IndexBuffer::IndexBuffer(PGraphics graphics, const IndexBufferCreateInfo &sourceData)
|
IndexBuffer::IndexBuffer(PGraphics graphics, const IndexBufferCreateInfo &sourceData)
|
||||||
: Gfx::IndexBuffer(graphics->getFamilyMapping(), sourceData.sourceData.size, sourceData.indexType, sourceData.sourceData.owner), Vulkan::Buffer(graphics, sourceData.sourceData.size, VK_BUFFER_USAGE_INDEX_BUFFER_BIT, currentOwner)
|
: Gfx::IndexBuffer(graphics->getFamilyMapping(), sourceData.sourceData.size, sourceData.indexType, sourceData.sourceData.owner), Vulkan::Buffer(graphics, sourceData.sourceData.size, VK_BUFFER_USAGE_INDEX_BUFFER_BIT, currentOwner, false, sourceData.name)
|
||||||
{
|
{
|
||||||
if (sourceData.sourceData.data != nullptr)
|
if (sourceData.sourceData.data != nullptr)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,7 +9,12 @@ namespace Vulkan
|
|||||||
class Buffer
|
class Buffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Buffer(PGraphics graphics, uint64 size, VkBufferUsageFlags usage, Gfx::QueueType& queueType, bool dynamic = false);
|
Buffer(PGraphics graphics,
|
||||||
|
uint64 size,
|
||||||
|
VkBufferUsageFlags usage,
|
||||||
|
Gfx::QueueType& queueType,
|
||||||
|
bool dynamic,
|
||||||
|
std::string name);
|
||||||
virtual ~Buffer();
|
virtual ~Buffer();
|
||||||
VkBuffer getHandle() const
|
VkBuffer getHandle() const
|
||||||
{
|
{
|
||||||
@@ -41,6 +46,7 @@ protected:
|
|||||||
Gfx::QueueType& owner;
|
Gfx::QueueType& owner;
|
||||||
BufferAllocation buffers[Gfx::numFramesBuffered];
|
BufferAllocation buffers[Gfx::numFramesBuffered];
|
||||||
uint32 numBuffers;
|
uint32 numBuffers;
|
||||||
|
std::string name;
|
||||||
|
|
||||||
void executeOwnershipBarrier(Gfx::QueueType newOwner);
|
void executeOwnershipBarrier(Gfx::QueueType newOwner);
|
||||||
void executePipelineBarrier(VkAccessFlags srcAccess, VkPipelineStageFlags srcStage,
|
void executePipelineBarrier(VkAccessFlags srcAccess, VkPipelineStageFlags srcStage,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ VkBool32 Seele::Vulkan::debugCallback(
|
|||||||
void* pUserData)
|
void* pUserData)
|
||||||
{
|
{
|
||||||
std::cerr << pCallbackData->pMessage << std::endl;
|
std::cerr << pCallbackData->pMessage << std::endl;
|
||||||
if(messageSeverity == VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)
|
if(messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)
|
||||||
{
|
{
|
||||||
return VK_FALSE;
|
return VK_FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -293,6 +293,12 @@ void Graphics::vkCmdDrawMeshTasksEXT(VkCommandBuffer handle, uint32 groupX, uint
|
|||||||
cmdDrawMeshTasks(handle, groupX, groupY, groupZ);
|
cmdDrawMeshTasks(handle, groupX, groupY, groupZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Graphics::vkDebugMarkerSetObjectNameEXT(VkDebugMarkerObjectNameInfoEXT* info)
|
||||||
|
{
|
||||||
|
VK_CHECK(cmdDebugMarkerSetObjectName(handle, info));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PCommandPool Graphics::getQueueCommands(Gfx::QueueType queueType)
|
PCommandPool Graphics::getQueueCommands(Gfx::QueueType queueType)
|
||||||
{
|
{
|
||||||
switch (queueType)
|
switch (queueType)
|
||||||
@@ -422,6 +428,7 @@ void Graphics::setupDebugCallback()
|
|||||||
.pUserData = nullptr,
|
.pUserData = nullptr,
|
||||||
};
|
};
|
||||||
VK_CHECK(CreateDebugUtilsMessengerEXT(instance, &createInfo, nullptr, &callback));
|
VK_CHECK(CreateDebugUtilsMessengerEXT(instance, &createInfo, nullptr, &callback));
|
||||||
|
cmdDebugMarkerSetObjectName = (PFN_vkDebugMarkerSetObjectNameEXT)vkGetInstanceProcAddr(instance, "vkDebugMarkerSetObjectNameEXT");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Graphics::pickPhysicalDevice()
|
void Graphics::pickPhysicalDevice()
|
||||||
|
|||||||
@@ -71,9 +71,11 @@ public:
|
|||||||
virtual void resolveTexture(Gfx::PTexture source, Gfx::PTexture destination) override;
|
virtual void resolveTexture(Gfx::PTexture source, Gfx::PTexture destination) override;
|
||||||
|
|
||||||
void vkCmdDrawMeshTasksEXT(VkCommandBuffer handle, uint32 groupX, uint32 groupY, uint32 groupZ);
|
void vkCmdDrawMeshTasksEXT(VkCommandBuffer handle, uint32 groupX, uint32 groupY, uint32 groupZ);
|
||||||
|
void vkDebugMarkerSetObjectNameEXT(VkDebugMarkerObjectNameInfoEXT* info);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
PFN_vkCmdDrawMeshTasksEXT cmdDrawMeshTasks;
|
PFN_vkCmdDrawMeshTasksEXT cmdDrawMeshTasks;
|
||||||
|
PFN_vkDebugMarkerSetObjectNameEXT cmdDebugMarkerSetObjectName;
|
||||||
Array<const char *> getRequiredExtensions();
|
Array<const char *> getRequiredExtensions();
|
||||||
void initInstance(GraphicsInitializer initInfo);
|
void initInstance(GraphicsInitializer initInfo);
|
||||||
void setupDebugCallback();
|
void setupDebugCallback();
|
||||||
|
|||||||
Reference in New Issue
Block a user