From c2732b9f39762c622247f88323539f3ffdf434df Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Wed, 30 May 2018 08:40:12 -0700 Subject: Replaced BufferVkImpl::GetAccessFlags with CheckAccessFlags --- Graphics/GraphicsEngineVulkan/include/BufferVkImpl.h | 6 ++++-- .../GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp | 16 ++++++++-------- .../GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp | 4 ++-- 3 files changed, 14 insertions(+), 12 deletions(-) (limited to 'Graphics/GraphicsEngineVulkan') diff --git a/Graphics/GraphicsEngineVulkan/include/BufferVkImpl.h b/Graphics/GraphicsEngineVulkan/include/BufferVkImpl.h index 97a86bc5..e914e195 100644 --- a/Graphics/GraphicsEngineVulkan/include/BufferVkImpl.h +++ b/Graphics/GraphicsEngineVulkan/include/BufferVkImpl.h @@ -78,10 +78,12 @@ public: return VkBuffer; } - virtual void SetAccessFlags(VkAccessFlags AccessFlags )override final{ m_AccessFlags = AccessFlags; } - VkAccessFlags GetAccessFlags()const{return m_AccessFlags;} + virtual void SetAccessFlags(VkAccessFlags AccessFlags)override final{ m_AccessFlags = AccessFlags; } + bool CheckAccessFlags(VkAccessFlags Flags)const{return (m_AccessFlags & Flags) == Flags;} private: + friend class DeviceContextVkImpl; + virtual void CreateViewInternal( const struct BufferViewDesc &ViewDesc, IBufferView **ppView, bool bIsDefaultView )override; VulkanUtilities::BufferViewWrapper CreateView(struct BufferViewDesc &ViewDesc); diff --git a/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp index f8e87c77..390357b4 100644 --- a/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp +++ b/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp @@ -305,7 +305,7 @@ namespace Diligent auto &CurrStream = m_VertexStreams[Buff]; VERIFY( CurrStream.pBuffer, "Attempting to bind a null buffer for rendering" ); auto *pBufferVk = CurrStream.pBuffer.RawPtr(); - if(pBufferVk->GetAccessFlags() != VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT) + if(!pBufferVk->CheckAccessFlags(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT)) BufferMemoryBarrier(*pBufferVk, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT); } } @@ -335,7 +335,7 @@ namespace Diligent // pBufferVk->DbgVerifyDynamicAllocation(m_ContextId); //#endif // } - if(pBufferVk->GetAccessFlags() != VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT) + if(!pBufferVk->CheckAccessFlags(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT)) BufferMemoryBarrier(*pBufferVk, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT); // Device context keeps strong references to all vertex buffers. @@ -382,7 +382,7 @@ namespace Diligent VERIFY( m_pIndexBuffer != nullptr, "Index buffer is not set up for indexed draw command" ); BufferVkImpl *pBuffVk = m_pIndexBuffer.RawPtr(); - if(pBuffVk->GetAccessFlags() != VK_ACCESS_INDEX_READ_BIT) + if(!pBuffVk->CheckAccessFlags(VK_ACCESS_INDEX_READ_BIT)) BufferMemoryBarrier(*pBuffVk, VK_ACCESS_INDEX_READ_BIT); VERIFY(DrawAttribs.IndexType == VT_UINT16 || DrawAttribs.IndexType == VT_UINT32, "Unsupported index format. Only R16_UINT and R32_UINT are allowed."); @@ -760,7 +760,7 @@ namespace Diligent DisposeVkCmdBuffer(); } - m_State.NumCommands = 0; + m_State = ContextState{}; m_CommandBuffer.Reset(); m_pPipelineState.Release(); } @@ -1116,7 +1116,7 @@ namespace Diligent { VERIFY_EXPR(pBuffer != nullptr); auto pBuffVk = ValidatedCast(pBuffer); - if (pBuffVk->GetAccessFlags() != NewAccessFlags) + if (!pBuffVk->CheckAccessFlags(NewAccessFlags)) { BufferMemoryBarrier(*pBuffVk, NewAccessFlags); } @@ -1124,11 +1124,11 @@ namespace Diligent void DeviceContextVkImpl::BufferMemoryBarrier(BufferVkImpl &BufferVk, VkAccessFlags NewAccessFlags) { - VERIFY(BufferVk.GetAccessFlags() != NewAccessFlags, "The buffer already has requested access flags"); + VERIFY(!BufferVk.CheckAccessFlags(NewAccessFlags), "The buffer already has requested access flags"); EnsureVkCmdBuffer(); auto vkBuff = BufferVk.GetVkBuffer(); - m_CommandBuffer.BufferMemoryBarrier(vkBuff, BufferVk.GetAccessFlags(), NewAccessFlags); + m_CommandBuffer.BufferMemoryBarrier(vkBuff, BufferVk.m_AccessFlags, NewAccessFlags); BufferVk.SetAccessFlags(NewAccessFlags); } @@ -1152,7 +1152,7 @@ namespace Diligent VERIFY(it->second.FrameNum == CurrentFrame, "Dynamic allocation is out-of-date. Dynamic buffer \"", pBuffer->GetDesc().Name, "\" must be unmapped in the same frame it is used."); #endif EnsureVkCmdBuffer(); - if(pBuffer->GetAccessFlags() != VK_ACCESS_TRANSFER_WRITE_BIT) + if(!pBuffer->CheckAccessFlags(VK_ACCESS_TRANSFER_WRITE_BIT)) { BufferMemoryBarrier(*pBuffer, VK_ACCESS_TRANSFER_WRITE_BIT); } diff --git a/Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp b/Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp index 88a9612c..e6297171 100644 --- a/Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp +++ b/Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp @@ -101,7 +101,7 @@ void ShaderResourceCacheVk::TransitionResources(DeviceContextVkImpl *pCtxVkImpl) { auto *pBufferVk = Res.pObject.RawPtr(); VkAccessFlags RequiredAccessFlags = VK_ACCESS_UNIFORM_READ_BIT; - if(pBufferVk->GetAccessFlags() != RequiredAccessFlags) + if(!pBufferVk->CheckAccessFlags(RequiredAccessFlags)) { if(VerifyOnly) LOG_ERROR_MESSAGE("Buffer \"", pBufferVk->GetDesc().Name, "\" is not in correct state. Did you forget to call TransitionShaderResources() or specify COMMIT_SHADER_RESOURCES_FLAG_TRANSITION_RESOURCES flag in a call to CommitShaderResources()?"); @@ -121,7 +121,7 @@ void ShaderResourceCacheVk::TransitionResources(DeviceContextVkImpl *pCtxVkImpl) Res.Type == SPIRVShaderResourceAttribs::ResourceType::UniformTexelBuffer ? VK_ACCESS_SHADER_READ_BIT : (VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT); - if (pBufferVk->GetAccessFlags() != RequiredAccessFlags) + if (!pBufferVk->CheckAccessFlags(RequiredAccessFlags)) { if (VerifyOnly) LOG_ERROR_MESSAGE("Buffer \"", pBufferVk->GetDesc().Name, "\" is not in correct state. Did you forget to call TransitionShaderResources() or specify COMMIT_SHADER_RESOURCES_FLAG_TRANSITION_RESOURCES flag in a call to CommitShaderResources()?"); -- cgit v1.2.3