FramebufferManager: Correctly handle read back D24S8 textures

Needed for the Adreno/Vulkan workaround, and if we ever switch to a D24
texture for the depth buffer w/ unrestricted depth range.
This commit is contained in:
Stenzek
2019-07-31 15:33:27 +10:00
parent 2698e311aa
commit 06daf58032
4 changed files with 54 additions and 39 deletions

View File

@ -88,20 +88,19 @@ bool AbstractTexture::IsStencilFormat(AbstractTextureFormat format)
return format == AbstractTextureFormat::D24_S8 || format == AbstractTextureFormat::D32F_S8;
}
AbstractTextureFormat AbstractTexture::GetColorFormatForDepthFormat(AbstractTextureFormat format)
bool AbstractTexture::IsCompatibleDepthAndColorFormats(AbstractTextureFormat depth_format,
AbstractTextureFormat color_format)
{
switch (format)
switch (depth_format)
{
case AbstractTextureFormat::D16:
return AbstractTextureFormat::R16;
return color_format == AbstractTextureFormat::R16;
case AbstractTextureFormat::D24_S8: // TODO: Incorrect
case AbstractTextureFormat::D32F:
case AbstractTextureFormat::D32F_S8:
return AbstractTextureFormat::R32F;
return color_format == AbstractTextureFormat::R32F;
default:
return format;
return false;
}
}