Added "RenderFramework *" in GraphModule and IRenderTarget

This commit is contained in:
hyzboy 2025-02-05 22:44:58 +08:00
parent 7ec1c095cc
commit e5a46f3ee8
23 changed files with 92 additions and 117 deletions

View File

@ -40,11 +40,13 @@ protected:
public: public:
Window * GetWindow (){return win;} Window * GetWindow ()const{return win;}
GPUDevice * GetDevice (){return device;} GPUDevice * GetDevice ()const{return device;}
GPUDeviceAttribute * GetDeviceAttribute (){return device->GetDeviceAttribute();} VkDevice GetVkDevice ()const{return device->GetDevice();}
const GPUPhysicalDevice * GetPhysicalDevice ()const{return device->GetPhysicalDevice();}
GPUDeviceAttribute * GetDeviceAttribute ()const{return device->GetDeviceAttribute();}
RenderResource * GetRenderResource (){return render_resource;} RenderResource * GetRenderResource ()const{return render_resource;}
public: public:

View File

@ -36,6 +36,9 @@ struct VertexAttribDataPtr
using BindingMap =Map<AnsiString,int>; using BindingMap =Map<AnsiString,int>;
using BindingMapArray =BindingMap[VK_DESCRIPTOR_TYPE_RANGE_SIZE]; using BindingMapArray =BindingMap[VK_DESCRIPTOR_TYPE_RANGE_SIZE];
class GraphModule;
class RenderFramework;
class VulkanInstance; class VulkanInstance;
class GPUPhysicalDevice; class GPUPhysicalDevice;
class GPUDevice; class GPUDevice;
@ -44,9 +47,13 @@ class DeviceQueue;
class ImageView; class ImageView;
class Framebuffer; class Framebuffer;
struct Swapchain; struct Swapchain;
class IRenderTarget;
class RenderTarget; class RenderTarget;
class MFRenderTarget;
class SwapchainRenderTarget; class SwapchainRenderTarget;
struct CopyBufferToImageInfo;
class Texture; class Texture;
class Texture1D; class Texture1D;
class Texture1DArray; class Texture1DArray;
@ -58,6 +65,8 @@ class TextureCubeArray;
class Sampler; class Sampler;
class TileData;
class DeviceMemory; class DeviceMemory;
class DeviceBuffer; class DeviceBuffer;
struct DeviceBufferData; struct DeviceBufferData;

View File

@ -51,65 +51,4 @@ public:
bool Write (const void *ptr) {return buf.memory->Write(ptr);} bool Write (const void *ptr) {return buf.memory->Write(ptr);}
};//class DeviceBuffer };//class DeviceBuffer
template<typename T> struct DeviceBufferData
{
T *data; ///<CPU端数据
// 数据如何被设置为不可以在CPU端访问那么不会在CPU端保存备份。
// 这种情况的话将不会允许CPU端随机读写只能写入
VkDeviceSize size;
DeviceBuffer *dev_buffer;
};
template<typename T> class DeviceBufferRandomAccess
{
DeviceBufferData<T> *dbd;
public:
operator T *(){return dbd->data;}
public:
DeviceBufferRandomAccess(DeviceBufferData<T> *obj)
{
dbd=obj;
}
virtual ~DeviceBufferAccess()
{
if(!dbd)return;
delete dbd->dev_buffer;
delete dbd;
}
bool Write(const T *ptr)
{
return dbd->dev_buffer->Write(ptr);
}
};
template<typename T> class DeviceBufferObject
{
DeviceBufferData<T> *dbd;
public:
DeviceBufferObject(DeviceBufferData<T> *obj)
{
dbd=obj;
}
virtual ~DeviceBufferObject()
{
if(!dbd)return;
delete dbd->dev_buffer;
delete dbd;
}
};//template<typename T> class DeviceBufferObject
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -23,16 +23,6 @@ class RenderFramework;
* RenderTarget的其实是一个多态类 * RenderTarget的其实是一个多态类
*/ */
template<typename T> class DeviceBufferObject
{
T data;
DeviceBuffer *dev_buffer;
public:
};
class IRenderTarget class IRenderTarget
{ {
RenderFramework *render_framework; RenderFramework *render_framework;
@ -44,8 +34,8 @@ class IRenderTarget
public: public:
RenderFramework * GetRenderFramework ()const{return render_framework;} RenderFramework * GetRenderFramework ()const{return render_framework;}
GPUDevice * GetDevice ()const{return render_framework->GetDevice();} GPUDevice * GetDevice ()const;
VkDevice GetVkDevice ()const{return render_framework->GetDevice()->GetDevice();} VkDevice GetVkDevice ()const;
const VkExtent2D &GetExtent ()const{return extent;} const VkExtent2D &GetExtent ()const{return extent;}

View File

@ -1,20 +1,26 @@
#pragma once #pragma once
#include<hgl/graph/VKDevice.h> #include<hgl/graph/VK.h>
#include<hgl/type/TypeInfo.h> #include<hgl/type/TypeInfo.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
class TextureManager;
class RenderTargetManager;
class RenderPassManager;
class GraphModule class GraphModule
{ {
GPUDevice *device; RenderFramework *render_framework;
public: public:
GPUDevice * GetDevice () {return device;} ///<取得GPU设备 RenderFramework * GetRenderFramework ()const{return render_framework;} ///<取得渲染框架
VkDevice GetVkDevice ()const {return device->GetDevice();} ///<取得VkDevice GPUDevice * GetDevice (); ///<取得GPU设备
const GPUPhysicalDevice * GetPhysicalDevice ()const {return device->GetPhysicalDevice();} ///<取得物理设备 VkDevice GetVkDevice ()const; ///<取得VkDevice
GPUDeviceAttribute *GetDeviceAttribute () {return device->GetDeviceAttribute();} ///<取得设备属性 const GPUPhysicalDevice * GetPhysicalDevice ()const; ///<取得物理设备
GPUDeviceAttribute *GetDeviceAttribute ()const; ///<取得设备属性
VkPipelineCache GetPipelineCache ()const; ///<取得PipelineCache
public: public:
@ -22,7 +28,7 @@ public:
public: public:
GraphModule(GPUDevice *dev){device=dev;} GraphModule(RenderFramework *rf){render_framework=rf;}
virtual ~GraphModule()=default; virtual ~GraphModule()=default;
virtual const size_t GetTypeHash()const noexcept=0; virtual const size_t GetTypeHash()const noexcept=0;
@ -47,7 +53,7 @@ public:
public: public:
GraphModuleInherit(GPUDevice *dev,const AnsiString &name):BASE(dev) GraphModuleInherit(RenderFramework *rf,const AnsiString &name):BASE(rf)
{ {
manager_name=name; manager_name=name;
} }
@ -57,6 +63,6 @@ public:
#define GRAPH_MODULE_CLASS(class_name) class class_name:public GraphModuleInherit<class_name,GraphModule> #define GRAPH_MODULE_CLASS(class_name) class class_name:public GraphModuleInherit<class_name,GraphModule>
#define GRAPH_MODULE_CONSTRUCT(class_name) class_name::class_name(GPUDevice *dev):GraphModuleInherit<class_name,GraphModule>(dev,#class_name) #define GRAPH_MODULE_CONSTRUCT(class_name) class_name::class_name(RenderFramework *rf):GraphModuleInherit<class_name,GraphModule>(rf,#class_name)
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -5,11 +5,9 @@
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
class GraphModule;
class GraphModuleManager class GraphModuleManager
{ {
GPUDevice *device; RenderFramework *render_framework;
protected: protected:
@ -18,13 +16,14 @@ protected:
public: public:
GraphModuleManager(GPUDevice *dev){device=dev;} GraphModuleManager(RenderFramework *rf){render_framework=rf;}
virtual ~GraphModuleManager(); virtual ~GraphModuleManager();
public: public:
GPUDevice * GetDevice() {return device;} ///<取得GPU设备 RenderFramework * GetRenderFramework ()const{return render_framework;} ///<取得渲染框架
GPUDevice * GetDevice ()const; ///<取得GPU设备
public: public:
@ -46,7 +45,7 @@ public:
if(Contains<T>()) if(Contains<T>())
return Get<T>(); return Get<T>();
T *result=new T(device); T *result=new T(render_framework);
Registry(result); Registry(result);

View File

@ -15,15 +15,13 @@ inline util::Hash *CreateRenderPassHash()
GRAPH_MODULE_CLASS(RenderPassManager) GRAPH_MODULE_CLASS(RenderPassManager)
{ {
VkPipelineCache pipeline_cache;
util::Hash *hash; util::Hash *hash;
Map<RenderPassHASHCode,RenderPass *> RenderPassList; Map<RenderPassHASHCode,RenderPass *> RenderPassList;
private: private:
RenderPassManager(GPUDevice *); RenderPassManager(RenderFramework *);
~RenderPassManager(); ~RenderPassManager();
friend class GraphModuleManager; friend class GraphModuleManager;

View File

@ -14,7 +14,7 @@ GRAPH_MODULE_CLASS(RenderTargetManager)
public: public:
RenderTargetManager(GPUDevice *,TextureManager *tm,RenderPassManager *rpm); RenderTargetManager(RenderFramework *,TextureManager *tm,RenderPassManager *rpm);
virtual ~RenderTargetManager()=default; virtual ~RenderTargetManager()=default;
public: //FrameBuffer相关 public: //FrameBuffer相关

View File

@ -4,10 +4,6 @@
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
class RenderTargetManager;
class RenderPassManager;
class RenderPass;
GRAPH_MODULE_CLASS(SwapchainModule) GRAPH_MODULE_CLASS(SwapchainModule)
{ {
TextureManager * tex_manager =nullptr; TextureManager * tex_manager =nullptr;
@ -30,7 +26,7 @@ public:
public: public:
SwapchainModule(GPUDevice *,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm); SwapchainModule(RenderFramework *,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm);
virtual ~SwapchainModule(); virtual ~SwapchainModule();
// RenderCmdBuffer *BeginRender(); // RenderCmdBuffer *BeginRender();
@ -41,10 +37,10 @@ public:
RenderPass * GetRenderPass ()const{return sc_render_pass;} RenderPass * GetRenderPass ()const{return sc_render_pass;}
const VkExtent2D & GetSwapchainSize()const{return sc_render_target->GetExtent();} const VkExtent2D & GetSwapchainSize()const;
SwapchainRenderTarget * GetRenderTarget ()const{return sc_render_target;} SwapchainRenderTarget * GetRenderTarget ()const{return sc_render_target;}
IRenderTarget * AcquireNextImage()const{return sc_render_target->AcquireNextImage();} IRenderTarget * AcquireNextImage()const;
};//class SwapchainModule:public GraphModule };//class SwapchainModule:public GraphModule
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -34,7 +34,7 @@ private:
public: public:
TextureManager(GPUDevice *); TextureManager(RenderFramework *rf);
virtual ~TextureManager(); virtual ~TextureManager();
const VkFormatProperties GetFormatProperties(const VkFormat)const; const VkFormatProperties GetFormatProperties(const VkFormat)const;

2
res

@ -1 +1 @@
Subproject commit fe8fcabeb54f7a5b23f38260e6e09bbdcf015b7f Subproject commit e1a36d78f0eead5f6bb65493432c4690637b991d

View File

@ -53,6 +53,7 @@ SET(GRAPH_MODULE_FILES ${SGM_HEADER_PATH}/GraphModule.h
${SGM_HEADER_PATH}/RenderModule.h ${SGM_HEADER_PATH}/RenderModule.h
${SGM_HEADER_PATH}/SwapchainModule.h ${SGM_HEADER_PATH}/SwapchainModule.h
${SGM_SOURCE_PATH}/GraphModule.cpp
${SGM_SOURCE_PATH}/GraphModuleManager.cpp ${SGM_SOURCE_PATH}/GraphModuleManager.cpp
${SGM_SOURCE_PATH}/RenderPassManager.cpp ${SGM_SOURCE_PATH}/RenderPassManager.cpp
${SGM_SOURCE_PATH}/TextureManager.cpp ${SGM_SOURCE_PATH}/TextureManager.cpp

View File

@ -91,7 +91,7 @@ bool RenderFramework::Init(uint w,uint h)
win->Join(this); win->Join(this);
module_manager=new GraphModuleManager(device); module_manager=new GraphModuleManager(this);
rp_manager=module_manager->GetOrCreate<RenderPassManager>(); rp_manager=module_manager->GetOrCreate<RenderPassManager>();
@ -103,10 +103,10 @@ bool RenderFramework::Init(uint w,uint h)
if(!tex_manager) if(!tex_manager)
return(false); return(false);
rt_manager=new RenderTargetManager(device,tex_manager,rp_manager); rt_manager=new RenderTargetManager(this,tex_manager,rp_manager);
module_manager->Registry(rt_manager); module_manager->Registry(rt_manager);
sc_module=new SwapchainModule(device,tex_manager,rt_manager,rp_manager); sc_module=new SwapchainModule(this,tex_manager,rt_manager,rp_manager);
module_manager->Registry(sc_module); module_manager->Registry(sc_module);
OnResize(w,h); OnResize(w,h);

View File

@ -3,6 +3,7 @@
#include<hgl/graph/VKCommandBuffer.h> #include<hgl/graph/VKCommandBuffer.h>
#include<hgl/graph/VKBuffer.h> #include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKTexture.h> #include<hgl/graph/VKTexture.h>
#include<hgl/graph/VKDevice.h>
#include"CopyBufferToImage.h" #include"CopyBufferToImage.h"
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count); void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);

View File

@ -3,6 +3,7 @@
#include<hgl/graph/VKCommandBuffer.h> #include<hgl/graph/VKCommandBuffer.h>
#include<hgl/graph/VKBuffer.h> #include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKTexture.h> #include<hgl/graph/VKTexture.h>
#include<hgl/graph/VKDevice.h>
#include"CopyBufferToImage.h" #include"CopyBufferToImage.h"
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count); void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);

View File

@ -2,6 +2,7 @@
#include<hgl/graph/VKImageCreateInfo.h> #include<hgl/graph/VKImageCreateInfo.h>
#include<hgl/graph/VKCommandBuffer.h> #include<hgl/graph/VKCommandBuffer.h>
#include<hgl/graph/VKBuffer.h> #include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKDevice.h>
#include"BufferImageCopy2D.h" #include"BufferImageCopy2D.h"
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count); void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);

View File

@ -1,4 +1,7 @@
#include<hgl/graph/module/RenderTargetManager.h> #include<hgl/graph/module/RenderTargetManager.h>
#include<hgl/graph/VKRenderPass.h>
#include<hgl/graph/VKImageView.h>
#include<hgl/graph/VKFramebuffer.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
VkFramebuffer CreateVulkanFramebuffer(VkDevice device,RenderPass *rp,const VkExtent2D &extent,VkImageView *attachments,const uint attachmentCount) VkFramebuffer CreateVulkanFramebuffer(VkDevice device,RenderPass *rp,const VkExtent2D &extent,VkImageView *attachments,const uint attachmentCount)

View File

@ -0,0 +1,14 @@
#include<hgl/graph/module/GraphModule.h>
#include<hgl/graph/RenderFramework.h>
#include<hgl/graph/VKDevice.h>
VK_NAMESPACE_BEGIN
GPUDevice * GraphModule::GetDevice () {return render_framework->GetDevice();}
VkDevice GraphModule::GetVkDevice ()const {return render_framework->GetVkDevice();}
const GPUPhysicalDevice * GraphModule::GetPhysicalDevice ()const {return render_framework->GetPhysicalDevice();}
GPUDeviceAttribute *GraphModule::GetDeviceAttribute ()const {return render_framework->GetDeviceAttribute();}
VkPipelineCache GraphModule::GetPipelineCache ()const {return render_framework->GetDeviceAttribute()->pipeline_cache;}
VK_NAMESPACE_END

View File

@ -1,8 +1,14 @@
#include<hgl/graph/module/GraphModule.h> #include<hgl/graph/module/GraphModule.h>
#include<hgl/graph/module/GraphModuleManager.h> #include<hgl/graph/module/GraphModuleManager.h>
#include<hgl/graph/RenderFramework.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
GPUDevice *GraphModuleManager::GetDevice()const
{
return render_framework->GetDevice();
}
bool GraphModuleManager::Registry(GraphModule *gm) bool GraphModuleManager::Registry(GraphModule *gm)
{ {
if(!gm) if(!gm)

View File

@ -1,5 +1,6 @@
#include<hgl/graph/module/RenderPassManager.h> #include<hgl/graph/module/RenderPassManager.h>
#include<hgl/graph/VKRenderPass.h> #include<hgl/graph/VKRenderPass.h>
#include<hgl/graph/VKPhysicalDevice.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
void CreateSubpassDependency(List<VkSubpassDependency> &subpass_dependency_list,const uint32_t count) void CreateSubpassDependency(List<VkSubpassDependency> &subpass_dependency_list,const uint32_t count)
@ -186,8 +187,6 @@ bool CreateDepthAttachment( List<VkAttachmentReference> &ref_list,List<VkAttachm
GRAPH_MODULE_CONSTRUCT(RenderPassManager) GRAPH_MODULE_CONSTRUCT(RenderPassManager)
{ {
pipeline_cache=GetDeviceAttribute()->pipeline_cache;
hash=CreateRenderPassHash(); hash=CreateRenderPassHash();
} }
@ -287,7 +286,7 @@ RenderPass *RenderPassManager::CreateRenderPass(const List<VkAttachmentDescripti
if(vkCreateRenderPass(GetVkDevice(),&rp_info,nullptr,&render_pass)!=VK_SUCCESS) if(vkCreateRenderPass(GetVkDevice(),&rp_info,nullptr,&render_pass)!=VK_SUCCESS)
return(nullptr); return(nullptr);
return(new RenderPass(GetVkDevice(),pipeline_cache,render_pass,rbi->GetColorFormatList(),depth_format)); return(new RenderPass(GetVkDevice(),GetPipelineCache(),render_pass,rbi->GetColorFormatList(),depth_format));
} }
RenderPass *RenderPassManager::AcquireRenderPass(const RenderbufferInfo *rbi,const uint subpass_count) RenderPass *RenderPassManager::AcquireRenderPass(const RenderbufferInfo *rbi,const uint subpass_count)

View File

@ -1,10 +1,12 @@
#include<hgl/graph/module/RenderTargetManager.h> #include<hgl/graph/module/RenderTargetManager.h>
#include<hgl/graph/VKRenderTarget.h>
#include<hgl/graph/VKDevice.h>
#include<hgl/graph/module/TextureManager.h> #include<hgl/graph/module/TextureManager.h>
#include<hgl/graph/module/RenderPassManager.h> #include<hgl/graph/module/RenderPassManager.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
RenderTargetManager::RenderTargetManager(GPUDevice *dev,TextureManager *tm,RenderPassManager *rpm):GraphModuleInherit<RenderTargetManager,GraphModule>(dev,"RenderTargetManager") RenderTargetManager::RenderTargetManager(RenderFramework *rf,TextureManager *tm,RenderPassManager *rpm):GraphModuleInherit<RenderTargetManager,GraphModule>(rf,"RenderTargetManager")
{ {
tex_manager=tm; tex_manager=tm;
rp_manager=rpm; rp_manager=rpm;
@ -58,7 +60,7 @@ RenderTarget *RenderTargetManager::CreateRT(const FramebufferInfo *fbi,RenderPas
color_texture_list.DiscardObject(); color_texture_list.DiscardObject();
return(new RenderTarget(rtd)); return(new RenderTarget(GetRenderFramework(),rtd));
} }
SAFE_CLEAR(depth_texture); SAFE_CLEAR(depth_texture);

View File

@ -2,6 +2,7 @@
#include<hgl/graph/module/RenderPassManager.h> #include<hgl/graph/module/RenderPassManager.h>
#include<hgl/graph/module/TextureManager.h> #include<hgl/graph/module/TextureManager.h>
#include<hgl/graph/module/RenderTargetManager.h> #include<hgl/graph/module/RenderTargetManager.h>
#include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKSwapchain.h> #include<hgl/graph/VKSwapchain.h>
#include<hgl/graph/VKDeviceAttribute.h> #include<hgl/graph/VKDeviceAttribute.h>
#include<hgl/graph/VKRenderTarget.h> #include<hgl/graph/VKRenderTarget.h>
@ -217,12 +218,12 @@ bool SwapchainModule::CreateSwapchainRenderTarget()
rtd->color_textures[0] =sc_image->color; rtd->color_textures[0] =sc_image->color;
rtd->depth_texture =sc_image->depth; rtd->depth_texture =sc_image->depth;
rt_list[i]=new RenderTarget(rtd); rt_list[i]=new RenderTarget(GetRenderFramework(),rtd);
++sc_image; ++sc_image;
} }
sc_render_target=new SwapchainRenderTarget( device->GetDevice(), sc_render_target=new SwapchainRenderTarget( GetRenderFramework(),
swapchain, swapchain,
device->CreateGPUSemaphore(), device->CreateGPUSemaphore(),
rt_list rt_list
@ -236,7 +237,7 @@ SwapchainModule::~SwapchainModule()
SAFE_CLEAR(sc_render_target); SAFE_CLEAR(sc_render_target);
} }
SwapchainModule::SwapchainModule(GPUDevice *dev,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm):GraphModuleInherit<SwapchainModule,GraphModule>(dev,"SwapchainModule") SwapchainModule::SwapchainModule(RenderFramework *rf,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm):GraphModuleInherit<SwapchainModule,GraphModule>(rf,"SwapchainModule")
{ {
tex_manager=tm; tex_manager=tm;
rt_manager=rtm; rt_manager=rtm;
@ -263,7 +264,9 @@ void SwapchainModule::OnResize(const VkExtent2D &extent)
{ {
SAFE_CLEAR(sc_render_target) SAFE_CLEAR(sc_render_target)
GetDeviceAttribute()->RefreshSurfaceCaps(); GPUDeviceAttribute *dev_attr=GetDeviceAttribute();
dev_attr->RefreshSurfaceCaps();
CreateSwapchainRenderTarget(); CreateSwapchainRenderTarget();
} }
@ -281,4 +284,8 @@ void SwapchainModule::OnResize(const VkExtent2D &extent)
// sc_render_target->WaitFence(); // sc_render_target->WaitFence();
//} //}
const VkExtent2D & SwapchainModule::GetSwapchainSize()const{return sc_render_target->GetExtent();}
IRenderTarget * SwapchainModule::AcquireNextImage()const{return sc_render_target->AcquireNextImage();}
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -11,6 +11,7 @@ const VkFormatProperties TextureManager::GetFormatProperties(const VkFormat form
GRAPH_MODULE_CONSTRUCT(TextureManager) GRAPH_MODULE_CONSTRUCT(TextureManager)
{ {
auto dev=GetDevice();
auto phy_device=GetPhysicalDevice(); auto phy_device=GetPhysicalDevice();
texture_cmd_buf=dev->CreateTextureCommandBuffer(phy_device->GetDeviceName()+AnsiString(":TexCmdBuffer")); texture_cmd_buf=dev->CreateTextureCommandBuffer(phy_device->GetDeviceName()+AnsiString(":TexCmdBuffer"));