use RenderCmdBuffer instead RenderCommand,

use TextureCmdBuffer instead TextureCommand.
This commit is contained in:
hyzboy 2020-11-09 15:37:00 +08:00
parent a91d8140c7
commit 722ab900d6
20 changed files with 46 additions and 46 deletions

2
CMCore

@ -1 +1 @@
Subproject commit 28bf928b3b7bc78c601ad2224bff487f3751e882 Subproject commit 41b70d47446a8da4dfaaf6ce3c89750495678ceb

View File

@ -53,7 +53,7 @@ private:
struct struct
{ {
RenderTarget *rt=nullptr; RenderTarget *rt=nullptr;
RenderCommand *cmd=nullptr; RenderCmdBuffer *cmd=nullptr;
public: public:

View File

@ -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;

View File

@ -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));

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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,

View File

@ -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
/** /**

View File

@ -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 *);

View File

@ -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;}

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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));
} }
/** /**

View File

@ -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

View File

@ -101,4 +101,4 @@ void SavePipelineCacheData(VkDevice device,VkPipelineCache cache,const VkPhysica
SaveMemoryToFile(fullname,data,size); SaveMemoryToFile(fullname,data,size);
} }
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -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);
} }

View File

@ -85,7 +85,7 @@ namespace hgl
} }
} }
bool RenderList::Render(RenderCommand *cb) bool RenderList::Render(RenderCmdBuffer *cb)
{ {
if(!cb) if(!cb)
return(false); return(false);