From 04fa062eba5f271741fdd41324109e745be18989 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 11 Aug 2018 23:18:50 +0200 Subject: [PATCH] [d3d10] Add GetD3D10ResourceFromView and GetD3D10Resource helpers --- src/d3d10/d3d10_util.cpp | 27 +++++++++++++++++++++++++++ src/d3d10/d3d10_util.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/src/d3d10/d3d10_util.cpp b/src/d3d10/d3d10_util.cpp index 32ea6bfaf..ad55eed9d 100644 --- a/src/d3d10/d3d10_util.cpp +++ b/src/d3d10/d3d10_util.cpp @@ -37,6 +37,33 @@ namespace dxvk { } + void GetD3D10ResourceFromView( + ID3D11View* pSrcView, + ID3D10Resource** ppDstResource) { + Com d3d11Resource; + pSrcView->GetResource(&d3d11Resource); + GetD3D10Resource(d3d11Resource.ptr(), ppDstResource); + } + + + void GetD3D11ResourceFromView( + ID3D10View* pSrcView, + ID3D11Resource** ppDstResource) { + Com d3d10Resource; + pSrcView->GetResource(&d3d10Resource); + GetD3D11Resource(d3d10Resource.ptr(), ppDstResource); + } + + + void GetD3D10Resource( + ID3D11Resource* pSrcResource, + ID3D10Resource** ppDstResource) { + pSrcResource->QueryInterface( + __uuidof(ID3D10Resource), + reinterpret_cast(ppDstResource)); + } + + void GetD3D11Resource( ID3D10Resource* pSrcResource, ID3D11Resource** ppDstResource) { diff --git a/src/d3d10/d3d10_util.h b/src/d3d10/d3d10_util.h index 0ea35d29f..72c9c6e7f 100644 --- a/src/d3d10/d3d10_util.h +++ b/src/d3d10/d3d10_util.h @@ -15,6 +15,36 @@ namespace dxvk { UINT ConvertD3D10ResourceFlags(UINT MiscFlags); UINT ConvertD3D11ResourceFlags(UINT MiscFlags); + /** + * \brief Retrieves D3D10 resource from D3D11 view + * + * \param [in] pSrcView The D3D11 resource view + * \param [out] ppDstResource The D3D10 resource + */ + void GetD3D10ResourceFromView( + ID3D11View* pSrcView, + ID3D10Resource** ppDstResource); + + /** + * \brief Retrieves D3D11 resource from D3D10 view + * + * \param [in] pSrcView The D3D10 resource view + * \param [out] ppDstResource The D3D11 resource + */ + void GetD3D11ResourceFromView( + ID3D10View* pSrcView, + ID3D11Resource** ppDstResource); + + /** + * \brief Retrieves D3D10 resource from D3D11 resource + * + * \param [in] pSrcResource The D3D11 resource + * \param [out] ppDstResource The D3D10 resource + */ + void GetD3D10Resource( + ID3D11Resource* pSrcResource, + ID3D10Resource** ppDstResource); + /** * \brief Retrieves D3D11 resource from D3D10 resource *