1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-18 04:54:15 +01:00

[d3d11] Devirtualize context method forwarding

This commit is contained in:
Philip Rebohle 2024-10-23 13:07:23 +02:00 committed by Philip Rebohle
parent d10df6353b
commit ae9024492b
2 changed files with 44 additions and 2 deletions

View File

@ -144,7 +144,7 @@ namespace dxvk {
template<typename ContextType>
void STDMETHODCALLTYPE D3D11CommonContext<ContextType>::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<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
@ -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<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)

View File

@ -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);