Moved few codes to RenderPassManager from GPUDevice
This commit is contained in:
parent
c9855d7dee
commit
25be75eefa
@ -44,6 +44,7 @@ class FontSource;
|
||||
class Window;
|
||||
class VulkanInstance;
|
||||
|
||||
class RenderPassManager;
|
||||
class TextureManager;
|
||||
|
||||
class SwapchainModule;
|
||||
@ -75,6 +76,7 @@ protected:
|
||||
|
||||
protected:
|
||||
|
||||
RenderPassManager * render_pass_manager =nullptr;
|
||||
TextureManager * texture_manager =nullptr;
|
||||
|
||||
protected:
|
||||
@ -101,6 +103,7 @@ public: //module
|
||||
|
||||
public: //manager
|
||||
|
||||
RenderPassManager *GetRenderPassManager(){return render_pass_manager;} ///<取得渲染通道管理器
|
||||
TextureManager *GetTextureManager(){return texture_manager;} ///<取得纹理管理器
|
||||
|
||||
public:
|
||||
|
@ -35,14 +35,6 @@ private:
|
||||
|
||||
GPUDeviceAttribute *attr;
|
||||
|
||||
private:
|
||||
|
||||
RenderPassManager *render_pass_manage;
|
||||
RenderPass *device_render_pass;
|
||||
|
||||
void InitRenderPassManage();
|
||||
void ClearRenderPassManage();
|
||||
|
||||
private:
|
||||
|
||||
VkCommandBuffer CreateCommandBuffer(const AnsiString &);
|
||||
@ -71,8 +63,6 @@ public:
|
||||
const VkColorSpaceKHR GetColorSpace ()const {return attr->surface_format.colorSpace;}
|
||||
VkQueue GetGraphicsQueue () {return attr->graphics_queue;}
|
||||
|
||||
RenderPass * GetRenderPass () {return device_render_pass;}
|
||||
|
||||
void WaitIdle ()const {vkDeviceWaitIdle(attr->device);}
|
||||
|
||||
DebugUtils * GetDebugUtils (){return attr->debug_utils;}
|
||||
|
@ -32,6 +32,8 @@ private:
|
||||
const List<VkSubpassDependency> &dependency,
|
||||
const RenderbufferInfo *);
|
||||
|
||||
public:
|
||||
|
||||
RenderPass * AcquireRenderPass( const RenderbufferInfo *,const uint subpass_count=2);
|
||||
};//class RenderPassManager
|
||||
VK_NAMESPACE_END
|
||||
|
@ -166,7 +166,6 @@ SET(VK_DEVICE_SOURCE Vulkan/VKDeviceMemory.cpp
|
||||
Vulkan/VKDeviceSampler.cpp
|
||||
Vulkan/VKDeviceMaterial.cpp
|
||||
Vulkan/VKDeviceFramebuffer.cpp
|
||||
Vulkan/VKDeviceRenderPass.cpp
|
||||
Vulkan/VKDeviceRenderTarget.cpp)
|
||||
|
||||
SET(VK_PHYSICAL_DEVICE_SOURCE ${SG_INCLUDE_PATH}/VKPhysicalDevice.h
|
||||
|
@ -11,6 +11,7 @@ RenderFramework::RenderFramework()
|
||||
{
|
||||
graph_module_manager=InitGraphModuleManager(device);
|
||||
|
||||
render_pass_manager=graph_module_manager->GetModule<RenderPassManager>(true);
|
||||
swapchain_module=graph_module_manager->GetModule<SwapchainModule>(true);
|
||||
}
|
||||
|
||||
|
@ -20,18 +20,11 @@ GPUDevice::GPUDevice(GPUDeviceAttribute *da)
|
||||
{
|
||||
attr=da;
|
||||
|
||||
InitRenderPassManage();
|
||||
|
||||
sc_rt=nullptr;
|
||||
Resize(attr->surface_caps.currentExtent);
|
||||
}
|
||||
|
||||
GPUDevice::~GPUDevice()
|
||||
{
|
||||
ClearRenderPassManage();
|
||||
|
||||
SAFE_CLEAR(sc_rt);
|
||||
|
||||
delete attr;
|
||||
|
||||
//按设计,上面那些rt/queue/cmdbuf都需要走graph_module_manager释放和申请
|
||||
|
@ -1,38 +0,0 @@
|
||||
#include<hgl/graph/VKDevice.h>
|
||||
#include<hgl/graph/VKDeviceAttribute.h>
|
||||
#include<hgl/graph/VKPhysicalDevice.h>
|
||||
#include<hgl/graph/VKDeviceRenderPassManage.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
void GPUDevice::InitRenderPassManage()
|
||||
{
|
||||
render_pass_manage=new RenderPassManager(attr->device,attr->pipeline_cache);
|
||||
|
||||
SwapchainRenderbufferInfo rbi(attr->surface_format.format,attr->physical_device->GetDepthFormat());
|
||||
|
||||
device_render_pass=render_pass_manage->AcquireRenderPass(&rbi);
|
||||
|
||||
#ifdef _DEBUG
|
||||
if(attr->debug_utils)
|
||||
attr->debug_utils->SetRenderPass(device_render_pass->GetVkRenderPass(),"MainDeviceRenderPass");
|
||||
#endif//_DEBUG
|
||||
}
|
||||
|
||||
void GPUDevice::ClearRenderPassManage()
|
||||
{
|
||||
SAFE_CLEAR(render_pass_manage);
|
||||
}
|
||||
|
||||
RenderPass *GPUDevice::AcquireRenderPass(const RenderbufferInfo *rbi,const uint subpass_count)
|
||||
{
|
||||
for(const VkFormat &fmt:rbi->GetColorFormatList())
|
||||
if(!attr->physical_device->IsColorAttachmentOptimal(fmt))
|
||||
return(nullptr);
|
||||
|
||||
if(rbi->HasDepthOrStencil())
|
||||
if(!attr->physical_device->IsDepthAttachmentOptimal(rbi->GetDepthFormat()))
|
||||
return(nullptr);
|
||||
|
||||
return render_pass_manage->AcquireRenderPass(rbi,subpass_count);
|
||||
}
|
||||
VK_NAMESPACE_END
|
@ -294,6 +294,18 @@ RenderPass *RenderPassManager::CreateRenderPass( const List<VkAttachmentDescri
|
||||
|
||||
RenderPass *RenderPassManager::AcquireRenderPass(const RenderbufferInfo *rbi,const uint subpass_count)
|
||||
{
|
||||
{
|
||||
const auto *phy_dev=GetPhysicalDevice();
|
||||
|
||||
for(const VkFormat &fmt:rbi->GetColorFormatList())
|
||||
if(!phy_dev->IsColorAttachmentOptimal(fmt))
|
||||
return(nullptr);
|
||||
|
||||
if(rbi->HasDepthOrStencil())
|
||||
if(!phy_dev->IsDepthAttachmentOptimal(rbi->GetDepthFormat()))
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
RenderPassHASHCode hash;
|
||||
RenderPass *rp=nullptr;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user