From 5a30110d0fd6e84c203ebfeb9b21e7caa936e479 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 25 Oct 2018 20:54:10 +0200 Subject: [PATCH] Revert "[d3d11] Remove some flush points" This reverts commit 5ab6f691aeb95c0b04cde5612f892716300a1da1. Apparently this leads to extremely bad frame times on some Nvidia setups. --- src/d3d11/d3d11_context_imm.cpp | 101 ++++++++++++++++++++++++++++++++ src/d3d11/d3d11_context_imm.h | 52 ++++++++++++++++ 2 files changed, 153 insertions(+) diff --git a/src/d3d11/d3d11_context_imm.cpp b/src/d3d11/d3d11_context_imm.cpp index 2e5eb4c94..523c8e5b8 100644 --- a/src/d3d11/d3d11_context_imm.cpp +++ b/src/d3d11/d3d11_context_imm.cpp @@ -203,6 +203,107 @@ namespace dxvk { } + void STDMETHODCALLTYPE D3D11ImmediateContext::CopySubresourceRegion( + ID3D11Resource* pDstResource, + UINT DstSubresource, + UINT DstX, + UINT DstY, + UINT DstZ, + ID3D11Resource* pSrcResource, + UINT SrcSubresource, + const D3D11_BOX* pSrcBox) { + FlushImplicit(FALSE); + + D3D11DeviceContext::CopySubresourceRegion( + pDstResource, DstSubresource, DstX, DstY, DstZ, + pSrcResource, SrcSubresource, pSrcBox); + } + + + void STDMETHODCALLTYPE D3D11ImmediateContext::CopySubresourceRegion1( + ID3D11Resource* pDstResource, + UINT DstSubresource, + UINT DstX, + UINT DstY, + UINT DstZ, + ID3D11Resource* pSrcResource, + UINT SrcSubresource, + const D3D11_BOX* pSrcBox, + UINT CopyFlags) { + FlushImplicit(FALSE); + + D3D11DeviceContext::CopySubresourceRegion1( + pDstResource, DstSubresource, DstX, DstY, DstZ, + pSrcResource, SrcSubresource, pSrcBox, CopyFlags); + } + + + void STDMETHODCALLTYPE D3D11ImmediateContext::CopyResource( + ID3D11Resource* pDstResource, + ID3D11Resource* pSrcResource) { + FlushImplicit(FALSE); + + D3D11DeviceContext::CopyResource( + pDstResource, pSrcResource); + } + + + void STDMETHODCALLTYPE D3D11ImmediateContext::GenerateMips( + ID3D11ShaderResourceView* pShaderResourceView) { + FlushImplicit(FALSE); + + D3D11DeviceContext::GenerateMips( + pShaderResourceView); + } + + + void STDMETHODCALLTYPE D3D11ImmediateContext::UpdateSubresource( + ID3D11Resource* pDstResource, + UINT DstSubresource, + const D3D11_BOX* pDstBox, + const void* pSrcData, + UINT SrcRowPitch, + UINT SrcDepthPitch) { + FlushImplicit(FALSE); + + D3D11DeviceContext::UpdateSubresource( + pDstResource, DstSubresource, pDstBox, + pSrcData, SrcRowPitch, SrcDepthPitch); + } + + + void STDMETHODCALLTYPE D3D11ImmediateContext::UpdateSubresource1( + ID3D11Resource* pDstResource, + UINT DstSubresource, + const D3D11_BOX* pDstBox, + const void* pSrcData, + UINT SrcRowPitch, + UINT SrcDepthPitch, + UINT CopyFlags) { + FlushImplicit(FALSE); + + D3D11DeviceContext::UpdateSubresource1( + pDstResource, DstSubresource, pDstBox, + pSrcData, SrcRowPitch, SrcDepthPitch, + CopyFlags); + } + + + void STDMETHODCALLTYPE D3D11ImmediateContext::ResolveSubresource( + ID3D11Resource* pDstResource, + UINT DstSubresource, + ID3D11Resource* pSrcResource, + UINT SrcSubresource, + DXGI_FORMAT Format) { + FlushImplicit(FALSE); + + D3D11DeviceContext::ResolveSubresource( + pDstResource, DstSubresource, + pSrcResource, SrcSubresource, + Format); + } + + void STDMETHODCALLTYPE D3D11ImmediateContext::OMSetRenderTargets( UINT NumViews, ID3D11RenderTargetView* const* ppRenderTargetViews, diff --git a/src/d3d11/d3d11_context_imm.h b/src/d3d11/d3d11_context_imm.h index 97852f334..103a41e41 100644 --- a/src/d3d11/d3d11_context_imm.h +++ b/src/d3d11/d3d11_context_imm.h @@ -55,6 +55,58 @@ namespace dxvk { ID3D11Resource* pResource, UINT Subresource); + void STDMETHODCALLTYPE CopySubresourceRegion( + ID3D11Resource* pDstResource, + UINT DstSubresource, + UINT DstX, + UINT DstY, + UINT DstZ, + ID3D11Resource* pSrcResource, + UINT SrcSubresource, + const D3D11_BOX* pSrcBox); + + void STDMETHODCALLTYPE CopySubresourceRegion1( + ID3D11Resource* pDstResource, + UINT DstSubresource, + UINT DstX, + UINT DstY, + UINT DstZ, + ID3D11Resource* pSrcResource, + UINT SrcSubresource, + const D3D11_BOX* pSrcBox, + UINT CopyFlags); + + void STDMETHODCALLTYPE CopyResource( + ID3D11Resource* pDstResource, + ID3D11Resource* pSrcResource); + + void STDMETHODCALLTYPE GenerateMips( + ID3D11ShaderResourceView* pShaderResourceView); + + void STDMETHODCALLTYPE UpdateSubresource( + ID3D11Resource* pDstResource, + UINT DstSubresource, + const D3D11_BOX* pDstBox, + const void* pSrcData, + UINT SrcRowPitch, + UINT SrcDepthPitch); + + void STDMETHODCALLTYPE UpdateSubresource1( + ID3D11Resource* pDstResource, + UINT DstSubresource, + const D3D11_BOX* pDstBox, + const void* pSrcData, + UINT SrcRowPitch, + UINT SrcDepthPitch, + UINT CopyFlags); + + void STDMETHODCALLTYPE ResolveSubresource( + ID3D11Resource* pDstResource, + UINT DstSubresource, + ID3D11Resource* pSrcResource, + UINT SrcSubresource, + DXGI_FORMAT Format); + void STDMETHODCALLTYPE OMSetRenderTargets( UINT NumViews, ID3D11RenderTargetView* const* ppRenderTargetViews,