#pragma once #include #include "d3d11_device_child.h" #include "d3d11_interfaces.h" namespace dxvk { class D3D11Device; /////////////////////////////////////////// // D 3 D 1 1 T E X T U R E 1 D class D3D11Texture1D : public D3D11DeviceChild { public: D3D11Texture1D( D3D11Device* pDevice, const D3D11_TEXTURE1D_DESC* pDesc); ~D3D11Texture1D(); HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppvObject) final; void STDMETHODCALLTYPE GetDevice( ID3D11Device **ppDevice) final; void STDMETHODCALLTYPE GetType( D3D11_RESOURCE_DIMENSION *pResourceDimension) final; UINT STDMETHODCALLTYPE GetEvictionPriority() final; void STDMETHODCALLTYPE SetEvictionPriority(UINT EvictionPriority) final; void STDMETHODCALLTYPE GetDesc( D3D11_TEXTURE1D_DESC *pDesc) final; DxgiFormatMode GetFormatMode() const { return m_formatMode; } Rc GetDXVKImage() const { return m_image; } private: Com m_device; DxgiFormatMode m_formatMode; D3D11_TEXTURE1D_DESC m_desc; Rc m_image; }; /////////////////////////////////////////// // D 3 D 1 1 T E X T U R E 2 D class D3D11Texture2D : public D3D11DeviceChild { public: D3D11Texture2D( D3D11Device* pDevice, const D3D11_TEXTURE2D_DESC* pDesc); ~D3D11Texture2D(); HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppvObject) final; void STDMETHODCALLTYPE GetDevice( ID3D11Device **ppDevice) final; void STDMETHODCALLTYPE GetType( D3D11_RESOURCE_DIMENSION *pResourceDimension) final; UINT STDMETHODCALLTYPE GetEvictionPriority() final; void STDMETHODCALLTYPE SetEvictionPriority(UINT EvictionPriority) final; void STDMETHODCALLTYPE GetDesc( D3D11_TEXTURE2D_DESC *pDesc) final; DxgiFormatMode GetFormatMode() const { return m_formatMode; } Rc GetDXVKImage() const { return m_image; } private: Com m_device; DxgiFormatMode m_formatMode; D3D11_TEXTURE2D_DESC m_desc; Rc m_image; }; /////////////////////////////////////////// // D 3 D 1 1 T E X T U R E 3 D class D3D11Texture3D : public D3D11DeviceChild { public: D3D11Texture3D( D3D11Device* pDevice, const D3D11_TEXTURE3D_DESC* pDesc); ~D3D11Texture3D(); HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppvObject) final; void STDMETHODCALLTYPE GetDevice( ID3D11Device **ppDevice) final; void STDMETHODCALLTYPE GetType( D3D11_RESOURCE_DIMENSION *pResourceDimension) final; UINT STDMETHODCALLTYPE GetEvictionPriority() final; void STDMETHODCALLTYPE SetEvictionPriority(UINT EvictionPriority) final; void STDMETHODCALLTYPE GetDesc( D3D11_TEXTURE3D_DESC *pDesc) final; DxgiFormatMode GetFormatMode() const { return m_formatMode; } Rc GetDXVKImage() const { return m_image; } private: Com m_device; DxgiFormatMode m_formatMode; D3D11_TEXTURE3D_DESC m_desc; Rc m_image; }; /** * \brief Common texture info * * Stores the image and the image format * mode for a texture of any type. */ struct D3D11TextureInfo { DxgiFormatMode formatMode; Rc image; }; /** * \brief Retrieves common info about a texture * * \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 */ HRESULT GetCommonTextureInfo( ID3D11Resource* pResource, D3D11TextureInfo* pTextureInfo); VkImageSubresource GetSubresourceFromIndex( VkImageAspectFlags Aspect, UINT MipLevels, UINT Subresource); }