@@ -1057,8 +1057,7 @@ void DeviceContextVkImpl::PrepareForDispatchCompute()
10571057 EnsureVkCmdBuffer ();
10581058
10591059 // Dispatch commands must be executed outside of render pass
1060- if (m_CommandBuffer.GetState ().RenderPass != VK_NULL_HANDLE)
1061- m_CommandBuffer.EndRenderPass ();
1060+ m_CommandBuffer.EndRenderScope ();
10621061
10631062 auto & BindInfo = GetBindInfo (PIPELINE_TYPE_COMPUTE);
10641063 if (Uint32 CommitMask = BindInfo.GetCommitMask ())
@@ -1192,8 +1191,7 @@ void DeviceContextVkImpl::ClearDepthStencil(ITextureView* pView
11921191 else
11931192 {
11941193 // End render pass to clear the buffer with vkCmdClearDepthStencilImage
1195- if (m_CommandBuffer.GetState ().RenderPass != VK_NULL_HANDLE)
1196- m_CommandBuffer.EndRenderPass ();
1194+ m_CommandBuffer.EndRenderScope ();
11971195
11981196 auto * pTexture = pVkDSV->GetTexture ();
11991197 auto * pTextureVk = ClassPtrCast<TextureVkImpl>(pTexture);
@@ -1312,8 +1310,7 @@ void DeviceContextVkImpl::ClearRenderTarget(ITextureView* pView, const void* RGB
13121310 VERIFY (m_pActiveRenderPass == nullptr , " This branch should never execute inside a render pass." );
13131311
13141312 // End current render pass and clear the image with vkCmdClearColorImage
1315- if (m_CommandBuffer.GetState ().RenderPass != VK_NULL_HANDLE)
1316- m_CommandBuffer.EndRenderPass ();
1313+ m_CommandBuffer.EndRenderScope ();
13171314
13181315 auto * pTexture = pVkRTV->GetTexture ();
13191316 auto * pTextureVk = ClassPtrCast<TextureVkImpl>(pTexture);
@@ -1442,10 +1439,7 @@ void DeviceContextVkImpl::Flush(Uint32 NumCommandLists,
14421439
14431440 if (m_State.NumCommands != 0 )
14441441 {
1445- if (m_CommandBuffer.GetState ().RenderPass != VK_NULL_HANDLE)
1446- {
1447- m_CommandBuffer.EndRenderPass ();
1448- }
1442+ m_CommandBuffer.EndRenderScope ();
14491443
14501444#ifdef DILIGENT_DEVELOPMENT
14511445 DEV_CHECK_ERR (m_DvpDebugGroupCount == 0 , " Not all debug groups have been ended" );
@@ -1816,8 +1810,7 @@ void DeviceContextVkImpl::CommitRenderPassAndFramebuffer(bool VerifyStates)
18161810 const auto & CmdBufferState = m_CommandBuffer.GetState ();
18171811 if (CmdBufferState.Framebuffer != m_vkFramebuffer)
18181812 {
1819- if (CmdBufferState.RenderPass != VK_NULL_HANDLE)
1820- m_CommandBuffer.EndRenderPass ();
1813+ m_CommandBuffer.EndRenderScope ();
18211814
18221815 if (m_vkFramebuffer != VK_NULL_HANDLE)
18231816 {
@@ -1936,8 +1929,8 @@ void DeviceContextVkImpl::ResetRenderTargets()
19361929 TDeviceContextBase::ResetRenderTargets ();
19371930 m_vkRenderPass = VK_NULL_HANDLE;
19381931 m_vkFramebuffer = VK_NULL_HANDLE;
1939- if (m_CommandBuffer.GetVkCmdBuffer () != VK_NULL_HANDLE && m_CommandBuffer. GetState (). RenderPass != VK_NULL_HANDLE )
1940- m_CommandBuffer.EndRenderPass ();
1932+ if (m_CommandBuffer.GetVkCmdBuffer () != VK_NULL_HANDLE)
1933+ m_CommandBuffer.EndRenderScope ();
19411934 m_State.ShadingRateIsSet = false ;
19421935}
19431936
@@ -2709,10 +2702,7 @@ void DeviceContextVkImpl::FinishCommandList(ICommandList** ppCommandList)
27092702 DEV_CHECK_ERR (IsDeferred (), " Only deferred context can record command list" );
27102703 DEV_CHECK_ERR (m_pActiveRenderPass == nullptr , " Finishing command list inside an active render pass." );
27112704
2712- if (m_CommandBuffer.GetState ().RenderPass != VK_NULL_HANDLE)
2713- {
2714- m_CommandBuffer.EndRenderPass ();
2715- }
2705+ m_CommandBuffer.EndRenderScope ();
27162706
27172707 auto vkCmdBuff = m_CommandBuffer.GetVkCmdBuffer ();
27182708 auto err = vkEndCommandBuffer (vkCmdBuff);
@@ -2843,8 +2833,7 @@ void DeviceContextVkImpl::EndQuery(IQuery* pQuery)
28432833 " No query flag is set which indicates there was no matching BeginQuery call or there was an error while beginning the query." );
28442834 if (CmdBuffState.OutsidePassQueries & (1 << QueryType))
28452835 {
2846- if (m_CommandBuffer.GetState ().RenderPass )
2847- m_CommandBuffer.EndRenderPass ();
2836+ m_CommandBuffer.EndRenderScope ();
28482837 }
28492838 else
28502839 {
0 commit comments