From 9b37ba679af833fe1912deaf90f151cd452a0b97 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 21 Feb 2025 18:18:27 +0100 Subject: [PATCH] [dxvk] Add stat counter for merged draws --- src/dxvk/dxvk_cmdlist.h | 6 +++++- src/dxvk/dxvk_stats.h | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/dxvk/dxvk_cmdlist.h b/src/dxvk/dxvk_cmdlist.h index ac1a9cd93..cdf7fe9a8 100644 --- a/src/dxvk/dxvk_cmdlist.h +++ b/src/dxvk/dxvk_cmdlist.h @@ -729,7 +729,8 @@ namespace dxvk { const VkMultiDrawInfoEXT* drawInfos, uint32_t instanceCount, uint32_t firstInstance) { - m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1); + m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1u); + m_statCounters.addCtr(DxvkStatCounter::CmdDrawsMerged, drawCount - 1u); m_vkd->vkCmdDrawMultiEXT(getCmdBuffer(), drawCount, drawInfos, instanceCount, firstInstance, sizeof(*drawInfos)); @@ -742,6 +743,7 @@ namespace dxvk { uint32_t drawCount, uint32_t stride) { m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1); + m_statCounters.addCtr(DxvkStatCounter::CmdDrawsMerged, drawCount - 1u); m_vkd->vkCmdDrawIndirect(getCmdBuffer(), buffer, offset, drawCount, stride); @@ -783,6 +785,7 @@ namespace dxvk { uint32_t instanceCount, uint32_t firstInstance) { m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1); + m_statCounters.addCtr(DxvkStatCounter::CmdDrawsMerged, drawCount - 1u); m_vkd->vkCmdDrawMultiIndexedEXT(getCmdBuffer(), drawCount, drawInfos, instanceCount, firstInstance, sizeof(*drawInfos), nullptr); @@ -795,6 +798,7 @@ namespace dxvk { uint32_t drawCount, uint32_t stride) { m_statCounters.addCtr(DxvkStatCounter::CmdDrawCalls, 1); + m_statCounters.addCtr(DxvkStatCounter::CmdDrawsMerged, drawCount - 1u); m_vkd->vkCmdDrawIndexedIndirect(getCmdBuffer(), buffer, offset, drawCount, stride); diff --git a/src/dxvk/dxvk_stats.h b/src/dxvk/dxvk_stats.h index 91c83701d..606e09f8f 100644 --- a/src/dxvk/dxvk_stats.h +++ b/src/dxvk/dxvk_stats.h @@ -12,6 +12,7 @@ namespace dxvk { */ enum class DxvkStatCounter : uint32_t { CmdDrawCalls, ///< Number of draw calls + CmdDrawsMerged, ///< Number of unique draws, minus draw calls CmdDispatchCalls, ///< Number of compute calls CmdRenderPassCount, ///< Number of render passes CmdBarrierCount, ///< Number of pipeline barriers @@ -30,7 +31,8 @@ namespace dxvk { CsChunkCount, ///< Submitted CS chunks DescriptorPoolCount, ///< Descriptor pool count DescriptorSetCount, ///< Descriptor sets allocated - NumCounters, ///< Number of counters available + + NumCounters ///< Number of counters available };