static inline size_t _calcSubresourceSize(const D3D11_TEXTURE2D_DESC *pDesc, UINT Subresource, UINT RowPitch, UINT SlicePitch = 0) { UINT MipLevel = Subresource % _getNumMipLevels(pDesc); return _calcMipDataSize(MipLevel, pDesc->Format, pDesc->Width, pDesc->Height, RowPitch, 1, SlicePitch); }
inline UINT _getNumSubResources(const D3D11_TEXTURE3D_DESC *pDesc) { return _getNumMipLevels(pDesc); }
inline UINT _getNumSubResources(const D3D11_TEXTURE2D_DESC *pDesc) { return _getNumMipLevels(pDesc) * pDesc->ArraySize; }
inline UINT _getNumMipLevels(const D3D11_TEXTURE3D_DESC *pDesc) { return pDesc->MipLevels != 0 ? pDesc->MipLevels : _getNumMipLevels(pDesc->Width, pDesc->Height, pDesc->Depth); }
inline UINT _getNumMipLevels(const D3D11_TEXTURE1D_DESC *pDesc) { return pDesc->MipLevels != 0 ? pDesc->MipLevels : _getNumMipLevels(pDesc->Width); }
inline UINT _getNumMipLevels(const D3D10_TEXTURE2D_DESC *pDesc) { return pDesc->MipLevels != 0 ? pDesc->MipLevels : _getNumMipLevels(pDesc->Width, pDesc->Height); }