diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-05-30 15:40:12 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-05-30 15:40:12 +0000 |
| commit | c2732b9f39762c622247f88323539f3ffdf434df (patch) | |
| tree | 35b8660e9118ff4d191496aa6a3d711ee02b0884 /Graphics/GraphicsEngineVulkan | |
| parent | Implemented dynamic resource write-discard mapping (diff) | |
| download | DiligentCore-c2732b9f39762c622247f88323539f3ffdf434df.tar.gz DiligentCore-c2732b9f39762c622247f88323539f3ffdf434df.zip | |
Replaced BufferVkImpl::GetAccessFlags with CheckAccessFlags
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
3 files changed, 14 insertions, 12 deletions
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<BufferVkImpl>(); - 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<BufferVkImpl>(); - 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<BufferVkImpl>(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<BufferVkImpl>(); 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()?"); |
