@@ -72,6 +72,7 @@ static class Program {
7272 static ToolStripMenuItem pchSensorMenu ;
7373 static ToolStripMenuItem vrSensorMenu ;
7474 static ToolStripMenuItem adapterPowerMenu ;
75+
7576 static bool isSysInfoMenuOpen = false ;
7677 static int ? maxCPUTemp = null ;
7778 static int maxGPUTemp = 87 ;
@@ -183,29 +184,6 @@ static void Main(string[] args) {
183184 //trayIcon.BalloonTipIcon = ToolTipIcon.Warning;
184185 //trayIcon.ShowBalloonTip(3000);
185186
186- // 读取当前模式
187- //GraphicsMode current = GetGfxMode();
188- //Console.WriteLine($"当前显卡模式:{current}");
189-
190- // 设置
191- //NvidiaAPI_SYS_UIControl(false);
192-
193- // 检查支持的模式
194- byte supported = GetSupportedGfxModes ( ) ;
195- bool nvddsSupported = ( supported & 0x08 ) != 0 ; // SupportMode_DDS = 8
196- Console . WriteLine ( $ "NVIDIA DDS 支持: { nvddsSupported } ") ;
197-
198- if ( AmdGpuSwitcher . IsSupported ( ) ) {
199- var current = AmdGpuSwitcher . GetMode ( ) ;
200- Console . WriteLine ( $ "当前模式: { ( current == AmdGpuSwitcher . LocalADLSmartMuxEnableState . ADL_MUXCONTROL_ENABLED ? "独显直连" : "混合输出" ) } ") ;
201-
202- // 切换到独显直连
203- //AmdGpuSwitcher.SetMode(AmdGpuSwitcher.LocalADLSmartMuxEnableState.ADL_MUXCONTROL_ENABLED);
204- //Console.WriteLine("已切换");
205- } else {
206- Console . WriteLine ( "该设备不支持 AMD SmartAccess Graphics" ) ;
207- }
208-
209187 Application . Run ( ) ;
210188 }
211189 }
@@ -908,21 +886,42 @@ static void InitTrayIcon() {
908886 RestoreCPUPower ( ) ;
909887 } , false ) ) ;
910888 performanceControlMenu . DropDownItems . Add ( new ToolStripSeparator ( ) ) ; // Separator between groups
911- performanceControlMenu . DropDownItems . Add ( CreateMenuItem ( "最大GPU功率" , "gpuPowerGroup" , ( s , e ) => {
912- gpuPower = "max" ;
913- SetMaxGpuPower ( ) ;
914- SaveConfig ( "GpuPower" ) ;
915- } , true ) ) ;
916- performanceControlMenu . DropDownItems . Add ( CreateMenuItem ( "中等GPU功率" , "gpuPowerGroup" , ( s , e ) => {
917- gpuPower = "med" ;
918- SetMedGpuPower ( ) ;
919- SaveConfig ( "GpuPower" ) ;
920- } , false ) ) ;
921- performanceControlMenu . DropDownItems . Add ( CreateMenuItem ( "最小GPU功率" , "gpuPowerGroup" , ( s , e ) => {
922- gpuPower = "min" ;
923- SetMinGpuPower ( ) ;
924- SaveConfig ( "GpuPower" ) ;
925- } , false ) ) ;
889+ // 图形模式
890+ ToolStripMenuItem graphicsModeControlMenu = new ToolStripMenuItem ( "图形模式" ) ;
891+ if ( HasAmdGpu ( ) ) {
892+ var initAmdMode = AmdGpuSwitcher . GetMode ( ) ;
893+ bool amdIsDiscrete = initAmdMode == AmdGpuSwitcher . LocalADLSmartMuxEnableState . ADL_MUXCONTROL_ENABLED ;
894+ graphicsModeControlMenu . DropDownItems . Add ( CreateMenuItem ( "独显直连" , "graphicsModeGroup" , ( s , e ) => {
895+ AmdGpuSwitcher . SetMode ( AmdGpuSwitcher . LocalADLSmartMuxEnableState . ADL_MUXCONTROL_ENABLED ) ;
896+ } , amdIsDiscrete ) ) ;
897+ graphicsModeControlMenu . DropDownItems . Add ( CreateMenuItem ( "混合输出" , "graphicsModeGroup" , ( s , e ) => {
898+ AmdGpuSwitcher . SetMode ( AmdGpuSwitcher . LocalADLSmartMuxEnableState . ADL_MUXCONTROL_DISABLED ) ;
899+ } , ! amdIsDiscrete ) ) ;
900+ } else {
901+ var initNvMode = GetGfxMode ( ) ;
902+ graphicsModeControlMenu . DropDownItems . Add ( CreateMenuItem ( "NV动态切换" , "graphicsModeGroup" , ( s , e ) => {
903+ LaunchDDS ( ) ;
904+ } , initNvMode == GraphicsMode . Hybrid ) ) ;
905+ graphicsModeControlMenu . DropDownItems . Add ( CreateMenuItem ( "独显直连" , "graphicsModeGroup" , ( s , e ) => {
906+ LaunchDDS ( ) ;
907+ } , initNvMode == GraphicsMode . Discrete ) ) ;
908+ }
909+ performanceControlMenu . DropDownItems . Add ( graphicsModeControlMenu ) ;
910+ graphicsModeControlMenu . DropDownOpening += ( s , e ) => {
911+ if ( HasAmdGpu ( ) ) {
912+ var amdMode = AmdGpuSwitcher . GetMode ( ) ;
913+ bool isDisc = amdMode == AmdGpuSwitcher . LocalADLSmartMuxEnableState . ADL_MUXCONTROL_ENABLED ;
914+ UpdateCheckedState ( "graphicsModeGroup" , isDisc ? "独显直连" : "混合输出" ) ;
915+ } else {
916+ var nvMode = GetGfxMode ( ) ;
917+ string chk ;
918+ switch ( nvMode ) {
919+ case GraphicsMode . Discrete : chk = "独显直连" ; break ;
920+ default : chk = "NV动态切换" ; break ;
921+ }
922+ UpdateCheckedState ( "graphicsModeGroup" , chk ) ;
923+ }
924+ } ;
926925 performanceControlMenu . DropDownItems . Add ( new ToolStripSeparator ( ) ) ; // Separator between groups
927926 ToolStripMenuItem DBMenu = new ToolStripMenuItem ( "切换DB版本" ) ;
928927 DBMenu . DropDownItems . Add ( CreateMenuItem ( "解锁版本" , "DBGroup" , ( s , e ) => {
@@ -1070,6 +1069,23 @@ static void InitTrayIcon() {
10701069 } , false ) ) ;
10711070 }
10721071 performanceControlMenu . DropDownItems . Add ( cpuPowerMenu ) ;
1072+ ToolStripMenuItem gpuPowerMenu = new ToolStripMenuItem ( "GPU功率" ) ;
1073+ gpuPowerMenu . DropDownItems . Add ( CreateMenuItem ( "最大" , "gpuPowerGroup" , ( s , e ) => {
1074+ gpuPower = "max" ;
1075+ SetMaxGpuPower ( ) ;
1076+ SaveConfig ( "GpuPower" ) ;
1077+ } , true ) ) ;
1078+ gpuPowerMenu . DropDownItems . Add ( CreateMenuItem ( "中等" , "gpuPowerGroup" , ( s , e ) => {
1079+ gpuPower = "med" ;
1080+ SetMedGpuPower ( ) ;
1081+ SaveConfig ( "GpuPower" ) ;
1082+ } , false ) ) ;
1083+ gpuPowerMenu . DropDownItems . Add ( CreateMenuItem ( "最小" , "gpuPowerGroup" , ( s , e ) => {
1084+ gpuPower = "min" ;
1085+ SetMinGpuPower ( ) ;
1086+ SaveConfig ( "GpuPower" ) ;
1087+ } , false ) ) ;
1088+ performanceControlMenu . DropDownItems . Add ( gpuPowerMenu ) ;
10731089 ToolStripMenuItem gpuClockMenu = new ToolStripMenuItem ( "GPU频率限制" ) ;
10741090 gpuClockMenu . DropDownItems . Add ( CreateMenuItem ( "还原" , "gpuClockGroup" , ( s , e ) => {
10751091 gpuClock = 0 ;
@@ -1123,8 +1139,8 @@ static void InitTrayIcon() {
11231139 SaveConfig ( "MonitorCPU" ) ;
11241140 } , true ) ) ;
11251141 monitorCPUMenu . DropDownItems . Add ( CreateMenuItem ( "关闭CPU监控" , "monitorCPUGroup" , ( s , e ) => {
1126- // 自动转速模式下禁止关闭监控
1127- if ( fanControl == "auto" ) {
1142+ // 自动转速模式下禁止彻底关闭监控
1143+ if ( ! monitorGPU && fanControl == "auto" ) {
11281144 MessageBox . Show ( "当前为自动转速模式,若要关闭监控需切换为其他转速控制模式。" , "提示" , MessageBoxButtons . OK , MessageBoxIcon . Warning ) ;
11291145 UpdateCheckedState ( "monitorCPUGroup" , monitorCPU ? "开启CPU监控" : "关闭CPU监控" ) ;
11301146 return ;
@@ -1167,8 +1183,8 @@ static void InitTrayIcon() {
11671183 SaveConfig ( "MonitorGPU" ) ;
11681184 } , true ) ) ;
11691185 monitorGPUMenu . DropDownItems . Add ( CreateMenuItem ( "关闭GPU监控" , "monitorGPUGroup" , ( s , e ) => {
1170- // 自动转速模式下禁止关闭监控
1171- if ( fanControl == "auto" ) {
1186+ // 自动转速模式下禁止彻底关闭监控
1187+ if ( ! monitorCPU && fanControl == "auto" ) {
11721188 MessageBox . Show ( "当前为自动转速模式,若要关闭监控需切换为其他转速控制模式。" , "提示" , MessageBoxButtons . OK , MessageBoxIcon . Warning ) ;
11731189 UpdateCheckedState ( "monitorGPUGroup" , monitorGPU ? "开启GPU监控" : "关闭GPU监控" ) ;
11741190 return ;
@@ -2634,15 +2650,15 @@ static void RestoreConfig() {
26342650 switch ( gpuPower ) {
26352651 case "max" :
26362652 SetMaxGpuPower ( ) ;
2637- UpdateCheckedState ( "gpuPowerGroup" , "最大GPU功率 " ) ;
2653+ UpdateCheckedState ( "gpuPowerGroup" , "最大 " ) ;
26382654 break ;
26392655 case "med" :
26402656 SetMedGpuPower ( ) ;
2641- UpdateCheckedState ( "gpuPowerGroup" , "中等GPU功率 " ) ;
2657+ UpdateCheckedState ( "gpuPowerGroup" , "中等 " ) ;
26422658 break ;
26432659 case "min" :
26442660 SetMinGpuPower ( ) ;
2645- UpdateCheckedState ( "gpuPowerGroup" , "最小GPU功率 " ) ;
2661+ UpdateCheckedState ( "gpuPowerGroup" , "最小 " ) ;
26462662 break ;
26472663 }
26482664
0 commit comments