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