[Milestone] new RenderWorkObject, rf_test run OK!
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#ifndef HGL_GRAPH_VULKAN_SUBMIT_QUEUE_INCLUDE
|
||||
#ifndef HGL_GRAPH_VULKAN_SUBMIT_QUEUE_INCLUDE
|
||||
#define HGL_GRAPH_VULKAN_SUBMIT_QUEUE_INCLUDE
|
||||
|
||||
#include<hgl/graph/VK.h>
|
||||
@@ -31,8 +31,16 @@ public:
|
||||
|
||||
VkResult Present(const VkPresentInfoKHR *pi){return vkQueuePresentKHR(queue,pi);}
|
||||
|
||||
/**
|
||||
* 等待Submit的队列完成操作。这个操作会阻塞当前线程,所以在Submit后请不要立即使用它。而是在下一次队列提交前再做这个操作。
|
||||
*/
|
||||
bool WaitQueue();
|
||||
|
||||
/**
|
||||
* 等待Queue命令执行完成的fence信号
|
||||
*/
|
||||
bool WaitFence(const bool wait_all=true,const uint64_t time_out=HGL_NANO_SEC_PER_SEC);
|
||||
|
||||
bool Submit(const VkCommandBuffer *cmd_buf,const uint32_t count,Semaphore *wait_sem,Semaphore *complete_sem);
|
||||
bool Submit(GPUCmdBuffer *cmd_buf,Semaphore *wait_sem,Semaphore *complete_sem);
|
||||
};//class DeviceQueue
|
||||
|
@@ -7,6 +7,7 @@
|
||||
#include<hgl/graph/VKQueue.h>
|
||||
#include<hgl/graph/VKPipeline.h>
|
||||
#include<hgl/graph/VKCommandBuffer.h>
|
||||
//#include<iostream>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
/**
|
||||
@@ -54,6 +55,9 @@ public: // Command Buffer
|
||||
|
||||
virtual bool WaitQueue ()=0;
|
||||
virtual bool WaitFence ()=0;
|
||||
|
||||
virtual RenderCmdBuffer * BeginRender ()=0;
|
||||
virtual void EndRender ()=0;
|
||||
};//class IRenderTarget
|
||||
|
||||
struct RenderTargetData
|
||||
@@ -136,6 +140,26 @@ public: // Command Buffer
|
||||
|
||||
bool WaitQueue ()override{return data->queue->WaitQueue();}
|
||||
bool WaitFence ()override{return data->queue->WaitFence();}
|
||||
|
||||
public:
|
||||
|
||||
virtual RenderCmdBuffer *BeginRender()override
|
||||
{
|
||||
if(!data->cmd_buf)
|
||||
return(nullptr);
|
||||
|
||||
data->cmd_buf->Begin();
|
||||
data->cmd_buf->BindFramebuffer(data->fbo);
|
||||
return data->cmd_buf;
|
||||
}
|
||||
|
||||
virtual void EndRender() override
|
||||
{
|
||||
if(!data->cmd_buf)
|
||||
return;
|
||||
|
||||
data->cmd_buf->End();
|
||||
}
|
||||
};//class RenderTarget
|
||||
|
||||
/**
|
||||
@@ -212,6 +236,20 @@ public: // Command Buffer
|
||||
|
||||
bool WaitQueue ()override{return rt_list[current_frame]->WaitQueue();}
|
||||
bool WaitFence ()override{return rt_list[current_frame]->WaitFence();}
|
||||
|
||||
public:
|
||||
|
||||
virtual RenderCmdBuffer *BeginRender()override
|
||||
{
|
||||
//std::cout<<"Begin Render frame="<<current_frame<<std::endl;
|
||||
return rt_list[current_frame]->BeginRender();
|
||||
}
|
||||
|
||||
virtual void EndRender() override
|
||||
{
|
||||
//std::cout<<"End Render frame="<<current_frame<<std::endl;
|
||||
rt_list[current_frame]->EndRender();
|
||||
}
|
||||
};//class MFRenderTarget
|
||||
|
||||
/**
|
||||
@@ -238,13 +276,8 @@ public:
|
||||
|
||||
public:
|
||||
|
||||
RenderCmdBuffer *AcquireNextImage(); ///<获取下一帧的索引
|
||||
IRenderTarget *AcquireNextImage(); ///<获取下一帧的索引
|
||||
|
||||
bool PresentBackbuffer(); ///<推送后台画面到前台
|
||||
|
||||
bool Submit()override
|
||||
{
|
||||
return rt_list[current_frame]->Submit(present_complete_semaphore);
|
||||
}
|
||||
bool Submit()override; ///<提交当前帧的渲染,交推送到前台
|
||||
};//class SwapchainRenderTarget:public RenderTarget
|
||||
VK_NAMESPACE_END
|
||||
|
@@ -33,9 +33,9 @@ public:
|
||||
SwapchainModule(GPUDevice *,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm);
|
||||
virtual ~SwapchainModule();
|
||||
|
||||
RenderCmdBuffer *BeginRender();
|
||||
// RenderCmdBuffer *BeginRender();
|
||||
|
||||
void EndRender();
|
||||
//void EndRender();
|
||||
|
||||
public:
|
||||
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
const VkExtent2D & GetSwapchainSize()const{return sc_render_target->GetExtent();}
|
||||
|
||||
SwapchainRenderTarget * GetRenderTarget ()const{return sc_render_target;}
|
||||
IRenderTarget * AcquireNextImage()const{return sc_render_target->AcquireNextImage();}
|
||||
};//class SwapchainModule:public GraphModule
|
||||
|
||||
VK_NAMESPACE_END
|
||||
|
Reference in New Issue
Block a user