summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Assets/CustomAssetLibrary.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/Assets/CustomAssetLibrary.cpp')
-rw-r--r--Source/Core/VideoCommon/Assets/CustomAssetLibrary.cpp85
1 files changed, 0 insertions, 85 deletions
diff --git a/Source/Core/VideoCommon/Assets/CustomAssetLibrary.cpp b/Source/Core/VideoCommon/Assets/CustomAssetLibrary.cpp
deleted file mode 100644
index 887875d2cb..0000000000
--- a/Source/Core/VideoCommon/Assets/CustomAssetLibrary.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2023 Dolphin Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "VideoCommon/Assets/CustomAssetLibrary.h"
-
-#include <algorithm>
-
-#include "Common/Logging/Log.h"
-#include "VideoCommon/Assets/TextureAsset.h"
-
-namespace VideoCommon
-{
-CustomAssetLibrary::LoadInfo CustomAssetLibrary::LoadGameTexture(const AssetID& asset_id,
- TextureData* data)
-{
- const auto load_info = LoadTexture(asset_id, data);
- if (load_info.m_bytes_loaded == 0)
- return {};
-
- if (data->m_type != TextureData::Type::Type_Texture2D)
- {
- ERROR_LOG_FMT(
- VIDEO,
- "Custom asset '{}' is not a valid game texture, it is expected to be a 2d texture "
- "but was a '{}'.",
- asset_id, data->m_type);
- return {};
- }
-
- // Note: 'LoadTexture()' ensures we have a level loaded
- for (std::size_t slice_index = 0; slice_index < data->m_texture.m_slices.size(); slice_index++)
- {
- auto& slice = data->m_texture.m_slices[slice_index];
- const auto& first_mip = slice.m_levels[0];
-
- // Verify that each mip level is the correct size (divide by 2 each time).
- u32 current_mip_width = first_mip.width;
- u32 current_mip_height = first_mip.height;
- for (u32 mip_level = 1; mip_level < static_cast<u32>(slice.m_levels.size()); mip_level++)
- {
- if (current_mip_width != 1 || current_mip_height != 1)
- {
- current_mip_width = std::max(current_mip_width / 2, 1u);
- current_mip_height = std::max(current_mip_height / 2, 1u);
-
- const VideoCommon::CustomTextureData::ArraySlice::Level& level = slice.m_levels[mip_level];
- if (current_mip_width == level.width && current_mip_height == level.height)
- continue;
-
- ERROR_LOG_FMT(VIDEO,
- "Invalid custom game texture size {}x{} for texture asset {}. Slice {} with "
- "mipmap level {} "
- "must be {}x{}.",
- level.width, level.height, asset_id, slice_index, mip_level,
- current_mip_width, current_mip_height);
- }
- else
- {
- // It is invalid to have more than a single 1x1 mipmap.
- ERROR_LOG_FMT(
- VIDEO,
- "Custom game texture {} has too many 1x1 mipmaps for slice {}. Skipping extra levels.",
- asset_id, slice_index);
- }
-
- // Drop this mip level and any others after it.
- while (slice.m_levels.size() > mip_level)
- slice.m_levels.pop_back();
- }
-
- // All levels have to have the same format.
- if (std::ranges::any_of(slice.m_levels,
- [&first_mip](const auto& l) { return l.format != first_mip.format; }))
- {
- ERROR_LOG_FMT(
- VIDEO, "Custom game texture {} has inconsistent formats across mip levels for slice {}.",
- asset_id, slice_index);
-
- return {};
- }
- }
-
- return load_info;
-}
-} // namespace VideoCommon