summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-05-30 15:40:12 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-05-30 15:40:12 +0000
commitc2732b9f39762c622247f88323539f3ffdf434df (patch)
tree35b8660e9118ff4d191496aa6a3d711ee02b0884 /Graphics/GraphicsEngineVulkan
parentImplemented dynamic resource write-discard mapping (diff)
downloadDiligentCore-c2732b9f39762c622247f88323539f3ffdf434df.tar.gz
DiligentCore-c2732b9f39762c622247f88323539f3ffdf434df.zip
Replaced BufferVkImpl::GetAccessFlags with CheckAccessFlags
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/include/BufferVkImpl.h6
-rw-r--r--Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp16
-rw-r--r--Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp4
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()?");