diff --git a/src/d3d11/d3d11_buffer.cpp b/src/d3d11/d3d11_buffer.cpp index f9eb1e26..07c0d1d7 100644 --- a/src/d3d11/d3d11_buffer.cpp +++ b/src/d3d11/d3d11_buffer.cpp @@ -150,4 +150,14 @@ namespace dxvk { return m_device->GetDXVKDevice()->createBuffer(info, memoryFlags); } + + D3D11Buffer* GetCommonBuffer(ID3D11Resource* pResource) { + D3D11_RESOURCE_DIMENSION dimension = D3D11_RESOURCE_DIMENSION_UNKNOWN; + pResource->GetType(&dimension); + + return dimension == D3D11_RESOURCE_DIMENSION_BUFFER + ? static_cast(pResource) + : nullptr; + } + } diff --git a/src/d3d11/d3d11_buffer.h b/src/d3d11/d3d11_buffer.h index b39d2158..db4cdd0f 100644 --- a/src/d3d11/d3d11_buffer.h +++ b/src/d3d11/d3d11_buffer.h @@ -77,5 +77,15 @@ namespace dxvk { const D3D11_BUFFER_DESC* pDesc) const; }; + + + /** + * \brief Retrieves buffer from resource pointer + * + * \param [in] pResource The resource to query + * \returns Pointer to buffer, or \c nullptr + */ + D3D11Buffer* GetCommonBuffer( + ID3D11Resource* pResource); } diff --git a/src/d3d11/d3d11_texture.h b/src/d3d11/d3d11_texture.h index 9f6f8d25..58fa5611 100644 --- a/src/d3d11/d3d11_texture.h +++ b/src/d3d11/d3d11_texture.h @@ -365,11 +365,10 @@ namespace dxvk { /** - * \brief Retrieves common info about a texture + * \brief Retrieves texture from resource pointer * - * \param [in] pResource The resource. Must be a texture. - * \param [out] pTextureInfo Pointer to the texture info struct. - * \returns E_INVALIDARG if the resource is not a texture + * \param [in] pResource The resource to query + * \returns Pointer to texture info, or \c nullptr */ D3D11CommonTexture* GetCommonTexture( ID3D11Resource* pResource);