use RenderCmdBuffer instead RenderCommand,
use TextureCmdBuffer instead TextureCommand.
This commit is contained in:
parent
a91d8140c7
commit
722ab900d6
2
CMCore
2
CMCore
@ -1 +1 @@
|
|||||||
Subproject commit 28bf928b3b7bc78c601ad2224bff487f3751e882
|
Subproject commit 41b70d47446a8da4dfaaf6ce3c89750495678ceb
|
@ -53,7 +53,7 @@ private:
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
RenderTarget *rt=nullptr;
|
RenderTarget *rt=nullptr;
|
||||||
RenderCommand *cmd=nullptr;
|
RenderCmdBuffer *cmd=nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ class TestApp:public CameraAppFramework
|
|||||||
struct:public RenderObject
|
struct:public RenderObject
|
||||||
{
|
{
|
||||||
RenderTarget * render_taget =nullptr;
|
RenderTarget * render_taget =nullptr;
|
||||||
RenderCommand * command_buffer =nullptr;
|
RenderCmdBuffer * command_buffer =nullptr;
|
||||||
|
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
RenderableInstance *renderable_instance =nullptr;
|
RenderableInstance *renderable_instance =nullptr;
|
||||||
|
@ -53,7 +53,7 @@ protected:
|
|||||||
|
|
||||||
int32_t swap_chain_count =0;
|
int32_t swap_chain_count =0;
|
||||||
|
|
||||||
RenderCommand ** cmd_buf =nullptr;
|
RenderCmdBuffer ** cmd_buf =nullptr;
|
||||||
|
|
||||||
Color4f clear_color;
|
Color4f clear_color;
|
||||||
|
|
||||||
@ -166,14 +166,14 @@ public:
|
|||||||
{
|
{
|
||||||
const VkExtent2D extent=sc_render_target->GetExtent();
|
const VkExtent2D extent=sc_render_target->GetExtent();
|
||||||
|
|
||||||
cmd_buf=hgl_zero_new<RenderCommand *>(swap_chain_count);
|
cmd_buf=hgl_zero_new<RenderCmdBuffer *>(swap_chain_count);
|
||||||
|
|
||||||
for(int32_t i=0;i<swap_chain_count;i++)
|
for(int32_t i=0;i<swap_chain_count;i++)
|
||||||
cmd_buf[i]=device->CreateRenderCommandBuffer();
|
cmd_buf[i]=device->CreateRenderCommandBuffer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BuildCommandBuffer(RenderCommand *cb,RenderPass *rp,Framebuffer *fb,RenderableInstance *ri)
|
bool BuildCommandBuffer(RenderCmdBuffer *cb,RenderPass *rp,Framebuffer *fb,RenderableInstance *ri)
|
||||||
{
|
{
|
||||||
if(!ri)return(false);
|
if(!ri)return(false);
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildCommandBuffer(RenderCommand *cb,RenderTarget *rt,RenderableInstance *ri)
|
void BuildCommandBuffer(RenderCmdBuffer *cb,RenderTarget *rt,RenderableInstance *ri)
|
||||||
{
|
{
|
||||||
if(!cb||!rt||!ri)
|
if(!cb||!rt||!ri)
|
||||||
return;
|
return;
|
||||||
@ -234,7 +234,7 @@ public:
|
|||||||
{
|
{
|
||||||
if(!rl)return;
|
if(!rl)return;
|
||||||
|
|
||||||
RenderCommand *cb=cmd_buf[index];
|
RenderCmdBuffer *cb=cmd_buf[index];
|
||||||
|
|
||||||
cb->Begin();
|
cb->Begin();
|
||||||
cb->BindFramebuffer(sc_render_target->GetRenderPass(),sc_render_target->GetFramebuffer(index));
|
cb->BindFramebuffer(sc_render_target->GetRenderPass(),sc_render_target->GetFramebuffer(index));
|
||||||
|
@ -11,7 +11,7 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
class RenderList
|
class RenderList
|
||||||
{
|
{
|
||||||
RenderCommand *cmd_buf;
|
RenderCmdBuffer *cmd_buf;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ namespace hgl
|
|||||||
void Add (SceneNode *node) {if(node)scene_node_list.Add(node);}
|
void Add (SceneNode *node) {if(node)scene_node_list.Add(node);}
|
||||||
void Clear () {scene_node_list.ClearData();}
|
void Clear () {scene_node_list.ClearData();}
|
||||||
|
|
||||||
bool Render (RenderCommand *);
|
bool Render (RenderCmdBuffer *);
|
||||||
};//class RenderList
|
};//class RenderList
|
||||||
}//namespace graph
|
}//namespace graph
|
||||||
}//namespace hgl
|
}//namespace hgl
|
||||||
|
@ -46,8 +46,8 @@ using VAB=VertexAttribBuffer;
|
|||||||
class IndexBuffer;
|
class IndexBuffer;
|
||||||
|
|
||||||
class GPUCmdBuffer;
|
class GPUCmdBuffer;
|
||||||
class RenderCommand;
|
class RenderCmdBuffer;
|
||||||
class TextureCommand;
|
class TextureCmdBuffer;
|
||||||
class RenderPass;
|
class RenderPass;
|
||||||
class GPUFence;
|
class GPUFence;
|
||||||
class GPUSemaphore;
|
class GPUSemaphore;
|
||||||
|
@ -28,7 +28,7 @@ public:
|
|||||||
bool End(){return(vkEndCommandBuffer(cmd_buf)==VK_SUCCESS);}
|
bool End(){return(vkEndCommandBuffer(cmd_buf)==VK_SUCCESS);}
|
||||||
};//class GPUCmdBuffer
|
};//class GPUCmdBuffer
|
||||||
|
|
||||||
class RenderCommand:public GPUCmdBuffer
|
class RenderCmdBuffer:public GPUCmdBuffer
|
||||||
{
|
{
|
||||||
uint32_t cv_count;
|
uint32_t cv_count;
|
||||||
VkClearValue *clear_values;
|
VkClearValue *clear_values;
|
||||||
@ -45,8 +45,8 @@ class RenderCommand:public GPUCmdBuffer
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
RenderCommand(VkDevice dev,VkCommandPool cp,VkCommandBuffer cb);
|
RenderCmdBuffer(VkDevice dev,VkCommandPool cp,VkCommandBuffer cb);
|
||||||
~RenderCommand();
|
~RenderCmdBuffer();
|
||||||
|
|
||||||
void SetRenderArea(const VkRect2D &ra){render_area=ra;}
|
void SetRenderArea(const VkRect2D &ra){render_area=ra;}
|
||||||
void SetRenderArea(const VkExtent2D &);
|
void SetRenderArea(const VkExtent2D &);
|
||||||
@ -138,9 +138,9 @@ public: //draw
|
|||||||
void NextSubpass(){vkCmdNextSubpass(cmd_buf,VK_SUBPASS_CONTENTS_INLINE);}
|
void NextSubpass(){vkCmdNextSubpass(cmd_buf,VK_SUBPASS_CONTENTS_INLINE);}
|
||||||
|
|
||||||
void EndRenderPass(){vkCmdEndRenderPass(cmd_buf);}
|
void EndRenderPass(){vkCmdEndRenderPass(cmd_buf);}
|
||||||
};//class RenderCommand:public GPUCmdBuffer
|
};//class RenderCmdBuffer:public GPUCmdBuffer
|
||||||
|
|
||||||
class TextureCommand:public GPUCmdBuffer
|
class TextureCmdBuffer:public GPUCmdBuffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -150,6 +150,6 @@ public:
|
|||||||
template<typename ...ARGS> void CopyBufferToImage (ARGS...args){vkCmdCopyBufferToImage(cmd_buf,args...);}
|
template<typename ...ARGS> void CopyBufferToImage (ARGS...args){vkCmdCopyBufferToImage(cmd_buf,args...);}
|
||||||
template<typename ...ARGS> void CopyImageToBuffer (ARGS...args){vkCmdCopyImageToBuffer(cmd_buf,args...);}
|
template<typename ...ARGS> void CopyImageToBuffer (ARGS...args){vkCmdCopyImageToBuffer(cmd_buf,args...);}
|
||||||
template<typename ...ARGS> void BlitImage (ARGS...args){vkCmdBlitImage (cmd_buf,args...);}
|
template<typename ...ARGS> void BlitImage (ARGS...args){vkCmdBlitImage (cmd_buf,args...);}
|
||||||
};//class TextureCommand:public GPUCmdBuffer
|
};//class TextureCmdBuffer:public GPUCmdBuffer
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_VULKAN_COMMAND_BUFFER_INCLUDE
|
#endif//HGL_GRAPH_VULKAN_COMMAND_BUFFER_INCLUDE
|
||||||
|
@ -31,7 +31,7 @@ class GPUDevice
|
|||||||
GPUDeviceAttribute *attr;
|
GPUDeviceAttribute *attr;
|
||||||
|
|
||||||
GPUQueue *textureSQ;
|
GPUQueue *textureSQ;
|
||||||
TextureCommand *texture_cmd_buf;
|
TextureCmdBuffer *texture_cmd_buf;
|
||||||
|
|
||||||
Swapchain *swapchain;
|
Swapchain *swapchain;
|
||||||
SwapchainRenderTarget *swapchainRT;
|
SwapchainRenderTarget *swapchainRT;
|
||||||
@ -190,10 +190,10 @@ public: //shader & material
|
|||||||
Material *CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *fragment_shader_module);
|
Material *CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *fragment_shader_module);
|
||||||
Material *CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *geometry_shader_module,const ShaderModule *fragment_shader_module);
|
Material *CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *geometry_shader_module,const ShaderModule *fragment_shader_module);
|
||||||
|
|
||||||
public: //Command GPUBuffer 相关
|
public: //Command Buffer 相关
|
||||||
|
|
||||||
RenderCommand * CreateRenderCommandBuffer();
|
RenderCmdBuffer * CreateRenderCommandBuffer();
|
||||||
TextureCommand *CreateTextureCommandBuffer();
|
TextureCmdBuffer *CreateTextureCommandBuffer();
|
||||||
|
|
||||||
RenderPass * CreateRenderPass( const List<VkAttachmentDescription> &desc_list,
|
RenderPass * CreateRenderPass( const List<VkAttachmentDescription> &desc_list,
|
||||||
const List<VkSubpassDescription> &subpass,
|
const List<VkSubpassDescription> &subpass,
|
||||||
|
@ -64,7 +64,7 @@ public: //pipeline
|
|||||||
public: // command buffer
|
public: // command buffer
|
||||||
|
|
||||||
GPUSemaphore * GetRenderCompleteSemaphore (){return render_complete_semaphore;}
|
GPUSemaphore * GetRenderCompleteSemaphore (){return render_complete_semaphore;}
|
||||||
virtual bool Submit (RenderCommand *,GPUSemaphore *present_complete_semaphore=nullptr);
|
virtual bool Submit (RenderCmdBuffer *,GPUSemaphore *present_complete_semaphore=nullptr);
|
||||||
};//class RenderTarget
|
};//class RenderTarget
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,7 +27,7 @@ namespace hgl
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual ThemeForm *CreateForm(Form *,RenderTarget *,RenderCommand *)=0;
|
virtual ThemeForm *CreateForm(Form *,RenderTarget *,RenderCmdBuffer *)=0;
|
||||||
|
|
||||||
virtual bool Render(ThemeForm *);
|
virtual bool Render(ThemeForm *);
|
||||||
|
|
||||||
|
@ -17,11 +17,11 @@ namespace hgl
|
|||||||
Form *form;
|
Form *form;
|
||||||
|
|
||||||
RenderTarget *render_target;
|
RenderTarget *render_target;
|
||||||
RenderCommand *cmd_buf;
|
RenderCmdBuffer *cmd_buf;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ThemeForm(Form *,RenderTarget *,RenderCommand *);
|
ThemeForm(Form *,RenderTarget *,RenderCmdBuffer *);
|
||||||
virtual ~ThemeForm();
|
virtual ~ThemeForm();
|
||||||
|
|
||||||
RenderTarget * GetRenderTarget(){return render_target;}
|
RenderTarget * GetRenderTarget(){return render_target;}
|
||||||
|
@ -18,12 +18,12 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ThemeForm *DefaultThemeEngine::CreateForm(Form *f,RenderTarget *rt,RenderCommand *rc)
|
ThemeForm *DefaultThemeEngine::CreateForm(Form *f,RenderTarget *rt,RenderCmdBuffer *rc)
|
||||||
{
|
{
|
||||||
return(new DefaultThemeForm(f,rt,rc));
|
return(new DefaultThemeForm(f,rt,rc));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefaultThemeEngine::DrawPanel(RenderCommand *rc,const RectScope2f &rs)
|
void DefaultThemeEngine::DrawPanel(RenderCmdBuffer *rc,const RectScope2f &rs)
|
||||||
{
|
{
|
||||||
if(!rc)return;
|
if(!rc)return;
|
||||||
|
|
||||||
|
@ -33,11 +33,11 @@ namespace hgl
|
|||||||
bool Init() override;
|
bool Init() override;
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
ThemeForm *CreateForm(Form *,RenderTarget *,RenderCommand *) override;
|
ThemeForm *CreateForm(Form *,RenderTarget *,RenderCmdBuffer *) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
void DrawPanel(RenderCommand *,const RectScope2f &);
|
void DrawPanel(RenderCmdBuffer *,const RectScope2f &);
|
||||||
};//class DefaultThemeEngine:public ThemeEngine
|
};//class DefaultThemeEngine:public ThemeEngine
|
||||||
}//namespace gui
|
}//namespace gui
|
||||||
}//namespace hgl
|
}//namespace hgl
|
||||||
|
@ -5,7 +5,7 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
namespace gui
|
namespace gui
|
||||||
{
|
{
|
||||||
ThemeForm::ThemeForm(Form *f,RenderTarget *rt,RenderCommand *rc)
|
ThemeForm::ThemeForm(Form *f,RenderTarget *rt,RenderCmdBuffer *rc)
|
||||||
{
|
{
|
||||||
form=f;
|
form=f;
|
||||||
render_target=rt;
|
render_target=rt;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include<hgl/graph/VKRenderableInstance.h>
|
#include<hgl/graph/VKRenderableInstance.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
RenderCommand::RenderCommand(VkDevice dev,VkCommandPool cp,VkCommandBuffer cb):GPUCmdBuffer(dev,cp,cb)
|
RenderCmdBuffer::RenderCmdBuffer(VkDevice dev,VkCommandPool cp,VkCommandBuffer cb):GPUCmdBuffer(dev,cp,cb)
|
||||||
{
|
{
|
||||||
cv_count=0;
|
cv_count=0;
|
||||||
clear_values=nullptr;
|
clear_values=nullptr;
|
||||||
@ -18,13 +18,13 @@ RenderCommand::RenderCommand(VkDevice dev,VkCommandPool cp,VkCommandBuffer cb):G
|
|||||||
pipeline_layout=VK_NULL_HANDLE;
|
pipeline_layout=VK_NULL_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderCommand::~RenderCommand()
|
RenderCmdBuffer::~RenderCmdBuffer()
|
||||||
{
|
{
|
||||||
if(clear_values)
|
if(clear_values)
|
||||||
hgl_free(clear_values);
|
hgl_free(clear_values);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderCommand::SetFBO(Framebuffer *fb)
|
void RenderCmdBuffer::SetFBO(Framebuffer *fb)
|
||||||
{
|
{
|
||||||
if(fbo==fb)return;
|
if(fbo==fb)return;
|
||||||
|
|
||||||
@ -53,14 +53,14 @@ void RenderCommand::SetFBO(Framebuffer *fb)
|
|||||||
render_area.extent.height=0;
|
render_area.extent.height=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderCommand::SetRenderArea(const VkExtent2D &ext2d)
|
void RenderCmdBuffer::SetRenderArea(const VkExtent2D &ext2d)
|
||||||
{
|
{
|
||||||
render_area.offset.x=0;
|
render_area.offset.x=0;
|
||||||
render_area.offset.y=0;
|
render_area.offset.y=0;
|
||||||
render_area.extent=ext2d;
|
render_area.extent=ext2d;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderCommand::BindFramebuffer(RenderPass *rp,Framebuffer *fb)
|
bool RenderCmdBuffer::BindFramebuffer(RenderPass *rp,Framebuffer *fb)
|
||||||
{
|
{
|
||||||
if(!rp||!fb)return(false);
|
if(!rp||!fb)return(false);
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ bool RenderCommand::BindFramebuffer(RenderPass *rp,Framebuffer *fb)
|
|||||||
return(true);
|
return(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
bool RenderCommand::BeginRenderPass()
|
bool RenderCmdBuffer::BeginRenderPass()
|
||||||
{
|
{
|
||||||
vkCmdBeginRenderPass(cmd_buf, &rp_begin, VK_SUBPASS_CONTENTS_INLINE);
|
vkCmdBeginRenderPass(cmd_buf, &rp_begin, VK_SUBPASS_CONTENTS_INLINE);
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ bool RenderCommand::BeginRenderPass()
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderCommand::BindVAB(RenderableInstance *ri)
|
bool RenderCmdBuffer::BindVAB(RenderableInstance *ri)
|
||||||
{
|
{
|
||||||
if(!ri)
|
if(!ri)
|
||||||
return(false);
|
return(false);
|
||||||
|
@ -76,22 +76,22 @@ VkCommandBuffer GPUDevice::CreateCommandBuffer()
|
|||||||
return cmd_buf;
|
return cmd_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderCommand *GPUDevice::CreateRenderCommandBuffer()
|
RenderCmdBuffer *GPUDevice::CreateRenderCommandBuffer()
|
||||||
{
|
{
|
||||||
VkCommandBuffer cb=CreateCommandBuffer();
|
VkCommandBuffer cb=CreateCommandBuffer();
|
||||||
|
|
||||||
if(cb==VK_NULL_HANDLE)return(nullptr);
|
if(cb==VK_NULL_HANDLE)return(nullptr);
|
||||||
|
|
||||||
return(new RenderCommand(attr->device,attr->cmd_pool,cb));
|
return(new RenderCmdBuffer(attr->device,attr->cmd_pool,cb));
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureCommand *GPUDevice::CreateTextureCommandBuffer()
|
TextureCmdBuffer *GPUDevice::CreateTextureCommandBuffer()
|
||||||
{
|
{
|
||||||
VkCommandBuffer cb=CreateCommandBuffer();
|
VkCommandBuffer cb=CreateCommandBuffer();
|
||||||
|
|
||||||
if(cb==VK_NULL_HANDLE)return(nullptr);
|
if(cb==VK_NULL_HANDLE)return(nullptr);
|
||||||
|
|
||||||
return(new TextureCommand(attr->device,attr->cmd_pool,cb));
|
return(new TextureCmdBuffer(attr->device,attr->cmd_pool,cb));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,7 +50,7 @@ namespace
|
|||||||
}
|
}
|
||||||
};//
|
};//
|
||||||
|
|
||||||
void GenerateMipmaps(TextureCommand *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,const int32_t width,const int32_t height,const uint32_t mipLevels)
|
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,const int32_t width,const int32_t height,const uint32_t mipLevels)
|
||||||
{
|
{
|
||||||
//VkImage image, VkFormat imageFormat, int32_t texWidth, int32_t texHeight, uint32_t mipLevels) {
|
//VkImage image, VkFormat imageFormat, int32_t texWidth, int32_t texHeight, uint32_t mipLevels) {
|
||||||
// Check if image format supports linear blitting
|
// Check if image format supports linear blitting
|
||||||
|
@ -62,7 +62,7 @@ RenderTarget::~RenderTarget()
|
|||||||
SAFE_CLEAR(render_pass);
|
SAFE_CLEAR(render_pass);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderTarget::Submit(RenderCommand *command_buffer,GPUSemaphore *present_complete_semaphore)
|
bool RenderTarget::Submit(RenderCmdBuffer *command_buffer,GPUSemaphore *present_complete_semaphore)
|
||||||
{
|
{
|
||||||
return this->GPUQueue::Submit(*command_buffer,present_complete_semaphore,render_complete_semaphore);
|
return this->GPUQueue::Submit(*command_buffer,present_complete_semaphore,render_complete_semaphore);
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderList::Render(RenderCommand *cb)
|
bool RenderList::Render(RenderCmdBuffer *cb)
|
||||||
{
|
{
|
||||||
if(!cb)
|
if(!cb)
|
||||||
return(false);
|
return(false);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user