summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Assets/TextureAsset.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/Assets/TextureAsset.cpp')
-rw-r--r--Source/Core/VideoCommon/Assets/TextureAsset.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/Source/Core/VideoCommon/Assets/TextureAsset.cpp b/Source/Core/VideoCommon/Assets/TextureAsset.cpp
index 3bf477a58a..f7f3a00849 100644
--- a/Source/Core/VideoCommon/Assets/TextureAsset.cpp
+++ b/Source/Core/VideoCommon/Assets/TextureAsset.cpp
@@ -47,7 +47,7 @@ bool GameTextureAsset::Validate(u32 native_width, u32 native_height) const
return false;
}
- if (m_data->m_levels.empty())
+ if (m_data->m_slices.empty())
{
ERROR_LOG_FMT(VIDEO,
"Game texture can't be validated for asset '{}' because no data was available.",
@@ -55,9 +55,28 @@ bool GameTextureAsset::Validate(u32 native_width, u32 native_height) const
return false;
}
+ if (m_data->m_slices.size() > 1)
+ {
+ ERROR_LOG_FMT(
+ VIDEO,
+ "Game texture can't be validated for asset '{}' because it has more slices than expected.",
+ GetAssetId());
+ return false;
+ }
+
+ const auto& slice = m_data->m_slices[0];
+ if (slice.m_levels.empty())
+ {
+ ERROR_LOG_FMT(
+ VIDEO,
+ "Game texture can't be validated for asset '{}' because first slice has no data available.",
+ GetAssetId());
+ return false;
+ }
+
// Verify that the aspect ratio of the texture hasn't changed, as this could have
// side-effects.
- const VideoCommon::CustomTextureData::Level& first_mip = m_data->m_levels[0];
+ const VideoCommon::CustomTextureData::ArraySlice::Level& first_mip = slice.m_levels[0];
if (first_mip.width * native_height != first_mip.height * native_width)
{
// Note: this feels like this should return an error but