51 lines
3.6 KiB
Diff
51 lines
3.6 KiB
Diff
# UNDF: UNDF-2026-000001041
|
|
# UNDF: UNDF-2026-XXXXXXXXX
|
|
--- a/src/Cafe/GraphicPack/GraphicPack2.h
|
|
+++ b/src/Cafe/GraphicPack/GraphicPack2.h
|
|
@@ -35,10 +35,10 @@ struct FILTER_SETTINGS
|
|
sint32 width = -1;
|
|
sint32 height = -1;
|
|
sint32 depth = -1;
|
|
MEM1_FILTER inMEM1 = MEM1_FILTER::BOTH;
|
|
- std::vector<sint32> format_whitelist{};
|
|
- std::vector<sint32> format_blacklist{};
|
|
- std::vector<sint32> tilemode_whitelist{};
|
|
- std::vector<sint32> tilemode_blacklist{};
|
|
+ std::unordered_set<sint32> format_whitelist{};
|
|
+ std::unordered_set<sint32> format_blacklist{};
|
|
+ std::unordered_set<sint32> tilemode_whitelist{};
|
|
+ std::unordered_set<sint32> tilemode_blacklist{};
|
|
} filter_settings;
|
|
--- a/src/Cafe/HW/Latte/Core/LatteTexture.cpp
|
|
+++ b/src/Cafe/HW/Latte/Core/LatteTexture.cpp
|
|
@@ -1243,13 +1243,13 @@ void LatteTexture_init()
|
|
- if (!rule.filter_settings.format_whitelist.empty() && std::find(rule.filter_settings.format_whitelist.begin(), rule.filter_settings.format_whitelist.end(), (uint32)format) == rule.filter_settings.format_whitelist.end())
|
|
+ if (!rule.filter_settings.format_whitelist.empty() && rule.filter_settings.format_whitelist.find((sint32)format) == rule.filter_settings.format_whitelist.end())
|
|
continue;
|
|
|
|
- if (!rule.filter_settings.format_blacklist.empty() && std::find(rule.filter_settings.format_blacklist.begin(), rule.filter_settings.format_blacklist.end(), (uint32)format) != rule.filter_settings.format_blacklist.end())
|
|
+ if (!rule.filter_settings.format_blacklist.empty() && rule.filter_settings.format_blacklist.find((sint32)format) != rule.filter_settings.format_blacklist.end())
|
|
continue;
|
|
|
|
- if (!rule.filter_settings.tilemode_whitelist.empty() && std::find(rule.filter_settings.tilemode_whitelist.begin(), rule.filter_settings.tilemode_whitelist.end(), (int)tileMode) == rule.filter_settings.tilemode_whitelist.end())
|
|
+ if (!rule.filter_settings.tilemode_whitelist.empty() && rule.filter_settings.tilemode_whitelist.find((sint32)tileMode) == rule.filter_settings.tilemode_whitelist.end())
|
|
continue;
|
|
|
|
- if (!rule.filter_settings.tilemode_blacklist.empty() && std::find(rule.filter_settings.tilemode_blacklist.begin(), rule.filter_settings.tilemode_blacklist.end(), (int)tileMode) != rule.filter_settings.tilemode_blacklist.end())
|
|
+ if (!rule.filter_settings.tilemode_blacklist.empty() && rule.filter_settings.tilemode_blacklist.find((sint32)tileMode) != rule.filter_settings.tilemode_blacklist.end())
|
|
continue;
|
|
--- a/src/Cafe/GraphicPack/GraphicPack2.cpp
|
|
+++ b/src/Cafe/GraphicPack/GraphicPack2.cpp
|
|
@@ -978,12 +978,16 @@ void GraphicPack2::_loadTextureRules(IniParser& parser)
|
|
- rule.filter_settings.format_whitelist = ParseList<sint32>(parser, rules, "formats");
|
|
- rule.filter_settings.format_blacklist = ParseList<sint32>(parser, rules, "formatsExcluded");
|
|
- rule.filter_settings.tilemode_whitelist = ParseList<sint32>(parser, rules, "tilemodes");
|
|
- rule.filter_settings.tilemode_blacklist = ParseList<sint32>(parser, rules, "tilemodesExcluded");
|
|
+ auto fmt_wl = ParseList<sint32>(parser, rules, "formats");
|
|
+ rule.filter_settings.format_whitelist = std::unordered_set<sint32>(fmt_wl.begin(), fmt_wl.end());
|
|
+ auto fmt_bl = ParseList<sint32>(parser, rules, "formatsExcluded");
|
|
+ rule.filter_settings.format_blacklist = std::unordered_set<sint32>(fmt_bl.begin(), fmt_bl.end());
|
|
+ auto tm_wl = ParseList<sint32>(parser, rules, "tilemodes");
|
|
+ rule.filter_settings.tilemode_whitelist = std::unordered_set<sint32>(tm_wl.begin(), tm_wl.end());
|
|
+ auto tm_bl = ParseList<sint32>(parser, rules, "tilemodesExcluded");
|
|
+ rule.filter_settings.tilemode_blacklist = std::unordered_set<sint32>(tm_bl.begin(), tm_bl.end());
|