From 4586038c6fe3a633bbea6ac6ca9f2d6276ec70ca Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sat, 6 Jul 2019 16:46:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A5=E6=94=AF=E6=8C=81wi?= =?UTF-8?q?n32=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/Vulkan/Atomsphere.cpp | 2 +- example/Vulkan/Deferred.cpp | 7 ------- example/Vulkan/Geometry2D.cpp | 2 +- example/Vulkan/ViewModelFramework.h | 2 +- example/Vulkan/VulkanAppFramework.h | 2 +- example/Vulkan/indices_rect.cpp | 2 +- example/Vulkan/main.cpp | 2 +- example/Vulkan/texture_rect.cpp | 2 +- inc/hgl/graph/InlineGeometry.h | 2 +- inc/hgl/graph/vulkan/VKBuffer.h | 6 +++--- inc/hgl/graph/vulkan/VKDescriptorSets.h | 5 +++-- inc/hgl/graph/vulkan/VKDeviceAttribute.h | 18 +++++++++--------- inc/hgl/graph/vulkan/VKImageView.h | 2 +- inc/hgl/graph/vulkan/VKMemory.h | 4 ++-- inc/hgl/graph/vulkan/VKTexture.h | 18 ++++++++---------- src/Platform/Win/WinVulkan.cpp | 2 +- src/RenderDevice/Vulkan/VKCommandBuffer.cpp | 6 +++--- .../Vulkan/VKDescriptorSetLayoutCreater.h | 4 ++-- src/RenderDevice/Vulkan/VKDescriptorSets.cpp | 13 +++++++------ src/RenderDevice/Vulkan/VKDevice.cpp | 2 +- src/RenderDevice/Vulkan/VKDeviceAttribute.cpp | 2 +- src/RenderDevice/Vulkan/VKDeviceBuffer.cpp | 2 +- src/RenderDevice/Vulkan/VKDeviceCreater.cpp | 12 ++++++------ src/RenderDevice/Vulkan/VKDeviceTexture.cpp | 6 +++--- src/RenderDevice/Vulkan/VKInstance.cpp | 4 ++-- src/RenderDevice/Vulkan/VKMemory.cpp | 4 ++-- src/RenderDevice/Vulkan/VKRenderable.cpp | 2 +- src/RenderDevice/Vulkan/VKTexture.cpp | 2 +- 28 files changed, 65 insertions(+), 72 deletions(-) diff --git a/example/Vulkan/Atomsphere.cpp b/example/Vulkan/Atomsphere.cpp index 0dc31b33..0255af25 100644 --- a/example/Vulkan/Atomsphere.cpp +++ b/example/Vulkan/Atomsphere.cpp @@ -70,7 +70,7 @@ private: if(!ubo_atomsphere) return(false); - return desc_set->BindUBO(bindpoint,*ubo_atomsphere); + return desc_set->BindUBO(bindpoint,ubo_atomsphere); } bool InitUBO() diff --git a/example/Vulkan/Deferred.cpp b/example/Vulkan/Deferred.cpp index 872884ff..da4d84eb 100644 --- a/example/Vulkan/Deferred.cpp +++ b/example/Vulkan/Deferred.cpp @@ -20,13 +20,6 @@ constexpr uint32_t GBUFFER_HEIGHT=1024; constexpr uint32_t SCREEN_WIDTH=128; constexpr uint32_t SCREEN_HEIGHT=128; -struct AtomsphereData -{ - alignas(16) Vector3f position; - float intensity; - float scattering_direction; -};// - using Texture2DPointer=vulkan::Texture2D *; constexpr VkFormat position_candidate_format[]={FMT_RGBA32F,FMT_RGBA16F}; diff --git a/example/Vulkan/Geometry2D.cpp b/example/Vulkan/Geometry2D.cpp index 6a5e18f2..d0438b06 100644 --- a/example/Vulkan/Geometry2D.cpp +++ b/example/Vulkan/Geometry2D.cpp @@ -105,7 +105,7 @@ private: if(!ubo_mvp) return(false); - if(!descriptor_sets->BindUBO(material->GetUBO("world"),*ubo_mvp)) + if(!descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp)) return(false); descriptor_sets->Update(); diff --git a/example/Vulkan/ViewModelFramework.h b/example/Vulkan/ViewModelFramework.h index fb441bfb..1a8cc5d3 100644 --- a/example/Vulkan/ViewModelFramework.h +++ b/example/Vulkan/ViewModelFramework.h @@ -76,7 +76,7 @@ public: if(!ubo_world_matrix) return(false); - return desc_set->BindUBO(world_matrix_bindpoint,*ubo_world_matrix); + return desc_set->BindUBO(world_matrix_bindpoint,ubo_world_matrix); } void Resize(int w,int h)override diff --git a/example/Vulkan/VulkanAppFramework.h b/example/Vulkan/VulkanAppFramework.h index 8b041b39..ee2ba823 100644 --- a/example/Vulkan/VulkanAppFramework.h +++ b/example/Vulkan/VulkanAppFramework.h @@ -292,7 +292,7 @@ public: if(!ubo_world_matrix) return(false); - return desc_set->BindUBO(world_matrix_bindpoint,*ubo_world_matrix); + return desc_set->BindUBO(world_matrix_bindpoint,ubo_world_matrix); } virtual void BuildCommandBuffer(uint32_t index)=0; diff --git a/example/Vulkan/indices_rect.cpp b/example/Vulkan/indices_rect.cpp index 3a0b97c3..170c360b 100644 --- a/example/Vulkan/indices_rect.cpp +++ b/example/Vulkan/indices_rect.cpp @@ -85,7 +85,7 @@ private: if(!ubo_mvp) return(false); - if(!descriptor_sets->BindUBO(material->GetUBO("world"),*ubo_mvp)) + if(!descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp)) return(false); descriptor_sets->Update(); diff --git a/example/Vulkan/main.cpp b/example/Vulkan/main.cpp index a4961e6b..2b2601a6 100644 --- a/example/Vulkan/main.cpp +++ b/example/Vulkan/main.cpp @@ -86,7 +86,7 @@ private: if(!ubo_mvp) return(false); - if(!descriptor_sets->BindUBO(material->GetUBO("world"),*ubo_mvp)) + if(!descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp)) return(false); descriptor_sets->Update(); diff --git a/example/Vulkan/texture_rect.cpp b/example/Vulkan/texture_rect.cpp index c8bcd2ea..438619e7 100644 --- a/example/Vulkan/texture_rect.cpp +++ b/example/Vulkan/texture_rect.cpp @@ -118,7 +118,7 @@ private: sampler=device->CreateSampler(&sampler_create_info); descriptor_sets->BindSampler(material->GetSampler("texture_lena"),texture,sampler); - descriptor_sets->BindUBO(material->GetUBO("world"),*ubo_mvp); + descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp); descriptor_sets->Update(); return(true); diff --git a/inc/hgl/graph/InlineGeometry.h b/inc/hgl/graph/InlineGeometry.h index 9dd5843a..0a371d20 100644 --- a/inc/hgl/graph/InlineGeometry.h +++ b/inc/hgl/graph/InlineGeometry.h @@ -87,7 +87,7 @@ namespace hgl CubeCreateInfo() { center.Set(0,0,0); - center.Set(1,1,1); + size.Set(1,1,1); tile.Set(1,1); } };//struct CubeCreateInfo diff --git a/inc/hgl/graph/vulkan/VKBuffer.h b/inc/hgl/graph/vulkan/VKBuffer.h index 211611b2..94932f33 100644 --- a/inc/hgl/graph/vulkan/VKBuffer.h +++ b/inc/hgl/graph/vulkan/VKBuffer.h @@ -35,9 +35,9 @@ public: virtual ~Buffer(); - operator VkBuffer (){return buf.buffer;} - operator Memory * (){return buf.memory;} - operator VkDescriptorBufferInfo * (){return &buf.info;} + VkBuffer GetBuffer (){return buf.buffer;} + Memory * GetMemory (){return buf.memory;} + const VkDescriptorBufferInfo * GetBufferInfo()const{return &buf.info;} void * Map() {return buf.memory->Map();} virtual void * Map(VkDeviceSize start,VkDeviceSize size) {return buf.memory->Map(start,size);} diff --git a/inc/hgl/graph/vulkan/VKDescriptorSets.h b/inc/hgl/graph/vulkan/VKDescriptorSets.h index d5c7a477..9661f713 100644 --- a/inc/hgl/graph/vulkan/VKDescriptorSets.h +++ b/inc/hgl/graph/vulkan/VKDescriptorSets.h @@ -5,6 +5,7 @@ #include VK_NAMESPACE_BEGIN class Device; +class Buffer; class DescriptorSets { @@ -39,8 +40,8 @@ public: const VkPipelineLayout GetPipelineLayout ()const{return pipeline_layout;} void Clear(); - bool BindUBO(const uint32_t binding,const VkDescriptorBufferInfo *); - bool BindUBODynamic(const uint32_t binding,const VkDescriptorBufferInfo *); + bool BindUBO(const uint32_t binding,const Buffer *); + bool BindUBODynamic(const uint32_t binding,const Buffer *); bool BindSampler(const uint32_t binding,Texture *,Sampler *); void Update(); };//class DescriptorSets diff --git a/inc/hgl/graph/vulkan/VKDeviceAttribute.h b/inc/hgl/graph/vulkan/VKDeviceAttribute.h index 03589c49..9d882151 100644 --- a/inc/hgl/graph/vulkan/VKDeviceAttribute.h +++ b/inc/hgl/graph/vulkan/VKDeviceAttribute.h @@ -8,18 +8,18 @@ constexpr uint32_t ERROR_FAMILY_INDEX=UINT32_MAX; struct DeviceAttribute { - VkInstance instance =nullptr; + VkInstance instance =VK_NULL_HANDLE; const PhysicalDevice * physical_device =nullptr; - VkSurfaceKHR surface =nullptr; + VkSurfaceKHR surface =VK_NULL_HANDLE; VkSurfaceCapabilitiesKHR surface_caps; VkExtent2D swapchain_extent; uint32_t graphics_family =ERROR_FAMILY_INDEX; uint32_t present_family =ERROR_FAMILY_INDEX; - VkQueue graphics_queue =nullptr; - VkQueue present_queue =nullptr; + VkQueue graphics_queue =VK_NULL_HANDLE; + VkQueue present_queue =VK_NULL_HANDLE; List family_properties; List supports_present; @@ -31,16 +31,16 @@ struct DeviceAttribute VkSurfaceTransformFlagBitsKHR preTransform; VkCompositeAlphaFlagBitsKHR compositeAlpha =VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; - VkDevice device =nullptr; - VkCommandPool cmd_pool =nullptr; - VkSwapchainKHR swap_chain =nullptr; + VkDevice device =VK_NULL_HANDLE; + VkCommandPool cmd_pool =VK_NULL_HANDLE; + VkSwapchainKHR swap_chain =VK_NULL_HANDLE; ObjectList sc_texture; Texture2D * sc_depth =nullptr; - VkDescriptorPool desc_pool =nullptr; + VkDescriptorPool desc_pool =VK_NULL_HANDLE; - VkPipelineCache pipeline_cache =nullptr; + VkPipelineCache pipeline_cache =VK_NULL_HANDLE; public: diff --git a/inc/hgl/graph/vulkan/VKImageView.h b/inc/hgl/graph/vulkan/VKImageView.h index 912674c4..b2350470 100644 --- a/inc/hgl/graph/vulkan/VKImageView.h +++ b/inc/hgl/graph/vulkan/VKImageView.h @@ -42,7 +42,7 @@ public: ImageView *CreateImageView(VkDevice device,VkImageViewType type,VkFormat format,VkImageAspectFlags aspectMask,VkImage img); -#define CREATE_IMAGE_VIEW(short_name,larget_name) inline ImageView *CreateImageView##short_name(VkDevice device,VkFormat format,VkImageAspectFlags aspectMask,VkImage img=nullptr){return CreateImageView(device,VK_IMAGE_VIEW_TYPE_##larget_name,format,aspectMask,img);} +#define CREATE_IMAGE_VIEW(short_name,larget_name) inline ImageView *CreateImageView##short_name(VkDevice device,VkFormat format,VkImageAspectFlags aspectMask,VkImage img=VK_NULL_HANDLE){return CreateImageView(device,VK_IMAGE_VIEW_TYPE_##larget_name,format,aspectMask,img);} CREATE_IMAGE_VIEW(1D,1D); CREATE_IMAGE_VIEW(2D,2D); CREATE_IMAGE_VIEW(3D,3D); diff --git a/inc/hgl/graph/vulkan/VKMemory.h b/inc/hgl/graph/vulkan/VKMemory.h index f5dfbde6..4dafeb87 100644 --- a/inc/hgl/graph/vulkan/VKMemory.h +++ b/inc/hgl/graph/vulkan/VKMemory.h @@ -45,8 +45,8 @@ public: bool Write(const void *ptr,VkDeviceSize start,VkDeviceSize size); bool Write(const void *ptr){return Write(ptr,0,req.size);} - bool Bind(VkBuffer buffer); - bool Bind(VkImage image); + bool BindBuffer(VkBuffer buffer); + bool BindImage(VkImage image); };//class Memory Memory *CreateMemory(VkDevice device,const PhysicalDevice *pd,const VkMemoryRequirements &req,uint32_t properties); diff --git a/inc/hgl/graph/vulkan/VKTexture.h b/inc/hgl/graph/vulkan/VKTexture.h index 9a4ce6b4..e1c4545b 100644 --- a/inc/hgl/graph/vulkan/VKTexture.h +++ b/inc/hgl/graph/vulkan/VKTexture.h @@ -8,7 +8,7 @@ VK_NAMESPACE_BEGIN struct TextureData { Memory * memory =nullptr; - VkImage image =nullptr; + VkImage image =VK_NULL_HANDLE; VkImageLayout image_layout=VK_IMAGE_LAYOUT_UNDEFINED; ImageView * image_view =nullptr; uint32 mip_levels =0; @@ -27,17 +27,15 @@ protected: public: - operator TextureData * (){return data;} + TextureData * GetData (){return data;} - operator VkDeviceMemory (){return data?data->memory->operator VkDeviceMemory():nullptr;} - operator VkImage (){return data?data->image:nullptr;} - operator VkImageLayout (){return data?data->image_layout:VK_IMAGE_LAYOUT_UNDEFINED;} - operator VkImageView (){return data?data->image_view->operator VkImageView():nullptr;} + VkDeviceMemory GetDeviceMemory (){return data?data->memory->operator VkDeviceMemory():VK_NULL_HANDLE;} + VkImage GetImage (){return data?data->image:VK_NULL_HANDLE;} + VkImageLayout GetImageLayout (){return data?data->image_layout:VK_IMAGE_LAYOUT_UNDEFINED;} + VkImageView GetVulkanImageView (){return data?data->image_view->operator VkImageView():VK_NULL_HANDLE;} - operator Memory * (){return data?data->memory:nullptr;} - operator ImageView * (){return data?data->image_view:nullptr;} - - ImageView * GetImageView(){return data?data->image_view:nullptr;} + Memory * GetMemory (){return data?data->memory:nullptr;} + ImageView * GetImageView (){return data?data->image_view:nullptr;} const uint32 GetMipLevels()const{return data?data->mip_levels:0;} const bool IsLinear ()const{return data?data->linear:false;} diff --git a/src/Platform/Win/WinVulkan.cpp b/src/Platform/Win/WinVulkan.cpp index 37a241af..9b923444 100644 --- a/src/Platform/Win/WinVulkan.cpp +++ b/src/Platform/Win/WinVulkan.cpp @@ -16,7 +16,7 @@ namespace hgl VkResult res=vkCreateWin32SurfaceKHR(vk_inst,&createInfo,nullptr,&surface); if(res!=VK_SUCCESS) - return(nullptr); + return(VK_NULL_HANDLE); return(surface); } diff --git a/src/RenderDevice/Vulkan/VKCommandBuffer.cpp b/src/RenderDevice/Vulkan/VKCommandBuffer.cpp index fa7441a4..754659c2 100644 --- a/src/RenderDevice/Vulkan/VKCommandBuffer.cpp +++ b/src/RenderDevice/Vulkan/VKCommandBuffer.cpp @@ -25,7 +25,7 @@ CommandBuffer::CommandBuffer(VkDevice dev,const VkExtent2D &extent,VkCommandPool render_area.offset.y=0; render_area.extent=extent; - pipeline_layout=nullptr; + pipeline_layout=VK_NULL_HANDLE; } CommandBuffer::~CommandBuffer() @@ -72,7 +72,7 @@ bool CommandBuffer::BeginRenderPass(RenderPass *rp,Framebuffer *fb) vkCmdSetViewport(cmd_buf,0,1,&viewport); vkCmdSetScissor(cmd_buf,0,1,&render_area); - pipeline_layout=nullptr; + pipeline_layout=VK_NULL_HANDLE; return(true); } @@ -92,7 +92,7 @@ bool CommandBuffer::Bind(Renderable *render_obj) IndexBuffer *indices_buffer=render_obj->GetIndexBuffer(); if(indices_buffer) - vkCmdBindIndexBuffer(cmd_buf,*indices_buffer,render_obj->GetIndexOffset(),indices_buffer->GetType()); + vkCmdBindIndexBuffer(cmd_buf,indices_buffer->GetBuffer(),render_obj->GetIndexOffset(),indices_buffer->GetType()); return(true); } diff --git a/src/RenderDevice/Vulkan/VKDescriptorSetLayoutCreater.h b/src/RenderDevice/Vulkan/VKDescriptorSetLayoutCreater.h index 67a61e25..6f8a12e8 100644 --- a/src/RenderDevice/Vulkan/VKDescriptorSetLayoutCreater.h +++ b/src/RenderDevice/Vulkan/VKDescriptorSetLayoutCreater.h @@ -13,10 +13,10 @@ class DescriptorSetLayoutCreater Device *device; List layout_binding_list; - VkDescriptorSetLayout dsl=nullptr; + VkDescriptorSetLayout dsl=VK_NULL_HANDLE; Map index_by_binding; - VkPipelineLayout pipeline_layout=nullptr; + VkPipelineLayout pipeline_layout=VK_NULL_HANDLE; public: diff --git a/src/RenderDevice/Vulkan/VKDescriptorSets.cpp b/src/RenderDevice/Vulkan/VKDescriptorSets.cpp index 3cd16ba7..3273b15c 100644 --- a/src/RenderDevice/Vulkan/VKDescriptorSets.cpp +++ b/src/RenderDevice/Vulkan/VKDescriptorSets.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include @@ -10,7 +11,7 @@ void DescriptorSets::Clear() desc_image_info.ClearData(); } -bool DescriptorSets::BindUBO(const uint32_t binding,const VkDescriptorBufferInfo *buf_info) +bool DescriptorSets::BindUBO(const uint32_t binding,const Buffer *buf) { VkWriteDescriptorSet writeDescriptorSet; @@ -22,14 +23,14 @@ bool DescriptorSets::BindUBO(const uint32_t binding,const VkDescriptorBufferInfo writeDescriptorSet.descriptorCount = 1; writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; writeDescriptorSet.pImageInfo = nullptr; - writeDescriptorSet.pBufferInfo = buf_info; + writeDescriptorSet.pBufferInfo = buf->GetBufferInfo(); writeDescriptorSet.pTexelBufferView = nullptr; write_desc_sets.Add(writeDescriptorSet); return(true); } -bool DescriptorSets::BindUBODynamic(const uint32_t binding,const VkDescriptorBufferInfo *buf_info) +bool DescriptorSets::BindUBODynamic(const uint32_t binding,const Buffer *buf) { VkWriteDescriptorSet writeDescriptorSet; @@ -41,7 +42,7 @@ bool DescriptorSets::BindUBODynamic(const uint32_t binding,const VkDescriptorBuf writeDescriptorSet.descriptorCount = 1; writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC; writeDescriptorSet.pImageInfo = nullptr; - writeDescriptorSet.pBufferInfo = buf_info; + writeDescriptorSet.pBufferInfo = buf->GetBufferInfo();; writeDescriptorSet.pTexelBufferView = nullptr; write_desc_sets.Add(writeDescriptorSet); @@ -54,8 +55,8 @@ bool DescriptorSets::BindSampler(const uint32_t binding,Texture *tex,Sampler *sa return(false); VkDescriptorImageInfo *image_info=desc_image_info.Add(); - image_info->imageView =*tex; - image_info->imageLayout =*tex; + image_info->imageView =tex->GetVulkanImageView(); + image_info->imageLayout =tex->GetImageLayout(); image_info->sampler =*sampler; VkWriteDescriptorSet writeDescriptorSet; diff --git a/src/RenderDevice/Vulkan/VKDevice.cpp b/src/RenderDevice/Vulkan/VKDevice.cpp index 59c4697f..f15605b4 100644 --- a/src/RenderDevice/Vulkan/VKDevice.cpp +++ b/src/RenderDevice/Vulkan/VKDevice.cpp @@ -81,7 +81,7 @@ void Device::RecreateDevice() for(uint i=0;isc_texture[i],*attr->sc_depth)); + render_frame.Add(vulkan::CreateFramebuffer(this,main_rp,attr->sc_texture[i]->GetImageView(),attr->sc_depth->GetImageView())); fence_list.Add(this->CreateFence(true)); } diff --git a/src/RenderDevice/Vulkan/VKDeviceAttribute.cpp b/src/RenderDevice/Vulkan/VKDeviceAttribute.cpp index 6191ee18..2c31ebe1 100644 --- a/src/RenderDevice/Vulkan/VKDeviceAttribute.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceAttribute.cpp @@ -48,7 +48,7 @@ void DeviceAttribute::ClearSwapchain() if(swap_chain) { vkDestroySwapchainKHR(device,swap_chain,nullptr); - swap_chain=nullptr; + swap_chain=VK_NULL_HANDLE; } } diff --git a/src/RenderDevice/Vulkan/VKDeviceBuffer.cpp b/src/RenderDevice/Vulkan/VKDeviceBuffer.cpp index 4d487168..94a23c44 100644 --- a/src/RenderDevice/Vulkan/VKDeviceBuffer.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceBuffer.cpp @@ -24,7 +24,7 @@ namespace Memory *dm=CreateMemory(rsa->device,rsa->physical_device,mem_reqs,VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT); - if(dm&&dm->Bind(vb.buffer)) + if(dm&&dm->BindBuffer(vb.buffer)) { vb.info.buffer =vb.buffer; vb.info.offset =0; diff --git a/src/RenderDevice/Vulkan/VKDeviceCreater.cpp b/src/RenderDevice/Vulkan/VKDeviceCreater.cpp index 131ee2a5..cfba5d4a 100644 --- a/src/RenderDevice/Vulkan/VKDeviceCreater.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceCreater.cpp @@ -93,7 +93,7 @@ namespace if(vkCreateCommandPool(device,&cmd_pool_info,nullptr,&cmd_pool)==VK_SUCCESS) return cmd_pool; - return(nullptr); + return(VK_NULL_HANDLE); } VkSwapchainKHR CreateSwapChain(DeviceAttribute *rsa) @@ -136,15 +136,15 @@ namespace if(vkCreateSwapchainKHR(rsa->device,&swapchain_ci,nullptr,&swap_chain)==VK_SUCCESS) return(swap_chain); - return(nullptr); + return(VK_NULL_HANDLE); } - ImageView *Create2DImageView(VkDevice device,VkFormat format,VkImage img=nullptr) + ImageView *Create2DImageView(VkDevice device,VkFormat format,VkImage img=VK_NULL_HANDLE) { return CreateImageView(device,VK_IMAGE_VIEW_TYPE_2D,format,VK_IMAGE_ASPECT_COLOR_BIT,img); } - ImageView *CreateDepthImageView(VkDevice device,VkFormat format,VkImage img=nullptr) + ImageView *CreateDepthImageView(VkDevice device,VkFormat format,VkImage img=VK_NULL_HANDLE) { return CreateImageView(device,VK_IMAGE_VIEW_TYPE_2D,format,VK_IMAGE_ASPECT_DEPTH_BIT,img); } @@ -224,7 +224,7 @@ namespace VkDescriptorPool desc_pool; if(vkCreateDescriptorPool(device,&dp_create_info,nullptr,&desc_pool)!=VK_SUCCESS) - return(nullptr); + return(VK_NULL_HANDLE); return desc_pool; } @@ -241,7 +241,7 @@ namespace VkPipelineCache cache; if(vkCreatePipelineCache(device, &pipelineCache, nullptr, &cache)!=VK_SUCCESS) - return(nullptr); + return(VK_NULL_HANDLE); return cache; } diff --git a/src/RenderDevice/Vulkan/VKDeviceTexture.cpp b/src/RenderDevice/Vulkan/VKDeviceTexture.cpp index 92de1662..ca223140 100644 --- a/src/RenderDevice/Vulkan/VKDeviceTexture.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceTexture.cpp @@ -95,7 +95,7 @@ bool Device::ChangeTexture2D(Texture2D *tex,Buffer *buf,uint32_t left,uint32_t t imageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; imageMemoryBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; imageMemoryBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; - imageMemoryBarrier.image = *tex; + imageMemoryBarrier.image = tex->GetImage(); imageMemoryBarrier.subresourceRange = subresourceRange; texture_cmd_buf->Begin(); @@ -108,8 +108,8 @@ bool Device::ChangeTexture2D(Texture2D *tex,Buffer *buf,uint32_t left,uint32_t t 1, &imageMemoryBarrier); texture_cmd_buf->CopyBufferToImage( - *buf, - *tex, + buf->GetBuffer(), + tex->GetImage(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &buffer_image_copy); diff --git a/src/RenderDevice/Vulkan/VKInstance.cpp b/src/RenderDevice/Vulkan/VKInstance.cpp index a792e23f..ead19dba 100644 --- a/src/RenderDevice/Vulkan/VKInstance.cpp +++ b/src/RenderDevice/Vulkan/VKInstance.cpp @@ -205,7 +205,7 @@ Instance::Instance(VkInstance i,CharPointerList &el) debug_out(extension_properties); } - debug_report_callback=nullptr; + debug_report_callback=VK_NULL_HANDLE; { VkDebugReportCallbackCreateInfoEXT create_info={}; @@ -218,7 +218,7 @@ Instance::Instance(VkInstance i,CharPointerList &el) CreateDebugReportCallbackEXT(inst,&create_info,nullptr,&debug_report_callback); } - debug_messenger=nullptr; + debug_messenger=VK_NULL_HANDLE; { VkDebugUtilsMessengerCreateInfoEXT createInfo={}; createInfo.sType=VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; diff --git a/src/RenderDevice/Vulkan/VKMemory.cpp b/src/RenderDevice/Vulkan/VKMemory.cpp index 019e682c..0800e670 100644 --- a/src/RenderDevice/Vulkan/VKMemory.cpp +++ b/src/RenderDevice/Vulkan/VKMemory.cpp @@ -70,14 +70,14 @@ bool Memory::Write(const void *ptr,VkDeviceSize start,VkDeviceSize size) return(true); } -bool Memory::Bind(VkBuffer buffer) +bool Memory::BindBuffer(VkBuffer buffer) { if(!buffer)return(false); return(vkBindBufferMemory(device,buffer,memory,0)==VK_SUCCESS); } -bool Memory::Bind(VkImage image) +bool Memory::BindImage(VkImage image) { if(!image)return(false); diff --git a/src/RenderDevice/Vulkan/VKRenderable.cpp b/src/RenderDevice/Vulkan/VKRenderable.cpp index 28d2092b..caad7032 100644 --- a/src/RenderDevice/Vulkan/VKRenderable.cpp +++ b/src/RenderDevice/Vulkan/VKRenderable.cpp @@ -32,7 +32,7 @@ bool Renderable::Set(const int stage_input_binding,VertexBuffer *vbo,VkDeviceSiz //format信息来自于shader,实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance,不同的格式又需要不同的pipeline,我们不支持这种行为 - buf_list[stage_input_binding]=*vbo; + buf_list[stage_input_binding]=vbo->GetBuffer(); buf_offset[stage_input_binding]=offset; return(true); diff --git a/src/RenderDevice/Vulkan/VKTexture.cpp b/src/RenderDevice/Vulkan/VKTexture.cpp index a5bd6748..95c78d3d 100644 --- a/src/RenderDevice/Vulkan/VKTexture.cpp +++ b/src/RenderDevice/Vulkan/VKTexture.cpp @@ -75,7 +75,7 @@ Texture2D *CreateTexture2D(VkDevice device,const PhysicalDevice *pd,const VkForm Memory *dm=CreateMemory(device,pd,memReqs,VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); - if(dm&&dm->Bind(image)) + if(dm&&dm->BindImage(image)) { ImageView *image_view=CreateImageView2D(device,format,aspectMask,image);