From 1ca4b70bf924385a71129af8c8ac58251660c65b Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 9 Sep 2024 14:40:16 +0100 Subject: [PATCH] Display quad overdraw as disabled when MSAA is enabled on vulkan * No API supports the quad overdraw with MSAA, but on other APIs it's feasible to downgrade and render the overlay at single sampled. On Vulkan with renderpasses this is not possible. --- qrenderdoc/Windows/TextureViewer.cpp | 18 ++++++++++++++++++ renderdoc/driver/vulkan/vk_overlay.cpp | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/qrenderdoc/Windows/TextureViewer.cpp b/qrenderdoc/Windows/TextureViewer.cpp index 3a0ae3598..1a74c3881 100644 --- a/qrenderdoc/Windows/TextureViewer.cpp +++ b/qrenderdoc/Windows/TextureViewer.cpp @@ -3129,6 +3129,24 @@ void TextureViewer::OnEventChanged(uint32_t eventId) ShaderStage::Pixel, ShaderStage::Task, ShaderStage::Mesh, }; + QFont font = ui->overlay->font(); + if(m_Ctx.APIProps().pipelineType == GraphicsAPI::Vulkan && + m_Ctx.CurVulkanPipelineState()->multisample.rasterSamples > 1) + { + font.setItalic(true); + ui->overlay->setItemText((int)DebugOverlay::QuadOverdrawDraw, tr("Overdraw (N/A on MSAA)")); + ui->overlay->setItemText((int)DebugOverlay::QuadOverdrawPass, tr("Overdraw (N/A on MSAA)")); + ui->overlay->setItemData((int)DebugOverlay::QuadOverdrawDraw, font, Qt::FontRole); + ui->overlay->setItemData((int)DebugOverlay::QuadOverdrawPass, font, Qt::FontRole); + } + else + { + ui->overlay->setItemText((int)DebugOverlay::QuadOverdrawDraw, tr("Quad Overdraw (Draw)")); + ui->overlay->setItemText((int)DebugOverlay::QuadOverdrawPass, tr("Quad Overdraw (Pass)")); + ui->overlay->setItemData((int)DebugOverlay::QuadOverdrawDraw, font, Qt::FontRole); + ui->overlay->setItemData((int)DebugOverlay::QuadOverdrawPass, font, Qt::FontRole); + } + int count = 7; if(compute) diff --git a/renderdoc/driver/vulkan/vk_overlay.cpp b/renderdoc/driver/vulkan/vk_overlay.cpp index c8e8d53d4..2a256c7e1 100644 --- a/renderdoc/driver/vulkan/vk_overlay.cpp +++ b/renderdoc/driver/vulkan/vk_overlay.cpp @@ -2786,7 +2786,8 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D } else if(overlay == DebugOverlay::QuadOverdrawPass || overlay == DebugOverlay::QuadOverdrawDraw) { - if(m_Overlay.m_QuadResolvePipeline[0] != VK_NULL_HANDLE && !state.rastDiscardEnable) + if(m_Overlay.m_QuadResolvePipeline[0] != VK_NULL_HANDLE && !state.rastDiscardEnable && + m_Overlay.Samples == VK_SAMPLE_COUNT_1_BIT) { VulkanRenderState prevstate = state;