@@ -3137,8 +3137,7 @@ void VMManager::WarnAboutUnsafeSettings()
31373137 TRANSLATE_SV (" VMManager" , " Cycle rate/skip is not at default, this may crash or make games run too slow." ));
31383138 }
31393139
3140- const bool is_sw_renderer = EmuConfig.GS .Renderer == GSRendererType::SW;
3141- if (!is_sw_renderer)
3140+ if (EmuConfig.GS .Renderer != GSRendererType::SW && EmuConfig.GS .Renderer != GSRendererType::Null)
31423141 {
31433142 // HW renderer settings.
31443143 if (EmuConfig.GS .UpscaleMultiplier < 1 .0f )
@@ -3166,21 +3165,70 @@ void VMManager::WarnAboutUnsafeSettings()
31663165 append (ICON_FA_CIRCLE_EXCLAMATION,
31673166 TRANSLATE_SV (" VMManager" , " GPU Palette Conversion is enabled, this may reduce performance." ));
31683167 }
3169- if (EmuConfig.GS .TexturePreloading != TexturePreloadingLevel::Full)
3168+
3169+ // Check if texturePreloading None or Partial in DB; assume Full if unspecified or game fixes are disabled.
3170+ s32 texture_preloading_DB_value = 2 ;
3171+ if (EmuConfig.EnableGameFixes )
31703172 {
3171- append (ICON_FA_CIRCLE_EXCLAMATION,
3172- TRANSLATE_SV ( " VMManager " , " Texture Preloading is not Full, this may reduce performance. " ) );
3173+ if ( const GameDatabaseSchema::GameEntry* game = GameDatabase::findGame (s_disc_serial))
3174+ texture_preloading_DB_value = game-> getGSHWFixValue (GameDatabaseSchema::GSHWFixId::TexturePreloading). value_or ( 2 );
31733175 }
3174- if (EmuConfig.GS .UserHacks_EstimateTextureRegion )
3176+
3177+ if (EmuConfig.GS .TexturePreloading != TexturePreloadingLevel::Full || texture_preloading_DB_value != 2 )
31753178 {
3176- append (ICON_FA_CIRCLE_EXCLAMATION,
3177- TRANSLATE_SV (" VMManager" , " Estimate texture region is enabled, this may reduce performance." ));
3179+ // No need to warn the user about a setting we're enforcing.
3180+ if (texture_preloading_DB_value == 2 )
3181+ {
3182+ append (ICON_FA_CIRCLE_EXCLAMATION,
3183+ TRANSLATE_SV (" VMManager" , " Texture Preloading is not set to Full. This may reduce performance." ));
3184+ }
3185+ else if (EmuConfig.GS .LoadTextureReplacements || EmuConfig.GS .DumpReplaceableTextures )
3186+ {
3187+ const std::string_view texture_preloading_DB_value_name =
3188+ (texture_preloading_DB_value == 0 ) ? TRANSLATE_SV (" VMManager" , " None" ) : TRANSLATE_SV (" VMManager" , " Partial" );
3189+ if (EmuConfig.GS .TexturePreloading == TexturePreloadingLevel::Full)
3190+ {
3191+ append (ICON_FA_CIRCLE_EXCLAMATION, fmt::format (TRANSLATE_FS (" VMManager" , " Texture Preloading is set to {} by the GameDB." ),
3192+ texture_preloading_DB_value_name));
3193+ }
3194+ else
3195+ {
3196+ const std::string_view texture_preloading_setting_value_name =
3197+ (EmuConfig.GS .TexturePreloading == TexturePreloadingLevel::Off) ?
3198+ TRANSLATE_SV (" VMManager" , " None" ) : TRANSLATE_SV (" VMManager" , " Partial" );
3199+ append (ICON_FA_CIRCLE_EXCLAMATION, fmt::format (TRANSLATE_FS (
3200+ " VMManager" , " Texture Preloading is set to {} by the GameDB and to {} in the settings." ),
3201+ texture_preloading_DB_value_name, texture_preloading_setting_value_name));
3202+ }
3203+ }
3204+
3205+ if (EmuConfig.GS .LoadTextureReplacements && EmuConfig.GS .DumpReplaceableTextures )
3206+ {
3207+ append (ICON_FA_IMAGES,
3208+ TRANSLATE_SV (" VMManager" , " Texture replacement and dumping will not work unless texture preloading is set to Full." ));
3209+ }
3210+ else if (EmuConfig.GS .LoadTextureReplacements )
3211+ {
3212+ append (ICON_FA_IMAGES,
3213+ TRANSLATE_SV (" VMManager" , " Texture replacement will not work unless texture preloading is set to Full." ));
3214+ }
3215+ else if (EmuConfig.GS .DumpReplaceableTextures )
3216+ {
3217+ append (ICON_FA_DOWNLOAD,
3218+ TRANSLATE_SV (" VMManager" , " Texture dumping will not work unless texture preloading is set to Full." ));
3219+ }
31783220 }
3179- if (EmuConfig.GS .DumpReplaceableTextures )
3221+ // No textures dumped while texture preloading isn't set to Full.
3222+ else if (EmuConfig.GS .DumpReplaceableTextures )
31803223 {
31813224 append (ICON_FA_CIRCLE_EXCLAMATION,
31823225 TRANSLATE_SV (" VMManager" , " Texture dumping is enabled, this will continually dump textures to disk." ));
31833226 }
3227+ if (EmuConfig.GS .UserHacks_EstimateTextureRegion )
3228+ {
3229+ append (ICON_FA_CIRCLE_EXCLAMATION,
3230+ TRANSLATE_SV (" VMManager" , " Estimate texture region is enabled, this may reduce performance." ));
3231+ }
31843232 if (!EmuConfig.GS .HWMipmap )
31853233 {
31863234 append (ICON_FA_IMAGES,
0 commit comments