added lot of debug output based VkDebugUtils

This commit is contained in:
hyzboy 2023-10-13 01:48:07 +08:00
parent 8ba171efda
commit 4ee6962d04
No known key found for this signature in database
GPG Key ID: 067EE4525D4FB6D3
13 changed files with 146 additions and 30 deletions

@ -1 +1 @@
Subproject commit a2f5b2d3c65bf8136e3bd53b05164c4f72de23ac Subproject commit dd6ffdebeceea0dfc03ee58314bedfae2fc17899

View File

@ -202,7 +202,7 @@ public:
cmd_buf=hgl_zero_new<RenderCmdBuffer *>(swap_chain_count); cmd_buf=hgl_zero_new<RenderCmdBuffer *>(swap_chain_count);
for(int32_t i=0;i<swap_chain_count;i++) for(int32_t i=0;i<swap_chain_count;i++)
cmd_buf[i]=device->CreateRenderCommandBuffer(); cmd_buf[i]=device->CreateRenderCommandBuffer(device->GetPhysicalDevice()->GetDeviceName()+AnsiString(":RenderCmdBuffer_")+AnsiString::numberOf(i));
} }
} }

View File

@ -36,6 +36,7 @@ public:
VkBuffer GetBuffer ()const{return buf.buffer;} VkBuffer GetBuffer ()const{return buf.buffer;}
DeviceMemory * GetMemory ()const{return buf.memory;} DeviceMemory * GetMemory ()const{return buf.memory;}
VkDeviceMemory GetVkMemory ()const{return buf.memory->operator VkDeviceMemory();}
const VkDescriptorBufferInfo * GetBufferInfo ()const{return &buf.info;} const VkDescriptorBufferInfo * GetBufferInfo ()const{return &buf.info;}
void * Map () {return buf.memory->Map();} void * Map () {return buf.memory->Map();}

View File

@ -47,7 +47,7 @@ private:
private: private:
VkCommandBuffer CreateCommandBuffer(); VkCommandBuffer CreateCommandBuffer(const AnsiString &);
bool CreateSwapchainFBO(Swapchain *); bool CreateSwapchainFBO(Swapchain *);
@ -212,8 +212,8 @@ public: //shader & material
public: //Command Buffer 相关 public: //Command Buffer 相关
RenderCmdBuffer * CreateRenderCommandBuffer(); RenderCmdBuffer * CreateRenderCommandBuffer(const AnsiString &);
TextureCmdBuffer *CreateTextureCommandBuffer(); TextureCmdBuffer *CreateTextureCommandBuffer(const AnsiString &);
public: public:

View File

@ -22,7 +22,7 @@ public:
TextureData * GetData () {return data;} TextureData * GetData () {return data;}
VkDeviceMemory GetDeviceMemory () {return data?data->memory->operator VkDeviceMemory():VK_NULL_HANDLE;} VkDeviceMemory GetDeviceMemory () {return data?(data->memory?data->memory->operator VkDeviceMemory():VK_NULL_HANDLE):VK_NULL_HANDLE;}
VkImage GetImage () {return data?data->image:VK_NULL_HANDLE;} VkImage GetImage () {return data?data->image:VK_NULL_HANDLE;}
VkImageLayout GetImageLayout () {return data?data->image_layout:VK_IMAGE_LAYOUT_UNDEFINED;} VkImageLayout GetImageLayout () {return data?data->image_layout:VK_IMAGE_LAYOUT_UNDEFINED;}
VkImageView GetVulkanImageView () {return data?data->image_view->GetImageView():VK_NULL_HANDLE;} VkImageView GetVulkanImageView () {return data?data->image_view->GetImageView():VK_NULL_HANDLE;}

View File

@ -292,7 +292,7 @@ struct SwapchainDepthTextureCreateInfo:public TextureCreateInfo
struct TextureData struct TextureData
{ {
DeviceMemory * memory; DeviceMemory * memory;
VkImage image; VkImage image;
VkImageLayout image_layout; VkImageLayout image_layout;
ImageView * image_view; ImageView * image_view;

View File

@ -70,22 +70,32 @@ void RenderAssignBuffer::Alloc(const uint nc,const uint mc)
if(da->debug_maker) if(da->debug_maker)
{ {
da->debug_maker->SetBuffer(ubo_l2w->GetBuffer(),"[debug maker] UBO:LocalToWorld"); da->debug_maker->SetBuffer(ubo_l2w->GetBuffer(),"[debug maker] UBO:Buffer:LocalToWorld");
da->debug_maker->SetDeviceMemory(ubo_l2w->GetVkMemory(),"[debug maker] UBO:Memory:LocalToWorld");
if(ubo_mi) if(ubo_mi)
da->debug_maker->SetBuffer(ubo_mi->GetBuffer(),"[debug maker] UBO:MaterialInstance"); {
da->debug_maker->SetBuffer(ubo_mi->GetBuffer(),"[debug maker] UBO:Buffer:MaterialInstance");
da->debug_maker->SetDeviceMemory(ubo_mi->GetVkMemory(),"[debug maker] UBO:Memory:MaterialInstance");
}
da->debug_maker->SetBuffer(vbo_assigns->GetBuffer(),"[debug maker] VBO:Assign"); da->debug_maker->SetBuffer(vbo_assigns->GetBuffer(),"[debug maker] VBO:Buffer:Assign");
da->debug_maker->SetDeviceMemory(vbo_assigns->GetVkMemory(),"[debug maker] VBO:Memory:Assign");
} }
if(da->debug_utils) if(da->debug_utils)
{ {
da->debug_utils->SetBuffer(ubo_l2w->GetBuffer(),"[debug utils] UBO:LocalToWorld"); da->debug_utils->SetBuffer(ubo_l2w->GetBuffer(),"[debug utils] UBO:Buffer:LocalToWorld");
da->debug_utils->SetDeviceMemory(ubo_l2w->GetVkMemory(),"[debug utils] UBO:Memory:LocalToWorld");
if(ubo_mi) if(ubo_mi)
da->debug_utils->SetBuffer(ubo_mi->GetBuffer(),"[debug utils] UBO:MaterialInstance"); {
da->debug_utils->SetBuffer(ubo_mi->GetBuffer(),"[debug utils] UBO:Buffer:MaterialInstance");
da->debug_utils->SetDeviceMemory(ubo_mi->GetVkMemory(),"[debug utils] UBO:Memory:MaterialInstance");
}
da->debug_utils->SetBuffer(vbo_assigns->GetBuffer(),"[debug utils] VBO:Assign"); da->debug_utils->SetBuffer(vbo_assigns->GetBuffer(),"[debug utils] VBO:Buffer:Assign");
da->debug_utils->SetDeviceMemory(vbo_assigns->GetVkMemory(),"[debug utils] VBO:Memory:Assign");
} }
#endif//_DEBUG #endif//_DEBUG
} }

View File

@ -23,7 +23,7 @@ GPUDevice::GPUDevice(GPUDeviceAttribute *da)
sc_rt=nullptr; sc_rt=nullptr;
Resize(attr->surface_caps.currentExtent); Resize(attr->surface_caps.currentExtent);
texture_cmd_buf=CreateTextureCommandBuffer(); texture_cmd_buf=CreateTextureCommandBuffer(attr->physical_device->GetDeviceName()+AnsiString(":TexCmdBuffer"));
texture_queue=CreateQueue(); texture_queue=CreateQueue();
} }
@ -50,7 +50,7 @@ bool GPUDevice::Resize(const VkExtent2D &extent)
return(sc_rt); return(sc_rt);
} }
VkCommandBuffer GPUDevice::CreateCommandBuffer() VkCommandBuffer GPUDevice::CreateCommandBuffer(const AnsiString &name)
{ {
if(!attr->cmd_pool) if(!attr->cmd_pool)
return(VK_NULL_HANDLE); return(VK_NULL_HANDLE);
@ -68,21 +68,31 @@ VkCommandBuffer GPUDevice::CreateCommandBuffer()
if(res!=VK_SUCCESS) if(res!=VK_SUCCESS)
return(VK_NULL_HANDLE); return(VK_NULL_HANDLE);
#ifdef _DEBUG
if(attr->debug_maker)
attr->debug_maker->SetCommandBuffer(cmd_buf,"[debug maker] "+name);
if(attr->debug_utils)
attr->debug_utils->SetCommandBuffer(cmd_buf,"[debug utils] "+name);
#endif//_DEBUG
return cmd_buf; return cmd_buf;
} }
RenderCmdBuffer *GPUDevice::CreateRenderCommandBuffer() RenderCmdBuffer *GPUDevice::CreateRenderCommandBuffer(const AnsiString &name)
{ {
VkCommandBuffer cb=CreateCommandBuffer(); VkCommandBuffer cb=CreateCommandBuffer(name);
if(cb==VK_NULL_HANDLE)return(nullptr); if(cb==VK_NULL_HANDLE)return(nullptr);
return(new RenderCmdBuffer(attr,cb)); return(new RenderCmdBuffer(attr,cb));
} }
TextureCmdBuffer *GPUDevice::CreateTextureCommandBuffer() TextureCmdBuffer *GPUDevice::CreateTextureCommandBuffer(const AnsiString &name)
{ {
VkCommandBuffer cb=CreateCommandBuffer(); VkCommandBuffer cb=CreateCommandBuffer(name);
if(cb==VK_NULL_HANDLE)return(nullptr); if(cb==VK_NULL_HANDLE)return(nullptr);

View File

@ -321,6 +321,28 @@ GPUDevice *VulkanDeviceCreater::CreateRenderDevice()
auto_delete.Discard(); //discard autodelete auto_delete.Discard(); //discard autodelete
#ifdef _DEBUG
if(device_attr->debug_maker)
{
device_attr->debug_maker->SetPhysicalDevice(*physical_device,"[debug maker] Physical Device:"+AnsiString(physical_device->GetDeviceName()));
device_attr->debug_maker->SetDevice(device_attr->device,"[debug maker] Device:"+AnsiString(physical_device->GetDeviceName()));
device_attr->debug_maker->SetSurfaceKHR(surface,"[debug maker] Surface");
device_attr->debug_maker->SetCommandPool(device_attr->cmd_pool,"[debug maker] Main Command Pool");
device_attr->debug_maker->SetDescriptorPool(device_attr->desc_pool,"[debug maker] Main Descriptor Pool");
device_attr->debug_maker->SetPipelineCache(device_attr->pipeline_cache,"[debug maker] Main Pipeline Cache");
}
if(device_attr->debug_utils)
{
device_attr->debug_utils->SetPhysicalDevice(*physical_device,"[debug utils] Physical Device:"+AnsiString(physical_device->GetDeviceName()));
device_attr->debug_utils->SetDevice(device_attr->device,"[debug utils] Device:"+AnsiString(physical_device->GetDeviceName()));
device_attr->debug_utils->SetSurfaceKHR(surface,"[debug utils] Surface");
device_attr->debug_utils->SetCommandPool(device_attr->cmd_pool,"[debug utils] Main Command Pool");
device_attr->debug_utils->SetDescriptorPool(device_attr->desc_pool,"[debug utils] Main Descriptor Pool");
device_attr->debug_utils->SetPipelineCache(device_attr->pipeline_cache,"[debug utils] Main Pipeline Cache");
}
#endif//_DEBUG
return(new GPUDevice(device_attr)); return(new GPUDevice(device_attr));
} }

View File

@ -11,6 +11,13 @@ void GPUDevice::InitRenderPassManage()
SwapchainRenderbufferInfo rbi(attr->surface_format.format,attr->physical_device->GetDepthFormat()); SwapchainRenderbufferInfo rbi(attr->surface_format.format,attr->physical_device->GetDepthFormat());
device_render_pass=render_pass_manage->AcquireRenderPass(&rbi); device_render_pass=render_pass_manage->AcquireRenderPass(&rbi);
#ifdef _DEBUG
if(attr->debug_maker)
attr->debug_maker->SetRenderPass(device_render_pass->GetVkRenderPass(),"[debug maker] MainDeviceRenderPass");
if(attr->debug_utils)
attr->debug_utils->SetRenderPass(device_render_pass->GetVkRenderPass(),"[debug utils] MainDeviceRenderPass");
#endif//_DEBUG
} }
void GPUDevice::ClearRenderPassManage() void GPUDevice::ClearRenderPassManage()

View File

@ -65,13 +65,23 @@ namespace
result=vkCreateSwapchainKHR(dev_attr->device,&swapchain_ci,nullptr,&swap_chain); result=vkCreateSwapchainKHR(dev_attr->device,&swapchain_ci,nullptr,&swap_chain);
if(result==VK_SUCCESS) if(result!=VK_SUCCESS)
return(swap_chain); {
//LOG_ERROR(OS_TEXT("vkCreateSwapchainKHR failed, result = ")+OSString(result));
os_err<<"vkCreateSwapchainKHR failed, result="<<result<<std::endl;
//LOG_ERROR(OS_TEXT("vkCreateSwapchainKHR failed, result = ")+OSString(result)); return(VK_NULL_HANDLE);
os_err<<"vkCreateSwapchainKHR failed, result="<<result<<std::endl; }
return(VK_NULL_HANDLE); #ifdef _DEBUG
if(dev_attr->debug_maker)
dev_attr->debug_maker->SetSwapchainKHR(swap_chain,"[debug maker] SwapChain");
if(dev_attr->debug_utils)
dev_attr->debug_utils->SetSwapchainKHR(swap_chain,"[debug utils] SwapChain");
#endif//_DEBUG
return(swap_chain);
} }
}//namespace }//namespace
@ -90,6 +100,21 @@ bool GPUDevice::CreateSwapchainFBO(Swapchain *swapchain)
if(!swapchain->sc_depth) if(!swapchain->sc_depth)
return(false); return(false);
#ifdef _DEBUG
if(attr->debug_maker)
{
attr->debug_maker->SetImage(swapchain->sc_depth->GetImage(),"[debug maker] SwapchainDepthImage");
attr->debug_maker->SetDeviceMemory(swapchain->sc_depth->GetDeviceMemory(),"[debug maker] SwapchainDepthMemory");
}
if(attr->debug_utils)
{
attr->debug_utils->SetImage(swapchain->sc_depth->GetImage(),"[debug utils] SwapchainDepthImage");
attr->debug_utils->SetImageView(swapchain->sc_depth->GetVulkanImageView(),"[debug utils] SwapchainDepthImageView");
attr->debug_utils->SetDeviceMemory(swapchain->sc_depth->GetDeviceMemory(),"[debug utils] SwapchainDepthMemory");
}
#endif//_DEBUG
swapchain->sc_color =hgl_zero_new<Texture2D *>(swapchain->color_count); swapchain->sc_color =hgl_zero_new<Texture2D *>(swapchain->color_count);
swapchain->sc_fbo =hgl_zero_new<Framebuffer *>(swapchain->color_count); swapchain->sc_fbo =hgl_zero_new<Framebuffer *>(swapchain->color_count);
@ -103,6 +128,25 @@ bool GPUDevice::CreateSwapchainFBO(Swapchain *swapchain)
swapchain->sc_fbo[i]=CreateFBO( device_render_pass, swapchain->sc_fbo[i]=CreateFBO( device_render_pass,
swapchain->sc_color[i]->GetImageView(), swapchain->sc_color[i]->GetImageView(),
swapchain->sc_depth->GetImageView()); swapchain->sc_depth->GetImageView());
#ifdef _DEBUG
if(attr->debug_maker)
{
attr->debug_maker->SetImage(swapchain->sc_color[i]->GetImage(),"[debug maker] SwapchainColorImage_"+AnsiString::numberOf(i));
attr->debug_maker->SetDeviceMemory(swapchain->sc_color[i]->GetDeviceMemory(),"[debug maker] SwapchainColorMemory_"+AnsiString::numberOf(i));
attr->debug_maker->SetFramebuffer(swapchain->sc_fbo[i]->GetFramebuffer(),"[debug maker] SwapchainFBO_"+AnsiString::numberOf(i));
}
if(attr->debug_utils)
{
attr->debug_utils->SetImage(swapchain->sc_color[i]->GetImage(),"[debug utils] SwapchainColorImage_"+AnsiString::numberOf(i));
attr->debug_utils->SetImageView(swapchain->sc_color[i]->GetVulkanImageView(),"[debug utils] SwapchainColorImageView_"+AnsiString::numberOf(i));
attr->debug_utils->SetDeviceMemory(swapchain->sc_color[i]->GetDeviceMemory(),"[debug utils] SwapchainColorMemory_"+AnsiString::numberOf(i));
attr->debug_utils->SetFramebuffer(swapchain->sc_fbo[i]->GetFramebuffer(),"[debug utils] SwapchainFBO_"+AnsiString::numberOf(i));
}
#endif//_DEBUG
} }
return(true); return(true);

View File

@ -43,9 +43,16 @@ bool Primitive::Set(const AnsiString &name,VBO *vbo,VkDeviceSize offset)
auto *da=device->GetDeviceAttribute(); auto *da=device->GetDeviceAttribute();
if(da->debug_maker) if(da->debug_maker)
da->debug_maker->SetBuffer(vbo->GetBuffer(),"[debug maker] "+prim_name+":VBO:"+name); {
da->debug_maker->SetBuffer(vbo->GetBuffer(),"[debug maker] "+prim_name+":VBO:Buffer:"+name);
da->debug_maker->SetDeviceMemory(vbo->GetVkMemory(),"[debug maker] "+prim_name+":VBO:Memory:"+name);
}
if(da->debug_utils) if(da->debug_utils)
da->debug_utils->SetBuffer(vbo->GetBuffer(),"[debug utils] "+prim_name+":VBO:"+name); {
da->debug_utils->SetBuffer(vbo->GetBuffer(),"[debug utils] "+prim_name+":VBO:Buffer:"+name);
da->debug_utils->SetDeviceMemory(vbo->GetVkMemory(),"[debug utils] "+prim_name+":VBO:Memory:"+name);
}
#endif//_DEBUG #endif//_DEBUG
return(true); return(true);
@ -87,9 +94,16 @@ bool Primitive::Set(IndexBuffer *ib,VkDeviceSize offset)
auto *da=device->GetDeviceAttribute(); auto *da=device->GetDeviceAttribute();
if(da->debug_maker) if(da->debug_maker)
da->debug_maker->SetBuffer(ib->GetBuffer(),"[debug maker] "+prim_name+":IBO"); {
da->debug_maker->SetBuffer(ib->GetBuffer(),"[debug maker] "+prim_name+":IBO:Buffer");
da->debug_maker->SetDeviceMemory(ib->GetVkMemory(),"[debug maker] "+prim_name+":IBO:Memory");
}
if(da->debug_utils) if(da->debug_utils)
da->debug_utils->SetBuffer(ib->GetBuffer(),"[debug utils] "+prim_name+":IBO"); {
da->debug_utils->SetBuffer(ib->GetBuffer(),"[debug utils] "+prim_name+":IBO:Buffer");
da->debug_utils->SetDeviceMemory(ib->GetVkMemory(),"[debug utils] "+prim_name+":IBO:Memory");
}
#endif//_DEBUG #endif//_DEBUG
return(true); return(true);
} }

View File

@ -174,9 +174,17 @@ Texture2DArray *RenderResource::CreateTexture2DArray(const AnsiString &name,cons
GPUDeviceAttribute *da=device->GetDeviceAttribute(); GPUDeviceAttribute *da=device->GetDeviceAttribute();
if(da->debug_maker) if(da->debug_maker)
da->debug_maker->SetImage(ta->GetImage(),"[debug maker] Tex2DArray:"+name); {
da->debug_maker->SetImage(ta->GetImage(),"[debug maker] Tex2DArrayImage:"+name);
da->debug_maker->SetDeviceMemory(ta->GetDeviceMemory(),"[debug maker] Tex2DArrayMemory:"+name);
}
if(da->debug_utils) if(da->debug_utils)
da->debug_utils->SetImage(ta->GetImage(),"[debug utils] Tex2DArray:"+name); {
da->debug_utils->SetImage(ta->GetImage(),"[debug utils] Tex2DArrayImage:"+name);
da->debug_utils->SetImageView(ta->GetVulkanImageView(),"[debug utils] Tex2DArrayImageView:"+name);
da->debug_utils->SetDeviceMemory(ta->GetDeviceMemory(),"[debug utils] Tex2DArrayMemory:"+name);
}
#endif//_DEBUG #endif//_DEBUG
return ta; return ta;