summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-01-28 04:52:02 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-01-28 04:52:02 +0000
commit026bc2855da39ba132dbb6dc1ab35000d2c27a30 (patch)
tree48a0272631df952cf65b2302cc56fb8d08501eb0 /Graphics/GraphicsEngineVulkan
parentMore refactorin of PipelineResourceSignatureVkImpl (diff)
downloadDiligentCore-026bc2855da39ba132dbb6dc1ab35000d2c27a30.tar.gz
DiligentCore-026bc2855da39ba132dbb6dc1ab35000d2c27a30.zip
Device context Vk: added CommittedResourcesValidated to avoid calling DvpValidateCommittedShaderResources when resources have not changed
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp15
2 files changed, 14 insertions, 5 deletions
diff --git a/Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp
index 05076e10..e105a454 100644
--- a/Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp
@@ -478,6 +478,8 @@ private:
Uint32 NumCommands = 0;
VkPipelineBindPoint vkPipelineBindPoint = VK_PIPELINE_BIND_POINT_MAX_ENUM;
+
+ bool CommittedResourcesValidated = false;
} m_State;
// Graphics/mesh, compute, ray tracing
@@ -530,7 +532,7 @@ private:
void CommitDescriptorSets(DescriptorSetBindInfo& DescrSetBindInfo);
#ifdef DILIGENT_DEVELOPMENT
- void DvpValidateShaderResources();
+ void DvpValidateCommittedShaderResources();
#endif
/// Descriptor set binding information for each pipeline type (graphics/mesh, compute, ray tracing)
diff --git a/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp
index cb40cdb8..4aba7d94 100644
--- a/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp
@@ -429,8 +429,11 @@ void DeviceContextVkImpl::CommitDescriptorSets(DescriptorSetBindInfo& BindInfo)
}
#ifdef DILIGENT_DEVELOPMENT
-void DeviceContextVkImpl::DvpValidateShaderResources()
+void DeviceContextVkImpl::DvpValidateCommittedShaderResources()
{
+ if (m_State.CommittedResourcesValidated)
+ return;
+
const auto& Layout = m_pPipelineState->GetPipelineLayout();
auto& BindInfo = GetDescriptorSetBindInfo(m_pPipelineState->GetDesc().PipelineType);
const auto SignCount = Layout.GetSignatureCount();
@@ -469,6 +472,8 @@ void DeviceContextVkImpl::DvpValidateShaderResources()
LayoutSign->GetDesc().Name, "' binding index (", i, ").");
}
}
+
+ m_State.CommittedResourcesValidated = true;
}
#endif
@@ -567,6 +572,8 @@ void DeviceContextVkImpl::CommitShaderResources(IShaderResourceBinding* pShaderR
BindInfo.Resources[SRBIndex] = pResBindingVkImpl;
m_DynamicBufferOffsets.resize(std::max<size_t>(m_DynamicBufferOffsets.size(), pSignature->GetDynamicOffsetCount()));
+
+ m_State.CommittedResourcesValidated = false;
}
void DeviceContextVkImpl::SetStencilRef(Uint32 StencilRef)
@@ -740,7 +747,7 @@ void DeviceContextVkImpl::PrepareForDraw(DRAW_FLAGS Flags)
}
#ifdef DILIGENT_DEVELOPMENT
- DvpValidateShaderResources();
+ DvpValidateCommittedShaderResources();
#endif
}
@@ -878,7 +885,7 @@ void DeviceContextVkImpl::PrepareForDispatchCompute()
#endif
#ifdef DILIGENT_DEVELOPMENT
- DvpValidateShaderResources();
+ DvpValidateCommittedShaderResources();
#endif
}
@@ -893,7 +900,7 @@ void DeviceContextVkImpl::PrepareForRayTracing()
}
#ifdef DILIGENT_DEVELOPMENT
- DvpValidateShaderResources();
+ DvpValidateCommittedShaderResources();
#endif
}