From 6efdde9ea4e18d0f1321fda33d2baba70e3b1185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Sun, 12 Feb 2017 12:12:15 +0100 Subject: [PATCH] D3D11: Fix build issue in Release mode. Triangle fan workaround. --- GPU/Common/FramebufferCommon.cpp | 1 + GPU/D3D11/DrawEngineD3D11.cpp | 6 ++---- Windows/GPU/D3D11Context.cpp | 4 +--- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/GPU/Common/FramebufferCommon.cpp b/GPU/Common/FramebufferCommon.cpp index f6b7e5e17f..e4dc209d32 100644 --- a/GPU/Common/FramebufferCommon.cpp +++ b/GPU/Common/FramebufferCommon.cpp @@ -567,6 +567,7 @@ void FramebufferManagerCommon::NotifyRenderFramebufferSwitched(VirtualFramebuffe textureCache_->ForgetLastTexture(); if (useBufferedRendering_) { + if (vfb->fbo) { draw_->BindFramebufferAsRenderTarget(vfb->fbo); } else { diff --git a/GPU/D3D11/DrawEngineD3D11.cpp b/GPU/D3D11/DrawEngineD3D11.cpp index d136b93822..d304c7ad31 100644 --- a/GPU/D3D11/DrawEngineD3D11.cpp +++ b/GPU/D3D11/DrawEngineD3D11.cpp @@ -587,8 +587,6 @@ void DrawEngineD3D11::DoFlush() { if (useHWTransform) { ID3D11Buffer *vb_ = nullptr; ID3D11Buffer *ib_ = nullptr; - if (prim == GE_PRIM_TRIANGLE_FAN) - Crash(); int vertexCount = 0; int maxIndex = 0; @@ -676,7 +674,7 @@ void DrawEngineD3D11::DoFlush() { vai->prim = indexGen.Prim(); vai->maxIndex = indexGen.MaxIndex(); vai->flags = gstate_c.vertexFullAlpha ? VAI11_FLAG_VERTEXFULLALPHA : 0; - useElements = !indexGen.SeenOnlyPurePrims(); + useElements = !indexGen.SeenOnlyPurePrims() || prim == GE_PRIM_TRIANGLE_FAN; if (!useElements && indexGen.PureCount()) { vai->numVerts = indexGen.PureCount(); } @@ -747,7 +745,7 @@ void DrawEngineD3D11::DoFlush() { DecodeVerts(); rotateVBO: gpuStats.numUncachedVertsDrawn += indexGen.VertexCount(); - useElements = !indexGen.SeenOnlyPurePrims(); + useElements = !indexGen.SeenOnlyPurePrims() || prim == GE_PRIM_TRIANGLE_FAN; vertexCount = indexGen.VertexCount(); maxIndex = indexGen.MaxIndex(); if (!useElements && indexGen.PureCount()) { diff --git a/Windows/GPU/D3D11Context.cpp b/Windows/GPU/D3D11Context.cpp index eb12c1f65c..aa4ae704a8 100644 --- a/Windows/GPU/D3D11Context.cpp +++ b/Windows/GPU/D3D11Context.cpp @@ -120,12 +120,10 @@ void D3D11Context::Shutdown() { d3dInfoQueue_->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_CORRUPTION, false); d3dInfoQueue_->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_ERROR, false); d3dInfoQueue_->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_WARNING, false); -#endif -#ifdef _DEBUG d3dDebug_->ReportLiveDeviceObjects(D3D11_RLDO_SUMMARY | D3D11_RLDO_DETAIL); -#endif d3dDebug_->Release(); d3dInfoQueue_->Release(); +#endif context_->Release(); context_ = nullptr;