diff --git a/CMSceneGraph b/CMSceneGraph index 97c907b8..dbc1852e 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit 97c907b8bff43cdecafbf1678868aaaab9930925 +Subproject commit dbc1852e400fda52b358d72e5e7d4464f0e01ae0 diff --git a/inc/hgl/graph/VKDeviceRenderPassManage.h b/inc/hgl/graph/VKDeviceRenderPassManage.h index e646ce7a..11f3fbb6 100644 --- a/inc/hgl/graph/VKDeviceRenderPassManage.h +++ b/inc/hgl/graph/VKDeviceRenderPassManage.h @@ -31,7 +31,7 @@ private: const List &dependency, const RenderbufferInfo *); - RenderPass * AcquireRenderPass( const RenderbufferInfo *); + RenderPass * AcquireRenderPass( const RenderbufferInfo *,const uint subpass_count=2); };//class DeviceRenderPassManage VK_NAMESPACE_END #endif//HGL_VULKAN_DEVICE_RENDERPASS_MANAGE_INCLUDE diff --git a/src/SceneGraph/Vulkan/VKDeviceRenderPassManage.cpp b/src/SceneGraph/Vulkan/VKDeviceRenderPassManage.cpp index 3fb7659d..9bacbc6a 100644 --- a/src/SceneGraph/Vulkan/VKDeviceRenderPassManage.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceRenderPassManage.cpp @@ -236,12 +236,14 @@ namespace // delete hash; // } - void HashRenderPass(RenderPassHASHCode *code,const RenderbufferInfo *rbi) + void HashRenderPass(RenderPassHASHCode *code,const RenderbufferInfo *rbi,const uint8 subpass_count) { util::Hash *hash=util::CreateSHA1LEHash(); hash->Init(); + hash->Write(subpass_count); + for(const VkFormat &fmt:rbi->GetColorFormatList()) hash->Write(fmt); @@ -276,12 +278,12 @@ RenderPass *DeviceRenderPassManage::CreateRenderPass( const ListGetColorFormatList(),depth_format)); } -RenderPass *DeviceRenderPassManage::AcquireRenderPass(const RenderbufferInfo *rbi) +RenderPass *DeviceRenderPassManage::AcquireRenderPass(const RenderbufferInfo *rbi,const uint subpass_count) { RenderPassHASHCode hash; RenderPass *rp=nullptr; - HashRenderPass(&hash,rbi); + HashRenderPass(&hash,rbi,subpass_count); if(RenderPassList.Get(hash,rp)) return rp; @@ -307,7 +309,7 @@ RenderPass *DeviceRenderPassManage::AcquireRenderPass(const RenderbufferInfo *rb subpass_desc_list.Add(SubpassDescription(color_ref_list.GetData(),color_ref_list.GetCount())); } - CreateSubpassDependency(subpass_dependency_list,2); + CreateSubpassDependency(subpass_dependency_list,subpass_count); rp=CreateRenderPass(atta_desc_list,subpass_desc_list,subpass_dependency_list,rbi);