summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/AbstractTexture.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2018-01-21 23:59:19 +1000
committerStenzek <stenzek@gmail.com>2018-03-01 17:31:24 +1000
commit2a6d9e4713a9a540684795cb10ee6e6462178ba1 (patch)
treebb932f3a7003832c83e50c4033b3ee82b3ba6ac3 /Source/Core/VideoCommon/AbstractTexture.cpp
parent6374a4c4a80e88eea2e5914fb84e393c91ec65af (diff)
AbstractTexture: Add support for depth textures/formats
Diffstat (limited to 'Source/Core/VideoCommon/AbstractTexture.cpp')
-rw-r--r--Source/Core/VideoCommon/AbstractTexture.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/AbstractTexture.cpp b/Source/Core/VideoCommon/AbstractTexture.cpp
index 98872f5c59..0f7602a0df 100644
--- a/Source/Core/VideoCommon/AbstractTexture.cpp
+++ b/Source/Core/VideoCommon/AbstractTexture.cpp
@@ -64,6 +64,20 @@ bool AbstractTexture::IsCompressedFormat(AbstractTextureFormat format)
}
}
+bool AbstractTexture::IsDepthFormat(AbstractTextureFormat format)
+{
+ switch (format)
+ {
+ case AbstractTextureFormat::D16:
+ case AbstractTextureFormat::D32F:
+ case AbstractTextureFormat::D32F_S8:
+ return true;
+
+ default:
+ return false;
+ }
+}
+
size_t AbstractTexture::CalculateStrideForFormat(AbstractTextureFormat format, u32 row_length)
{
switch (format)
@@ -74,9 +88,16 @@ size_t AbstractTexture::CalculateStrideForFormat(AbstractTextureFormat format, u
case AbstractTextureFormat::DXT5:
case AbstractTextureFormat::BPTC:
return static_cast<size_t>(std::max(1u, row_length / 4)) * 16;
+ case AbstractTextureFormat::R16:
+ case AbstractTextureFormat::D16:
+ return static_cast<size_t>(row_length) * 2;
case AbstractTextureFormat::RGBA8:
case AbstractTextureFormat::BGRA8:
+ case AbstractTextureFormat::R32F:
+ case AbstractTextureFormat::D32F:
return static_cast<size_t>(row_length) * 4;
+ case AbstractTextureFormat::D32F_S8:
+ return static_cast<size_t>(row_length) * 8;
default:
PanicAlert("Unhandled texture format.");
return 0;
@@ -93,9 +114,16 @@ size_t AbstractTexture::GetTexelSizeForFormat(AbstractTextureFormat format)
case AbstractTextureFormat::DXT5:
case AbstractTextureFormat::BPTC:
return 16;
+ case AbstractTextureFormat::R16:
+ case AbstractTextureFormat::D16:
+ return 2;
case AbstractTextureFormat::RGBA8:
case AbstractTextureFormat::BGRA8:
+ case AbstractTextureFormat::R32F:
+ case AbstractTextureFormat::D32F:
return 4;
+ case AbstractTextureFormat::D32F_S8:
+ return 8;
default:
PanicAlert("Unhandled texture format.");
return 0;