Skip to content

Commit

Permalink
[d3d11] Devirtualize context method forwarding
Browse files Browse the repository at this point in the history
  • Loading branch information
doitsujin committed Oct 23, 2024
1 parent 70f49ce commit 85b91ca
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 2 deletions.
30 changes: 28 additions & 2 deletions src/d3d11/d3d11_context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ namespace dxvk {

template<typename ContextType>
void STDMETHODCALLTYPE D3D11CommonContext<ContextType>::DiscardView(ID3D11View* pResourceView) {
DiscardView1(pResourceView, nullptr, 0);
DiscardViewBase(pResourceView, nullptr, 0);
}


Expand All @@ -153,6 +153,15 @@ namespace dxvk {
ID3D11View* pResourceView,
const D3D11_RECT* pRects,
UINT NumRects) {
DiscardViewBase(pResourceView, pRects, NumRects);
}


template<typename ContextType>
void STDMETHODCALLTYPE D3D11CommonContext<ContextType>::DiscardViewBase(
ID3D11View* pResourceView,
const D3D11_RECT* pRects,
UINT NumRects) {
D3D10DeviceLock lock = LockContext();

// We don't support discarding individual rectangles
Expand Down Expand Up @@ -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);
}
Expand All @@ -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<typename ContextType>
void STDMETHODCALLTYPE D3D11CommonContext<ContextType>::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)
Expand Down
16 changes: 16 additions & 0 deletions src/d3d11/d3d11_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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);
Expand Down

0 comments on commit 85b91ca

Please sign in to comment.