void GrManager::getTextureVolumeUploadInfo(TexturePtr tex, const TextureVolumeInfo& vol, PtrSize& allocationSize) { const TextureImpl& impl = *tex->m_impl; impl.checkVolume(vol); U width = impl.m_width >> vol.m_level; U height = impl.m_height >> vol.m_level; U depth = impl.m_depth >> vol.m_level; if(!impl.m_workarounds) { allocationSize = computeVolumeSize(width, height, depth, impl.m_format); } else if(!!(impl.m_workarounds & TextureImplWorkaround::R8G8B8_TO_R8G8B8A8)) { // Extra size for staging buffer allocationSize = computeVolumeSize(width, height, depth, PixelFormat(ComponentFormat::R8G8B8, TransformFormat::UNORM)); alignRoundUp(16, allocationSize); allocationSize += computeVolumeSize(width, height, depth, PixelFormat(ComponentFormat::R8G8B8A8, TransformFormat::UNORM)); } else { ANKI_ASSERT(0); } }
void GrManager::getTextureVolumeUploadInfo(TexturePtr tex, const TextureVolumeInfo& vol, PtrSize& allocationSize) { const TextureImpl& impl = *tex->m_impl; impl.checkVolume(vol); U width = impl.m_width >> vol.m_level; U height = impl.m_height >> vol.m_level; U depth = impl.m_depth >> vol.m_level; allocationSize = computeVolumeSize(width, height, depth, impl.m_pformat); }