From: Angelos Gkountis Date: Thu, 17 May 2018 16:13:13 +0000 (+0100) Subject: Integrated the Vulkan::ResourceCache class into the Vulkan::Graphics class X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=37beba29fd051c78cae7173434138e440ea83b69;p=platform%2Fcore%2Fuifw%2Fdali-core.git Integrated the Vulkan::ResourceCache class into the Vulkan::Graphics class Renamed the GetVk[object_name] functions to the more uniform GetVkHandle name Fixed wrong equality comparisons in the lambdas of Vulkan::ResourceCache functions Change-Id: I0a67ae37c3ed069e538340184281b1eb8e0899d4 --- diff --git a/dali/graphics/file.list b/dali/graphics/file.list index 31a07a0..a981487 100644 --- a/dali/graphics/file.list +++ b/dali/graphics/file.list @@ -19,6 +19,7 @@ graphics_src_files = \ $(graphics_src_dir)/vulkan/vulkan-shader.cpp \ $(graphics_src_dir)/vulkan/vulkan-swapchain.cpp \ $(graphics_src_dir)/vulkan/vulkan-sampler.cpp \ + $(graphics_src_dir)/vulkan/vulkan-resource-cache.cpp \ $(graphics_src_dir)/vulkan/vulkan-graphics-texture.cpp \ $(graphics_src_dir)/vulkan/api/vulkan-api-controller.cpp \ $(graphics_src_dir)/vulkan/api/vulkan-api-shader.cpp \ diff --git a/dali/graphics/vulkan/api/vulkan-api-buffer.cpp b/dali/graphics/vulkan/api/vulkan-api-buffer.cpp index eacf487..693a755 100644 --- a/dali/graphics/vulkan/api/vulkan-api-buffer.cpp +++ b/dali/graphics/vulkan/api/vulkan-api-buffer.cpp @@ -37,7 +37,7 @@ Buffer::Buffer( Controller& controller, vk::BufferUsageFlagBits usage, API::Buff bool Buffer::Initialise() { - auto type = Vulkan::Buffer::Type{}; + Vulkan::Buffer::Type type; if( mUsage == vk::BufferUsageFlagBits::eUniformBuffer ) { type = Vulkan::Buffer::Type::UNIFORM; diff --git a/dali/graphics/vulkan/api/vulkan-api-render-command.cpp b/dali/graphics/vulkan/api/vulkan-api-render-command.cpp index 404f683..8969b30 100644 --- a/dali/graphics/vulkan/api/vulkan-api-render-command.cpp +++ b/dali/graphics/vulkan/api/vulkan-api-render-command.cpp @@ -196,11 +196,11 @@ bool RenderCommand::PreparePipeline() std::vector shaderStages = { vk::PipelineShaderStageCreateInfo{} - .setModule(vertexShader->GetVkShaderModule()) + .setModule(vertexShader->GetVkHandle()) .setStage(vk::ShaderStageFlagBits::eVertex) .setPName("main"), vk::PipelineShaderStageCreateInfo{} - .setModule(fragmentShader->GetVkShaderModule()) + .setModule(fragmentShader->GetVkHandle()) .setStage(vk::ShaderStageFlagBits::eFragment) .setPName("main") }; @@ -213,7 +213,7 @@ bool RenderCommand::PreparePipeline() vk::GraphicsPipelineCreateInfo pipelineInfo; pipelineInfo .setSubpass(0) - .setRenderPass(fb->GetVkRenderPass()) // based on render target + .setRenderPass(fb->GetRenderPassVkHandle()) // based on render target .setBasePipelineHandle(nullptr) .setBasePipelineIndex(0) .setLayout(pipelineLayout) diff --git a/dali/graphics/vulkan/gpu-memory/vulkan-gpu-memory-manager.cpp b/dali/graphics/vulkan/gpu-memory/vulkan-gpu-memory-manager.cpp index da8a30c..0b3b72f 100644 --- a/dali/graphics/vulkan/gpu-memory/vulkan-gpu-memory-manager.cpp +++ b/dali/graphics/vulkan/gpu-memory/vulkan-gpu-memory-manager.cpp @@ -117,7 +117,7 @@ struct GpuMemoryDefaultAllocator : public GpuMemoryAllocator */ virtual GpuMemoryBlockRef Allocate( const Handle& buffer, vk::MemoryPropertyFlags memoryProperties ) override { - return Allocate( mGraphics.GetDevice().getBufferMemoryRequirements( buffer->GetVkBuffer() ), + return Allocate( mGraphics.GetDevice().getBufferMemoryRequirements(buffer->GetVkHandle() ), memoryProperties ); } @@ -129,7 +129,7 @@ struct GpuMemoryDefaultAllocator : public GpuMemoryAllocator */ GpuMemoryBlockRef Allocate( const ImageRef& image, vk::MemoryPropertyFlags memoryProperties ) override { - return Allocate( mGraphics.GetDevice().getImageMemoryRequirements( image->GetVkImage() ), + return Allocate( mGraphics.GetDevice().getImageMemoryRequirements(image->GetVkHandle() ), memoryProperties ); } diff --git a/dali/graphics/vulkan/vulkan-buffer.cpp b/dali/graphics/vulkan/vulkan-buffer.cpp index 1b36a45..25f1c11 100644 --- a/dali/graphics/vulkan/vulkan-buffer.cpp +++ b/dali/graphics/vulkan/vulkan-buffer.cpp @@ -82,7 +82,7 @@ struct Buffer::Impl final * * @return */ - vk::Buffer GetVkBuffer() const + vk::Buffer GetVkHandle() const { return mBuffer; } @@ -160,9 +160,9 @@ uint32_t Buffer::GetSize() const return U32(mImpl->GetSize()); } -vk::Buffer Buffer::GetVkBuffer() const +vk::Buffer Buffer::GetVkHandle() const { - return mImpl->GetVkBuffer(); + return mImpl->GetVkHandle(); } void Buffer::BindMemory( const GpuMemoryBlockRef& handle ) diff --git a/dali/graphics/vulkan/vulkan-buffer.h b/dali/graphics/vulkan/vulkan-buffer.h index 74d2b14..c0ce0b4 100644 --- a/dali/graphics/vulkan/vulkan-buffer.h +++ b/dali/graphics/vulkan/vulkan-buffer.h @@ -82,7 +82,7 @@ public: * Returns Vulkan VkBuffer object associated with this buffer * @return */ - vk::Buffer GetVkBuffer() const; + vk::Buffer GetVkHandle() const; /** * Returns handle to the allocated memory diff --git a/dali/graphics/vulkan/vulkan-command-buffer.cpp b/dali/graphics/vulkan/vulkan-command-buffer.cpp index ff64a71..585515e 100644 --- a/dali/graphics/vulkan/vulkan-command-buffer.cpp +++ b/dali/graphics/vulkan/vulkan-command-buffer.cpp @@ -48,7 +48,7 @@ struct CommandBuffer::Impl ~Impl() { - mGraphics.GetDevice().freeCommandBuffers( mOwnerCommandPool.GetPool(), + mGraphics.GetDevice().freeCommandBuffers(mOwnerCommandPool.GetVkHandle(), 1, &mCommandBuffer ); } @@ -107,7 +107,7 @@ struct CommandBuffer::Impl // Render pass is obtained from the default framebuffer // it's a legacy but little nicer auto swapchain = mGraphics.GetSwapchainForFBID( 0u ); - inheritance.setRenderPass( swapchain->GetCurrentFramebuffer()->GetVkRenderPass() ); + inheritance.setRenderPass(swapchain->GetCurrentFramebuffer()->GetRenderPassVkHandle() ); info.setPInheritanceInfo( &inheritance ); } @@ -137,7 +137,7 @@ struct CommandBuffer::Impl void Free() { assert( mCommandBuffer && "Invalid command buffer!" ); - mGraphics.GetDevice().freeCommandBuffers( mOwnerCommandPool.GetPool(), mCommandBuffer ); + mGraphics.GetDevice().freeCommandBuffers(mOwnerCommandPool.GetVkHandle(), mCommandBuffer ); } @@ -166,7 +166,7 @@ struct CommandBuffer::Impl vkBuffers.reserve( buffers.size() ); for( auto&& buffer : buffers ) { - vkBuffers.emplace_back( buffer->GetVkBuffer() ); + vkBuffers.emplace_back(buffer->GetVkHandle() ); PushResource( buffer ); } @@ -180,14 +180,14 @@ struct CommandBuffer::Impl "The buffer used as index buffer has wrong usage flags!" ); PushResource( buffer ); - mCommandBuffer.bindIndexBuffer( buffer->GetVkBuffer(), offset, indexType ); + mCommandBuffer.bindIndexBuffer(buffer->GetVkHandle(), offset, indexType ); } void BindGraphicsPipeline( Handle pipeline ) { PushResource( pipeline ); mCurrentPipeline = pipeline; - mCommandBuffer.bindPipeline( vk::PipelineBindPoint::eGraphics, pipeline->GetVkPipeline() ); + mCommandBuffer.bindPipeline( vk::PipelineBindPoint::eGraphics, pipeline->GetVkHandle() ); } void BindDescriptorSets( std::vector> descriptorSets, @@ -238,11 +238,11 @@ struct CommandBuffer::Impl auto swapchain = mGraphics.GetSwapchainForFBID( 0u ); auto surface = mGraphics.GetSurface( 0u ); auto frameBuffer = swapchain->GetCurrentFramebuffer(); - auto renderPass = frameBuffer->GetVkRenderPass(); + auto renderPass = frameBuffer->GetRenderPassVkHandle(); auto clearValues = frameBuffer->GetDefaultClearValues(); auto info = vk::RenderPassBeginInfo{}; - info.setFramebuffer( frameBuffer->GetVkFramebuffer() ); + info.setFramebuffer(frameBuffer->GetVkHandle() ); info.setRenderPass( renderPass ); info.setClearValueCount( U32( clearValues.size() ) ); info.setPClearValues( clearValues.data() ); @@ -308,7 +308,7 @@ struct CommandBuffer::Impl PushResource( srcBuffer ); PushResource( dstImage ); - mCommandBuffer.copyBufferToImage( srcBuffer->GetVkBuffer(), dstImage->GetVkImage(), dstLayout, regions ); + mCommandBuffer.copyBufferToImage(srcBuffer->GetVkHandle(), dstImage->GetVkHandle(), dstLayout, regions ); } vk::ImageMemoryBarrier ImageLayoutTransitionBarrier( ImageRef image, @@ -321,7 +321,7 @@ struct CommandBuffer::Impl { return vk::ImageMemoryBarrier{} .setNewLayout( newLayout ) - .setImage( image->GetVkImage() ) + .setImage(image->GetVkHandle() ) .setOldLayout( oldLayout ) .setSrcAccessMask( srcAccessMask ) .setDstAccessMask( dstAccessMask ) diff --git a/dali/graphics/vulkan/vulkan-command-pool.cpp b/dali/graphics/vulkan/vulkan-command-pool.cpp index fe7bcd3..3805959 100644 --- a/dali/graphics/vulkan/vulkan-command-pool.cpp +++ b/dali/graphics/vulkan/vulkan-command-pool.cpp @@ -96,7 +96,7 @@ struct CommandBufferPool auto allocateInfo = vk::CommandBufferAllocateInfo{} .setCommandBufferCount( U32(diff) ) - .setCommandPool( mOwner.GetPool() ) + .setCommandPool(mOwner.GetVkHandle() ) .setLevel( mIsPrimary ? vk::CommandBufferLevel::ePrimary : vk::CommandBufferLevel::eSecondary ); auto newBuffers = AllocateVkCommandBuffers( allocateInfo ); @@ -276,7 +276,7 @@ CommandPool::CommandPool(Graphics& graphics, const vk::CommandPoolCreateInfo& cr CommandPool::~CommandPool() = default; -vk::CommandPool CommandPool::GetPool() const +vk::CommandPool CommandPool::GetVkHandle() const { return mImpl->mCommandPool; } diff --git a/dali/graphics/vulkan/vulkan-command-pool.h b/dali/graphics/vulkan/vulkan-command-pool.h index de0b1dd..93a56a8 100644 --- a/dali/graphics/vulkan/vulkan-command-pool.h +++ b/dali/graphics/vulkan/vulkan-command-pool.h @@ -59,7 +59,7 @@ public: * * @return */ - vk::CommandPool GetPool() const; + vk::CommandPool GetVkHandle() const; /** * diff --git a/dali/graphics/vulkan/vulkan-descriptor-set.cpp b/dali/graphics/vulkan/vulkan-descriptor-set.cpp index 40dfe11..56454c0 100644 --- a/dali/graphics/vulkan/vulkan-descriptor-set.cpp +++ b/dali/graphics/vulkan/vulkan-descriptor-set.cpp @@ -104,7 +104,7 @@ DescriptorPool::DescriptorPool( Graphics& graphics, const vk::DescriptorPoolCrea DescriptorPool::~DescriptorPool() = default; -vk::DescriptorPool DescriptorPool::GetVkDescriptorPool() const +vk::DescriptorPool DescriptorPool::GetVkHandle() const { return mImpl->mVkDescriptorPool; } @@ -139,7 +139,7 @@ struct DescriptorSet::Impl if(mVkDescriptorSet) { // TODO: @todo non freeable!!! - //mGraphics.GetDevice().freeDescriptorSets( mPool.GetVkDescriptorPool(), 1, &mVkDescriptorSet ); + //mGraphics.GetDevice().freeDescriptorSets( mPool.GetVkHandle(), 1, &mVkDescriptorSet ); } } @@ -151,7 +151,7 @@ struct DescriptorSet::Impl auto bufferInfo = vk::DescriptorBufferInfo{} .setOffset( U32(offset) ) .setRange( U32(size) ) - .setBuffer( buffer->GetVkBuffer() ); + .setBuffer(buffer->GetVkHandle() ); auto write = vk::WriteDescriptorSet{}.setPBufferInfo( &bufferInfo ) .setDescriptorType( vk::DescriptorType::eUniformBuffer ) @@ -173,7 +173,7 @@ struct DescriptorSet::Impl auto imageViewInfo = vk::DescriptorImageInfo{} .setImageLayout( vk::ImageLayout::eShaderReadOnlyOptimal ) .setImageView( imageView->GetVkImageView() ) - .setSampler( sampler->GetVkSampler() ); + .setSampler(sampler->GetVkHandle() ); auto write = vk::WriteDescriptorSet{}.setPImageInfo( &imageViewInfo ) .setDescriptorType( vk::DescriptorType::eCombinedImageSampler ) diff --git a/dali/graphics/vulkan/vulkan-descriptor-set.h b/dali/graphics/vulkan/vulkan-descriptor-set.h index f76978a..4f77fc6 100644 --- a/dali/graphics/vulkan/vulkan-descriptor-set.h +++ b/dali/graphics/vulkan/vulkan-descriptor-set.h @@ -97,7 +97,7 @@ public: ~DescriptorPool() override; - vk::DescriptorPool GetVkDescriptorPool() const; + vk::DescriptorPool GetVkHandle() const; std::vector AllocateDescriptorSets( vk::DescriptorSetAllocateInfo allocateInfo ); diff --git a/dali/graphics/vulkan/vulkan-framebuffer.cpp b/dali/graphics/vulkan/vulkan-framebuffer.cpp index 31db682..99e599b 100644 --- a/dali/graphics/vulkan/vulkan-framebuffer.cpp +++ b/dali/graphics/vulkan/vulkan-framebuffer.cpp @@ -326,12 +326,12 @@ void Framebuffer::Commit() mImpl->Commit(); } -vk::RenderPass Framebuffer::GetVkRenderPass() const +vk::RenderPass Framebuffer::GetRenderPassVkHandle() const { return mImpl->mVkRenderPass; } -vk::Framebuffer Framebuffer::GetVkFramebuffer() const +vk::Framebuffer Framebuffer::GetVkHandle() const { return mImpl->mVkFramebuffer; } diff --git a/dali/graphics/vulkan/vulkan-framebuffer.h b/dali/graphics/vulkan/vulkan-framebuffer.h index b0ec55b..8780e29 100644 --- a/dali/graphics/vulkan/vulkan-framebuffer.h +++ b/dali/graphics/vulkan/vulkan-framebuffer.h @@ -64,9 +64,9 @@ public: void Commit(); - vk::RenderPass GetVkRenderPass() const; + vk::RenderPass GetRenderPassVkHandle() const; - vk::Framebuffer GetVkFramebuffer() const; + vk::Framebuffer GetVkHandle() const; const std::vector& GetDefaultClearValues() const; diff --git a/dali/graphics/vulkan/vulkan-graphics-texture.cpp b/dali/graphics/vulkan/vulkan-graphics-texture.cpp index 39c6d0a..5641165 100644 --- a/dali/graphics/vulkan/vulkan-graphics-texture.cpp +++ b/dali/graphics/vulkan/vulkan-graphics-texture.cpp @@ -190,7 +190,7 @@ struct Texture::Impl mSampler->SetFilter( vk::Filter::eLinear, vk::Filter::eLinear ); mSampler->SetMipmapMode( vk::SamplerMipmapMode::eLinear ); - mSampler->GetVkSampler(); + mSampler->GetVkHandle(); } SamplerRef GetSampler() const diff --git a/dali/graphics/vulkan/vulkan-graphics.cpp b/dali/graphics/vulkan/vulkan-graphics.cpp index a898475..dece57a 100644 --- a/dali/graphics/vulkan/vulkan-graphics.cpp +++ b/dali/graphics/vulkan/vulkan-graphics.cpp @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include @@ -335,7 +337,7 @@ std::vector< vk::DeviceQueueCreateInfo > Graphics::GetQueueCreateInfos() assert(!mSurfaceFBIDMap.empty() && "At least one surface has to be created before creating VkDevice!"); - auto queueInfos = std::vector< vk::DeviceQueueCreateInfo >{}; + std::vector< vk::DeviceQueueCreateInfo > queueInfos{}; constexpr uint8_t MAX_QUEUE_TYPES = 3; // find suitable family for each type of queue @@ -426,7 +428,7 @@ void Graphics::CreateDevice() info.setPQueuePriorities( priorities.data() ); } - auto extensions = std::vector< const char* >{VK_KHR_SWAPCHAIN_EXTENSION_NAME}; + std::vector< const char* > extensions{VK_KHR_SWAPCHAIN_EXTENSION_NAME}; auto info = vk::DeviceCreateInfo{}; info.setEnabledExtensionCount(U32(extensions.size())) @@ -468,6 +470,7 @@ void Graphics::CreateDevice() } mPipelineDatabase = std::make_unique( *this ); + mResourceCache = MakeUnique(); } vk::Device Graphics::GetDevice() const @@ -496,7 +499,7 @@ Queue& Graphics::GetGraphicsQueue(uint32_t index) const // this will change in the future assert(index == 0u && "Each type of queue may use only one, indices greater than 0 are invalid!"); - return *mGraphicsQueues[0].get(); // will be mGraphicsQueues[index] + return *mGraphicsQueues[0]; // will be mGraphicsQueues[index] } Queue& Graphics::GetTransferQueue(uint32_t index) const @@ -505,7 +508,7 @@ Queue& Graphics::GetTransferQueue(uint32_t index) const // this will change in the future assert(index == 0u && "Each type of queue may use only one, indices greater than 0 are invalid!"); - return *mTransferQueues[0].get(); // will be mGraphicsQueues[index] + return *mTransferQueues[0]; // will be mGraphicsQueues[index] } Queue& Graphics::GetComputeQueue(uint32_t index) const @@ -514,7 +517,7 @@ Queue& Graphics::GetComputeQueue(uint32_t index) const // this will change in the future assert(index == 0u && "Each type of queue may use only one, indices greater than 0 are invalid!"); - return *mComputeQueues[0].get(); // will be mGraphicsQueues[index] + return *mComputeQueues[0]; // will be mGraphicsQueues[index] } Queue& Graphics::GetPresentQueue() const @@ -546,104 +549,80 @@ SurfaceRef Graphics::GetSurface( FBID surfaceId ) void Graphics::AddBuffer( Handle buffer ) { - mBuffersCache.push_back( buffer ); + mResourceCache->AddBuffer(std::move(buffer)); } void Graphics::AddImage( Handle image ) { - mImageCache.push_back( image ); + mResourceCache->AddImage(std::move(image)); } void Graphics::AddPipeline( Handle pipeline ) { - mPipelineCache.push_back( pipeline ); + mResourceCache->AddPipeline(std::move(pipeline)); } void Graphics::AddShader( Handle shader ) { - mShaderCache.push_back( shader ); + mResourceCache->AddShader(std::move(shader)); } void Graphics::AddCommandPool( Handle pool ) { - mCommandPoolCache.push_back( pool ); + mResourceCache->AddCommandPool(std::move(pool)); } void Graphics::AddDescriptorPool( Handle pool ) { - mDescriptorPoolCache.push_back( pool ); + mResourceCache->AddDescriptorPool(std::move(pool)); } void Graphics::AddFramebuffer( Handle framebuffer ) { - mFramebufferCache.push_back( framebuffer ); + mResourceCache->AddFramebuffer(std::move(framebuffer)); } void Graphics::RemoveBuffer( Buffer& buffer ) { - auto index = 0u; - for( auto&& iter : mBuffersCache ) - { - if( &*iter == &buffer ) - { - iter.Reset(); - mBuffersCache.erase( mBuffersCache.begin()+index ); - return; - } - } + mResourceCache->RemoveBuffer(buffer); } void Graphics::RemoveShader( Shader& shader ) { - auto index = 0u; - for( auto&& iter : mShaderCache ) - { - if( &*iter == &shader ) - { - iter.Reset(); - mShaderCache.erase( mShaderCache.begin()+index ); - return; - } - ++index; - } + mResourceCache->RemoveShader(shader); } void Graphics::RemoveCommandPool( CommandPool& commandPool ) { - NotImplemented(); + mResourceCache->RemoveCommandPool(commandPool); +} + +void Graphics::RemoveDescriptorPool( DescriptorPool& pool ) +{ + mResourceCache->RemoveDescriptorPool(pool); } -void Graphics::RemoveDescriptorPool( std::unique_ptr pool ) +void Graphics::RemoveFramebuffer( Framebuffer& framebuffer ) { - NotImplemented(); + mResourceCache->RemoveFramebuffer(framebuffer); +} + +void Graphics::RemoveSampler( Sampler& sampler ) +{ + mResourceCache->RemoveSampler(sampler); } ShaderRef Graphics::FindShader( vk::ShaderModule shaderModule ) { - for( auto&& iter : mShaderCache ) - { - if( iter->GetVkShaderModule() == shaderModule ) - { - return Handle(&*iter); - } - } - return Handle(); + return mResourceCache->FindShader(shaderModule); } ImageRef Graphics::FindImage( vk::Image image ) { - for( auto&& iter : mImageCache ) - { - if( iter->GetVkImage() == image ) - { - return ImageRef(&*iter); - } - } - return ImageRef(); + return mResourceCache->FindImage(image); } - } // namespace Vulkan } // namespace Graphics } // namespace Dali diff --git a/dali/graphics/vulkan/vulkan-graphics.h b/dali/graphics/vulkan/vulkan-graphics.h index 9882250..6cec1a3 100644 --- a/dali/graphics/vulkan/vulkan-graphics.h +++ b/dali/graphics/vulkan/vulkan-graphics.h @@ -56,6 +56,7 @@ class CommandPool; class DescriptorPool; class GpuMemoryManager; class PipelineCache; +class ResourceCache; struct SwapchainSurfacePair { @@ -177,16 +178,9 @@ public: void RemoveBuffer( Buffer& buffer ); void RemoveShader( Shader& shader ); void RemoveCommandPool( CommandPool& commandPool ); - void RemoveDescriptorPool( std::unique_ptr pool ); - -private: - std::vector mBuffersCache; - std::vector mImageCache; - std::vector mPipelineCache; - std::vector mShaderCache; - std::vector mCommandPoolCache; - std::vector mDescriptorPoolCache; - std::vector mFramebufferCache; + void RemoveDescriptorPool( DescriptorPool& pool ); + void RemoveFramebuffer( Framebuffer& framebuffer ); + void RemoveSampler( Sampler& sampler ); private: std::unique_ptr mGfxController; @@ -194,10 +188,11 @@ private: // TODO: rename std::unique_ptr mPipelineDatabase; + std::unique_ptr mResourceCache; public: PipelineCache& GetPipelineCache() { - return *mPipelineDatabase.get(); + return *mPipelineDatabase; } }; diff --git a/dali/graphics/vulkan/vulkan-image.cpp b/dali/graphics/vulkan/vulkan-image.cpp index 51447b5..5971bed 100644 --- a/dali/graphics/vulkan/vulkan-image.cpp +++ b/dali/graphics/vulkan/vulkan-image.cpp @@ -109,7 +109,7 @@ Image::Image( Graphics& graphics, const vk::ImageCreateInfo& createInfo, vk::Ima mImpl = MakeUnique( *this, graphics, createInfo, externalImage ); } -vk::Image Image::GetVkImage() const +vk::Image Image::GetVkHandle() const { return mImpl->mVkImage; } @@ -244,7 +244,7 @@ ImageViewRef ImageView::New( Graphics& graphics, ImageRef image ) .setFormat( image->GetVkFormat() ) .setSubresourceRange(subresourceRange) .setComponents( componentsMapping ) - .setImage( image->GetVkImage() ))); + .setImage(image->GetVkHandle() ))); if(!retval->mImpl->Initialise()) { return ImageViewRef(); diff --git a/dali/graphics/vulkan/vulkan-image.h b/dali/graphics/vulkan/vulkan-image.h index b5b43f6..060caa5 100644 --- a/dali/graphics/vulkan/vulkan-image.h +++ b/dali/graphics/vulkan/vulkan-image.h @@ -58,7 +58,7 @@ public: * Returns underlying Vulkan object * @return */ - vk::Image GetVkImage() const; + vk::Image GetVkHandle() const; /** * Returns VkImageLayout associated with the image @@ -130,7 +130,7 @@ public: operator InternalVkImage() const { - return GetVkImage(); + return GetVkHandle(); } private: diff --git a/dali/graphics/vulkan/vulkan-pipeline.cpp b/dali/graphics/vulkan/vulkan-pipeline.cpp index ef61706..ce7beb6 100644 --- a/dali/graphics/vulkan/vulkan-pipeline.cpp +++ b/dali/graphics/vulkan/vulkan-pipeline.cpp @@ -42,8 +42,8 @@ struct Pipeline::Impl { - Impl( Vulkan::Graphics& graphics, const vk::GraphicsPipelineCreateInfo& info ) : - mInfo( info ), + Impl( Vulkan::Graphics& graphics, vk::GraphicsPipelineCreateInfo info ) : + mInfo( std::move(info) ), mGraphics( graphics ) { }; @@ -65,7 +65,7 @@ struct Pipeline::Impl * * @return */ - vk::Pipeline GetVkPipeline() const + vk::Pipeline GetVkHandle() const { return mPipeline; } @@ -93,8 +93,8 @@ struct Pipeline::Impl // in place of swapchain structures! if( !mInfo.renderPass ) { - SetRenderPass( mGraphics.GetSwapchainForFBID(0u)-> - GetCurrentFramebuffer()->GetVkRenderPass()); + SetRenderPass(mGraphics.GetSwapchainForFBID(0u)-> + GetCurrentFramebuffer()->GetRenderPassVkHandle()); } if(!mInfo.pRasterizationState) @@ -451,9 +451,9 @@ Pipeline::Pipeline( Graphics& graphics, const vk::GraphicsPipelineCreateInfo& in mImpl = MakeUnique( graphics, info ); } -vk::Pipeline Pipeline::GetVkPipeline() const +vk::Pipeline Pipeline::GetVkHandle() const { - return mImpl->GetVkPipeline(); + return mImpl->GetVkHandle(); } bool Pipeline::OnDestroy() diff --git a/dali/graphics/vulkan/vulkan-pipeline.h b/dali/graphics/vulkan/vulkan-pipeline.h index 4494ca2..5d33d13 100644 --- a/dali/graphics/vulkan/vulkan-pipeline.h +++ b/dali/graphics/vulkan/vulkan-pipeline.h @@ -124,7 +124,7 @@ public: * Returns Vulkan VkPipeline object associated with Pipeline * @return */ - vk::Pipeline GetVkPipeline() const; + vk::Pipeline GetVkHandle() const; /** * Returns Vulkan VkPipelineLayout object associated with Pipeline diff --git a/dali/graphics/vulkan/vulkan-resource-cache.cpp b/dali/graphics/vulkan/vulkan-resource-cache.cpp index 378b009..6200289 100644 --- a/dali/graphics/vulkan/vulkan-resource-cache.cpp +++ b/dali/graphics/vulkan/vulkan-resource-cache.cpp @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include @@ -85,7 +87,7 @@ PipelineRef ResourceCache::FindPipeline( vk::Pipeline pipeline ) { auto iterator = std::find_if(mPipelines.begin(), mPipelines.end(), - [&](const PipelineRef entry) { return &*entry == pipeline; }); + [&](const PipelineRef entry) { return entry->GetVkHandle() == pipeline; }); return iterator == mPipelines.end() ? PipelineRef() : PipelineRef(&**iterator); } @@ -94,7 +96,7 @@ ShaderRef ResourceCache::FindShader( vk::ShaderModule shaderModule ) { auto iterator = std::find_if(mShaders.begin(), mShaders.end(), - [&](const ShaderRef entry) { return &*entry == shaderModule; }); + [&](const ShaderRef entry) { return entry->GetVkHandle() == shaderModule; }); return iterator == mShaders.end() ? ShaderRef() : ShaderRef(&**iterator); } @@ -103,7 +105,7 @@ CommandPoolRef ResourceCache::FindCommandPool( vk::CommandPool commandPool ) { auto iterator = std::find_if(mCommandPools.begin(), mCommandPools.end(), - [&](const CommandPoolRef entry) { return &*entry == commandPool; }); + [&](const CommandPoolRef entry) { return entry->GetVkHandle() == commandPool; }); return iterator == mCommandPools.end() ? CommandPoolRef() : CommandPoolRef(&**iterator); } @@ -112,7 +114,7 @@ DescriptorPoolRef ResourceCache::FindDescriptorPool( vk::DescriptorPool descript { auto iterator = std::find_if(mDescriptorPools.begin(), mDescriptorPools.end(), - [&](const DescriptorPoolRef entry) { return &*entry == descriptorPool; }); + [&](const DescriptorPoolRef entry) { return entry->GetVkHandle() == descriptorPool; }); return iterator == mDescriptorPools.end() ? DescriptorPoolRef() : DescriptorPoolRef(&**iterator); } @@ -121,7 +123,7 @@ FramebufferRef ResourceCache::FindFramebuffer( vk::Framebuffer framebuffer ) { auto iterator = std::find_if(mFramebuffers.begin(), mFramebuffers.end(), - [&](const FramebufferRef entry) { return &*entry == framebuffer; }); + [&](const FramebufferRef entry) { return entry->GetVkHandle() == framebuffer; }); return iterator == mFramebuffers.end() ? FramebufferRef() : FramebufferRef(&**iterator); } @@ -130,7 +132,7 @@ SamplerRef ResourceCache::FindSampler( vk::Sampler sampler ) { auto iterator = std::find_if(mSamplers.begin(), mSamplers.end(), - [&](const SamplerRef entry) { return &*entry == sampler; }); + [&](const SamplerRef entry) { return entry->GetVkHandle() == sampler; }); return iterator == mSamplers.end() ? SamplerRef() : SamplerRef(&**iterator); } @@ -139,7 +141,7 @@ BufferRef ResourceCache::FindBuffer( vk::Buffer buffer ) { auto iterator = std::find_if(mBuffers.begin(), mBuffers.end(), - [&](const BufferRef entry) { return &*entry == buffer; }); + [&](const BufferRef entry) { return entry->GetVkHandle() == buffer; }); return iterator == mBuffers.end() ? BufferRef() : BufferRef(&**iterator); } @@ -148,7 +150,7 @@ ImageRef ResourceCache::FindImage( vk::Image image ) { auto iterator = std::find_if(mImages.begin(), mImages.end(), - [&](const ImageRef entry) { return &*entry == image; }); + [&](const ImageRef entry) { return entry->GetVkHandle() == image; }); return iterator == mImages.end() ? ImageRef() : ImageRef(&**iterator); } @@ -206,7 +208,7 @@ ResourceCache& ResourceCache::RemoveShader( Shader& shader ) mShaders.end(), [&](const ShaderRef entry) { return &*entry == &shader; }); - std::iter_swap(iterator, std::prev(mShaders.end()); + std::iter_swap(iterator, std::prev(mShaders.end())); mShaders.back().Reset(); mShaders.pop_back(); } @@ -228,13 +230,13 @@ ResourceCache& ResourceCache::RemoveCommandPool( CommandPool& commandPool ) return *this; } -ResourceCache& ResourceCache::RemoveDescriptorPool( std::unique_ptr descriptorPool ) +ResourceCache& ResourceCache::RemoveDescriptorPool( DescriptorPool& descriptorPool ) { if( !mDescriptorPools.empty() ) { auto iterator = std::find_if(mDescriptorPools.begin(), mDescriptorPools.end(), - [&](const DescriptorPoolRef entry) { return &*entry == &*descriptorPool; }); + [&](const DescriptorPoolRef entry) { return &*entry == &descriptorPool; }); std::iter_swap(iterator, std::prev(mDescriptorPools.end())); mDescriptorPools.back().Reset(); diff --git a/dali/graphics/vulkan/vulkan-resource-cache.h b/dali/graphics/vulkan/vulkan-resource-cache.h index a23c024..ed25df8 100644 --- a/dali/graphics/vulkan/vulkan-resource-cache.h +++ b/dali/graphics/vulkan/vulkan-resource-cache.h @@ -191,7 +191,7 @@ public: * @param descriptorPool The DescriptorPool to be removed * @return A reference to the ResourceCache */ - ResourceCache& RemoveDescriptorPool( std::unique_ptr descriptorPool ); + ResourceCache& RemoveDescriptorPool( DescriptorPool& descriptorPool ); /** * Removes the specified Framebuffer from the cache @@ -207,6 +207,7 @@ public: */ ResourceCache& RemoveSampler( Sampler& sampler ); + ResourceCache() = default; // The cache should not be copyable ResourceCache( const ResourceCache& other ) = delete; diff --git a/dali/graphics/vulkan/vulkan-sampler.cpp b/dali/graphics/vulkan/vulkan-sampler.cpp index 3f44ec2..7e103b6 100644 --- a/dali/graphics/vulkan/vulkan-sampler.cpp +++ b/dali/graphics/vulkan/vulkan-sampler.cpp @@ -191,7 +191,7 @@ void Sampler::SetCompareOp( vk::CompareOp compareOp ) mImpl->mModified = true; } -vk::Sampler Sampler::GetVkSampler() const +vk::Sampler Sampler::GetVkHandle() const { // if no sampler yet, create it now if( mImpl->mModified ) diff --git a/dali/graphics/vulkan/vulkan-sampler.h b/dali/graphics/vulkan/vulkan-sampler.h index a327d03..84c9dba 100644 --- a/dali/graphics/vulkan/vulkan-sampler.h +++ b/dali/graphics/vulkan/vulkan-sampler.h @@ -117,7 +117,7 @@ public: * Returns VkSampler object * @return */ - vk::Sampler GetVkSampler() const; + vk::Sampler GetVkHandle() const; private: diff --git a/dali/graphics/vulkan/vulkan-shader.cpp b/dali/graphics/vulkan/vulkan-shader.cpp index e8d6cf6..b20717d 100644 --- a/dali/graphics/vulkan/vulkan-shader.cpp +++ b/dali/graphics/vulkan/vulkan-shader.cpp @@ -57,7 +57,7 @@ struct Shader::Impl return vk::Result::eErrorInitializationFailed; } - vk::ShaderModule GetVkShaderModule() const + vk::ShaderModule GetVkHandle() const { return mShaderModule; } @@ -100,9 +100,9 @@ Shader::Shader( Graphics& graphics, const vk::ShaderModuleCreateInfo& info ) Shader::~Shader() = default; -vk::ShaderModule Shader::GetVkShaderModule() const +vk::ShaderModule Shader::GetVkHandle() const { - return mImpl->GetVkShaderModule(); + return mImpl->GetVkHandle(); } bool Shader::OnDestroy() diff --git a/dali/graphics/vulkan/vulkan-shader.h b/dali/graphics/vulkan/vulkan-shader.h index 5c03607..0357a72 100644 --- a/dali/graphics/vulkan/vulkan-shader.h +++ b/dali/graphics/vulkan/vulkan-shader.h @@ -54,7 +54,7 @@ public: static Handle New( Graphics& graphics, const vk::ShaderModuleCreateInfo& info ); /** - * Creates new shader module from SPIRV code + * Creates new shader module from SPIR-V code * @param graphics * @param bytes * @param size @@ -67,7 +67,7 @@ public: */ ~Shader() override; - vk::ShaderModule GetVkShaderModule() const; + vk::ShaderModule GetVkHandle() const; const SpirV::SPIRVShader& GetSPIRVReflection() const; @@ -75,7 +75,7 @@ public: operator vk::ShaderModule() const { - return GetVkShaderModule(); + return GetVkHandle(); } /** diff --git a/dali/graphics/vulkan/vulkan-standalone-test.cpp b/dali/graphics/vulkan/vulkan-standalone-test.cpp index e116bbb..c56b655 100644 --- a/dali/graphics/vulkan/vulkan-standalone-test.cpp +++ b/dali/graphics/vulkan/vulkan-standalone-test.cpp @@ -372,7 +372,7 @@ void test_framebuffer(Dali::Graphics::Vulkan::Graphics &graphics) .setFormat(vk::Format::eR32G32B32A32Sfloat) .setComponents(vk::ComponentMapping( vk::ComponentSwizzle::eR, vk::ComponentSwizzle::eG, vk::ComponentSwizzle::eB, vk::ComponentSwizzle::eA)) - .setImage(image->GetVkImage()) + .setImage(image->GetVkHandle()) .setSubresourceRange(vk::ImageSubresourceRange{} .setLayerCount(1) .setLevelCount(1) diff --git a/dali/graphics/vulkan/vulkan-swapchain.cpp b/dali/graphics/vulkan/vulkan-swapchain.cpp index a7fa5de..933ae0b 100644 --- a/dali/graphics/vulkan/vulkan-swapchain.cpp +++ b/dali/graphics/vulkan/vulkan-swapchain.cpp @@ -193,7 +193,7 @@ struct Swapchain::Impl for( auto&& colorImageView : colorImages ) { auto image = colorImageView->GetImage(); - auto vkImage = image->GetVkImage(); + auto vkImage = image->GetVkHandle(); vk::ImageSubresourceRange range; range.setLayerCount( image->GetLayerCount() ) @@ -219,7 +219,7 @@ struct Swapchain::Impl if( depthStencilImage ) { auto image = depthStencilImage->GetImage(); - auto vkImage = image->GetVkImage(); + auto vkImage = image->GetVkHandle(); vk::ImageSubresourceRange range; range.setLayerCount( image->GetLayerCount() ) @@ -418,8 +418,8 @@ struct Swapchain::Impl // start recording auto inheritanceInfo = vk::CommandBufferInheritanceInfo{} - .setFramebuffer( swapBuffer.framebuffer->GetVkFramebuffer() ) - .setRenderPass(swapBuffer.framebuffer->GetVkRenderPass()) + .setFramebuffer(swapBuffer.framebuffer->GetVkHandle() ) + .setRenderPass(swapBuffer.framebuffer->GetRenderPassVkHandle()) .setSubpass( 0 ); swapBuffer.masterCmdBuffer->Reset(); swapBuffer.masterCmdBuffer->Begin( vk::CommandBufferUsageFlagBits::eRenderPassContinue, &inheritanceInfo ); @@ -440,8 +440,8 @@ struct Swapchain::Impl auto& currentBuffer = mSwapchainBuffer[mCurrentBufferIndex]; vk::RenderPassBeginInfo rpInfo{}; - rpInfo.setRenderPass( currentBuffer.framebuffer->GetVkRenderPass() ) - .setFramebuffer( currentBuffer.framebuffer->GetVkFramebuffer() ) + rpInfo.setRenderPass(currentBuffer.framebuffer->GetRenderPassVkHandle() ) + .setFramebuffer(currentBuffer.framebuffer->GetVkHandle() ) .setPClearValues( currentBuffer.framebuffer->GetDefaultClearValues().data() ) .setClearValueCount( U32( currentBuffer.framebuffer->GetDefaultClearValues().size() ) ) .setRenderArea( vk::Rect2D( {0, 0}, mSurface->GetSize() ) );