1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-01 08:52:11 +01:00

[dxvk] Increment stat counters in command list rather than context

Might change some numbers, but it's closer to reality.
This commit is contained in:
Philip Rebohle 2024-10-28 15:49:07 +01:00 committed by Philip Rebohle
parent 7cd8a14673
commit c2928ab3e2
3 changed files with 18 additions and 27 deletions

View File

@ -474,7 +474,6 @@ namespace dxvk {
return;
list->cmdPipelineBarrier(m_cmdBuffer, &depInfo);
list->addStatCtr(DxvkStatCounter::CmdBarrierCount, 1u);
m_memoryBarrier.srcStageMask = 0u;
m_memoryBarrier.srcAccessMask = 0u;

View File

@ -425,6 +425,7 @@ namespace dxvk {
void cmdBeginRendering(
const VkRenderingInfo* pRenderingInfo) {
m_cmd.execCommands = true;
m_statCounters.addCtr(DxvkStatCounter::CmdRenderPassCount, 1);
m_vkd->vkCmdBeginRendering(getCmdBuffer(), pRenderingInfo);
}
@ -633,6 +634,7 @@ namespace dxvk {
uint32_t y,
uint32_t z) {
m_cmd.execCommands |= cmdBuffer == DxvkCmdBuffer::ExecBuffer;
m_statCounters.addCtr(DxvkStatCounter::CmdDispatchCalls, 1);
m_vkd->vkCmdDispatch(getCmdBuffer(cmdBuffer), x, y, z);
}
@ -643,6 +645,7 @@ namespace dxvk {
VkBuffer buffer,
VkDeviceSize offset) {
m_cmd.execCommands |= cmdBuffer == DxvkCmdBuffer::ExecBuffer;
m_statCounters.addCtr(DxvkStatCounter::CmdDispatchCalls, 1);
m_vkd->vkCmdDispatchIndirect(getCmdBuffer(cmdBuffer), buffer, offset);
}
@ -653,6 +656,8 @@ namespace dxvk {
uint32_t instanceCount,
uint32_t firstVertex,
uint32_t firstInstance) {
m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1);
m_vkd->vkCmdDraw(getCmdBuffer(),
vertexCount, instanceCount,
firstVertex, firstInstance);
@ -664,6 +669,8 @@ namespace dxvk {
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride) {
m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1);
m_vkd->vkCmdDrawIndirect(getCmdBuffer(),
buffer, offset, drawCount, stride);
}
@ -676,6 +683,8 @@ namespace dxvk {
VkDeviceSize countOffset,
uint32_t maxDrawCount,
uint32_t stride) {
m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1);
m_vkd->vkCmdDrawIndirectCount(getCmdBuffer(),
buffer, offset, countBuffer, countOffset, maxDrawCount, stride);
}
@ -687,6 +696,8 @@ namespace dxvk {
uint32_t firstIndex,
int32_t vertexOffset,
uint32_t firstInstance) {
m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1);
m_vkd->vkCmdDrawIndexed(getCmdBuffer(),
indexCount, instanceCount,
firstIndex, vertexOffset,
@ -699,6 +710,8 @@ namespace dxvk {
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride) {
m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1);
m_vkd->vkCmdDrawIndexedIndirect(getCmdBuffer(),
buffer, offset, drawCount, stride);
}
@ -711,6 +724,8 @@ namespace dxvk {
VkDeviceSize countOffset,
uint32_t maxDrawCount,
uint32_t stride) {
m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1);
m_vkd->vkCmdDrawIndexedIndirectCount(getCmdBuffer(),
buffer, offset, countBuffer, countOffset, maxDrawCount, stride);
}
@ -723,6 +738,8 @@ namespace dxvk {
VkDeviceSize counterBufferOffset,
uint32_t counterOffset,
uint32_t vertexStride) {
m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1);
m_vkd->vkCmdDrawIndirectByteCountEXT(getCmdBuffer(),
instanceCount, firstInstance, counterBuffer,
counterBufferOffset, counterOffset, vertexStride);
@ -777,6 +794,7 @@ namespace dxvk {
DxvkCmdBuffer cmdBuffer,
const VkDependencyInfo* dependencyInfo) {
m_cmd.execCommands |= cmdBuffer == DxvkCmdBuffer::ExecBuffer;
m_statCounters.addCtr(DxvkStatCounter::CmdBarrierCount, 1);
m_vkd->vkCmdPipelineBarrier2(getCmdBuffer(cmdBuffer), dependencyInfo);
}

View File

@ -827,8 +827,6 @@ namespace dxvk {
m_queryManager.endQueries(m_cmd,
VK_QUERY_TYPE_PIPELINE_STATISTICS);
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDispatchCalls, 1);
}
@ -864,8 +862,6 @@ namespace dxvk {
this->trackDrawBuffer();
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDispatchCalls, 1);
}
@ -879,8 +875,6 @@ namespace dxvk {
vertexCount, instanceCount,
firstVertex, firstInstance);
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
}
@ -896,8 +890,6 @@ namespace dxvk {
descriptor.buffer.offset + offset,
count, stride);
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
}
@ -917,8 +909,6 @@ namespace dxvk {
cntDescriptor.buffer.offset + countOffset,
maxCount, stride);
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
}
@ -934,8 +924,6 @@ namespace dxvk {
firstIndex, vertexOffset,
firstInstance);
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
}
@ -951,8 +939,6 @@ namespace dxvk {
descriptor.buffer.offset + offset,
count, stride);
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
}
@ -972,8 +958,6 @@ namespace dxvk {
cntDescriptor.buffer.offset + countOffset,
maxCount, stride);
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
}
@ -990,8 +974,6 @@ namespace dxvk {
counterBias,
counterDivisor);
}
m_cmd->addStatCtr(DxvkStatCounter::CmdDrawCalls, 1);
}
@ -4749,8 +4731,6 @@ namespace dxvk {
for (uint32_t i = 0; i < framebufferInfo.numAttachments(); i++)
m_cmd->track(framebufferInfo.getAttachment(i).view->image(), DxvkAccess::Write);
m_cmd->addStatCtr(DxvkStatCounter::CmdRenderPassCount, 1);
}
@ -6224,7 +6204,6 @@ namespace dxvk {
depInfo.pMemoryBarriers = &barrier;
m_cmd->cmdPipelineBarrier(DxvkCmdBuffer::ExecBuffer, &depInfo);
m_cmd->addStatCtr(DxvkStatCounter::CmdBarrierCount, 1);
}
@ -6404,7 +6383,6 @@ namespace dxvk {
}
m_cmd->cmdPipelineBarrier(DxvkCmdBuffer::ExecBuffer, &depInfo);
m_cmd->addStatCtr(DxvkStatCounter::CmdBarrierCount, 1);
// Set up post-copy barriers
depInfo = { VK_STRUCTURE_TYPE_DEPENDENCY_INFO };
@ -6547,7 +6525,6 @@ namespace dxvk {
}
m_cmd->cmdPipelineBarrier(DxvkCmdBuffer::ExecBuffer, &depInfo);
m_cmd->addStatCtr(DxvkStatCounter::CmdBarrierCount, 1);
}
@ -6671,8 +6648,6 @@ namespace dxvk {
depInfo.pMemoryBarriers = &barrier;
m_cmd->cmdPipelineBarrier(DxvkCmdBuffer::InitBuffer, &depInfo);
m_cmd->addStatCtr(DxvkStatCounter::CmdBarrierCount, 1);
return m_zeroBuffer;
}
@ -6772,7 +6747,6 @@ namespace dxvk {
depInfo.pImageMemoryBarriers = m_imageLayoutTransitions.data();
m_cmd->cmdPipelineBarrier(cmdBuffer, &depInfo);
m_cmd->addStatCtr(DxvkStatCounter::CmdBarrierCount, 1u);
} else {
// If we're recording into an out-of-order command buffer, batch
// layout transitions into a dedicated command buffer in order to