diff --git a/src/d3d11/d3d11_view_dsv.cpp b/src/d3d11/d3d11_view_dsv.cpp index a4f5a576b..6c9c4930c 100644 --- a/src/d3d11/d3d11_view_dsv.cpp +++ b/src/d3d11/d3d11_view_dsv.cpp @@ -1,5 +1,6 @@ #include "d3d11_device.h" #include "d3d11_buffer.h" +#include "d3d11_resource.h" #include "d3d11_texture.h" #include "d3d11_view_dsv.h" @@ -10,6 +11,8 @@ namespace dxvk { ID3D11Resource* pResource, const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc) : m_device(pDevice), m_resource(pResource), m_desc(*pDesc) { + ResourceAddRefPrivate(m_resource); + DxvkImageViewCreateInfo viewInfo; viewInfo.format = pDevice->LookupFormat(pDesc->Format, DXGI_VK_FORMAT_MODE_DEPTH).Format; viewInfo.aspect = imageFormatInfo(viewInfo.format)->aspectMask; @@ -82,7 +85,7 @@ namespace dxvk { D3D11DepthStencilView::~D3D11DepthStencilView() { - + ResourceReleasePrivate(m_resource); } @@ -109,7 +112,7 @@ namespace dxvk { void STDMETHODCALLTYPE D3D11DepthStencilView::GetResource(ID3D11Resource** ppResource) { - *ppResource = m_resource.ref(); + *ppResource = ref(m_resource); } diff --git a/src/d3d11/d3d11_view_dsv.h b/src/d3d11/d3d11_view_dsv.h index e1ee552c9..dd332f981 100644 --- a/src/d3d11/d3d11_view_dsv.h +++ b/src/d3d11/d3d11_view_dsv.h @@ -72,7 +72,7 @@ namespace dxvk { private: Com m_device; - Com m_resource; + ID3D11Resource* m_resource; D3D11_DEPTH_STENCIL_VIEW_DESC m_desc; Rc m_view; diff --git a/src/d3d11/d3d11_view_rtv.cpp b/src/d3d11/d3d11_view_rtv.cpp index 274ccc066..d5b1f0553 100644 --- a/src/d3d11/d3d11_view_rtv.cpp +++ b/src/d3d11/d3d11_view_rtv.cpp @@ -1,5 +1,6 @@ #include "d3d11_device.h" #include "d3d11_buffer.h" +#include "d3d11_resource.h" #include "d3d11_texture.h" #include "d3d11_view_rtv.h" @@ -10,6 +11,8 @@ namespace dxvk { ID3D11Resource* pResource, const D3D11_RENDER_TARGET_VIEW_DESC* pDesc) : m_device(pDevice), m_resource(pResource), m_desc(*pDesc) { + ResourceAddRefPrivate(m_resource); + DxvkImageViewCreateInfo viewInfo; viewInfo.format = pDevice->LookupFormat(pDesc->Format, DXGI_VK_FORMAT_MODE_COLOR).Format; viewInfo.aspect = imageFormatInfo(viewInfo.format)->aspectMask; @@ -90,7 +93,7 @@ namespace dxvk { D3D11RenderTargetView::~D3D11RenderTargetView() { - + ResourceReleasePrivate(m_resource); } @@ -117,7 +120,7 @@ namespace dxvk { void STDMETHODCALLTYPE D3D11RenderTargetView::GetResource(ID3D11Resource** ppResource) { - *ppResource = m_resource.ref(); + *ppResource = ref(m_resource); } diff --git a/src/d3d11/d3d11_view_rtv.h b/src/d3d11/d3d11_view_rtv.h index 324bfa526..14b83c230 100644 --- a/src/d3d11/d3d11_view_rtv.h +++ b/src/d3d11/d3d11_view_rtv.h @@ -57,7 +57,7 @@ namespace dxvk { private: Com m_device; - Com m_resource; + ID3D11Resource* m_resource; D3D11_RENDER_TARGET_VIEW_DESC m_desc; Rc m_view; diff --git a/src/d3d11/d3d11_view_srv.cpp b/src/d3d11/d3d11_view_srv.cpp index fd3fa1e5d..6bfbf7a61 100644 --- a/src/d3d11/d3d11_view_srv.cpp +++ b/src/d3d11/d3d11_view_srv.cpp @@ -1,5 +1,6 @@ #include "d3d11_device.h" #include "d3d11_buffer.h" +#include "d3d11_resource.h" #include "d3d11_texture.h" #include "d3d11_view_srv.h" @@ -10,6 +11,8 @@ namespace dxvk { ID3D11Resource* pResource, const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc) : m_device(pDevice), m_resource(pResource), m_desc(*pDesc) { + ResourceAddRefPrivate(m_resource); + D3D11_RESOURCE_DIMENSION resourceDim = D3D11_RESOURCE_DIMENSION_UNKNOWN; pResource->GetType(&resourceDim); @@ -159,7 +162,7 @@ namespace dxvk { D3D11ShaderResourceView::~D3D11ShaderResourceView() { - + ResourceReleasePrivate(m_resource); } @@ -186,7 +189,7 @@ namespace dxvk { void STDMETHODCALLTYPE D3D11ShaderResourceView::GetResource(ID3D11Resource** ppResource) { - *ppResource = m_resource.ref(); + *ppResource = ref(m_resource); } diff --git a/src/d3d11/d3d11_view_srv.h b/src/d3d11/d3d11_view_srv.h index 3829d203a..6d638bf6e 100644 --- a/src/d3d11/d3d11_view_srv.h +++ b/src/d3d11/d3d11_view_srv.h @@ -55,7 +55,7 @@ namespace dxvk { private: Com m_device; - Com m_resource; + ID3D11Resource* m_resource; D3D11_SHADER_RESOURCE_VIEW_DESC m_desc; Rc m_bufferView; Rc m_imageView; diff --git a/src/d3d11/d3d11_view_uav.cpp b/src/d3d11/d3d11_view_uav.cpp index 8f8da66df..1078fce10 100644 --- a/src/d3d11/d3d11_view_uav.cpp +++ b/src/d3d11/d3d11_view_uav.cpp @@ -1,5 +1,6 @@ #include "d3d11_device.h" #include "d3d11_buffer.h" +#include "d3d11_resource.h" #include "d3d11_texture.h" #include "d3d11_view_uav.h" @@ -10,6 +11,8 @@ namespace dxvk { ID3D11Resource* pResource, const D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc) : m_device(pDevice), m_resource(pResource), m_desc(*pDesc) { + ResourceAddRefPrivate(m_resource); + D3D11_RESOURCE_DIMENSION resourceDim = D3D11_RESOURCE_DIMENSION_UNKNOWN; pResource->GetType(&resourceDim); @@ -103,6 +106,8 @@ namespace dxvk { D3D11UnorderedAccessView::~D3D11UnorderedAccessView() { + ResourceReleasePrivate(m_resource); + if (m_counterSlice.defined()) m_device->FreeCounterSlice(m_counterSlice); } @@ -131,7 +136,7 @@ namespace dxvk { void STDMETHODCALLTYPE D3D11UnorderedAccessView::GetResource(ID3D11Resource** ppResource) { - *ppResource = m_resource.ref(); + *ppResource = ref(m_resource); } diff --git a/src/d3d11/d3d11_view_uav.h b/src/d3d11/d3d11_view_uav.h index 2facb8ac3..bc133d09f 100644 --- a/src/d3d11/d3d11_view_uav.h +++ b/src/d3d11/d3d11_view_uav.h @@ -63,7 +63,7 @@ namespace dxvk { private: Com m_device; - Com m_resource; + ID3D11Resource* m_resource; D3D11_UNORDERED_ACCESS_VIEW_DESC m_desc; Rc m_bufferView; Rc m_imageView;