From 8047e2ea1f2075465c9f2e86aa1aa13e3399437e Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 26 Feb 2018 12:08:43 +0000 Subject: [PATCH] Skip post-vs fetch for instanced drawcalls with no instances --- renderdoc/driver/d3d11/d3d11_postvs.cpp | 3 ++- renderdoc/driver/d3d12/d3d12_postvs.cpp | 2 +- renderdoc/driver/gl/gl_postvs.cpp | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/d3d11/d3d11_postvs.cpp b/renderdoc/driver/d3d11/d3d11_postvs.cpp index c139d1a40..478052240 100644 --- a/renderdoc/driver/d3d11/d3d11_postvs.cpp +++ b/renderdoc/driver/d3d11/d3d11_postvs.cpp @@ -189,7 +189,8 @@ void D3D11Replay::InitPostVSBuffers(uint32_t eventId) const DrawcallDescription *drawcall = m_pDevice->GetDrawcall(eventId); - if(drawcall->numIndices == 0) + if(drawcall->numIndices == 0 || + ((drawcall->flags & DrawFlags::Instanced) && drawcall->numInstances == 0)) return; DXBC::DXBCFile *dxbcVS = wrappedVS->GetDXBC(); diff --git a/renderdoc/driver/d3d12/d3d12_postvs.cpp b/renderdoc/driver/d3d12/d3d12_postvs.cpp index f380d57ef..eacb34b3a 100644 --- a/renderdoc/driver/d3d12/d3d12_postvs.cpp +++ b/renderdoc/driver/d3d12/d3d12_postvs.cpp @@ -175,7 +175,7 @@ void D3D12Replay::InitPostVSBuffers(uint32_t eventId) const DrawcallDescription *drawcall = m_pDevice->GetDrawcall(eventId); - if(drawcall->numIndices == 0) + if(drawcall->numIndices == 0 || drawcall->numInstances == 0) return; DXBC::DXBCFile *dxbcVS = vs->GetDXBC(); diff --git a/renderdoc/driver/gl/gl_postvs.cpp b/renderdoc/driver/gl/gl_postvs.cpp index 7c4a64db8..1586bc850 100644 --- a/renderdoc/driver/gl/gl_postvs.cpp +++ b/renderdoc/driver/gl/gl_postvs.cpp @@ -164,7 +164,8 @@ void GLReplay::InitPostVSBuffers(uint32_t eventId) const DrawcallDescription *drawcall = m_pDriver->GetDrawcall(eventId); - if(drawcall->numIndices == 0) + if(drawcall->numIndices == 0 || + ((drawcall->flags & DrawFlags::Instanced) && drawcall->numInstances == 0)) { // draw is 0 length, nothing to do m_PostVSData[eventId] = GLPostVSData();