RenderSurface改名为Device

This commit is contained in:
HuYingzhuo 2019-04-18 16:06:44 +08:00
parent d6f3e7bc36
commit 436da3f5b0
12 changed files with 55 additions and 54 deletions

View File

@ -11,9 +11,9 @@ SET(VULKAN_TEST_SOURCE_FILES main.cpp
VKInstance.cpp VKInstance.cpp
VKPhysicalDevice.cpp VKPhysicalDevice.cpp
VKCommandBuffer.cpp VKCommandBuffer.cpp
RenderSurfaceAttribute.cpp VKDeviceAttribute.cpp
RenderSurfaceCreater.cpp VKDeviceCreater.cpp
RenderSurface.cpp VKDevice.cpp
VKBuffer.cpp VKBuffer.cpp
VKDescriptorSet.cpp VKDescriptorSet.cpp
VKDescriptorSetLayout.cpp VKDescriptorSetLayout.cpp
@ -29,8 +29,8 @@ SET(VULKAN_TEST_HEADER_FILES VK.h
VKPhysicalDevice.h VKPhysicalDevice.h
VKCommandBuffer.h VKCommandBuffer.h
VKSurfaceExtensionName.h VKSurfaceExtensionName.h
RenderSurfaceAttribute.h VKDeviceAttribute.h
RenderSurface.h VKDevice.h
VKBuffer.h VKBuffer.h
VKDescriptorSetLayout.h VKDescriptorSetLayout.h
VKDescriptorSet.h VKDescriptorSet.h

View File

@ -5,6 +5,7 @@
#include<vulkan/vulkan.h> #include<vulkan/vulkan.h>
#include<iostream> #include<iostream>
#define VK_NAMESPACE hgl::graph::vulkan
#define VK_NAMESPACE_BEGIN namespace hgl{namespace graph{namespace vulkan{ #define VK_NAMESPACE_BEGIN namespace hgl{namespace graph{namespace vulkan{
#define VK_NAMESPACE_END }}} #define VK_NAMESPACE_END }}}

View File

@ -20,7 +20,7 @@ protected:
private: private:
friend class RenderSurface; friend class Device;
friend class VertexBuffer; friend class VertexBuffer;
Buffer(VkDevice d,const VulkanBuffer &vb) Buffer(VkDevice d,const VulkanBuffer &vb)
@ -47,7 +47,7 @@ class VertexBuffer:public Buffer
private: private:
friend class RenderSurface; friend class Device;
VertexBuffer(VkDevice d,const VulkanBuffer &vb,VkFormat fmt,uint32_t _stride,uint32_t _count):Buffer(d,vb) VertexBuffer(VkDevice d,const VulkanBuffer &vb,VkFormat fmt,uint32_t _stride,uint32_t _count):Buffer(d,vb)
{ {

View File

@ -1,11 +1,11 @@
#include"RenderSurface.h" #include"VKDevice.h"
#include<hgl/type/Pair.h> #include<hgl/type/Pair.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
namespace namespace
{ {
bool CreateVulkanBuffer(VulkanBuffer &vb,const RenderSurfaceAttribute *rsa,VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode) bool CreateVulkanBuffer(VulkanBuffer &vb,const DeviceAttribute *rsa,VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode)
{ {
VkBufferCreateInfo buf_info={}; VkBufferCreateInfo buf_info={};
buf_info.sType=VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; buf_info.sType=VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
@ -51,13 +51,13 @@ namespace
} }
}//namespace }//namespace
VertexBuffer *RenderSurface::CreateBuffer(VkBufferUsageFlags buf_usage,VkFormat format,uint32_t count,VkSharingMode sharing_mode) VertexBuffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkFormat format,uint32_t count,VkSharingMode sharing_mode)
{ {
const uint32_t stride=GetStrideByFormat(format); const uint32_t stride=GetStrideByFormat(format);
if(stride==0) if(stride==0)
{ {
std::cerr<<"format["<<format<<"] stride length is 0,please use \"RenderSurface::CreateBuffer(VkBufferUsageFlags,VkDeviceSize,VkSharingMode)\" function."; std::cerr<<"format["<<format<<"] stride length is 0,please use \"Device::CreateBuffer(VkBufferUsageFlags,VkDeviceSize,VkSharingMode)\" function.";
return(nullptr); return(nullptr);
} }
@ -71,7 +71,7 @@ VertexBuffer *RenderSurface::CreateBuffer(VkBufferUsageFlags buf_usage,VkFormat
return(new VertexBuffer(rsa->device,vb,format,stride,count)); return(new VertexBuffer(rsa->device,vb,format,stride,count));
} }
Buffer *RenderSurface::CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode) Buffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode)
{ {
VulkanBuffer vb; VulkanBuffer vb;
@ -81,7 +81,7 @@ Buffer *RenderSurface::CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize si
return(new Buffer(rsa->device,vb)); return(new Buffer(rsa->device,vb));
} }
CommandBuffer *RenderSurface::CreateCommandBuffer() CommandBuffer *Device::CreateCommandBuffer()
{ {
if(!rsa->cmd_pool) if(!rsa->cmd_pool)
return(nullptr); return(nullptr);
@ -103,7 +103,7 @@ CommandBuffer *RenderSurface::CreateCommandBuffer()
return(new CommandBuffer(rsa->device,rsa->cmd_pool,cmd_buf)); return(new CommandBuffer(rsa->device,rsa->cmd_pool,cmd_buf));
} }
//DescriptorSet *RenderSurface::CreateDescSet(int count) //DescriptorSet *Device::CreateDescSet(int count)
//{ //{
// VkDescriptorSetAllocateInfo alloc_info[1]; // VkDescriptorSetAllocateInfo alloc_info[1];
// alloc_info[0].sType=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; // alloc_info[0].sType=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
@ -118,7 +118,7 @@ CommandBuffer *RenderSurface::CreateCommandBuffer()
// res=vkAllocateDescriptorSets(info.device,alloc_info,info.desc_set.data()); // res=vkAllocateDescriptorSets(info.device,alloc_info,info.desc_set.data());
//} //}
RenderPass *RenderSurface::CreateRenderPass() RenderPass *Device::CreateRenderPass()
{ {
VkAttachmentDescription attachments[2]; VkAttachmentDescription attachments[2];
attachments[0].format=rsa->format; attachments[0].format=rsa->format;

View File

@ -4,7 +4,7 @@
#include<hgl/type/List.h> #include<hgl/type/List.h>
#include"VK.h" #include"VK.h"
#include"Window.h" #include"Window.h"
#include"RenderSurfaceAttribute.h" #include"VKDeviceAttribute.h"
#include"VKBuffer.h" #include"VKBuffer.h"
#include"VKCommandBuffer.h" #include"VKCommandBuffer.h"
//#include"VKDescriptorSet.h" //#include"VKDescriptorSet.h"
@ -12,24 +12,24 @@
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
using RefRenderSurfaceAttribute=SharedPtr<RenderSurfaceAttribute>; using RefDeviceAttribute=SharedPtr<DeviceAttribute>;
class RenderSurface class Device
{ {
RefRenderSurfaceAttribute rsa; RefDeviceAttribute rsa;
private: private:
friend RenderSurface *CreateRenderSuface(VkInstance,const PhysicalDevice *,Window *); friend Device *CreateRenderDevice(VkInstance,const PhysicalDevice *,Window *);
RenderSurface(RefRenderSurfaceAttribute &ref_rsa) Device(RefDeviceAttribute &ref_rsa)
{ {
rsa=ref_rsa; rsa=ref_rsa;
} }
public: public:
virtual ~RenderSurface()=default; virtual ~Device()=default;
VkSurfaceKHR GetSurface () {return rsa->surface;} VkSurfaceKHR GetSurface () {return rsa->surface;}
VkDevice GetDevice () {return rsa->device;} VkDevice GetDevice () {return rsa->device;}
@ -58,6 +58,6 @@ public:
// DescriptorSet * CreateDescSet(int); // DescriptorSet * CreateDescSet(int);
RenderPass *CreateRenderPass(); RenderPass *CreateRenderPass();
};//class RenderSurface };//class Device
VK_NAMESPACE_END VK_NAMESPACE_END
#endif//HGL_GRAPH_RENDER_SURFACE_INCLUDE #endif//HGL_GRAPH_RENDER_SURFACE_INCLUDE

View File

@ -1,9 +1,9 @@
#include"RenderSurfaceAttribute.h" #include"VKDeviceAttribute.h"
#include<iostream> #include<iostream>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
RenderSurfaceAttribute::RenderSurfaceAttribute(VkInstance inst,const PhysicalDevice *pd,VkSurfaceKHR s) DeviceAttribute::DeviceAttribute(VkInstance inst,const PhysicalDevice *pd,VkSurfaceKHR s)
{ {
instance=inst; instance=inst;
physical_device=pd; physical_device=pd;
@ -128,7 +128,7 @@ RenderSurfaceAttribute::RenderSurfaceAttribute(VkInstance inst,const PhysicalDev
} }
} }
RenderSurfaceAttribute::~RenderSurfaceAttribute() DeviceAttribute::~DeviceAttribute()
{ {
if(desc_pool) if(desc_pool)
vkDestroyDescriptorPool(device,desc_pool,nullptr); vkDestroyDescriptorPool(device,desc_pool,nullptr);

View File

@ -7,7 +7,7 @@ VK_NAMESPACE_BEGIN
constexpr uint32_t ERROR_FAMILY_INDEX=UINT32_MAX; constexpr uint32_t ERROR_FAMILY_INDEX=UINT32_MAX;
struct RenderSurfaceAttribute struct DeviceAttribute
{ {
VkInstance instance =nullptr; VkInstance instance =nullptr;
const PhysicalDevice * physical_device =nullptr; const PhysicalDevice * physical_device =nullptr;
@ -49,12 +49,12 @@ struct RenderSurfaceAttribute
public: public:
RenderSurfaceAttribute(VkInstance inst,const PhysicalDevice *pd,VkSurfaceKHR s); DeviceAttribute(VkInstance inst,const PhysicalDevice *pd,VkSurfaceKHR s);
~RenderSurfaceAttribute(); ~DeviceAttribute();
bool CheckMemoryType(uint32_t typeBits,VkFlags requirements_mask,uint32_t *typeIndex) const bool CheckMemoryType(uint32_t typeBits,VkFlags requirements_mask,uint32_t *typeIndex) const
{ {
return physical_device->CheckMemoryType(typeBits,requirements_mask,typeIndex); return physical_device->CheckMemoryType(typeBits,requirements_mask,typeIndex);
} }
};//class RenderSurfaceAttribute };//class DeviceAttribute
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -1,10 +1,10 @@
#include"RenderSurface.h" #include"VKDevice.h"
#include"VKInstance.h" #include"VKInstance.h"
#include<hgl/type/Smart.h> #include<hgl/type/Smart.h>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
VkSurfaceKHR CreateSurface(VkInstance,Window *); VkSurfaceKHR CreateRenderDevice(VkInstance,Window *);
namespace namespace
{ {
@ -82,7 +82,7 @@ namespace
return(nullptr); return(nullptr);
} }
VkSwapchainKHR CreateSwapChain(RenderSurfaceAttribute *rsa) VkSwapchainKHR CreateSwapChain(DeviceAttribute *rsa)
{ {
VkSwapchainCreateInfoKHR swapchain_ci={}; VkSwapchainCreateInfoKHR swapchain_ci={};
@ -162,7 +162,7 @@ namespace
return CreateImageView(device,VK_IMAGE_VIEW_TYPE_2D,format,VK_IMAGE_ASPECT_DEPTH_BIT,img); return CreateImageView(device,VK_IMAGE_VIEW_TYPE_2D,format,VK_IMAGE_ASPECT_DEPTH_BIT,img);
} }
bool CreateSwapchainImageView(RenderSurfaceAttribute *rsa) bool CreateSwapchainImageView(DeviceAttribute *rsa)
{ {
uint32_t count; uint32_t count;
@ -195,7 +195,7 @@ namespace
return(true); return(true);
} }
bool CreateDepthBuffer(RenderSurfaceAttribute *rsa) bool CreateDepthBuffer(DeviceAttribute *rsa)
{ {
VkImageCreateInfo image_info={}; VkImageCreateInfo image_info={};
@ -289,14 +289,14 @@ namespace
} }
}//namespace }//namespace
RenderSurface *CreateRenderSuface(VkInstance inst,const PhysicalDevice *physical_device,Window *win) Device *CreateRenderDevice(VkInstance inst,const PhysicalDevice *physical_device,Window *win)
{ {
VkSurfaceKHR surface=CreateSurface(inst,win); VkSurfaceKHR surface=CreateRenderDevice(inst,win);
if(!surface) if(!surface)
return(nullptr); return(nullptr);
RefRenderSurfaceAttribute rsa=new RenderSurfaceAttribute(inst,physical_device,surface); RefDeviceAttribute rsa=new DeviceAttribute(inst,physical_device,surface);
rsa->swapchain_extent=GetSwapchainExtent(rsa->surface_caps,win->GetWidth(),win->GetHeight()); rsa->swapchain_extent=GetSwapchainExtent(rsa->surface_caps,win->GetWidth(),win->GetHeight());
@ -329,6 +329,6 @@ RenderSurface *CreateRenderSuface(VkInstance inst,const PhysicalDevice *physical
if(!rsa->desc_pool) if(!rsa->desc_pool)
return(nullptr); return(nullptr);
return(new RenderSurface(rsa)); return(new Device(rsa));
} }
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -4,7 +4,7 @@
#include<iostream> #include<iostream>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
RenderSurface *CreateRenderSuface(VkInstance,const PhysicalDevice *,Window *); Device *CreateRenderDevice(VkInstance,const PhysicalDevice *,Window *);
namespace namespace
{ {
@ -254,7 +254,7 @@ const PhysicalDevice *Instance::GetDevice(VkPhysicalDeviceType type)const
return(nullptr); return(nullptr);
} }
RenderSurface *Instance::CreateSurface(Window *win,const PhysicalDevice *pd) Device *Instance::CreateRenderDevice(Window *win,const PhysicalDevice *pd)
{ {
if(!win) if(!win)
return(nullptr); return(nullptr);
@ -266,6 +266,6 @@ RenderSurface *Instance::CreateSurface(Window *win,const PhysicalDevice *pd)
if(!pd) if(!pd)
return(nullptr); return(nullptr);
return CreateRenderSuface(inst,pd,win); return VK_NAMESPACE::CreateRenderDevice(inst,pd,win);
} }
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -5,7 +5,7 @@
#include<hgl/type/List.h> #include<hgl/type/List.h>
#include"Window.h" #include"Window.h"
#include"VK.h" #include"VK.h"
#include"RenderSurface.h" #include"VKDevice.h"
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
class Instance class Instance
@ -40,7 +40,7 @@ VK_NAMESPACE_BEGIN
const ObjectList<PhysicalDevice> &GetDeviceList ()const {return physical_devices;} const ObjectList<PhysicalDevice> &GetDeviceList ()const {return physical_devices;}
const PhysicalDevice * GetDevice (VkPhysicalDeviceType)const; const PhysicalDevice * GetDevice (VkPhysicalDeviceType)const;
RenderSurface * CreateSurface (Window *,const PhysicalDevice *pd=nullptr); Device * CreateRenderDevice (Window *,const PhysicalDevice *pd=nullptr);
};//class Instance };//class Instance
Instance *CreateInstance(const UTF8String &); ///<创建一个Vulkan实例 Instance *CreateInstance(const UTF8String &); ///<创建一个Vulkan实例

View File

@ -179,7 +179,7 @@ namespace hgl
}//namespace hgl }//namespace hgl
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
VkSurfaceKHR CreateSurface(VkInstance vk_inst,Window *win) VkSurfaceKHR CreateRenderDevice(VkInstance vk_inst,Window *win)
{ {
WinWindow *ww=(WinWindow *)win; WinWindow *ww=(WinWindow *)win;

View File

@ -1,6 +1,6 @@
#include"Window.h" #include"Window.h"
#include"VKInstance.h" #include"VKInstance.h"
#include"RenderSurface.h" #include"VKDevice.h"
#include"VKShader.h" #include"VKShader.h"
#include<io.h> #include<io.h>
@ -81,9 +81,9 @@ int main(int,char **)
return(-1); return(-1);
} }
vulkan::RenderSurface *render=inst->CreateSurface(win); vulkan::Device *device=inst->CreateRenderDevice(win);
if(!render) if(!device)
{ {
delete inst; delete inst;
delete win; delete win;
@ -91,17 +91,17 @@ int main(int,char **)
} }
{ {
const vulkan::PhysicalDevice *render_device=render->GetPhysicalDevice(); const vulkan::PhysicalDevice *render_device=device->GetPhysicalDevice();
std::cout<<"auto select physical device: "<<render_device->GetDeviceName()<<std::endl; std::cout<<"auto select physical device: "<<render_device->GetDeviceName()<<std::endl;
} }
if(!LoadShader(render->GetDevice())) if(!LoadShader(device->GetDevice()))
return(-3); return(-3);
vulkan::CommandBuffer *cmd_buf=render->CreateCommandBuffer(); vulkan::CommandBuffer *cmd_buf=device->CreateCommandBuffer();
vulkan::Buffer *ubo=render->CreateUBO(1024); vulkan::Buffer *ubo=device->CreateUBO(1024);
uint8_t *p=ubo->Map(); uint8_t *p=ubo->Map();
@ -111,14 +111,14 @@ int main(int,char **)
ubo->Unmap(); ubo->Unmap();
} }
vulkan::RenderPass *rp=render->CreateRenderPass(); vulkan::RenderPass *rp=device->CreateRenderPass();
delete rp; delete rp;
delete ubo; delete ubo;
delete cmd_buf; delete cmd_buf;
delete render; delete device;
delete inst; delete inst;
delete win; delete win;