mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-11-29 19:24:10 +01:00
[dxvk] Introduce finalizeDraw
May improve code gen by reducing function call overhead, in a similar way as the duplicated checks in commitGraphicsState do.
This commit is contained in:
parent
187748e4d3
commit
7cdc402a58
@ -1465,7 +1465,7 @@ namespace dxvk {
|
||||
vertexCount, instanceCount,
|
||||
firstVertex, firstInstance);
|
||||
|
||||
this->commitGraphicsPostBarriers();
|
||||
this->finalizeDraw<false>();
|
||||
}
|
||||
|
||||
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
|
||||
@ -1486,8 +1486,7 @@ namespace dxvk {
|
||||
descriptor.buffer.offset + offset,
|
||||
count, stride);
|
||||
|
||||
this->commitGraphicsPostBarriers();
|
||||
this->trackDrawBuffer();
|
||||
this->finalizeDraw<true>();
|
||||
}
|
||||
|
||||
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
|
||||
@ -1512,8 +1511,7 @@ namespace dxvk {
|
||||
cntDescriptor.buffer.offset + countOffset,
|
||||
maxCount, stride);
|
||||
|
||||
this->commitGraphicsPostBarriers();
|
||||
this->trackDrawBuffer();
|
||||
this->finalizeDraw<true>();
|
||||
}
|
||||
|
||||
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
|
||||
@ -1534,7 +1532,7 @@ namespace dxvk {
|
||||
firstIndex, vertexOffset,
|
||||
firstInstance);
|
||||
|
||||
this->commitGraphicsPostBarriers();
|
||||
this->finalizeDraw<false>();
|
||||
}
|
||||
|
||||
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
|
||||
@ -1555,8 +1553,7 @@ namespace dxvk {
|
||||
descriptor.buffer.offset + offset,
|
||||
count, stride);
|
||||
|
||||
this->commitGraphicsPostBarriers();
|
||||
this->trackDrawBuffer();
|
||||
this->finalizeDraw<true>();
|
||||
}
|
||||
|
||||
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
|
||||
@ -1581,8 +1578,7 @@ namespace dxvk {
|
||||
cntDescriptor.buffer.offset + countOffset,
|
||||
maxCount, stride);
|
||||
|
||||
this->commitGraphicsPostBarriers();
|
||||
this->trackDrawBuffer();
|
||||
this->finalizeDraw<true>();
|
||||
}
|
||||
|
||||
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
|
||||
@ -1604,7 +1600,7 @@ namespace dxvk {
|
||||
counterBias,
|
||||
counterDivisor);
|
||||
|
||||
this->commitGraphicsPostBarriers();
|
||||
this->finalizeDraw<false>();
|
||||
}
|
||||
|
||||
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
|
||||
@ -4429,6 +4425,18 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
template<bool Indirect>
|
||||
void DxvkContext::finalizeDraw() {
|
||||
if (m_flags.test(DxvkContextFlag::DirtyDrawBuffer) && Indirect)
|
||||
this->trackDrawBuffer();
|
||||
|
||||
if (m_state.gp.flags.any(
|
||||
DxvkGraphicsPipelineFlag::HasFsStorageDescriptors,
|
||||
DxvkGraphicsPipelineFlag::HasVsStorageDescriptors))
|
||||
this->commitGraphicsPostBarriers();
|
||||
}
|
||||
|
||||
|
||||
void DxvkContext::emitMemoryBarrier(
|
||||
VkPipelineStageFlags srcStages,
|
||||
VkAccessFlags srcAccess,
|
||||
|
@ -1166,6 +1166,9 @@ namespace dxvk {
|
||||
|
||||
void commitGraphicsPostBarriers();
|
||||
|
||||
template<bool Indirect>
|
||||
void finalizeDraw();
|
||||
|
||||
void emitMemoryBarrier(
|
||||
VkPipelineStageFlags srcStages,
|
||||
VkAccessFlags srcAccess,
|
||||
@ -1176,7 +1179,7 @@ namespace dxvk {
|
||||
VkDescriptorSetLayout layout);
|
||||
|
||||
void trackDrawBuffer();
|
||||
|
||||
|
||||
};
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user