global update
This commit is contained in:
@@ -116,13 +116,8 @@ void CVkRenderCommandList::SetMaterial( IMaterial *pMaterial )
|
||||
pBeginCommand->images = m_pOutput;
|
||||
pBeginCommand->nResolutionX = m_uWidth;
|
||||
pBeginCommand->nResolutionY = m_uHeight;
|
||||
for ( auto &i: pBeginCommand->images)
|
||||
{
|
||||
pBeginCommand->AddDependency(i.m_stImage.m_pSingle, DEPENDENCY_MODE_DRAWCALL_MIXED_IMAGE);
|
||||
}
|
||||
if ( m_bDepthEnabled )
|
||||
{
|
||||
pBeginCommand->AddDependency(m_depth.m_stImage.m_pSingle, DEPENDENCY_MODE_DRAWCALL_OUTPUT_DEPTH_IMAGE);
|
||||
pBeginCommand->bDepthEnabled = m_bDepthEnabled;
|
||||
pBeginCommand->stDepthImage = m_depth;
|
||||
|
||||
@@ -161,7 +156,6 @@ void CVkRenderCommandList::SetVertexBuffer( uint32_t uBinding, IVertexBuffer *pB
|
||||
CVkSetVertexBufferCommand *pCmd = CREATE_COMMAND(m_pCommandBufferManager, SetVertexBuffer);
|
||||
pCmd->uBinding = uBinding;
|
||||
pCmd->pBuffer = pBuffer;
|
||||
pCmd->AddDependency(pBuffer, DEPENDENCY_MODE_BUFFER_SOURCE);
|
||||
m_pCurrentMaterialBuffer->AddCommand(pCmd);
|
||||
}
|
||||
|
||||
@@ -179,7 +173,6 @@ void CVkRenderCommandList::DrawPrimitives( uint32_t nVertexCount, uint32_t nFirs
|
||||
pCmd->nFirstVertex = nFirstVertex;
|
||||
pCmd->nInstanceCount = nInstanceCount;
|
||||
pCmd->nFirstInstance = nFirstInstance;
|
||||
FlushBarriers(pCmd);
|
||||
|
||||
m_pCurrentMaterialBuffer->AddCommand(pCmd);
|
||||
}
|
||||
@@ -204,8 +197,6 @@ void CVkRenderCommandList::BlitImageToImage( IImage *pSrc, ImageSector_t src, II
|
||||
pCmd->stInputImage.m_pSingle = pSrc;
|
||||
pCmd->stOutputImage.m_eObjectType = FRAME_OBJECT_TYPE_SINGLE;
|
||||
pCmd->stOutputImage.m_pSingle = pDst;
|
||||
pCmd->AddDependency(pSrc, DEPENDENCY_MODE_BLIT_IMAGE_SOURCE);
|
||||
pCmd->AddDependency(pDst, DEPENDENCY_MODE_BLIT_IMAGE_DESTINATION);
|
||||
pCmd->iSrcMin[0] = src.m_iX;
|
||||
pCmd->iSrcMin[1] = src.m_iY;
|
||||
pCmd->iSrcMin[2] = 0;
|
||||
@@ -226,7 +217,6 @@ void CVkRenderCommandList::ClearImage( IImage *pImage, float fR, float fG, float
|
||||
{
|
||||
SwitchRenderingStage(RENDERING_STAGE_POST_RASTER);
|
||||
CVkClearColorCommand *pCmd = CREATE_COMMAND(m_pCommandBufferManager, ClearColor);
|
||||
pCmd->AddDependency(pImage, DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION);
|
||||
pCmd->r = fR;
|
||||
pCmd->g = fG;
|
||||
pCmd->b = fB;
|
||||
@@ -251,8 +241,6 @@ void CVkRenderCommandList::ResolveImage( IImage *pOriginal, IImage *pResolved )
|
||||
pCmd->stInputImage.m_pSingle = pOriginal;
|
||||
pCmd->stOutputImage.m_eObjectType = FRAME_OBJECT_TYPE_SINGLE;
|
||||
pCmd->stOutputImage.m_pSingle = pResolved;
|
||||
pCmd->AddDependency(pOriginal, DEPENDENCY_MODE_IMAGE_RESOLVE_SOURCE);
|
||||
pCmd->AddDependency(pResolved, DEPENDENCY_MODE_IMAGE_RESOLVE_DESTINATION);
|
||||
m_pPostRaster->AddCommand(pCmd);
|
||||
}
|
||||
|
||||
@@ -266,18 +254,37 @@ void CVkRenderCommandList::EndRecording()
|
||||
{
|
||||
SwitchRenderingStage(RENDERING_STAGE_FINISHED);
|
||||
}
|
||||
|
||||
void CVkRenderCommandList::Barrier( IRenderingObject *pObject, bool bIsRead, bool bIsWrite )
|
||||
void CVkRenderCommandList::Barrier( EStageHazard eBefore, EStageHazard eAfter, uint32_t hazard )
|
||||
{
|
||||
m_barriers.AppendTail({pObject, bIsRead, bIsWrite});
|
||||
SwitchRenderingStage(RENDERING_STAGE_POST_RASTER);
|
||||
CVkBarrierCommand *pCmd = CREATE_COMMAND(m_pCommandBufferManager, Barrier);
|
||||
pCmd->eStageIn = eBefore;
|
||||
pCmd->eStageOut = eAfter;
|
||||
pCmd->eHazard = hazard;
|
||||
m_pPostRaster->AddCommand(pCmd);
|
||||
|
||||
}
|
||||
|
||||
void CVkRenderCommandList::BarrierTransition( IImage *pObject, EImageLayoutHazard old_layout, EImageLayoutHazard layout, EStageHazard eBefore, EStageHazard eAfter, uint32_t hazard )
|
||||
{
|
||||
SwitchRenderingStage(RENDERING_STAGE_POST_RASTER);
|
||||
CVkLayoutBarrierCommand *pCmd = CREATE_COMMAND(m_pCommandBufferManager, LayoutBarrier);
|
||||
pCmd->eStageIn = eBefore;
|
||||
pCmd->eStageOut = eAfter;
|
||||
pCmd->eHazard = hazard;
|
||||
pCmd->pImage = pObject;
|
||||
pCmd->eLayoutIn = old_layout;
|
||||
pCmd->eLayoutOut = layout;
|
||||
m_pPostRaster->AddCommand(pCmd);
|
||||
|
||||
}
|
||||
|
||||
void CVkRenderCommandList::DispatchCompute( uint32_t uX, uint32_t uY, uint32_t uZ )
|
||||
{
|
||||
SwitchRenderingStage(RENDERING_STAGE_POST_RASTER);
|
||||
|
||||
CVkDispatchCommand *pCmd = CREATE_COMMAND(m_pCommandBufferManager, Dispatch);
|
||||
|
||||
FlushBarriers(pCmd);
|
||||
pCmd->uX = uX;
|
||||
pCmd->uY = uY;
|
||||
pCmd->uZ = uZ;
|
||||
@@ -293,38 +300,6 @@ void CVkRenderCommandList::Submit()
|
||||
}
|
||||
}
|
||||
|
||||
void CVkRenderCommandList::FlushBarriers( CVkCommand *pCmd )
|
||||
{
|
||||
for ( auto &b: m_barriers )
|
||||
{
|
||||
if (dynamic_cast<CVkBuffer*>(b.pObject))
|
||||
{
|
||||
if (b.m_bIsRead)
|
||||
if (b.m_bIsWrite)
|
||||
pCmd->AddDependency(b.pObject, DEPENDENCY_MODE_SHADER_BUFFER_READ_WRITE);
|
||||
else
|
||||
pCmd->AddDependency(b.pObject, DEPENDENCY_MODE_SHADER_BUFFER_READ);
|
||||
else
|
||||
if (b.m_bIsWrite)
|
||||
pCmd->AddDependency(b.pObject, DEPENDENCY_MODE_SHADER_BUFFER_WRITE);
|
||||
|
||||
}
|
||||
if (dynamic_cast<CVkImage*>(b.pObject))
|
||||
{
|
||||
if (b.m_bIsRead)
|
||||
if (b.m_bIsWrite)
|
||||
pCmd->AddDependency(b.pObject, DEPENDENCY_MODE_SHADER_IMAGE_READ_WRITE);
|
||||
else
|
||||
pCmd->AddDependency(b.pObject, DEPENDENCY_MODE_SHADER_IMAGE_READ);
|
||||
else
|
||||
if (b.m_bIsWrite)
|
||||
pCmd->AddDependency(b.pObject, DEPENDENCY_MODE_SHADER_IMAGE_WRITE);
|
||||
|
||||
}
|
||||
}
|
||||
m_barriers = {};
|
||||
}
|
||||
|
||||
void CVkRenderCommandList::SwitchRenderingStage( EVulkanRenderingStage eStage )
|
||||
{
|
||||
if (eStage != RENDERING_STAGE_RASTER)
|
||||
|
||||
Reference in New Issue
Block a user