diff --git a/CMCore b/CMCore index 5aad7d81..11e32b77 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 5aad7d81419d02141b3b3f53661e2c8e3e763163 +Subproject commit 11e32b77f1136bcb552abb406cf73db799720e11 diff --git a/inc/hgl/graph/VKDevice.h b/inc/hgl/graph/VKDevice.h index 65ce7ef4..278e929d 100644 --- a/inc/hgl/graph/VKDevice.h +++ b/inc/hgl/graph/VKDevice.h @@ -38,7 +38,6 @@ class GPUDevice private: DeviceRenderPassManage *render_pass_manage; - RenderPass *device_render_pass; RTSwapchain *sc_rt; @@ -79,7 +78,7 @@ public: const VkColorSpaceKHR GetColorSpace ()const {return attr->surface_format.colorSpace;} VkQueue GetGraphicsQueue () {return attr->graphics_queue;} - RenderPass * GetRenderPass () {return device_render_pass;} + RenderPass * GetRenderPass () {return sc_rt->GetRenderPass();} RTSwapchain * GetSwapchainRT () {return sc_rt;} diff --git a/inc/hgl/graph/VKSwapchain.h b/inc/hgl/graph/VKSwapchain.h index 451bf005..fedeb962 100644 --- a/inc/hgl/graph/VKSwapchain.h +++ b/inc/hgl/graph/VKSwapchain.h @@ -36,6 +36,8 @@ public: VkSurfaceFormatKHR surface_format; VkFormat depth_format; + RenderPass * render_pass =nullptr; + uint32_t image_count =0; SwapchainImage * sc_image =nullptr; diff --git a/src/SceneGraph/Vulkan/VKDeviceRenderPass.cpp b/src/SceneGraph/Vulkan/VKDeviceRenderPass.cpp index 6d7f930f..937dad1e 100644 --- a/src/SceneGraph/Vulkan/VKDeviceRenderPass.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceRenderPass.cpp @@ -7,15 +7,6 @@ VK_NAMESPACE_BEGIN void GPUDevice::InitRenderPassManage() { render_pass_manage=new DeviceRenderPassManage(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() diff --git a/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp b/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp index a71b52f4..0c2f22e6 100644 --- a/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp @@ -1,4 +1,5 @@ #include +#include VK_NAMESPACE_BEGIN RenderTarget *GPUDevice::CreateRT(const FramebufferInfo *fbi,RenderPass *rp,const uint32_t fence_count) @@ -73,7 +74,7 @@ RTSwapchain *GPUDevice::CreateSwapchainRenderTarget() q, render_complete_semaphore, present_complete_semaphore, - device_render_pass + sc->render_pass ); return srt; diff --git a/src/SceneGraph/Vulkan/VKDeviceSwapchain.cpp b/src/SceneGraph/Vulkan/VKDeviceSwapchain.cpp index 1f760a47..cc10ddf1 100644 --- a/src/SceneGraph/Vulkan/VKDeviceSwapchain.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceSwapchain.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include VK_NAMESPACE_BEGIN @@ -106,7 +107,7 @@ bool GPUDevice::CreateSwapchainFBO(Swapchain *swapchain) if(!swapchain->sc_image[i].depth) return(false); - swapchain->sc_image[i].fbo=CreateFBO( device_render_pass, + swapchain->sc_image[i].fbo=CreateFBO( swapchain->render_pass, swapchain->sc_image[i].color->GetImageView(), swapchain->sc_image[i].depth->GetImageView()); @@ -135,6 +136,15 @@ Swapchain *GPUDevice::CreateSwapchain(const VkExtent2D &acquire_extent) swapchain->transform =attr->surface_caps.currentTransform; swapchain->surface_format =attr->surface_format; swapchain->depth_format =attr->physical_device->GetDepthFormat(); + + SwapchainRenderbufferInfo rbi(swapchain->surface_format.format,swapchain->depth_format); + + swapchain->render_pass =render_pass_manage->AcquireRenderPass(&rbi); + + #ifdef _DEBUG + if(attr->debug_utils) + attr->debug_utils->SetRenderPass(swapchain->render_pass->GetVkRenderPass(),"MainDeviceRenderPass"); + #endif//_DEBUG swapchain->swap_chain =CreateSwapChain(attr,acquire_extent); diff --git a/src/SceneGraph/Vulkan/VKSwapchain.cpp b/src/SceneGraph/Vulkan/VKSwapchain.cpp index 8bdb4dbc..a9368ef7 100644 --- a/src/SceneGraph/Vulkan/VKSwapchain.cpp +++ b/src/SceneGraph/Vulkan/VKSwapchain.cpp @@ -1,5 +1,6 @@ #include #include +#include VK_NAMESPACE_BEGIN Swapchain::~Swapchain()