From 3840c8868e96efa1387e21610e54a56af15e9c2e Mon Sep 17 00:00:00 2001 From: honjow Date: Tue, 16 Apr 2024 05:38:23 +0800 Subject: [PATCH 1/3] Allow force show TDP control in plugin --- backend/fan_config/hwmon/asus.yml | 2 +- src/components/cpu.tsx | 64 ++++++++++++++++++++----------- src/components/customTDP.tsx | 2 +- src/i18n/english.json | 4 +- src/i18n/localizeMap.ts | 5 ++- src/i18n/schinese.json | 4 +- src/i18n/tchinese.json | 4 +- 7 files changed, 57 insertions(+), 28 deletions(-) diff --git a/backend/fan_config/hwmon/asus.yml b/backend/fan_config/hwmon/asus.yml index 09935a6..dd4201c 100644 --- a/backend/fan_config/hwmon/asus.yml +++ b/backend/fan_config/hwmon/asus.yml @@ -2,7 +2,7 @@ hwmon_name: asus_custom_fan_curve fans: - fan_name: CPU Fan - pwm_mode: 1 + pwm_mode: 1 # 写入的模式 0.普通模式(对单个文件写入) 1.rog掌机特殊模式(对多个文件写入同样的数值) pwm_enable: manual_value: 1 diff --git a/src/components/cpu.tsx b/src/components/cpu.tsx index 44b400c..10511ea 100755 --- a/src/components/cpu.tsx +++ b/src/components/cpu.tsx @@ -117,10 +117,17 @@ const CPUTDPComponent: VFC = () => { const [tdpEnable, setTDPEnable] = useState(Settings.appTDPEnable()); const [tdp, setTDP] = useState(Settings.appTDP()); const [disabled, setDisable] = useState(Settings.appGPUMode() == GPUMODE.AUTO); + const [forceShow, setForceShow] = useState(false); + const [enableCustomTDPRange, setEnableCustomTDPRange] = useState(Settings.appEnableCustomTDPRange()); + const [customTDPRangeMax, setCustomTDPRangeMax] = useState(Settings.appCustomTDPRangeMax()); + const [customTDPRangeMin, setCustomTDPRangeMin] = useState(Settings.appCustomTDPRangeMin()); const refresh = () => { setTDPEnable(Settings.appTDPEnable()); setTDP(Settings.appTDP()); setDisable(Settings.appGPUMode() == GPUMODE.AUTO); + setEnableCustomTDPRange(Settings.appEnableCustomTDPRange()); + setCustomTDPRangeMax(Settings.appCustomTDPRangeMax()); + setCustomTDPRangeMin(Settings.appCustomTDPRangeMin()); }; useEffect(() => { PluginManager.listenUpdateComponent(ComponentName.CPU_TDP, [ComponentName.CPU_TDP, ComponentName.GPU_FREQMODE], (_ComponentName, updateType) => { @@ -133,33 +140,46 @@ const CPUTDPComponent: VFC = () => { }) }, []); return ( -
+ <> { - Settings.setTDPEnable(value); + setForceShow(value); }} /> - {tdpEnable && - { - Settings.setTDP(value); - }} - /> - } -
+ {!PluginManager.isPatchSuccess(Patch.TDPPatch) || forceShow && + <> + + { + Settings.setTDPEnable(value); + }} + /> + + {tdpEnable && + { + Settings.setTDP(value); + }} + /> + } + } + ); } @@ -196,7 +216,7 @@ export const CPUComponent: VFC = () => { {isSpportSMT && } - {!PluginManager.isPatchSuccess(Patch.TDPPatch) && } + } diff --git a/src/components/customTDP.tsx b/src/components/customTDP.tsx index 5926aa7..1880714 100644 --- a/src/components/customTDP.tsx +++ b/src/components/customTDP.tsx @@ -19,7 +19,7 @@ export const CustomTDPComponent: VFC = () => { }; useEffect(() => { - PluginManager.listenUpdateComponent(ComponentName.CUSTOM_TDP, [ComponentName.CUSTOM_TDP], (_ComponentName, updateType: string) => { + PluginManager.listenUpdateComponent(ComponentName.CUSTOM_TDP, [ComponentName.CPU_TDP,ComponentName.CUSTOM_TDP], (_ComponentName, updateType: string) => { switch (updateType) { case UpdateType.UPDATE: refresh(); diff --git a/src/i18n/english.json b/src/i18n/english.json index 90403ce..5bfd021 100755 --- a/src/i18n/english.json +++ b/src/i18n/english.json @@ -60,5 +60,7 @@ "FIXED_FREQ_DESC": "Fixed GPU frequency", "RANGE_FREQ_DESC": "Set GPU frequency range", "AUTO_FREQ_DESC": "Adaptive GPU frequency, forcibly disabled TDP limit, disabled Boost", - "AUTO_FREQ_TDP_NOTIF": "GPU mode {{mode}}, TDP limit disabled" + "AUTO_FREQ_TDP_NOTIF": "GPU mode {{mode}}, TDP limit disabled", + "FORCE_SHOW_TDP": "Force Show TDP Control", + "FORCE_SHOW_TDP_DESC": "By default, the plugin will process the native TDP slider. If there is an issue with the native slider, enable this option to use the plugin's internal TDP control" } \ No newline at end of file diff --git a/src/i18n/localizeMap.ts b/src/i18n/localizeMap.ts index f25b1b7..9775c6e 100755 --- a/src/i18n/localizeMap.ts +++ b/src/i18n/localizeMap.ts @@ -151,5 +151,8 @@ export enum localizeStrEnum { FIXED_FREQ_DESC = "FIXED_FREQ_DESC", RANGE_FREQ_DESC = "RANGE_FREQ_DESC", AUTO_FREQ_DESC = "AUTO_FREQ_DESC", - AUTO_FREQ_TDP_NOTIF = "AUTO_FREQ_TDP_NOTIF" + AUTO_FREQ_TDP_NOTIF = "AUTO_FREQ_TDP_NOTIF", + + FORCE_SHOW_TDP = "FORCE_SHOW_TDP", + FORCE_SHOW_TDP_DESC = "FORCE_SHOW_TDP_DESC" } diff --git a/src/i18n/schinese.json b/src/i18n/schinese.json index 170b4d3..060b7cf 100755 --- a/src/i18n/schinese.json +++ b/src/i18n/schinese.json @@ -60,5 +60,7 @@ "FIXED_FREQ_DESC": "固定 GPU 频率", "RANGE_FREQ_DESC": "设置 GPU 频率范围", "AUTO_FREQ_DESC": "自适应 GPU 频率, 强制关闭 TDP 限制, 关闭 Boost", - "AUTO_FREQ_TDP_NOTIF": "GPU 模式为{{mode}}, 关闭 TDP 限制" + "AUTO_FREQ_TDP_NOTIF": "GPU 模式为{{mode}}, 关闭 TDP 限制", + "FORCE_SHOW_TDP": "强制显示 TDP 控制", + "FORCE_SHOW_TDP_DESC": "默认情况下插件会对原生 TDP 滑动条进行处理, 如果原生滑动条异常, 打开此项使用插件内 TDP 控制" } \ No newline at end of file diff --git a/src/i18n/tchinese.json b/src/i18n/tchinese.json index bfd7da1..53eb5dd 100755 --- a/src/i18n/tchinese.json +++ b/src/i18n/tchinese.json @@ -60,5 +60,7 @@ "FIXED_FREQ_DESC": "固定 GPU 頻率", "RANGE_FREQ_DESC": "設定 GPU 頻率範圍", "AUTO_FREQ_DESC": "自適應 GPU 頻率,強制關閉 TDP 限制,關閉 Boost", - "AUTO_FREQ_TDP_NOTIF": "GPU 模式为{{mode}}, 關閉 TDP 限制" + "AUTO_FREQ_TDP_NOTIF": "GPU 模式为{{mode}}, 關閉 TDP 限制", + "FORCE_SHOW_TDP": "強制顯示 TDP 控制", + "FORCE_SHOW_TDP_DESC": "默認情況下, 插件將處理原生 TDP 滑塊。如果原生滑塊出現問題, 請啟用此選項以使用插件內部的 TDP 控制" } \ No newline at end of file From 82255863e0e4a358031d790497f1b30b4b5dd1cb Mon Sep 17 00:00:00 2001 From: honjow Date: Tue, 16 Apr 2024 05:48:09 +0800 Subject: [PATCH 2/3] save ForceShowTDP to store --- src/components/cpu.tsx | 6 ++++-- src/util/backend.ts | 2 +- src/util/settings.ts | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/components/cpu.tsx b/src/components/cpu.tsx index 10511ea..446f8d8 100755 --- a/src/components/cpu.tsx +++ b/src/components/cpu.tsx @@ -117,7 +117,7 @@ const CPUTDPComponent: VFC = () => { const [tdpEnable, setTDPEnable] = useState(Settings.appTDPEnable()); const [tdp, setTDP] = useState(Settings.appTDP()); const [disabled, setDisable] = useState(Settings.appGPUMode() == GPUMODE.AUTO); - const [forceShow, setForceShow] = useState(false); + const [forceShow, setForceShow] = useState(Settings.appForceShowTDP()); const [enableCustomTDPRange, setEnableCustomTDPRange] = useState(Settings.appEnableCustomTDPRange()); const [customTDPRangeMax, setCustomTDPRangeMax] = useState(Settings.appCustomTDPRangeMax()); const [customTDPRangeMin, setCustomTDPRangeMin] = useState(Settings.appCustomTDPRangeMin()); @@ -128,6 +128,7 @@ const CPUTDPComponent: VFC = () => { setEnableCustomTDPRange(Settings.appEnableCustomTDPRange()); setCustomTDPRangeMax(Settings.appCustomTDPRangeMax()); setCustomTDPRangeMin(Settings.appCustomTDPRangeMin()); + setForceShow(Settings.appForceShowTDP()); }; useEffect(() => { PluginManager.listenUpdateComponent(ComponentName.CPU_TDP, [ComponentName.CPU_TDP, ComponentName.GPU_FREQMODE], (_ComponentName, updateType) => { @@ -147,7 +148,8 @@ const CPUTDPComponent: VFC = () => { description={localizationManager.getString(localizeStrEnum.FORCE_SHOW_TDP_DESC)} checked={forceShow || !PluginManager.isPatchSuccess(Patch.TDPPatch)} onChange={(value) => { - setForceShow(value); + // setForceShow(value); + Settings.setForceShowTDP(value); }} /> diff --git a/src/util/backend.ts b/src/util/backend.ts index 3bf190c..7d264c1 100755 --- a/src/util/backend.ts +++ b/src/util/backend.ts @@ -397,7 +397,7 @@ export class Backend { ? Math.min(customTDPRangeMax, Math.max(customTDPRangeMin, tdp)) : tdp; - if (!PluginManager.isPatchSuccess(Patch.TDPPatch)) { + if (!PluginManager.isPatchSuccess(Patch.TDPPatch) || Settings.appForceShowTDP()) { // console.log( // `>>>>> 插件方式更新 TDP = ${_tdp} TDPEnable = ${tdpEnable}` // ); diff --git a/src/util/settings.ts b/src/util/settings.ts index e2722ac..0429398 100755 --- a/src/util/settings.ts +++ b/src/util/settings.ts @@ -165,6 +165,9 @@ export class SettingsData { @JsonProperty() public customTDPRangeMin: number; + @JsonProperty() + public forceShowTDP: boolean = false; + @JsonProperty({ isDictionary: true, type: AppSettingData }) public perApp: { [appId: string]: AppSettingData } = {}; @@ -314,6 +317,18 @@ export class Settings { } } + static appForceShowTDP(): boolean { + return this._instance.data.forceShowTDP; + } + + static setForceShowTDP(forceShowTDP: boolean) { + if (this._instance.data.forceShowTDP != forceShowTDP) { + this._instance.data.forceShowTDP = forceShowTDP; + Settings.saveSettingsToLocalStorage(); + PluginManager.updateComponent(ComponentName.CPU_TDP, UpdateType.UPDATE); + } + } + static appACStateOverWrite(): boolean { return ( this._instance.data.perApp[Settings.ensureAppID()].acStateOverwrite ?? From df71ca18867d903d17f2bdc77dac58c602a8f12d Mon Sep 17 00:00:00 2001 From: honjow Date: Tue, 16 Apr 2024 06:07:02 +0800 Subject: [PATCH 3/3] sync slider --- src/util/backend.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/util/backend.ts b/src/util/backend.ts index 7d264c1..1a36f54 100755 --- a/src/util/backend.ts +++ b/src/util/backend.ts @@ -406,6 +406,16 @@ export class Backend { } else { Backend.applyTDP(Backend.data.getTDPMax()); } + if (Settings.appForceShowTDP()) { + try { + QAMPatch.setTDPEanble(tdpEnable); + if (tdpEnable) { + QAMPatch.setTDP(_tdp); + } + } catch (error) { + console.error(`>>>>> 强制显示 TDP 时设置QAM失败`, error); + } + } } else { // console.log( // `>>>>> 原生设置更新 TDP = ${_tdp} TDPEnable = ${tdpEnable}`