a bit of stuff, time to add spirv-link into this project
This commit is contained in:
@@ -9,11 +9,13 @@ CVkRenderCommandList::~CVkRenderCommandList()
|
||||
|
||||
void CVkRenderCommandList::ResetRendering()
|
||||
{
|
||||
for ( auto m: m_materials )
|
||||
for ( auto m: m_pCommandBuffers )
|
||||
{
|
||||
m_pCommandBufferManager->FreeCommandBufferWithCommands(m.m_pCommandBuffer);
|
||||
m_pCommandBufferManager->FreeCommandBufferWithCommands(m);
|
||||
}
|
||||
m_pPostRaster = NULL;
|
||||
m_materials = {};
|
||||
m_pCommandBuffers = {};
|
||||
}
|
||||
|
||||
void CVkRenderCommandList::SetRenderTarget( uint32_t uIndex, IImage *pImage )
|
||||
@@ -162,6 +164,14 @@ void CVkRenderCommandList::ResolveImage( IImage *pOriginal, IImage *pResolved )
|
||||
{
|
||||
SwitchRenderingStage(RENDERING_STAGE_POST_RASTER);
|
||||
|
||||
CVkResolveImageCommand *pCmd = CREATE_COMMAND(m_pCommandBufferManager, ResolveImage);
|
||||
pCmd->stInputImage.m_eObjectType = FRAME_OBJECT_TYPE_SINGLE;
|
||||
pCmd->stInputImage.m_pSingle = pOriginal;
|
||||
pCmd->stOutputImage.m_eObjectType = FRAME_OBJECT_TYPE_SINGLE;
|
||||
pCmd->stOutputImage.m_pSingle = pResolved;
|
||||
pCmd->AddDependency(pOriginal, DEPENDENCY_MODE_IMAGE_SOURCE);
|
||||
pCmd->AddDependency(pResolved, DEPENDENCY_MODE_IMAGE_DESTINATION);
|
||||
m_pPostRaster->AddCommand(pCmd);
|
||||
}
|
||||
|
||||
|
||||
@@ -172,25 +182,43 @@ void CVkRenderCommandList::StartRecording()
|
||||
|
||||
void CVkRenderCommandList::EndRecording()
|
||||
{
|
||||
for ( auto m: m_materials)
|
||||
{
|
||||
CVkEndCommand *pEndCommand = CREATE_COMMAND(m_pCommandBufferManager, End);
|
||||
m.m_pCommandBuffer->AddCommand(pEndCommand);
|
||||
m.m_pCommandBuffer->Render();
|
||||
}
|
||||
SwitchRenderingStage(RENDERING_STAGE_FINISHED);
|
||||
}
|
||||
|
||||
void CVkRenderCommandList::Submit()
|
||||
{
|
||||
for ( auto m: m_materials)
|
||||
for ( auto m: m_pCommandBuffers)
|
||||
{
|
||||
m.m_pCommandBuffer->Submit();
|
||||
m->Submit();
|
||||
}
|
||||
}
|
||||
|
||||
void CVkRenderCommandList::SwitchRenderingStage( EVulkanRenderingStage eStage )
|
||||
{
|
||||
|
||||
if (eStage != RENDERING_STAGE_RASTER)
|
||||
{
|
||||
for ( auto m: m_materials)
|
||||
{
|
||||
CVkEndCommand *pEndCommand = CREATE_COMMAND(m_pCommandBufferManager, End);
|
||||
m.m_pCommandBuffer->AddCommand(pEndCommand);
|
||||
m.m_pCommandBuffer->Render();
|
||||
m_pCommandBuffers.AppendTail(m.m_pCommandBuffer);
|
||||
}
|
||||
m_materials = {};
|
||||
};
|
||||
if (eStage == RENDERING_STAGE_POST_RASTER)
|
||||
{
|
||||
m_pPostRaster = m_pCommandBufferManager->CreateCommandBuffer();
|
||||
m_pPostRaster->Reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_pPostRaster)
|
||||
{
|
||||
m_pPostRaster->Render();
|
||||
m_pCommandBuffers.AppendTail(m_pPostRaster);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
VulkanRenderOutput_t *CVkRenderCommandList::FindOrCreateRenderOutput( uint32_t uIndex )
|
||||
|
||||
Reference in New Issue
Block a user