From 85b91ca6e2c009aa1f4fab6ea725eb2077532af2 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 23 Oct 2024 13:07:23 +0200 Subject: [PATCH] [d3d11] Devirtualize context method forwarding --- src/d3d11/d3d11_context.cpp | 30 ++++++++++++++++++++++++++++-- src/d3d11/d3d11_context.h | 16 ++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp index b868089cbc8..da93aa81866 100644 --- a/src/d3d11/d3d11_context.cpp +++ b/src/d3d11/d3d11_context.cpp @@ -144,7 +144,7 @@ namespace dxvk { template void STDMETHODCALLTYPE D3D11CommonContext::DiscardView(ID3D11View* pResourceView) { - DiscardView1(pResourceView, nullptr, 0); + DiscardViewBase(pResourceView, nullptr, 0); } @@ -153,6 +153,15 @@ namespace dxvk { ID3D11View* pResourceView, const D3D11_RECT* pRects, UINT NumRects) { + DiscardViewBase(pResourceView, pRects, NumRects); + } + + + template + void STDMETHODCALLTYPE D3D11CommonContext::DiscardViewBase( + ID3D11View* pResourceView, + const D3D11_RECT* pRects, + UINT NumRects) { D3D10DeviceLock lock = LockContext(); // We don't support discarding individual rectangles @@ -207,7 +216,7 @@ namespace dxvk { ID3D11Resource* pSrcResource, UINT SrcSubresource, const D3D11_BOX* pSrcBox) { - CopySubresourceRegion1( + CopySubresourceRegionBase( pDstResource, DstSubresource, DstX, DstY, DstZ, pSrcResource, SrcSubresource, pSrcBox, 0); } @@ -224,6 +233,23 @@ namespace dxvk { UINT SrcSubresource, const D3D11_BOX* pSrcBox, UINT CopyFlags) { + CopySubresourceRegionBase( + pDstResource, DstSubresource, DstX, DstY, DstZ, + pSrcResource, SrcSubresource, pSrcBox, CopyFlags); + } + + + template + void STDMETHODCALLTYPE D3D11CommonContext::CopySubresourceRegionBase( + ID3D11Resource* pDstResource, + UINT DstSubresource, + UINT DstX, + UINT DstY, + UINT DstZ, + ID3D11Resource* pSrcResource, + UINT SrcSubresource, + const D3D11_BOX* pSrcBox, + UINT CopyFlags) { D3D10DeviceLock lock = LockContext(); if (!pDstResource || !pSrcResource) diff --git a/src/d3d11/d3d11_context.h b/src/d3d11/d3d11_context.h index a0e7900474e..a2d6c365982 100644 --- a/src/d3d11/d3d11_context.h +++ b/src/d3d11/d3d11_context.h @@ -104,6 +104,11 @@ namespace dxvk { const D3D11_RECT* pRects, UINT NumRects); + void STDMETHODCALLTYPE DiscardViewBase( + ID3D11View* pResourceView, + const D3D11_RECT* pRects, + UINT NumRects); + void STDMETHODCALLTYPE CopySubresourceRegion( ID3D11Resource* pDstResource, UINT DstSubresource, @@ -125,6 +130,17 @@ namespace dxvk { const D3D11_BOX* pSrcBox, UINT CopyFlags); + void STDMETHODCALLTYPE CopySubresourceRegionBase( + 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);