# 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 format_whitelist{}; - std::vector format_blacklist{}; - std::vector tilemode_whitelist{}; - std::vector tilemode_blacklist{}; + std::unordered_set format_whitelist{}; + std::unordered_set format_blacklist{}; + std::unordered_set tilemode_whitelist{}; + std::unordered_set 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(parser, rules, "formats"); - rule.filter_settings.format_blacklist = ParseList(parser, rules, "formatsExcluded"); - rule.filter_settings.tilemode_whitelist = ParseList(parser, rules, "tilemodes"); - rule.filter_settings.tilemode_blacklist = ParseList(parser, rules, "tilemodesExcluded"); + auto fmt_wl = ParseList(parser, rules, "formats"); + rule.filter_settings.format_whitelist = std::unordered_set(fmt_wl.begin(), fmt_wl.end()); + auto fmt_bl = ParseList(parser, rules, "formatsExcluded"); + rule.filter_settings.format_blacklist = std::unordered_set(fmt_bl.begin(), fmt_bl.end()); + auto tm_wl = ParseList(parser, rules, "tilemodes"); + rule.filter_settings.tilemode_whitelist = std::unordered_set(tm_wl.begin(), tm_wl.end()); + auto tm_bl = ParseList(parser, rules, "tilemodesExcluded"); + rule.filter_settings.tilemode_blacklist = std::unordered_set(tm_bl.begin(), tm_bl.end());