fix(te): apply sd_text_encoder changes for non-T5 encoders

reload_text_encoder only hot-swapped T5-family encoders and ran only at initial
load, so changing sd_text_encoder for a model with a generic encoder (Krea2's
Qwen3-VL) never took effect until a full model reload. Track the loaded
selection and, for encoders with no in-place swap, reload the model on change,
triggered from the settings handler. The fresh model object also invalidates
the prompt cache.
This commit is contained in:
CalamitousFelicitousness
2026-07-05 22:49:47 +01:00
parent f88298a1c0
commit f96a0639e2
2 changed files with 26 additions and 6 deletions
+2
View File
@@ -200,6 +200,8 @@ def run_settings_single(value, key, progress=False, force=False):
from modules.dml import directml_override_opts
directml_override_opts()
shared.opts.save(silent=True)
if key == 'sd_text_encoder':
sd_models.reload_text_encoder() # apply the change now; reloads the model for encoders with no in-place swap
if key not in ['sd_model_checkpoint', 'sd_model_refiner', 'sd_vae', 'sd_te', 'sd_unet'] or force:
log.debug(f'Setting changed: {key}="{value}" progress={progress} force={force}')
return get_value_for_setting(key), shared.opts.dumpjson()