summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Assets/TextureAsset.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2023-08-13 16:09:45 -0500
committeriwubcode <iwubcode@users.noreply.github.com>2023-09-02 20:20:09 -0500
commit62fee2f3b60c84b27efbb0792e3695bbe812ac1a (patch)
tree1ba80d4b42fefe1a9525dec7884938eb0c840ef1 /Source/Core/VideoCommon/Assets/TextureAsset.cpp
parent5e5887a378db28324a8fc8825f21539525412e12 (diff)
VideoCommon: add loading cube maps from DDS files and loading it into our custom texture object. Custom texture object now has the concept of slices in addition to levels. Traditional custom textures have a single slice
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