Compare commits

...

33 Commits
v0.54 ... v0.58

Author SHA1 Message Date
Serge
479572e39d Startup admin restarter 2023-05-07 00:24:47 +02:00
Serge
460267aac7 GPU overclocking fixes 2023-05-07 00:14:26 +02:00
Serge
e71c8e32ef GPU boost / temp limits control 2023-05-06 19:12:50 +02:00
Serge
6fe6492df3 GPU clocks tweaks 2023-05-06 18:17:37 +02:00
Serge
c61f4d1608 Experimental GPU overclock 2023-05-06 14:40:52 +02:00
Serge
8e1099545a Overdrive fix 2023-05-05 12:35:55 +02:00
Serge
7740678cd4 Added on/off control for aura lightbar, lid and logo 2023-05-05 11:44:33 +02:00
Serge
c6faec9628 Merge branch 'main' of https://github.com/seerge/g-helper 2023-05-04 13:55:50 +02:00
Serge
3a5c4de9b6 Context menu 2023-05-04 13:55:49 +02:00
Serge
f90fec24b9 Update README.md 2023-05-03 19:56:58 +02:00
Serge
240537dbd4 Merge pull request #315 from marcelomijas/main
Added Spanish translation for new options
2023-05-03 19:56:17 +02:00
Marcelo Moreno
cc3c16cdf1 Added Spanish translation for new options
Added Spanish translation for the new options:
- dGPU off in Optimized mode when on USB-charger.
- Minilled related options.
2023-05-03 19:19:17 +02:00
Serge
a7c662a0d4 Merge branch 'main' of https://github.com/seerge/g-helper 2023-05-03 18:18:44 +02:00
Serge
b0958cb2fc Translations fix 2023-05-03 18:18:42 +02:00
Serge
29f27ed4d6 Update README.md 2023-05-03 18:07:31 +02:00
Serge
801096299b Anime matrix tweaks 2023-05-03 17:53:21 +02:00
Serge
5ed1de0fcf Added option to keep dGPU off on usb-c 2023-05-03 16:49:12 +02:00
Serge
0ec0a382e9 Merge 2023-05-01 15:13:15 +02:00
Serge
e810adb358 Added Screen Toggle feature for M3 button 2023-05-01 15:12:08 +02:00
Serge
dc6c94fe4a Merge pull request #305 from sklynic/main
Minor update of zh-CN translation
2023-05-01 12:04:24 +02:00
sklynic
8479c129ff Update translation of zh-CN 2023-05-01 17:58:47 +08:00
Serge
3173c2e688 Merge branch 'main' of https://github.com/seerge/g-helper 2023-04-27 10:14:15 +02:00
Serge
730ba0a2f9 Matrix logging 2023-04-27 10:14:13 +02:00
Serge
d26a83287d Update README.md 2023-04-22 22:42:11 +02:00
Serge
47deb669d1 UI tweaks 2023-04-22 00:09:22 +02:00
Serge
a30f5d801b UI tweaks 2023-04-21 23:32:02 +02:00
Serge
75f4b9f2c5 Update README.md 2023-04-21 16:19:26 +02:00
Serge
2289f36ba5 Create FUNDING.yml 2023-04-21 16:13:27 +02:00
Serge
6322e25e78 Merge pull request #279 from marcelomijas/main
Spanish translation fix for v0.55
2023-04-21 15:01:10 +02:00
seerge
62c0147548 - 2023-04-21 14:59:19 +02:00
seerge
9bd2688da2 UI tweaks 2023-04-21 14:59:06 +02:00
Marcelo Moreno
9649814085 Add files via upload 2023-04-21 14:46:03 +02:00
seerge
1ebc2021f6 KB Brightness control for TUF models 2023-04-20 14:53:37 +02:00
527 changed files with 48267 additions and 518 deletions

13
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA

View File

@@ -14,6 +14,11 @@ public class ASUSWmi
public const int KB_Light_Up = 0xc4;
public const int KB_Light_Down = 0xc5;
public const int ChargerMode = 0x0012006C;
public const int ChargerUSB = 2;
public const int ChargerBarrel = 1;
public const uint CPU_Fan = 0x00110013;
public const uint GPU_Fan = 0x00110014;
public const uint Mid_Fan = 0x00110031;
@@ -44,10 +49,11 @@ public class ASUSWmi
public const int PPT_CPUB0 = 0x001200B0; // CPU PPT on 2022 (PPT_LIMIT_APU)
public const int PPT_CPUB1 = 0x001200B1; // Total PPT on 2022 (PPT_LIMIT_SLOW)
public const int PPT_APUC0 = 0x001200C0; // does nothing on G14 2022
public const int PPT_GPUC0 = 0x001200C0; // NVIDIA GPU Boost
public const int PPT_APUC1 = 0x001200C1; // Actual Power Limit (PPT_LIMIT_FAST) AND Sustained Power Limit (STAPM_LIMIT)
public const int PPT_APUC2 = 0x001200C2; // does nothing on G14 2022
public const int PPT_GPUC2 = 0x001200C2; // NVIDIA GPU Temp Target (75.. 87 C)
public const int TUF_KB_BRIGHTNESS = 0x00050021;
public const int TUF_KB = 0x00100056;
public const int TUF_KB_STATE = 0x00100057;
@@ -68,6 +74,12 @@ public class ASUSWmi
public const int MinCPU = 5;
public const int DefaultCPU = 80;
public const int MinGPUBoost = 5;
public const int MaxGPUBoost = 25;
public const int MinGPUTemp = 75;
public const int MaxGPUTemp = 87;
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern IntPtr CreateFile(
@@ -260,6 +272,12 @@ public class ASUSWmi
}
public void TUFKeyboardBrightness(int brightness)
{
int param = 0x80 | (brightness & 0x7F);
DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness");
}
public void TUFKeyboardRGB(int mode, Color color, int speed)
{
@@ -309,4 +327,5 @@ public class ASUSWmi
}
}
}

View File

@@ -1,11 +1,10 @@
// Source thanks to https://github.com/vddCore/Starlight with some adjustments from me
using Starlight.Communication;
using System.Management;
using System.Drawing.Drawing2D;
using System.Text;
using System.Globalization;
using System;
using System.Management;
using System.Text;
namespace Starlight.AnimeMatrix
{
@@ -107,9 +106,6 @@ namespace Starlight.AnimeMatrix
MaxColumns = 33;
dx = 1;
//FullRows = 7;
//FullEvenRows = 3;
MaxRows = 55;
LedCount = 1245;
@@ -177,17 +173,8 @@ namespace Starlight.AnimeMatrix
{
return (y + 1) / 2 - 3;
}
case AnimeType.GA402:
if (y < 11)
{
return 0;
}
else
{
return (y) / 2 - 5;
}
default:
throw new ArgumentException("Invalid anime type", nameof(_model));
return (int)Math.Ceiling(Math.Max(0, y - 11) / 2F);
}
}
@@ -197,10 +184,8 @@ namespace Starlight.AnimeMatrix
{
case AnimeType.GA401:
return 33;
case AnimeType.GA402:
return 34;
default:
throw new ArgumentException("Invalid anime type", nameof(_model));
return 34;
}
}
@@ -221,36 +206,15 @@ namespace Starlight.AnimeMatrix
default:
return 36 - y / 2;
}
case AnimeType.GA402:
return Width(y) - FirstX(y);
default:
throw new ArgumentException("Invalid anime type", nameof(_model));
return Width(y) - FirstX(y);
}
}
/*
public int XStart(int row)
{
return (int)Math.Ceiling(Math.Max(0, row - FullRows) / 2.0);
}
public int XEnd(int row)
{
if (row <= FullEvenRows)
{
if (row % 2 == 1) return MaxColumns + 2;
else return MaxColumns;
}
return MaxColumns;
}
*/
public int RowToLinearAddress(int y)
{
EnsureRowInRange(y);
int ret = 0;
for (var i = 0; i < y; i++)
ret += Pitch(i);
@@ -259,13 +223,10 @@ namespace Starlight.AnimeMatrix
public void SetLedPlanar(int x, int y, byte value)
{
EnsureRowInRange(y);
if (!IsRowInRange(y)) return;
if (x >= FirstX(y) && x < Width(y))
{
SetLedLinear(RowToLinearAddress(y) - FirstX(y) + x + dx, value);
//Debug.Write((RowToLinearAddress(y) - FirstX(y) + x + dx).ToString() + " ");
}
}
public void WakeUp()
@@ -366,9 +327,9 @@ namespace Starlight.AnimeMatrix
int second = DateTime.Now.Second;
if (CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern.Contains("H"))
PresentText(DateTime.Now.ToString("H" + ((second % 2 == 0)?":":" ") + "mm"));
PresentTextDiagonal(DateTime.Now.ToString("H" + ((second % 2 == 0) ? ":" : " ") + "mm"));
else
PresentText(DateTime.Now.ToString("h" + ((second % 2 == 0) ? ":" : " ") + "mm"), DateTime.Now.ToString("tt"));
PresentTextDiagonal(DateTime.Now.ToString("h" + ((second % 2 == 0) ? ":" : " ") + "mmtt"));
}
public void PresentText(string text1, string text2 = "")
@@ -383,14 +344,14 @@ namespace Starlight.AnimeMatrix
using (Font font = new Font("Arial", 24F, GraphicsUnit.Pixel))
{
SizeF textSize = g.MeasureString(text1, font);
g.DrawString(text1, font, Brushes.White, (MaxColumns*3 - textSize.Width)+3, -3);
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -3);
}
if (text2.Length > 0)
using (Font font = new Font("Arial", 18F, GraphicsUnit.Pixel))
{
SizeF textSize = g.MeasureString(text2, font);
g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width)+1, 25);
g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 1, 25);
}
}
@@ -404,7 +365,7 @@ namespace Starlight.AnimeMatrix
public void GenerateFrame(Image image, InterpolationMode interpolation = InterpolationMode.High)
{
int width = MaxColumns/2 * 6;
int width = MaxColumns / 2 * 6;
int height = MaxRows;
int targetWidth = MaxColumns * 2;
@@ -431,7 +392,7 @@ namespace Starlight.AnimeMatrix
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
if (x % 2 == (y+dx) % 2)
if (x % 2 == (y + dx) % 2)
{
var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3;
@@ -442,12 +403,55 @@ namespace Starlight.AnimeMatrix
}
}
private void EnsureRowInRange(int row)
public void SetLedDiagonal(int x, int y, byte color, int delta = 10)
{
if (row < 0 || row >= MaxRows)
//x+=delta;
y -= delta;
int dx = (x - y) / 2;
int dy = x + y;
SetLedPlanar(dx, dy, color);
}
public void PresentTextDiagonal(string text)
{
Clear();
int maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
using (Bitmap bmp = new Bitmap(maxX, MaxRows))
{
throw new IndexOutOfRangeException($"Y-coordinate should fall in range of [0, {MaxRows - 1}].");
using (Graphics g = Graphics.FromImage(bmp))
{
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.AntiAlias;
using (Font font = new Font("Calibri", 14F, GraphicsUnit.Pixel))
{
SizeF textSize = g.MeasureString(text, font);
g.DrawString(text, font, Brushes.White, 4, 0);
}
}
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
{
var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3;
SetLedDiagonal(x, y, (byte)color);
}
}
}
Present();
}
private bool IsRowInRange(int row)
{
return (row >= 0 && row < MaxRows);
}
private bool IsAddressableLed(int address)

View File

@@ -1,5 +1,6 @@
using HidLibrary;
using System.Diagnostics;
using static Starlight.AnimeMatrix.BuiltInAnimation;
namespace GHelper
{
@@ -195,6 +196,9 @@ namespace GHelper
}
Logger.WriteLine("USB-KB = " + BitConverter.ToString(msg));
if (Program.config.ContainsModel("TUF"))
Program.wmi.TUFKeyboardBrightness(brightness);
}
@@ -204,10 +208,37 @@ namespace GHelper
List<AuraDev19b6> flags = new List<AuraDev19b6>();
if (awake) flags.Add(AuraDev19b6.AwakeKeyb);
if (boot) flags.Add(AuraDev19b6.BootKeyb);
if (sleep) flags.Add(AuraDev19b6.SleepKeyb);
if (shutdown) flags.Add(AuraDev19b6.ShutdownKeyb);
if (awake)
{
flags.Add(AuraDev19b6.AwakeKeyb);
flags.Add(AuraDev19b6.AwakeBar);
flags.Add(AuraDev19b6.AwakeLid);
flags.Add(AuraDev19b6.AwakeLogo);
}
if (boot)
{
flags.Add(AuraDev19b6.BootKeyb);
flags.Add(AuraDev19b6.BootBar);
flags.Add(AuraDev19b6.BootLid);
flags.Add(AuraDev19b6.BootLogo);
}
if (sleep)
{
flags.Add(AuraDev19b6.SleepKeyb);
flags.Add(AuraDev19b6.SleepBar);
flags.Add(AuraDev19b6.SleepLid);
flags.Add(AuraDev19b6.SleepLogo);
}
if (shutdown)
{
flags.Add(AuraDev19b6.ShutdownKeyb);
flags.Add(AuraDev19b6.ShutdownBar);
flags.Add(AuraDev19b6.ShutdownLid);
flags.Add(AuraDev19b6.ShutdownLogo);
}
byte[] msg = AuraDev19b6Extensions.ToBytes(flags.ToArray());

View File

@@ -1,7 +1,7 @@
using CustomControls;
using WinFormsSliderBar;
using System.Drawing.Drawing2D;
using System.Windows.Forms.DataVisualization.Charting;
using WinFormsSliderBar;
public static class ControlHelper
{
@@ -86,7 +86,7 @@ public static class ControlHelper
}
var sl = control as Slider;
if (sl != null)
if (sl != null)
{
sl.borderColor = RForm.buttonMain;
}

35
app/CustomContextMenu.cs Normal file
View File

@@ -0,0 +1,35 @@
using System.Runtime.InteropServices;
namespace GHelper
{
class CustomContextMenu : ContextMenuStrip
{
[DllImport("dwmapi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern long DwmSetWindowAttribute(IntPtr hwnd,
DWMWINDOWATTRIBUTE attribute,
ref DWM_WINDOW_CORNER_PREFERENCE pvAttribute,
uint cbAttribute);
public CustomContextMenu()
{
var preference = DWM_WINDOW_CORNER_PREFERENCE.DWMWCP_ROUNDSMALL; //change as you want
DwmSetWindowAttribute(Handle,
DWMWINDOWATTRIBUTE.DWMWA_WINDOW_CORNER_PREFERENCE,
ref preference,
sizeof(uint));
}
public enum DWMWINDOWATTRIBUTE
{
DWMWA_WINDOW_CORNER_PREFERENCE = 33
}
public enum DWM_WINDOW_CORNER_PREFERENCE
{
DWMWA_DEFAULT = 0,
DWMWCP_DONOTROUND = 1,
DWMWCP_ROUND = 2,
DWMWCP_ROUNDSMALL = 3,
}
}
}

View File

@@ -30,6 +30,11 @@ namespace CustomControls
public bool darkTheme = false;
public RForm()
{
DoubleBuffered = true;
}
public static void InitColors(bool darkTheme)
{
if (darkTheme)
@@ -97,7 +102,7 @@ namespace CustomControls
}
public class RComboBox : ComboBox
public class RComboBox : ComboBox
{
private Color borderColor = Color.Gray;
[DefaultValue(typeof(Color), "Gray")]
@@ -332,8 +337,9 @@ namespace CustomControls
public RButton()
{
this.FlatStyle = FlatStyle.Flat;
this.FlatAppearance.BorderSize = 0;
DoubleBuffered = true;
FlatStyle = FlatStyle.Flat;
FlatAppearance.BorderSize = 0;
}
private GraphicsPath GetFigurePath(Rectangle rect, int radius)

View File

@@ -1,8 +1,9 @@
using CustomControls;
using GHelper.Properties;
namespace GHelper
{
partial class Keyboard
partial class Extra
{
/// <summary>
/// Required designer variable.
@@ -30,7 +31,8 @@ namespace GHelper
/// </summary>
private void InitializeComponent()
{
groupBox1 = new GroupBox();
groupBindings = new GroupBox();
pictureHelp = new PictureBox();
textFNF4 = new TextBox();
comboFNF4 = new RComboBox();
labelFNF4 = new Label();
@@ -41,6 +43,8 @@ namespace GHelper
comboM3 = new RComboBox();
labelM3 = new Label();
groupLight = new GroupBox();
labelBrightness = new Label();
trackBrightness = new TrackBar();
labelSpeed = new Label();
comboKeyboardSpeed = new RComboBox();
checkShutdown = new CheckBox();
@@ -48,35 +52,47 @@ namespace GHelper
checkBoot = new CheckBox();
checkAwake = new CheckBox();
groupOther = new GroupBox();
checkUSBC = new CheckBox();
checkNoOverdrive = new CheckBox();
checkKeyboardAuto = new CheckBox();
checkTopmost = new CheckBox();
pictureHelp = new PictureBox();
groupBox1.SuspendLayout();
groupLight.SuspendLayout();
groupOther.SuspendLayout();
groupBindings.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
groupLight.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackBrightness).BeginInit();
groupOther.SuspendLayout();
SuspendLayout();
//
// groupBox1
// groupBindings
//
groupBox1.Controls.Add(pictureHelp);
groupBox1.Controls.Add(textFNF4);
groupBox1.Controls.Add(comboFNF4);
groupBox1.Controls.Add(labelFNF4);
groupBox1.Controls.Add(textM4);
groupBox1.Controls.Add(textM3);
groupBox1.Controls.Add(comboM4);
groupBox1.Controls.Add(labelM4);
groupBox1.Controls.Add(comboM3);
groupBox1.Controls.Add(labelM3);
groupBox1.Dock = DockStyle.Top;
groupBox1.Location = new Point(10, 10);
groupBox1.Name = "groupBox1";
groupBox1.Size = new Size(810, 242);
groupBox1.TabIndex = 0;
groupBox1.TabStop = false;
groupBox1.Text = Properties.Strings.KeyBindings;
groupBindings.Controls.Add(pictureHelp);
groupBindings.Controls.Add(textFNF4);
groupBindings.Controls.Add(comboFNF4);
groupBindings.Controls.Add(labelFNF4);
groupBindings.Controls.Add(textM4);
groupBindings.Controls.Add(textM3);
groupBindings.Controls.Add(comboM4);
groupBindings.Controls.Add(labelM4);
groupBindings.Controls.Add(comboM3);
groupBindings.Controls.Add(labelM3);
groupBindings.Dock = DockStyle.Top;
groupBindings.Location = new Point(10, 10);
groupBindings.Name = "groupBindings";
groupBindings.Size = new Size(844, 242);
groupBindings.TabIndex = 0;
groupBindings.TabStop = false;
groupBindings.Text = "Key Bindings";
//
// pictureHelp
//
pictureHelp.BackgroundImage = Resources.icons8_help_64;
pictureHelp.BackgroundImageLayout = ImageLayout.Zoom;
pictureHelp.Cursor = Cursors.Hand;
pictureHelp.Location = new Point(744, 57);
pictureHelp.Name = "pictureHelp";
pictureHelp.Size = new Size(32, 32);
pictureHelp.TabIndex = 9;
pictureHelp.TabStop = false;
//
// textFNF4
//
@@ -88,12 +104,13 @@ namespace GHelper
//
// comboFNF4
//
comboFNF4.BorderColor = Color.White;
comboFNF4.ButtonColor = Color.FromArgb(255, 255, 255);
comboFNF4.FormattingEnabled = true;
comboFNF4.Location = new Point(93, 175);
comboFNF4.Name = "comboFNF4";
comboFNF4.Size = new Size(312, 40);
comboFNF4.TabIndex = 7;
comboFNF4.BorderColor = Color.White;
//
// labelFNF4
//
@@ -122,14 +139,14 @@ namespace GHelper
//
// comboM4
//
comboM4.BorderColor = Color.White;
comboM4.ButtonColor = Color.FromArgb(255, 255, 255);
comboM4.FormattingEnabled = true;
comboM4.Items.AddRange(new object[] { Properties.Strings.PerformanceMode, Properties.Strings.OpenGHelper, Properties.Strings.Custom });
comboM4.Items.AddRange(new object[] { Strings.PerformanceMode, Strings.OpenGHelper, Strings.Custom });
comboM4.Location = new Point(93, 112);
comboM4.Name = "comboM4";
comboM4.Size = new Size(312, 40);
comboM4.TabIndex = 3;
comboM4.BorderColor = Color.White;
//
// labelM4
//
@@ -142,14 +159,14 @@ namespace GHelper
//
// comboM3
//
comboM3.BorderColor = Color.White;
comboM3.ButtonColor = Color.FromArgb(255, 255, 255);
comboM3.FormattingEnabled = true;
comboM3.Items.AddRange(new object[] { Properties.Strings.Default, Properties.Strings.VolumeMute, Properties.Strings.PlayPause, Properties.Strings.PrintScreen, Properties.Strings.ToggleAura, Properties.Strings.Custom });
comboM3.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
comboM3.Location = new Point(93, 54);
comboM3.Name = "comboM3";
comboM3.Size = new Size(312, 40);
comboM3.TabIndex = 1;
comboM3.BorderColor = Color.White;
//
// labelM3
//
@@ -162,6 +179,8 @@ namespace GHelper
//
// groupLight
//
groupLight.Controls.Add(labelBrightness);
groupLight.Controls.Add(trackBrightness);
groupLight.Controls.Add(labelSpeed);
groupLight.Controls.Add(comboKeyboardSpeed);
groupLight.Controls.Add(checkShutdown);
@@ -171,20 +190,37 @@ namespace GHelper
groupLight.Dock = DockStyle.Top;
groupLight.Location = new Point(10, 252);
groupLight.Name = "groupLight";
groupLight.Size = new Size(810, 320);
groupLight.Size = new Size(844, 395);
groupLight.TabIndex = 1;
groupLight.TabStop = false;
groupLight.Text = Properties.Strings.KeyboardBacklight;
groupLight.Text = "Keyboard Backlight";
//
// labelBrightness
//
labelBrightness.Location = new Point(25, 304);
labelBrightness.Name = "labelBrightness";
labelBrightness.Size = new Size(197, 49);
labelBrightness.TabIndex = 0;
labelBrightness.Text = "Brightness";
//
// trackBrightness
//
trackBrightness.Location = new Point(228, 294);
trackBrightness.Maximum = 3;
trackBrightness.Name = "trackBrightness";
trackBrightness.Size = new Size(600, 90);
trackBrightness.TabIndex = 1;
trackBrightness.TickStyle = TickStyle.TopLeft;
//
// labelSpeed
//
labelSpeed.AutoSize = true;
labelSpeed.Location = new Point(25, 237);
labelSpeed.Location = new Point(25, 235);
labelSpeed.MaximumSize = new Size(200, 0);
labelSpeed.Name = "labelSpeed";
labelSpeed.Size = new Size(198, 32);
labelSpeed.TabIndex = 40;
labelSpeed.Text = Properties.Strings.AnimationSpeed;
labelSpeed.Text = "Animation Speed";
//
// comboKeyboardSpeed
//
@@ -195,7 +231,7 @@ namespace GHelper
comboKeyboardSpeed.FormattingEnabled = true;
comboKeyboardSpeed.ItemHeight = 32;
comboKeyboardSpeed.Items.AddRange(new object[] { "Slow", "Normal", "Fast" });
comboKeyboardSpeed.Location = new Point(230, 234);
comboKeyboardSpeed.Location = new Point(230, 232);
comboKeyboardSpeed.Margin = new Padding(4, 10, 4, 8);
comboKeyboardSpeed.Name = "comboKeyboardSpeed";
comboKeyboardSpeed.Size = new Size(291, 40);
@@ -209,7 +245,7 @@ namespace GHelper
checkShutdown.Name = "checkShutdown";
checkShutdown.Size = new Size(154, 36);
checkShutdown.TabIndex = 3;
checkShutdown.Text = Properties.Strings.Shutdown;
checkShutdown.Text = Strings.Shutdown;
checkShutdown.UseVisualStyleBackColor = true;
//
// checkSleep
@@ -219,7 +255,7 @@ namespace GHelper
checkSleep.Name = "checkSleep";
checkSleep.Size = new Size(105, 36);
checkSleep.TabIndex = 2;
checkSleep.Text = Properties.Strings.Sleep;
checkSleep.Text = Strings.Sleep;
checkSleep.UseVisualStyleBackColor = true;
//
// checkBoot
@@ -229,7 +265,7 @@ namespace GHelper
checkBoot.Name = "checkBoot";
checkBoot.Size = new Size(96, 36);
checkBoot.TabIndex = 1;
checkBoot.Text = Properties.Strings.Boot;
checkBoot.Text = Strings.Boot;
checkBoot.UseVisualStyleBackColor = true;
//
// checkAwake
@@ -239,21 +275,32 @@ namespace GHelper
checkAwake.Name = "checkAwake";
checkAwake.Size = new Size(115, 36);
checkAwake.TabIndex = 0;
checkAwake.Text = Properties.Strings.Awake;
checkAwake.Text = Strings.Awake;
checkAwake.UseVisualStyleBackColor = true;
//
// groupOther
//
groupOther.Controls.Add(checkUSBC);
groupOther.Controls.Add(checkNoOverdrive);
groupOther.Controls.Add(checkKeyboardAuto);
groupOther.Controls.Add(checkTopmost);
groupOther.Dock = DockStyle.Top;
groupOther.Location = new Point(10, 572);
groupOther.Location = new Point(10, 647);
groupOther.Name = "groupOther";
groupOther.Size = new Size(810, 225);
groupOther.Size = new Size(844, 293);
groupOther.TabIndex = 2;
groupOther.TabStop = false;
groupOther.Text = Properties.Strings.Other;
groupOther.Text = "Other";
//
// checkUSBC
//
checkUSBC.AutoSize = true;
checkUSBC.Location = new Point(25, 210);
checkUSBC.Name = "checkUSBC";
checkUSBC.Size = new Size(659, 36);
checkUSBC.TabIndex = 4;
checkUSBC.Text = "Keep GPU disabled on USB-C charger in Optimized mode";
checkUSBC.UseVisualStyleBackColor = true;
//
// checkNoOverdrive
//
@@ -262,19 +309,18 @@ namespace GHelper
checkNoOverdrive.Name = "checkNoOverdrive";
checkNoOverdrive.Size = new Size(307, 36);
checkNoOverdrive.TabIndex = 3;
checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
checkNoOverdrive.Text = Strings.DisableOverdrive;
checkNoOverdrive.UseVisualStyleBackColor = true;
//
// checkKeyboardAuto
//
checkKeyboardAuto.AutoEllipsis = true;
checkKeyboardAuto.AutoSize = true;
checkKeyboardAuto.Location = new Point(25, 51);
checkKeyboardAuto.MaximumSize = new Size(780, 0);
checkKeyboardAuto.Name = "checkKeyboardAuto";
checkKeyboardAuto.Size = new Size(712, 36);
checkKeyboardAuto.TabIndex = 2;
checkKeyboardAuto.Text = Properties.Strings.KeyboardAuto;
checkKeyboardAuto.Text = Strings.KeyboardAuto;
checkKeyboardAuto.UseVisualStyleBackColor = true;
//
// checkTopmost
@@ -284,50 +330,40 @@ namespace GHelper
checkTopmost.Name = "checkTopmost";
checkTopmost.Size = new Size(390, 36);
checkTopmost.TabIndex = 1;
checkTopmost.Text = Properties.Strings.WindowTop;
checkTopmost.Text = Strings.WindowTop;
checkTopmost.UseVisualStyleBackColor = true;
//
// pictureHelp
//
pictureHelp.BackgroundImageLayout = ImageLayout.Zoom;
pictureHelp.Cursor = Cursors.Hand;
pictureHelp.BackgroundImage = Properties.Resources.icons8_help_64;
pictureHelp.Location = new Point(744, 57);
pictureHelp.Name = "pictureHelp";
pictureHelp.Size = new Size(32, 32);
pictureHelp.TabIndex = 9;
pictureHelp.TabStop = false;
//
// Keyboard
// Extra
//
AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(830, 858);
ClientSize = new Size(864, 953);
Controls.Add(groupOther);
Controls.Add(groupLight);
Controls.Add(groupBox1);
Controls.Add(groupBindings);
FormBorderStyle = FormBorderStyle.FixedSingle;
MaximizeBox = false;
MdiChildrenMinimizedAnchorBottom = false;
MinimizeBox = false;
Name = "Keyboard";
Name = "Extra";
Padding = new Padding(10);
ShowIcon = false;
ShowInTaskbar = false;
Text = Properties.Strings.ExtraSettings;
groupBox1.ResumeLayout(false);
groupBox1.PerformLayout();
Text = "Extra Settings";
groupBindings.ResumeLayout(false);
groupBindings.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).EndInit();
groupLight.ResumeLayout(false);
groupLight.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackBrightness).EndInit();
groupOther.ResumeLayout(false);
groupOther.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).EndInit();
ResumeLayout(false);
}
#endregion
private GroupBox groupBox1;
private GroupBox groupBindings;
private Label labelM3;
private RComboBox comboM3;
private RComboBox comboM4;
@@ -349,5 +385,8 @@ namespace GHelper
private CheckBox checkKeyboardAuto;
private CheckBox checkNoOverdrive;
private PictureBox pictureHelp;
private TrackBar trackBrightness;
private Label labelBrightness;
private CheckBox checkUSBC;
}
}

View File

@@ -3,7 +3,7 @@ using System.Diagnostics;
namespace GHelper
{
public partial class Keyboard : RForm
public partial class Extra : RForm
{
Dictionary<string, string> customActions = new Dictionary<string, string>
@@ -13,14 +13,16 @@ namespace GHelper
{"screenshot", Properties.Strings.PrintScreen},
{"play", Properties.Strings.PlayPause},
{"aura", Properties.Strings.ToggleAura},
{"ghelper", Properties.Strings.OpenGHelper},
{"performance", Properties.Strings.PerformanceMode},
{"screen", Properties.Strings.ToggleScreen},
{"miniled", Properties.Strings.ToggleMiniled},
{"custom", Properties.Strings.Custom}
};
private void SetKeyCombo(ComboBox combo, TextBox txbox, string name)
{
if (name == "m4")
customActions[""] = Properties.Strings.PerformanceMode;
customActions[""] = Properties.Strings.OpenGHelper;
if (name == "fnf4")
{
@@ -51,9 +53,29 @@ namespace GHelper
};
}
public Keyboard()
public Extra()
{
InitializeComponent();
groupBindings.Text = Properties.Strings.KeyBindings;
groupLight.Text = Properties.Strings.KeyboardBacklight;
groupOther.Text = Properties.Strings.Other;
checkAwake.Text = Properties.Strings.Awake;
checkSleep.Text = Properties.Strings.Sleep;
checkBoot.Text = Properties.Strings.Boot;
checkShutdown.Text = Properties.Strings.Shutdown;
labelSpeed.Text = Properties.Strings.AnimationSpeed;
labelBrightness.Text = Properties.Strings.Brightness;
checkKeyboardAuto.Text = Properties.Strings.KeyboardAuto;
checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
checkTopmost.Text = Properties.Strings.WindowTop;
checkUSBC.Text = Properties.Strings.OptimizedUSBC;
Text = Properties.Strings.ExtraSettings;
InitTheme();
SetKeyCombo(comboM3, textM3, "m3");
@@ -88,8 +110,26 @@ namespace GHelper
checkNoOverdrive.Checked = (Program.config.getConfig("no_overdrive") == 1);
checkNoOverdrive.CheckedChanged += CheckNoOverdrive_CheckedChanged;
pictureHelp.Click += PictureHelp_Click;
checkUSBC.Checked = (Program.config.getConfig("optimized_usbc") == 1);
checkUSBC.CheckedChanged += CheckUSBC_CheckedChanged;
int kb_brightness = Program.config.getConfig("keyboard_brightness");
trackBrightness.Value = (kb_brightness >= 0 && kb_brightness <= 3) ? kb_brightness : 3;
pictureHelp.Click += PictureHelp_Click;
trackBrightness.Scroll += TrackBrightness_Scroll;
}
private void CheckUSBC_CheckedChanged(object? sender, EventArgs e)
{
Program.config.setConfig("optimized_usbc", (checkUSBC.Checked ? 1 : 0));
}
private void TrackBrightness_Scroll(object? sender, EventArgs e)
{
Program.config.setConfig("keyboard_brightness", trackBrightness.Value);
Aura.ApplyBrightness(trackBrightness.Value);
}
private void PictureHelp_Click(object? sender, EventArgs e)

642
app/Fans.Designer.cs generated
View File

@@ -31,13 +31,14 @@ namespace GHelper
/// </summary>
private void InitializeComponent()
{
ChartArea chartArea1 = new ChartArea();
Title title1 = new Title();
ChartArea chartArea2 = new ChartArea();
Title title2 = new Title();
ChartArea chartArea3 = new ChartArea();
Title title3 = new Title();
ChartArea chartArea13 = new ChartArea();
Title title13 = new Title();
ChartArea chartArea14 = new ChartArea();
Title title14 = new Title();
ChartArea chartArea15 = new ChartArea();
Title title15 = new Title();
panelFans = new Panel();
labelFansResult = new Label();
labelTip = new Label();
labelBoost = new Label();
comboBoost = new RComboBox();
@@ -49,34 +50,68 @@ namespace GHelper
labelFans = new Label();
checkApplyFans = new RCheckBox();
buttonReset = new RButton();
panelSliders = new Panel();
panelPower = new Panel();
pictureBox1 = new PictureBox();
labelPowerLimits = new Label();
panelApplyPower = new Panel();
checkApplyPower = new RCheckBox();
labelInfo = new Label();
panelCPU = new Panel();
labelCPU = new Label();
label2 = new Label();
trackCPU = new TrackBar();
panelTotal = new Panel();
labelTotal = new Label();
label1 = new Label();
labelPlatform = new Label();
trackTotal = new TrackBar();
pictureFine = new PictureBox();
labelInfo = new Label();
labelFansResult = new Label();
panelTitleCPU = new Panel();
pictureBox1 = new PictureBox();
labelPowerLimits = new Label();
panelGPU = new Panel();
panelGPUMemory = new Panel();
labelGPUMemory = new Label();
labelGPUMemoryTitle = new Label();
trackGPUMemory = new TrackBar();
panelGPUCore = new Panel();
labelGPUCore = new Label();
trackGPUCore = new TrackBar();
labelGPUCoreTitle = new Label();
panelTitleGPU = new Panel();
pictureGPU = new PictureBox();
labelGPU = new Label();
panelGPUBoost = new Panel();
labelGPUBoost = new Label();
labelGPUBoostTitle = new Label();
trackGPUBoost = new TrackBar();
panelGPUTemp = new Panel();
labelGPUTemp = new Label();
labelGPUTempTitle = new Label();
trackGPUTemp = new TrackBar();
panelFans.SuspendLayout();
((System.ComponentModel.ISupportInitialize)picturePerf).BeginInit();
tableFanCharts.SuspendLayout();
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
((System.ComponentModel.ISupportInitialize)chartCPU).BeginInit();
((System.ComponentModel.ISupportInitialize)chartMid).BeginInit();
panelSliders.SuspendLayout();
panelPower.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
panelApplyPower.SuspendLayout();
panelCPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackCPU).BeginInit();
panelTotal.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackTotal).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureFine).BeginInit();
panelTitleCPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
panelGPU.SuspendLayout();
panelGPUMemory.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUMemory).BeginInit();
panelGPUCore.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUCore).BeginInit();
panelTitleGPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
panelGPUBoost.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUBoost).BeginInit();
panelGPUTemp.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUTemp).BeginInit();
SuspendLayout();
//
// panelFans
@@ -91,13 +126,24 @@ namespace GHelper
panelFans.Controls.Add(checkApplyFans);
panelFans.Controls.Add(buttonReset);
panelFans.Dock = DockStyle.Left;
panelFans.Location = new Point(364, 0);
panelFans.Location = new Point(533, 0);
panelFans.Margin = new Padding(0);
panelFans.Name = "panelFans";
panelFans.Padding = new Padding(20);
panelFans.Size = new Size(824, 1159);
panelFans.Padding = new Padding(10);
panelFans.Size = new Size(824, 1189);
panelFans.TabIndex = 12;
//
// labelFansResult
//
labelFansResult.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelFansResult.ForeColor = Color.Red;
labelFansResult.Location = new Point(30, 1073);
labelFansResult.Name = "labelFansResult";
labelFansResult.Size = new Size(760, 32);
labelFansResult.TabIndex = 41;
labelFansResult.TextAlign = ContentAlignment.TopRight;
labelFansResult.Visible = false;
//
// labelTip
//
labelTip.AutoSize = true;
@@ -117,7 +163,7 @@ namespace GHelper
labelBoost.Name = "labelBoost";
labelBoost.Size = new Size(125, 32);
labelBoost.TabIndex = 39;
labelBoost.Text = Properties.Strings.CPUBoost;
labelBoost.Text = "CPU Boost";
labelBoost.TextAlign = ContentAlignment.MiddleRight;
//
// comboBoost
@@ -154,56 +200,56 @@ namespace GHelper
tableFanCharts.Controls.Add(chartCPU, 0, 0);
tableFanCharts.Controls.Add(chartMid, 0, 2);
tableFanCharts.Location = new Point(28, 64);
tableFanCharts.Margin = new Padding(6);
tableFanCharts.Margin = new Padding(4);
tableFanCharts.Name = "tableFanCharts";
tableFanCharts.RowCount = 2;
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 33F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 33F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 33F));
tableFanCharts.Size = new Size(764, 992);
tableFanCharts.Size = new Size(764, 1022);
tableFanCharts.TabIndex = 36;
//
// chartGPU
//
chartArea1.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1);
chartArea13.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea13);
chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(2, 340);
chartGPU.Location = new Point(2, 350);
chartGPU.Margin = new Padding(2, 10, 2, 10);
chartGPU.Name = "chartGPU";
chartGPU.Size = new Size(760, 310);
chartGPU.Size = new Size(760, 320);
chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU";
title1.Name = "Title1";
chartGPU.Titles.Add(title1);
title13.Name = "Title1";
chartGPU.Titles.Add(title13);
//
// chartCPU
//
chartArea2.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2);
chartArea14.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea14);
chartCPU.Dock = DockStyle.Fill;
chartCPU.Location = new Point(2, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10);
chartCPU.Name = "chartCPU";
chartCPU.Size = new Size(760, 310);
chartCPU.Size = new Size(760, 320);
chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU";
title2.Name = "Title1";
chartCPU.Titles.Add(title2);
title14.Name = "Title1";
chartCPU.Titles.Add(title14);
//
// chartMid
//
chartArea3.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea3);
chartArea15.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea15);
chartMid.Dock = DockStyle.Fill;
chartMid.Location = new Point(2, 670);
chartMid.Location = new Point(2, 690);
chartMid.Margin = new Padding(2, 10, 2, 10);
chartMid.Name = "chartMid";
chartMid.Size = new Size(760, 312);
chartMid.Size = new Size(760, 322);
chartMid.TabIndex = 14;
chartMid.Text = "chartMid";
title3.Name = "Title3";
chartMid.Titles.Add(title3);
title15.Name = "Title3";
chartMid.Titles.Add(title15);
chartMid.Visible = false;
//
// labelFans
@@ -222,7 +268,7 @@ namespace GHelper
checkApplyFans.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
checkApplyFans.AutoSize = true;
checkApplyFans.BackColor = SystemColors.ControlLight;
checkApplyFans.Location = new Point(449, 1088);
checkApplyFans.Location = new Point(449, 1118);
checkApplyFans.Margin = new Padding(4, 2, 4, 2);
checkApplyFans.Name = "checkApplyFans";
checkApplyFans.Padding = new Padding(15, 5, 15, 5);
@@ -239,7 +285,7 @@ namespace GHelper
buttonReset.BorderColor = Color.Transparent;
buttonReset.BorderRadius = 2;
buttonReset.FlatStyle = FlatStyle.Flat;
buttonReset.Location = new Point(30, 1082);
buttonReset.Location = new Point(30, 1112);
buttonReset.Margin = new Padding(4, 2, 4, 2);
buttonReset.Name = "buttonReset";
buttonReset.Secondary = true;
@@ -248,185 +294,441 @@ namespace GHelper
buttonReset.Text = Properties.Strings.FactoryDefaults;
buttonReset.UseVisualStyleBackColor = false;
//
// panelSliders
//
panelSliders.Controls.Add(panelPower);
panelSliders.Controls.Add(panelGPU);
panelSliders.Dock = DockStyle.Left;
panelSliders.Location = new Point(0, 0);
panelSliders.Margin = new Padding(0);
panelSliders.Name = "panelSliders";
panelSliders.Padding = new Padding(10, 0, 0, 0);
panelSliders.Size = new Size(533, 1189);
panelSliders.TabIndex = 13;
//
// panelPower
//
panelPower.Controls.Add(pictureBox1);
panelPower.Controls.Add(labelPowerLimits);
panelPower.Controls.Add(checkApplyPower);
panelPower.AutoSize = true;
panelPower.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelPower.Controls.Add(panelApplyPower);
panelPower.Controls.Add(labelInfo);
panelPower.Controls.Add(panelCPU);
panelPower.Controls.Add(panelTotal);
panelPower.Controls.Add(pictureFine);
panelPower.Controls.Add(labelInfo);
panelPower.Dock = DockStyle.Left;
panelPower.Location = new Point(0, 0);
panelPower.Margin = new Padding(10);
panelPower.Controls.Add(panelTitleCPU);
panelPower.Dock = DockStyle.Fill;
panelPower.Location = new Point(10, 634);
panelPower.Name = "panelPower";
panelPower.Padding = new Padding(10);
panelPower.Size = new Size(364, 1159);
panelPower.TabIndex = 13;
panelPower.Size = new Size(523, 555);
panelPower.TabIndex = 43;
//
// pictureBox1
// panelApplyPower
//
pictureBox1.BackgroundImage = Properties.Resources.icons8_processor_96;
pictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
pictureBox1.InitialImage = null;
pictureBox1.Location = new Point(20, 18);
pictureBox1.Margin = new Padding(4, 2, 4, 2);
pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new Size(36, 38);
pictureBox1.TabIndex = 38;
pictureBox1.TabStop = false;
//
// labelPowerLimits
//
labelPowerLimits.AutoSize = true;
labelPowerLimits.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelPowerLimits.Location = new Point(54, 20);
labelPowerLimits.Margin = new Padding(4, 0, 4, 0);
labelPowerLimits.Name = "labelPowerLimits";
labelPowerLimits.Size = new Size(229, 32);
labelPowerLimits.TabIndex = 26;
labelPowerLimits.Text = Properties.Strings.PowerLimits;
panelApplyPower.Controls.Add(checkApplyPower);
panelApplyPower.Dock = DockStyle.Bottom;
panelApplyPower.Location = new Point(0, 463);
panelApplyPower.Name = "panelApplyPower";
panelApplyPower.Padding = new Padding(10);
panelApplyPower.Size = new Size(523, 92);
panelApplyPower.TabIndex = 44;
//
// checkApplyPower
//
checkApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
checkApplyPower.AutoSize = true;
checkApplyPower.BackColor = SystemColors.ControlLight;
checkApplyPower.Location = new Point(20, 1088);
checkApplyPower.Margin = new Padding(4, 2, 4, 2);
checkApplyPower.Location = new Point(18, 22);
checkApplyPower.Margin = new Padding(10);
checkApplyPower.Name = "checkApplyPower";
checkApplyPower.Padding = new Padding(15, 5, 15, 5);
checkApplyPower.Size = new Size(277, 46);
checkApplyPower.TabIndex = 25;
checkApplyPower.TabIndex = 45;
checkApplyPower.Text = Properties.Strings.ApplyPowerLimits;
checkApplyPower.UseVisualStyleBackColor = false;
//
// labelInfo
//
labelInfo.Dock = DockStyle.Top;
labelInfo.Location = new Point(0, 368);
labelInfo.Margin = new Padding(4, 0, 4, 0);
labelInfo.Name = "labelInfo";
labelInfo.Padding = new Padding(5);
labelInfo.Size = new Size(523, 92);
labelInfo.TabIndex = 43;
labelInfo.Text = "Experimental Feature";
//
// panelCPU
//
panelCPU.AutoSize = true;
panelCPU.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelCPU.Controls.Add(labelCPU);
panelCPU.Controls.Add(label2);
panelCPU.Controls.Add(trackCPU);
panelCPU.Location = new Point(184, 72);
panelCPU.Dock = DockStyle.Top;
panelCPU.Location = new Point(0, 232);
panelCPU.Margin = new Padding(4);
panelCPU.Name = "panelCPU";
panelCPU.Size = new Size(160, 510);
panelCPU.TabIndex = 23;
panelCPU.Size = new Size(523, 136);
panelCPU.TabIndex = 41;
//
// labelCPU
//
labelCPU.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelCPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelCPU.Location = new Point(13, 40);
labelCPU.Location = new Point(398, 8);
labelCPU.Margin = new Padding(4, 0, 4, 0);
labelCPU.Name = "labelCPU";
labelCPU.Size = new Size(120, 32);
labelCPU.TabIndex = 13;
labelCPU.Text = "CPU";
labelCPU.TextAlign = ContentAlignment.MiddleCenter;
labelCPU.TextAlign = ContentAlignment.TopRight;
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(44, 8);
label2.Location = new Point(10, 8);
label2.Margin = new Padding(4, 0, 4, 0);
label2.Name = "label2";
label2.Size = new Size(58, 32);
label2.TabIndex = 12;
label2.Text = "CPU";
label2.TextAlign = ContentAlignment.MiddleCenter;
//
// trackCPU
//
trackCPU.Location = new Point(48, 88);
trackCPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackCPU.Location = new Point(6, 44);
trackCPU.Margin = new Padding(4, 2, 4, 2);
trackCPU.Maximum = 85;
trackCPU.Minimum = 5;
trackCPU.Name = "trackCPU";
trackCPU.Orientation = Orientation.Vertical;
trackCPU.Size = new Size(90, 416);
trackCPU.Size = new Size(513, 90);
trackCPU.TabIndex = 11;
trackCPU.TickFrequency = 5;
trackCPU.TickStyle = TickStyle.TopLeft;
trackCPU.Value = 80;
//
// panelTotal
//
panelTotal.AutoSize = true;
panelTotal.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelTotal.Controls.Add(labelTotal);
panelTotal.Controls.Add(label1);
panelTotal.Controls.Add(labelPlatform);
panelTotal.Controls.Add(trackTotal);
panelTotal.Location = new Point(16, 72);
panelTotal.Dock = DockStyle.Top;
panelTotal.Location = new Point(0, 92);
panelTotal.Margin = new Padding(4);
panelTotal.Name = "panelTotal";
panelTotal.Size = new Size(160, 512);
panelTotal.TabIndex = 22;
panelTotal.Size = new Size(523, 140);
panelTotal.TabIndex = 40;
//
// labelTotal
//
labelTotal.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelTotal.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelTotal.Location = new Point(16, 40);
labelTotal.Location = new Point(396, 10);
labelTotal.Margin = new Padding(4, 0, 4, 0);
labelTotal.Name = "labelTotal";
labelTotal.Size = new Size(122, 32);
labelTotal.TabIndex = 12;
labelTotal.Text = "Platform";
labelTotal.TextAlign = ContentAlignment.MiddleCenter;
labelTotal.TextAlign = ContentAlignment.TopRight;
//
// label1
// labelPlatform
//
label1.AutoSize = true;
label1.Location = new Point(26, 8);
label1.Margin = new Padding(4, 0, 4, 0);
label1.Name = "label1";
label1.Size = new Size(104, 32);
label1.TabIndex = 11;
label1.Text = "Platform";
label1.TextAlign = ContentAlignment.MiddleCenter;
labelPlatform.AutoSize = true;
labelPlatform.Location = new Point(10, 10);
labelPlatform.Margin = new Padding(4, 0, 4, 0);
labelPlatform.Name = "labelPlatform";
labelPlatform.Size = new Size(104, 32);
labelPlatform.TabIndex = 11;
labelPlatform.Text = "Platform";
//
// trackTotal
//
trackTotal.Location = new Point(44, 88);
trackTotal.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackTotal.Location = new Point(6, 48);
trackTotal.Margin = new Padding(4, 2, 4, 2);
trackTotal.Maximum = 180;
trackTotal.Minimum = 10;
trackTotal.Name = "trackTotal";
trackTotal.Orientation = Orientation.Vertical;
trackTotal.Size = new Size(90, 416);
trackTotal.Size = new Size(513, 90);
trackTotal.TabIndex = 10;
trackTotal.TickFrequency = 5;
trackTotal.TickStyle = TickStyle.TopLeft;
trackTotal.Value = 125;
//
// pictureFine
// panelTitleCPU
//
pictureFine.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
pictureFine.BackgroundImageLayout = ImageLayout.Zoom;
pictureFine.Image = Properties.Resources.everything_is_fine_itsfine;
pictureFine.Location = new Point(20, 682);
pictureFine.Margin = new Padding(4, 2, 4, 2);
pictureFine.Name = "pictureFine";
pictureFine.Size = new Size(324, 268);
pictureFine.SizeMode = PictureBoxSizeMode.Zoom;
pictureFine.TabIndex = 20;
pictureFine.TabStop = false;
pictureFine.Visible = false;
panelTitleCPU.AutoSize = true;
panelTitleCPU.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelTitleCPU.Controls.Add(pictureBox1);
panelTitleCPU.Controls.Add(labelPowerLimits);
panelTitleCPU.Dock = DockStyle.Top;
panelTitleCPU.Location = new Point(0, 0);
panelTitleCPU.Name = "panelTitleCPU";
panelTitleCPU.Size = new Size(523, 92);
panelTitleCPU.TabIndex = 42;
//
// labelInfo
// pictureBox1
//
labelInfo.Location = new Point(24, 618);
labelInfo.Margin = new Padding(4, 0, 4, 0);
labelInfo.Name = "labelInfo";
labelInfo.Size = new Size(320, 330);
labelInfo.TabIndex = 19;
labelInfo.Text = "label";
pictureBox1.BackgroundImage = Properties.Resources.icons8_processor_96;
pictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
pictureBox1.InitialImage = null;
pictureBox1.Location = new Point(10, 44);
pictureBox1.Margin = new Padding(4, 2, 4, 10);
pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new Size(36, 38);
pictureBox1.TabIndex = 40;
pictureBox1.TabStop = false;
//
// labelFansResult
// labelPowerLimits
//
labelFansResult.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelFansResult.ForeColor = Color.Red;
labelFansResult.Location = new Point(30, 1070);
labelFansResult.Name = "labelFansResult";
labelFansResult.Size = new Size(760, 32);
labelFansResult.TabIndex = 41;
labelFansResult.TextAlign = ContentAlignment.TopRight;
labelPowerLimits.AutoSize = true;
labelPowerLimits.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelPowerLimits.Location = new Point(54, 48);
labelPowerLimits.Margin = new Padding(4, 0, 4, 0);
labelPowerLimits.Name = "labelPowerLimits";
labelPowerLimits.Size = new Size(229, 32);
labelPowerLimits.TabIndex = 39;
labelPowerLimits.Text = "Power Limits (PPT)";
//
// panelGPU
//
panelGPU.AutoSize = true;
panelGPU.Controls.Add(panelGPUTemp);
panelGPU.Controls.Add(panelGPUBoost);
panelGPU.Controls.Add(panelGPUMemory);
panelGPU.Controls.Add(panelGPUCore);
panelGPU.Controls.Add(panelTitleGPU);
panelGPU.Dock = DockStyle.Top;
panelGPU.Location = new Point(10, 0);
panelGPU.Name = "panelGPU";
panelGPU.Size = new Size(523, 634);
panelGPU.TabIndex = 44;
//
// panelGPUMemory
//
panelGPUMemory.AutoSize = true;
panelGPUMemory.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUMemory.Controls.Add(labelGPUMemory);
panelGPUMemory.Controls.Add(labelGPUMemoryTitle);
panelGPUMemory.Controls.Add(trackGPUMemory);
panelGPUMemory.Dock = DockStyle.Top;
panelGPUMemory.Location = new Point(0, 205);
panelGPUMemory.Name = "panelGPUMemory";
panelGPUMemory.Size = new Size(523, 140);
panelGPUMemory.TabIndex = 45;
//
// labelGPUMemory
//
labelGPUMemory.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGPUMemory.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUMemory.Location = new Point(378, 14);
labelGPUMemory.Name = "labelGPUMemory";
labelGPUMemory.Size = new Size(130, 32);
labelGPUMemory.TabIndex = 44;
labelGPUMemory.Text = "2000 MHz";
labelGPUMemory.TextAlign = ContentAlignment.TopRight;
//
// labelGPUMemoryTitle
//
labelGPUMemoryTitle.AutoSize = true;
labelGPUMemoryTitle.Location = new Point(10, 14);
labelGPUMemoryTitle.Name = "labelGPUMemoryTitle";
labelGPUMemoryTitle.Size = new Size(169, 32);
labelGPUMemoryTitle.TabIndex = 43;
labelGPUMemoryTitle.Text = "Memory Clock";
//
// trackGPUMemory
//
trackGPUMemory.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackGPUMemory.LargeChange = 100;
trackGPUMemory.Location = new Point(6, 48);
trackGPUMemory.Margin = new Padding(4, 2, 4, 2);
trackGPUMemory.Maximum = 300;
trackGPUMemory.Name = "trackGPUMemory";
trackGPUMemory.Size = new Size(502, 90);
trackGPUMemory.SmallChange = 10;
trackGPUMemory.TabIndex = 42;
trackGPUMemory.TickFrequency = 50;
trackGPUMemory.TickStyle = TickStyle.TopLeft;
//
// panelGPUCore
//
panelGPUCore.AutoSize = true;
panelGPUCore.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUCore.Controls.Add(labelGPUCore);
panelGPUCore.Controls.Add(trackGPUCore);
panelGPUCore.Controls.Add(labelGPUCoreTitle);
panelGPUCore.Dock = DockStyle.Top;
panelGPUCore.Location = new Point(0, 66);
panelGPUCore.Name = "panelGPUCore";
panelGPUCore.Size = new Size(523, 139);
panelGPUCore.TabIndex = 44;
//
// labelGPUCore
//
labelGPUCore.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGPUCore.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUCore.Location = new Point(378, 15);
labelGPUCore.Name = "labelGPUCore";
labelGPUCore.Size = new Size(130, 32);
labelGPUCore.TabIndex = 29;
labelGPUCore.Text = "1500 MHz";
labelGPUCore.TextAlign = ContentAlignment.TopRight;
//
// trackGPUCore
//
trackGPUCore.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackGPUCore.LargeChange = 100;
trackGPUCore.Location = new Point(6, 47);
trackGPUCore.Margin = new Padding(4, 2, 4, 2);
trackGPUCore.Maximum = 300;
trackGPUCore.Name = "trackGPUCore";
trackGPUCore.RightToLeft = RightToLeft.No;
trackGPUCore.Size = new Size(502, 90);
trackGPUCore.SmallChange = 10;
trackGPUCore.TabIndex = 18;
trackGPUCore.TickFrequency = 50;
trackGPUCore.TickStyle = TickStyle.TopLeft;
//
// labelGPUCoreTitle
//
labelGPUCoreTitle.AutoSize = true;
labelGPUCoreTitle.Location = new Point(10, 15);
labelGPUCoreTitle.Name = "labelGPUCoreTitle";
labelGPUCoreTitle.Size = new Size(201, 32);
labelGPUCoreTitle.TabIndex = 17;
labelGPUCoreTitle.Text = "Core Clock Offset";
//
// panelTitleGPU
//
panelTitleGPU.AutoSize = true;
panelTitleGPU.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelTitleGPU.Controls.Add(pictureGPU);
panelTitleGPU.Controls.Add(labelGPU);
panelTitleGPU.Dock = DockStyle.Top;
panelTitleGPU.Location = new Point(0, 0);
panelTitleGPU.Name = "panelTitleGPU";
panelTitleGPU.Size = new Size(523, 66);
panelTitleGPU.TabIndex = 43;
//
// pictureGPU
//
pictureGPU.BackgroundImage = Properties.Resources.icons8_video_card_48;
pictureGPU.BackgroundImageLayout = ImageLayout.Zoom;
pictureGPU.ErrorImage = null;
pictureGPU.InitialImage = null;
pictureGPU.Location = new Point(18, 18);
pictureGPU.Margin = new Padding(4, 2, 4, 10);
pictureGPU.Name = "pictureGPU";
pictureGPU.Size = new Size(36, 38);
pictureGPU.TabIndex = 41;
pictureGPU.TabStop = false;
//
// labelGPU
//
labelGPU.AutoSize = true;
labelGPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPU.Location = new Point(62, 21);
labelGPU.Margin = new Padding(4, 0, 4, 0);
labelGPU.Name = "labelGPU";
labelGPU.Size = new Size(162, 32);
labelGPU.TabIndex = 40;
labelGPU.Text = "GPU Settings";
//
// panelGPUBoost
//
panelGPUBoost.AutoSize = true;
panelGPUBoost.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUBoost.Controls.Add(labelGPUBoost);
panelGPUBoost.Controls.Add(labelGPUBoostTitle);
panelGPUBoost.Controls.Add(trackGPUBoost);
panelGPUBoost.Dock = DockStyle.Top;
panelGPUBoost.Location = new Point(0, 345);
panelGPUBoost.Name = "panelGPUBoost";
panelGPUBoost.Size = new Size(523, 140);
panelGPUBoost.TabIndex = 46;
//
// labelGPUBoost
//
labelGPUBoost.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGPUBoost.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUBoost.Location = new Point(374, 14);
labelGPUBoost.Name = "labelGPUBoost";
labelGPUBoost.Size = new Size(130, 32);
labelGPUBoost.TabIndex = 44;
labelGPUBoost.Text = "25W";
labelGPUBoost.TextAlign = ContentAlignment.TopRight;
//
// labelGPUBoostTitle
//
labelGPUBoostTitle.AutoSize = true;
labelGPUBoostTitle.Location = new Point(10, 14);
labelGPUBoostTitle.Name = "labelGPUBoostTitle";
labelGPUBoostTitle.Size = new Size(174, 32);
labelGPUBoostTitle.TabIndex = 43;
labelGPUBoostTitle.Text = "Dynamic Boost";
//
// trackGPUBoost
//
trackGPUBoost.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackGPUBoost.Location = new Point(6, 48);
trackGPUBoost.Margin = new Padding(4, 2, 4, 2);
trackGPUBoost.Maximum = 25;
trackGPUBoost.Minimum = 5;
trackGPUBoost.Name = "trackGPUBoost";
trackGPUBoost.Size = new Size(502, 90);
trackGPUBoost.TabIndex = 42;
trackGPUBoost.TickFrequency = 5;
trackGPUBoost.TickStyle = TickStyle.TopLeft;
trackGPUBoost.Value = 25;
//
// panelGPUTemp
//
panelGPUTemp.AutoSize = true;
panelGPUTemp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUTemp.Controls.Add(labelGPUTemp);
panelGPUTemp.Controls.Add(labelGPUTempTitle);
panelGPUTemp.Controls.Add(trackGPUTemp);
panelGPUTemp.Dock = DockStyle.Top;
panelGPUTemp.Location = new Point(0, 485);
panelGPUTemp.Name = "panelGPUTemp";
panelGPUTemp.Size = new Size(523, 149);
panelGPUTemp.TabIndex = 47;
//
// labelGPUTemp
//
labelGPUTemp.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGPUTemp.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUTemp.Location = new Point(378, 14);
labelGPUTemp.Name = "labelGPUTemp";
labelGPUTemp.Size = new Size(130, 32);
labelGPUTemp.TabIndex = 44;
labelGPUTemp.Text = "87C";
labelGPUTemp.TextAlign = ContentAlignment.TopRight;
//
// labelGPUTempTitle
//
labelGPUTempTitle.AutoSize = true;
labelGPUTempTitle.Location = new Point(10, 14);
labelGPUTempTitle.Name = "labelGPUTempTitle";
labelGPUTempTitle.Size = new Size(173, 32);
labelGPUTempTitle.TabIndex = 43;
labelGPUTempTitle.Text = "Thermal Target";
//
// trackGPUTemp
//
trackGPUTemp.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackGPUTemp.Location = new Point(6, 57);
trackGPUTemp.Margin = new Padding(4, 2, 4, 2);
trackGPUTemp.Maximum = 87;
trackGPUTemp.Minimum = 75;
trackGPUTemp.Name = "trackGPUTemp";
trackGPUTemp.Size = new Size(502, 90);
trackGPUTemp.TabIndex = 42;
trackGPUTemp.TickFrequency = 5;
trackGPUTemp.TickStyle = TickStyle.TopLeft;
trackGPUTemp.Value = 87;
//
// Fans
//
@@ -434,9 +736,9 @@ namespace GHelper
AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(1178, 1159);
ClientSize = new Size(1361, 1189);
Controls.Add(panelFans);
Controls.Add(panelPower);
Controls.Add(panelSliders);
Margin = new Padding(4, 2, 4, 2);
MaximizeBox = false;
MdiChildrenMinimizedAnchorBottom = false;
@@ -446,7 +748,7 @@ namespace GHelper
ShowIcon = false;
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = Properties.Strings.FansAndPower;
Text = "Fans and Power";
panelFans.ResumeLayout(false);
panelFans.PerformLayout();
((System.ComponentModel.ISupportInitialize)picturePerf).EndInit();
@@ -454,16 +756,38 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)chartGPU).EndInit();
((System.ComponentModel.ISupportInitialize)chartCPU).EndInit();
((System.ComponentModel.ISupportInitialize)chartMid).EndInit();
panelSliders.ResumeLayout(false);
panelSliders.PerformLayout();
panelPower.ResumeLayout(false);
panelPower.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
panelApplyPower.ResumeLayout(false);
panelApplyPower.PerformLayout();
panelCPU.ResumeLayout(false);
panelCPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackCPU).EndInit();
panelTotal.ResumeLayout(false);
panelTotal.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackTotal).EndInit();
((System.ComponentModel.ISupportInitialize)pictureFine).EndInit();
panelTitleCPU.ResumeLayout(false);
panelTitleCPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
panelGPU.ResumeLayout(false);
panelGPU.PerformLayout();
panelGPUMemory.ResumeLayout(false);
panelGPUMemory.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUMemory).EndInit();
panelGPUCore.ResumeLayout(false);
panelGPUCore.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUCore).EndInit();
panelTitleGPU.ResumeLayout(false);
panelTitleGPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
panelGPUBoost.ResumeLayout(false);
panelGPUBoost.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUBoost).EndInit();
panelGPUTemp.ResumeLayout(false);
panelGPUTemp.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUTemp).EndInit();
ResumeLayout(false);
}
@@ -471,29 +795,51 @@ namespace GHelper
private Panel panelFans;
private RCheckBox checkApplyFans;
private RButton buttonReset;
private Panel panelPower;
private RCheckBox checkApplyPower;
private Panel panelCPU;
private Label labelCPU;
private Label label2;
private TrackBar trackCPU;
private Panel panelTotal;
private Label labelTotal;
private Label label1;
private TrackBar trackTotal;
private PictureBox pictureFine;
private Label labelInfo;
private Label labelPowerLimits;
private Panel panelSliders;
private TableLayoutPanel tableFanCharts;
private System.Windows.Forms.DataVisualization.Charting.Chart chartGPU;
private System.Windows.Forms.DataVisualization.Charting.Chart chartCPU;
private System.Windows.Forms.DataVisualization.Charting.Chart chartMid;
private Label labelFans;
private PictureBox picturePerf;
private PictureBox pictureBox1;
private RComboBox comboBoost;
private Label labelBoost;
private Label labelTip;
private Label labelFansResult;
private Panel panelPower;
private Label labelInfo;
private Panel panelCPU;
private Label labelCPU;
private Label label2;
private TrackBar trackCPU;
private Panel panelTotal;
private Label labelTotal;
private Label labelPlatform;
private TrackBar trackTotal;
private Panel panelTitleCPU;
private PictureBox pictureBox1;
private Label labelPowerLimits;
private Panel panelGPU;
private Panel panelGPUMemory;
private Label labelGPUMemory;
private Label labelGPUMemoryTitle;
private TrackBar trackGPUMemory;
private Panel panelGPUCore;
private Label labelGPUCore;
private TrackBar trackGPUCore;
private Label labelGPUCoreTitle;
private Panel panelTitleGPU;
private PictureBox pictureGPU;
private Label labelGPU;
private Panel panelApplyPower;
private RCheckBox checkApplyPower;
private Panel panelGPUBoost;
private Label labelGPUBoost;
private Label labelGPUBoostTitle;
private TrackBar trackGPUBoost;
private Panel panelGPUTemp;
private Label labelGPUTemp;
private Label labelGPUTempTitle;
private TrackBar trackGPUTemp;
}
}

View File

@@ -1,6 +1,7 @@
using System.Diagnostics;
using CustomControls;
using GHelper.Gpu;
using System.Diagnostics;
using System.Windows.Forms.DataVisualization.Charting;
using CustomControls;
namespace GHelper
{
@@ -13,17 +14,26 @@ namespace GHelper
Series seriesMid;
static int MinRPM, MaxRPM;
public Fans()
{
InitializeComponent();
Text = Properties.Strings.FansAndPower;
labelPowerLimits.Text = Properties.Strings.PowerLimits;
labelInfo.Text = Properties.Strings.PPTExperimental;
checkApplyPower.Text = Properties.Strings.ApplyPowerLimits;
labelFans.Text = Properties.Strings.FanCurves;
labelBoost.Text = Properties.Strings.CPUBoost;
buttonReset.Text = Properties.Strings.FactoryDefaults;
checkApplyFans.Text = Properties.Strings.ApplyFanCurve;
InitTheme();
MinRPM = 18;
MaxRPM = HardwareMonitor.GetFanMax();
labelTip.Visible = false;
labelTip.BackColor = Color.Transparent;
@@ -63,8 +73,32 @@ namespace GHelper
checkApplyFans.Click += CheckApplyFans_Click;
checkApplyPower.Click += CheckApplyPower_Click;
trackGPUCore.Minimum = NvidiaGpuControl.MinCoreOffset;
trackGPUCore.Maximum = NvidiaGpuControl.MaxCoreOffset;
trackGPUMemory.Minimum = NvidiaGpuControl.MinMemoryOffset;
trackGPUMemory.Maximum = NvidiaGpuControl.MaxMemoryOffset;
trackGPUBoost.Minimum = ASUSWmi.MinGPUBoost;
trackGPUBoost.Maximum = ASUSWmi.MaxGPUBoost;
trackGPUTemp.Minimum = ASUSWmi.MinGPUTemp;
trackGPUTemp.Maximum = ASUSWmi.MaxGPUTemp;
trackGPUCore.Scroll += trackGPU_Scroll;
trackGPUMemory.Scroll += trackGPU_Scroll;
trackGPUBoost.Scroll += trackGPU_Scroll;
trackGPUTemp.Scroll += trackGPU_Scroll;
trackGPUCore.MouseUp += TrackGPU_MouseUp;
trackGPUMemory.MouseUp += TrackGPU_MouseUp;
trackGPUBoost.MouseUp += TrackGPUBoost_MouseUp;
trackGPUTemp.MouseUp += TrackGPUBoost_MouseUp;
//labelInfo.MaximumSize = new Size(280, 0);
labelInfo.Text = Properties.Strings.PPTExperimental;
labelFansResult.Visible = false;
InitFans();
InitPower();
@@ -74,6 +108,82 @@ namespace GHelper
Shown += Fans_Shown;
InitGPUClocks();
}
private void TrackGPUBoost_MouseUp(object? sender, MouseEventArgs e)
{
Program.config.setConfig("gpu_boost", trackGPUBoost.Value);
Program.config.setConfig("gpu_temp", trackGPUTemp.Value);
Program.settingsForm.SetGPUPower();
}
private void TrackGPU_MouseUp(object? sender, MouseEventArgs e)
{
try
{
Program.config.setConfig("gpu_core", trackGPUCore.Value);
Program.config.setConfig("gpu_memory", trackGPUMemory.Value);
int status = Program.nvControl.SetClocks(trackGPUCore.Value, trackGPUMemory.Value);
if (status == -1) Program.RunAsAdmin("gpu");
}
catch (Exception ex)
{
Logger.WriteLine("F:" + ex.ToString());
}
InitGPUClocks();
}
private void InitGPUClocks()
{
if (Program.nvControl is null || !Program.nvControl.IsValid)
{
panelGPU.Visible = false;
return;
}
try
{
panelGPU.Visible = true;
Program.nvControl.GetClocks(out int core, out int memory);
trackGPUCore.Value = Math.Max(Math.Min(core, NvidiaGpuControl.MaxCoreOffset), NvidiaGpuControl.MinCoreOffset);
trackGPUMemory.Value = Math.Max(Math.Min(memory, NvidiaGpuControl.MaxMemoryOffset), NvidiaGpuControl.MinMemoryOffset);
int gpu_boost = Program.config.getConfig("gpu_boost");
int gpu_temp = Program.config.getConfig("gpu_temp");
if (gpu_boost < 0) gpu_boost = ASUSWmi.MaxGPUBoost;
if (gpu_temp < 0) gpu_temp = ASUSWmi.MaxGPUTemp;
trackGPUBoost.Value = Math.Max(Math.Min(gpu_boost, ASUSWmi.MaxGPUBoost), ASUSWmi.MinGPUBoost);
trackGPUTemp.Value = Math.Max(Math.Min(gpu_temp, ASUSWmi.MaxGPUTemp), ASUSWmi.MinGPUTemp);
VisualiseGPUSettings();
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
panelGPU.Visible = false;
}
}
private void VisualiseGPUSettings()
{
labelGPUCore.Text = $"{trackGPUCore.Value} MHz";
labelGPUMemory.Text = $"{trackGPUMemory.Value} MHz";
labelGPUBoost.Text = $"{trackGPUBoost.Value}W";
labelGPUTemp.Text = $"{trackGPUTemp.Value}°C";
}
private void trackGPU_Scroll(object? sender, EventArgs e)
{
VisualiseGPUSettings();
}
static string ChartPercToRPM(int percentage, string unit = "")
@@ -206,6 +316,7 @@ namespace GHelper
public void LabelFansResult(string text)
{
labelFansResult.Text = text;
labelFansResult.Visible = (text.Length > 0);
}
private void Fans_FormClosing(object? sender, FormClosingEventArgs e)
@@ -226,13 +337,13 @@ namespace GHelper
bool cpuBmode = (Program.wmi.DeviceGet(ASUSWmi.PPT_CPUB0) >= 0); // 2022 model +
bool cpuAmode = (Program.wmi.DeviceGet(ASUSWmi.PPT_TotalA0) >= 0); // 2021 model +
panelPower.Visible = cpuAmode;
panelSliders.Visible = cpuAmode;
panelCPU.Visible = cpuBmode;
// Yes, that's stupid, but Total slider on 2021 model actually adjusts CPU PPT
if (!cpuBmode)
{
label1.Text = "CPU SPPT";
labelPlatform.Text = "CPU SPPT";
}
int limit_total;
@@ -265,7 +376,6 @@ namespace GHelper
labelTotal.Text = trackTotal.Value.ToString() + "W";
labelCPU.Text = trackCPU.Value.ToString() + "W";
pictureFine.Visible = (limit_cpu > 85 || limit_total > 145);
Program.config.setConfigPerf("limit_total", limit_total);
Program.config.setConfigPerf("limit_cpu", limit_cpu);
@@ -531,6 +641,7 @@ namespace GHelper
}
}
}
}
}

View File

@@ -13,26 +13,26 @@
<Platforms>AnyCPU;x64</Platforms>
<SupportedOSPlatformVersion>8.0</SupportedOSPlatformVersion>
<AssemblyName>GHelper</AssemblyName>
<PlatformTarget>x64</PlatformTarget>
<PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.54</AssemblyVersion>
<AssemblyVersion>0.58</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>none</DebugType>
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>none</DebugType>
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<DebugType>none</DebugType>
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<DebugType>none</DebugType>
<DebugType>embedded</DebugType>
</PropertyGroup>
<ItemGroup>
@@ -61,7 +61,6 @@
<ItemGroup>
<PackageReference Include="hidlibrary" Version="3.3.40" />
<PackageReference Include="HidSharpCore" Version="1.2.1.1" />
<PackageReference Include="NvAPIWrapper.Net" Version="0.8.1.101" />
<PackageReference Include="System.Management" Version="7.0.1" />
<PackageReference Include="TaskScheduler" Version="2.10.1" />
<PackageReference Include="WinForms.DataVisualization" Version="1.8.0" />

View File

@@ -20,8 +20,8 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Debug|Any CPU.ActiveCfg = Debug|x64
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Debug|Any CPU.Build.0 = Debug|x64
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Debug|x64.ActiveCfg = Debug|x64
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Debug|x64.Build.0 = Debug|x64
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Debug|x64.ActiveCfg = Debug|Any CPU
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Debug|x64.Build.0 = Debug|Any CPU
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Release|Any CPU.ActiveCfg = Release|x64
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Release|Any CPU.Build.0 = Release|x64
{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Release|x64.ActiveCfg = Release|x64

View File

@@ -4,12 +4,15 @@ using AmdAdl2;
namespace GHelper.Gpu;
// Reference: https://github.com/GPUOpen-LibrariesAndSDKs/display-library/blob/master/Sample-Managed/Program.cs
public class AmdGpuTemperatureProvider : IGpuTemperatureProvider {
public class AmdGpuControl : IGpuControl {
private bool _isReady;
private IntPtr _adlContextHandle;
private readonly ADLAdapterInfo _internalDiscreteAdapter;
public AmdGpuTemperatureProvider() {
public bool IsNvidia => false;
public AmdGpuControl() {
if (!Adl2.Load())
return;
@@ -104,7 +107,7 @@ public class AmdGpuTemperatureProvider : IGpuTemperatureProvider {
GC.SuppressFinalize(this);
}
~AmdGpuTemperatureProvider() {
~AmdGpuControl() {
ReleaseUnmanagedResources();
}
}

View File

@@ -1,6 +1,7 @@
namespace GHelper.Gpu;
public interface IGpuTemperatureProvider : IDisposable {
public interface IGpuControl : IDisposable {
bool IsNvidia { get; }
bool IsValid { get; }
int? GetCurrentTemperature();
int? GetGpuUse();

132
app/Gpu/NvidiaGpuControl.cs Normal file
View File

@@ -0,0 +1,132 @@
using NvAPIWrapper.GPU;
using NvAPIWrapper.Native;
using NvAPIWrapper.Native.GPU;
using NvAPIWrapper.Native.GPU.Structures;
using NvAPIWrapper.Native.Interfaces.GPU;
using static NvAPIWrapper.Native.GPU.Structures.PerformanceStates20InfoV1;
namespace GHelper.Gpu;
public class NvidiaGpuControl : IGpuControl
{
public const int MaxCoreOffset = 250;
public const int MaxMemoryOffset = 250;
public const int MinCoreOffset = -250;
public const int MinMemoryOffset = -250;
private readonly PhysicalGPU? _internalGpu;
public NvidiaGpuControl()
{
_internalGpu = GetInternalDiscreteGpu();
}
public bool IsValid => _internalGpu != null;
public bool IsNvidia => IsValid;
public int? GetCurrentTemperature()
{
if (!IsValid)
return null;
PhysicalGPU internalGpu = _internalGpu!;
IThermalSensor? gpuSensor =
GPUApi.GetThermalSettings(internalGpu.Handle).Sensors
.FirstOrDefault(s => s.Target == ThermalSettingsTarget.GPU);
return gpuSensor?.CurrentTemperature;
}
public void Dispose()
{
}
public void GetClocks(out int core, out int memory)
{
PhysicalGPU internalGpu = _internalGpu!;
Logger.WriteLine(internalGpu.FullName);
Logger.WriteLine(internalGpu.ArchitectInformation.ToString());
IPerformanceStates20Info states = GPUApi.GetPerformanceStates20(internalGpu.Handle);
Logger.WriteLine("IPerformanceStates20Info type : " + states.GetType());
core = states.Clocks[PerformanceStateId.P0_3DPerformance][0].FrequencyDeltaInkHz.DeltaValue / 1000;
memory = states.Clocks[PerformanceStateId.P0_3DPerformance][1].FrequencyDeltaInkHz.DeltaValue / 1000;
}
public int SetClocksFromConfig()
{
int core = Program.config.getConfig("gpu_core");
int memory = Program.config.getConfig("gpu_memory");
int status = SetClocks(core, memory);
return status;
}
public int SetClocks(int core, int memory)
{
if (core < MinCoreOffset || core > MaxCoreOffset) return 0;
if (memory < MinMemoryOffset || memory > MaxMemoryOffset) return 0;
PhysicalGPU internalGpu = _internalGpu!;
var coreClock = new PerformanceStates20ClockEntryV1(PublicClockDomain.Graphics, new PerformanceStates20ParameterDelta(core * 1000));
var memoryClock = new PerformanceStates20ClockEntryV1(PublicClockDomain.Memory, new PerformanceStates20ParameterDelta(memory * 1000));
PerformanceStates20ClockEntryV1[] clocks = { coreClock , memoryClock};
PerformanceStates20BaseVoltageEntryV1[] voltages = { };
PerformanceState20[] performanceStates = { new PerformanceState20(PerformanceStateId.P0_3DPerformance, clocks, voltages) };
var overclock = new PerformanceStates20InfoV1(performanceStates, 2, 0);
try
{
GPUApi.SetPerformanceStates20(internalGpu.Handle, overclock);
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
return -1;
}
return 1;
}
private static PhysicalGPU? GetInternalDiscreteGpu()
{
try
{
return PhysicalGPU
.GetPhysicalGPUs()
.FirstOrDefault(gpu => gpu.SystemType == SystemType.Laptop);
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
return null;
}
}
public int? GetGpuUse()
{
if (!IsValid)
return null;
PhysicalGPU internalGpu = _internalGpu!;
IUtilizationDomainInfo? gpuUsage = GPUApi.GetUsages(internalGpu.Handle).GPU;
return (int?)gpuUsage?.Percentage;
}
}

View File

@@ -1,68 +0,0 @@
using NvAPIWrapper.GPU;
using NvAPIWrapper.Native;
using NvAPIWrapper.Native.GPU;
using NvAPIWrapper.Native.Interfaces.GPU;
namespace GHelper.Gpu;
public class NvidiaGpuTemperatureProvider : IGpuTemperatureProvider
{
private readonly PhysicalGPU? _internalGpu;
public NvidiaGpuTemperatureProvider()
{
_internalGpu = GetInternalDiscreteGpu();
}
public bool IsValid => _internalGpu != null;
public int? GetCurrentTemperature()
{
if (!IsValid)
return null;
PhysicalGPU internalGpu = _internalGpu!;
IThermalSensor? gpuSensor =
GPUApi.GetThermalSettings(internalGpu.Handle).Sensors
.FirstOrDefault(s => s.Target == ThermalSettingsTarget.GPU);
return gpuSensor?.CurrentTemperature;
}
public void Dispose()
{
}
private static PhysicalGPU? GetInternalDiscreteGpu()
{
try
{
return PhysicalGPU
.GetPhysicalGPUs()
.FirstOrDefault(gpu => gpu.SystemType == SystemType.Laptop);
}
catch
{
return null;
}
}
public int? GetGpuUse()
{
if (!IsValid)
return null;
PhysicalGPU internalGpu = _internalGpu!;
IUtilizationDomainInfo? gpuUsage = GPUApi.GetUsages(internalGpu.Handle).GPU;
if (gpuUsage == null)
return null;
return
(int)gpuUsage?.Percentage;
}
}

View File

@@ -1,11 +1,10 @@
using GHelper;
using GHelper.Gpu;
using System.Diagnostics;
using System.Management;
public static class HardwareMonitor
{
private static IGpuTemperatureProvider? GpuTemperatureProvider;
public static IGpuControl? GpuControl;
public static float? cpuTemp = -1;
public static float? batteryDischarge = -1;
@@ -51,7 +50,7 @@ public static class HardwareMonitor
{
try
{
int? gpuUse = GpuTemperatureProvider?.GetGpuUse();
int? gpuUse = GpuControl?.GetGpuUse();
if (gpuUse is not null) return (int)gpuUse;
}
catch (Exception ex)
@@ -76,20 +75,20 @@ public static class HardwareMonitor
cpuTemp = Program.wmi.DeviceGet(ASUSWmi.Temp_CPU);
if (cpuTemp < 0) try
{
using (var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true))
{
cpuTemp = ct.NextValue() - 273;
using (var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true))
{
cpuTemp = ct.NextValue() - 273;
}
}
catch
{
Debug.WriteLine("Failed reading CPU temp");
}
}
catch
{
Debug.WriteLine("Failed reading CPU temp");
}
try
{
gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature();
gpuTemp = GpuControl?.GetCurrentTemperature();
}
catch (Exception ex)
@@ -121,51 +120,53 @@ public static class HardwareMonitor
{
Thread.Sleep(1000);
return (GetGpuUse() > threshold);
}
}
return false;
}
public static void RecreateGpuTemperatureProviderWithDelay()
public static void RecreateGpuControlWithDelay(int delay = 5)
{
// Re-enabling the discrete GPU takes a bit of time,
// so a simple workaround is to refresh again after that happens
Task.Run(async () =>
{
await Task.Delay(TimeSpan.FromSeconds(5));
RecreateGpuTemperatureProvider();
await Task.Delay(TimeSpan.FromSeconds(delay));
RecreateGpuControl();
});
}
public static void RecreateGpuTemperatureProvider()
public static void RecreateGpuControl()
{
try
{
GpuTemperatureProvider?.Dispose();
GpuControl?.Dispose();
// Detect valid GPU temperature provider.
// We start with NVIDIA because there's always at least an integrated AMD GPU
IGpuTemperatureProvider gpuTemperatureProvider = new NvidiaGpuTemperatureProvider();
if (gpuTemperatureProvider.IsValid)
IGpuControl _gpuControl = new NvidiaGpuControl();
if (_gpuControl.IsValid)
{
GpuTemperatureProvider = gpuTemperatureProvider;
GpuControl = _gpuControl;
return;
}
gpuTemperatureProvider.Dispose();
gpuTemperatureProvider = new AmdGpuTemperatureProvider();
if (gpuTemperatureProvider.IsValid)
_gpuControl.Dispose();
/*
_gpuControl = new AmdGpuControl();
if (_gpuControl.IsValid)
{
GpuTemperatureProvider = gpuTemperatureProvider;
GpuControl = _gpuControl;
return;
}
_gpuControl.Dispose();
*/
gpuTemperatureProvider.Dispose();
GpuTemperatureProvider = null;
GpuControl = null;
}
catch (Exception ex)
{

View File

@@ -351,6 +351,33 @@ namespace Tools
public class NativeMethods
{
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MONITORPOWER = 0xF170;
private const int MONITOR_OFF = 2;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern uint FormatMessage(uint dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, out string lpBuffer, uint nSize, IntPtr Arguments);
public static void TurnOffScreen(IntPtr handle)
{
IntPtr result = SendMessage(handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MONITOR_OFF);
if (result == IntPtr.Zero)
{
int error = Marshal.GetLastWin32Error();
string message = "";
uint formatFlags = 0x00001000 | 0x00000200 | 0x00000100 | 0x00000080;
uint formatResult = FormatMessage(formatFlags, IntPtr.Zero, (uint)error, 0, out message, 0, IntPtr.Zero);
if (formatResult == 0)
{
message = "Unknown error.";
}
Logger.WriteLine($"Failed to turn off screen. Error code: {error}. {message}");
}
}
// Monitor Power detection
internal const uint DEVICE_NOTIFY_WINDOW_HANDLE = 0x0;

View File

@@ -0,0 +1,481 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NvAPIWrapper.Native;
using NvAPIWrapper.Native.DRS;
using NvAPIWrapper.Native.DRS.Structures;
namespace NvAPIWrapper.DRS
{
/// <summary>
/// Represents a NVIDIA driver settings profile
/// </summary>
public class DriverSettingsProfile
{
internal DriverSettingsProfile(DRSProfileHandle handle, DriverSettingsSession parentSession)
{
Handle = handle;
Session = parentSession;
}
/// <summary>
/// Gets a list of applications under this profile
/// </summary>
public IEnumerable<ProfileApplication> Applications
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
return DRSApi.EnumApplications(Session.Handle, Handle)
.Select(application => new ProfileApplication(application, this));
}
}
/// <summary>
/// Gets or sets the profile support value for GPU series
/// </summary>
public DRSGPUSupport GPUSupport
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var profileInfo = DRSApi.GetProfileInfo(Session.Handle, Handle);
return profileInfo.GPUSupport;
}
set
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var profileInfo = DRSApi.GetProfileInfo(Session.Handle, Handle);
profileInfo.GPUSupport = value;
DRSApi.SetProfileInfo(Session.Handle, Handle, profileInfo);
}
}
/// <summary>
/// Gets the profile handle
/// </summary>
public DRSProfileHandle Handle { get; private set; }
/// <summary>
/// Gets a boolean value indicating if this profile is predefined
/// </summary>
public bool IsPredefined
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var profileInfo = DRSApi.GetProfileInfo(Session.Handle, Handle);
return profileInfo.IsPredefined;
}
}
/// <summary>
/// Gets a boolean value indicating if this profile is valid and contains a non-zero handle
/// </summary>
public bool IsValid
{
get => !Handle.IsNull;
}
/// <summary>
/// Gets the name of the profile
/// </summary>
public string Name
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var profileInfo = DRSApi.GetProfileInfo(Session.Handle, Handle);
return profileInfo.Name;
}
}
/// <summary>
/// Gets the number of application registered under this profile
/// </summary>
public int NumberOfApplications
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var profileInfo = DRSApi.GetProfileInfo(Session.Handle, Handle);
return profileInfo.NumberOfApplications;
}
}
/// <summary>
/// Gets the number of settings under this profile
/// </summary>
public int NumberOfSettings
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var profileInfo = DRSApi.GetProfileInfo(Session.Handle, Handle);
return profileInfo.NumberOfSettings;
}
}
/// <summary>
/// Gets the session that had queried this profile
/// </summary>
public DriverSettingsSession Session { get; }
/// <summary>
/// Gets a list of settings under this profile
/// </summary>
public IEnumerable<ProfileSetting> Settings
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
return DRSApi.EnumSettings(Session.Handle, Handle).Select(setting => new ProfileSetting(setting));
}
}
/// <summary>
/// Creates a new profile
/// </summary>
/// <param name="session">The session to create this profile in.</param>
/// <param name="profileName">The name of the profile.</param>
/// <param name="gpuSupport">The supported GPU series for this profile.</param>
/// <returns>An instance of <see cref="DriverSettingsProfile" /> representing this newly created profile.</returns>
public static DriverSettingsProfile CreateProfile(
DriverSettingsSession session,
string profileName,
DRSGPUSupport? gpuSupport = null)
{
gpuSupport = gpuSupport ?? new DRSGPUSupport();
var profileInfo = new DRSProfileV1(profileName, gpuSupport.Value);
var profileHandle = DRSApi.CreateProfile(session.Handle, profileInfo);
return new DriverSettingsProfile(profileHandle, session);
}
/// <inheritdoc />
public override string ToString()
{
if (!IsValid)
{
return "[Invalid]";
}
if (IsPredefined)
{
return $"{Name} (Predefined)";
}
return Name;
}
/// <summary>
/// Deletes this profile and makes this instance invalid.
/// </summary>
public void Delete()
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
DRSApi.DeleteProfile(Session.Handle, Handle);
Handle = DRSProfileHandle.DefaultHandle;
}
/// <summary>
/// Deletes an application by its name.
/// </summary>
/// <param name="applicationName">The name of the application to be deleted.</param>
public void DeleteApplicationByName(string applicationName)
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
DRSApi.DeleteApplication(Session.Handle, Handle, applicationName);
}
/// <summary>
/// Deletes a setting by its identification number
/// </summary>
/// <param name="settingId">The identification number of the setting to be deleted.</param>
public void DeleteSetting(uint settingId)
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
DRSApi.DeleteProfileSetting(Session.Handle, Handle, settingId);
}
/// <summary>
/// Deletes a setting by its known identification number.
/// </summary>
/// <param name="settingId">The known identification number of the setting to be deleted.</param>
public void DeleteSetting(KnownSettingId settingId)
{
DeleteSetting(SettingInfo.GetSettingId(settingId));
}
/// <summary>
/// Finds an application by its name.
/// </summary>
/// <param name="applicationName">The name of the application to search for.</param>
/// <returns>
/// An instance of <see cref="ProfileApplication" /> if an application is found; otherwise <see langword="null" />
/// .
/// </returns>
public ProfileApplication GetApplicationByName(string applicationName)
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var application = DRSApi.GetApplicationInfo(Session.Handle, Handle, applicationName);
if (application == null)
{
return null;
}
return new ProfileApplication(application, this);
}
/// <summary>
/// Searches for a setting using its identification number.
/// </summary>
/// <param name="settingId">The identification number of the setting to search for.</param>
/// <returns>An instance of <see cref="ProfileSetting" /> if a setting is found; otherwise <see langword="null" />.</returns>
public ProfileSetting GetSetting(uint settingId)
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var setting = DRSApi.GetSetting(Session.Handle, Handle, settingId);
if (setting == null)
{
return null;
}
return new ProfileSetting(setting.Value);
}
/// <summary>
/// Searches for a setting using its known identification number.
/// </summary>
/// <param name="settingId">The known identification number of the setting to search for.</param>
/// <returns>An instance of <see cref="ProfileSetting" /> if a setting is found; otherwise <see langword="null" />.</returns>
public ProfileSetting GetSetting(KnownSettingId settingId)
{
return GetSetting(SettingInfo.GetSettingId(settingId));
}
/// <summary>
/// Restores applications and settings of this profile to their default. This also deletes custom profiles resulting in
/// their handles becoming invalid.
/// </summary>
public void RestoreDefaults()
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var isPredefined = IsPredefined;
DRSApi.RestoreDefaults(Session.Handle, Handle);
if (!isPredefined)
{
Handle = DRSProfileHandle.DefaultHandle;
}
}
/// <summary>
/// Restores a setting to its default value.
/// </summary>
/// <param name="settingId">The identification number of the setting.</param>
public void RestoreSettingToDefault(uint settingId)
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
DRSApi.RestoreDefaults(Session.Handle, Handle, settingId);
}
/// <summary>
/// Restores a setting to its default value.
/// </summary>
/// <param name="settingId">The known identification number of the setting.</param>
public void RestoreSettingToDefault(KnownSettingId settingId)
{
RestoreSettingToDefault(SettingInfo.GetSettingId(settingId));
}
/// <summary>
/// Sets a new value for a setting or creates a new setting and sets its value
/// </summary>
/// <param name="settingId">The known identification number of the setting to change its value.</param>
/// <param name="settingType">The type of the setting value.</param>
/// <param name="value">The new value for the setting.</param>
public void SetSetting(KnownSettingId settingId, DRSSettingType settingType, object value)
{
SetSetting(SettingInfo.GetSettingId(settingId), settingType, value);
}
/// <summary>
/// Sets a new value for a setting or creates a new setting and sets its value
/// </summary>
/// <param name="settingId">The known identification number of the setting to change its value.</param>
/// <param name="value">The new value for the setting.</param>
public void SetSetting(KnownSettingId settingId, string value)
{
SetSetting(SettingInfo.GetSettingId(settingId), value);
}
/// <summary>
/// Sets a new value for a setting or creates a new setting and sets its value
/// </summary>
/// <param name="settingId">The known identification number of the setting to change its value.</param>
/// <param name="value">The new value for the setting.</param>
public void SetSetting(KnownSettingId settingId, byte[] value)
{
SetSetting(SettingInfo.GetSettingId(settingId), value);
}
/// <summary>
/// Sets a new value for a setting or creates a new setting and sets its value
/// </summary>
/// <param name="settingId">The known identification number of the setting to change its value.</param>
/// <param name="value">The new value for the setting.</param>
public void SetSetting(KnownSettingId settingId, uint value)
{
SetSetting(SettingInfo.GetSettingId(settingId), value);
}
/// <summary>
/// Sets a new value for a setting or creates a new setting and sets its value
/// </summary>
/// <param name="settingId">The identification number of the setting to change its value.</param>
/// <param name="settingType">The type of the setting value.</param>
/// <param name="value">The new value for the setting.</param>
public void SetSetting(uint settingId, DRSSettingType settingType, object value)
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid profile instance."
);
}
var setting = new DRSSettingV1(settingId, settingType, value);
DRSApi.SetSetting(Session.Handle, Handle, setting);
}
/// <summary>
/// Sets a new value for a setting or creates a new setting and sets its value
/// </summary>
/// <param name="settingId">The identification number of the setting to change its value.</param>
/// <param name="value">The new value for the setting.</param>
public void SetSetting(uint settingId, string value)
{
SetSetting(settingId, DRSSettingType.UnicodeString, value);
}
/// <summary>
/// Sets a new value for a setting or creates a new setting and sets its value
/// </summary>
/// <param name="settingId">The identification number of the setting to change its value.</param>
/// <param name="value">The new value for the setting.</param>
public void SetSetting(uint settingId, byte[] value)
{
SetSetting(settingId, DRSSettingType.Binary, value);
}
/// <summary>
/// Sets a new value for a setting or creates a new setting and sets its value
/// </summary>
/// <param name="settingId">The identification number of the setting to change its value.</param>
/// <param name="value">The new value for the setting.</param>
public void SetSetting(uint settingId, uint value)
{
SetSetting(settingId, DRSSettingType.Integer, value);
}
}
}

View File

@@ -0,0 +1,236 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NvAPIWrapper.Native;
using NvAPIWrapper.Native.DRS.Structures;
namespace NvAPIWrapper.DRS
{
/// <summary>
/// Represents a driver settings session. This is the starting point for using DRS set of functionalities.
/// </summary>
public class DriverSettingsSession : IDisposable
{
internal DriverSettingsSession(DRSSessionHandle handle)
{
Handle = handle;
}
private DriverSettingsSession() : this(DRSApi.CreateSession())
{
}
/// <summary>
/// Gets the base settings profile
/// </summary>
public DriverSettingsProfile BaseProfile
{
get
{
var profileHandle = DRSApi.GetBaseProfile(Handle);
if (profileHandle.IsNull)
{
return null;
}
return new DriverSettingsProfile(profileHandle, this);
}
}
/// <summary>
/// Gets the global settings profile
/// </summary>
public DriverSettingsProfile CurrentGlobalProfile
{
get
{
var profileHandle = DRSApi.GetCurrentGlobalProfile(Handle);
if (profileHandle.IsNull)
{
return null;
}
return new DriverSettingsProfile(profileHandle, this);
}
set
{
if (value == null)
{
throw new ArgumentNullException(nameof(value));
}
if (string.IsNullOrEmpty(value.Name))
{
throw new ArgumentException("Profile name can not be empty.", nameof(value));
}
DRSApi.SetCurrentGlobalProfile(Handle, value.Name);
}
}
/// <summary>
/// Gets the session handle
/// </summary>
public DRSSessionHandle Handle { get; }
/// <summary>
/// Gets the number of registered profiles
/// </summary>
public int NumberOfProfiles
{
get => DRSApi.GetNumberOfProfiles(Handle);
}
/// <summary>
/// Gets the list of all registered profiles
/// </summary>
public IEnumerable<DriverSettingsProfile> Profiles
{
get { return DRSApi.EnumProfiles(Handle).Select(handle => new DriverSettingsProfile(handle, this)); }
}
/// <inheritdoc />
public void Dispose()
{
ReleaseUnmanagedResources();
GC.SuppressFinalize(this);
}
/// <summary>
/// Creates a new session and load the settings
/// </summary>
/// <returns>A new instance of <see cref="DriverSettingsSession" /> representing a session.</returns>
public static DriverSettingsSession CreateAndLoad()
{
var session = new DriverSettingsSession();
session.Load();
return session;
}
/// <summary>
/// Creates a new session and load the settings from a file
/// </summary>
/// <param name="fileName">The full path of file to load settings from.</param>
/// <returns>A new instance of <see cref="DriverSettingsSession" /> representing a session.</returns>
public static DriverSettingsSession CreateAndLoad(string fileName)
{
var session = new DriverSettingsSession();
session.Load(fileName);
return session;
}
/// <inheritdoc />
public override string ToString()
{
return $"{Handle} ({NumberOfProfiles} Profiles)";
}
/// <summary>
/// Finds an application by name. This method is useful when passed a full path of a file as it does return an
/// application almost always describing the NVIDIA driver behavior regarding the passed executable file.
/// </summary>
/// <param name="applicationName">The name of the application (with extension) or the full path of an executable file.</param>
/// <returns>An instance of <see cref="ProfileApplication" /> class.</returns>
public ProfileApplication FindApplication(string applicationName)
{
var application = DRSApi.FindApplicationByName(Handle, applicationName, out var profileHandle);
if (application == null || !profileHandle.HasValue || profileHandle.Value.IsNull)
{
return null;
}
var profile = new DriverSettingsProfile(profileHandle.Value, this);
return new ProfileApplication(application, profile);
}
/// <summary>
/// Finds a profile based on the application named passed. This method is useful when passed a full path of a file as
/// it does return a profile almost always describing the NVIDIA driver behavior regarding the passed executable file.
/// </summary>
/// <param name="applicationName">The name of the application (with extension) or the full path of an executable file.</param>
/// <returns>
/// An instance of <see cref="DriverSettingsProfile" /> class describing the NVIDIA driver behavior regarding the
/// passed executable file.
/// </returns>
public DriverSettingsProfile FindApplicationProfile(string applicationName)
{
var application = DRSApi.FindApplicationByName(Handle, applicationName, out var profileHandle);
if (application == null || !profileHandle.HasValue || profileHandle.Value.IsNull)
{
return null;
}
return new DriverSettingsProfile(profileHandle.Value, this);
}
/// <summary>
/// Finds a profile based on its name.
/// </summary>
/// <param name="profileName">The profile name to search for.</param>
/// <returns>An instance of <see cref="DriverSettingsProfile" /> class.</returns>
public DriverSettingsProfile FindProfileByName(string profileName)
{
var profileHandle = DRSApi.FindProfileByName(Handle, profileName);
if (profileHandle.IsNull)
{
return null;
}
return new DriverSettingsProfile(profileHandle, this);
}
/// <summary>
/// Resets all settings to default.
/// </summary>
public void RestoreDefaults()
{
DRSApi.RestoreDefaults(Handle);
}
/// <summary>
/// Saves the current session settings
/// </summary>
public void Save()
{
DRSApi.SaveSettings(Handle);
}
/// <summary>
/// Saves the current session settings to a file
/// </summary>
/// <param name="fileName">The full path of file to save settings to.</param>
public void Save(string fileName)
{
DRSApi.SaveSettings(Handle, fileName);
}
private void Load()
{
DRSApi.LoadSettings(Handle);
}
private void Load(string fileName)
{
DRSApi.LoadSettings(Handle, fileName);
}
private void ReleaseUnmanagedResources()
{
DRSApi.DestroySession(Handle);
}
/// <inheritdoc />
~DriverSettingsSession()
{
ReleaseUnmanagedResources();
}
}
}

View File

@@ -0,0 +1,555 @@
using System.ComponentModel;
namespace NvAPIWrapper.DRS
{
#pragma warning disable 1591
public enum KnownSettingId : uint
{
/// <summary>
/// Antialiasing - Line gamma
/// </summary>
[Description("Antialiasing - Line gamma")]
OpenGLAntiAliasingLineGamma = 0x2089BF6C,
/// <summary>
/// Deep color for 3D applications
/// </summary>
[Description("Deep color for 3D applications")]
OpenGLDeepColorScanOut = 0x2097C2F6,
/// <summary>
/// OpenGL default swap interval
/// </summary>
[Description("OpenGL default swap interval")]
OpenGLDefaultSwapInterval = 0x206A6582,
/// <summary>
/// OpenGL default swap interval fraction
/// </summary>
[Description("OpenGL default swap interval fraction")]
OpenGLDefaultSwapIntervalFractional = 0x206C4581,
/// <summary>
/// OpenGL default swap interval sign
/// </summary>
[Description("OpenGL default swap interval sign")]
OpenGLDefaultSwapIntervalSign = 0x20655CFA,
/// <summary>
/// Event Log Severity Threshold
/// </summary>
[Description("Event Log Severity Threshold")]
OpenGLEventLogSeverityThreshold = 0x209DF23E,
/// <summary>
/// Extension String version
/// </summary>
[Description("Extension String version")]
OpenGLExtensionStringVersion = 0x20FF7493,
/// <summary>
/// Buffer-flipping mode
/// </summary>
[Description("Buffer-flipping mode")] OpenGLForceBlit = 0x201F619F,
/// <summary>
/// Force Stereo shuttering
/// </summary>
[Description("Force Stereo shuttering")]
OpenGLForceStereo = 0x204D9A0C,
/// <summary>
/// Preferred OpenGL GPU
/// </summary>
[Description("Preferred OpenGL GPU")] OpenGLImplicitGPUAffinity = 0x20D0F3E6,
/// <summary>
/// Maximum frames allowed
/// </summary>
[Description("Maximum frames allowed")]
OpenGLMaximumFramesAllowed = 0x208E55E3,
/// <summary>
/// Exported Overlay pixel types
/// </summary>
[Description("Exported Overlay pixel types")]
OpenGLOverlayPixelType = 0x209AE66F,
/// <summary>
/// Enable overlay
/// </summary>
[Description("Enable overlay")] OpenGLOverlaySupport = 0x206C28C4,
/// <summary>
/// High level control of the rendering quality on OpenGL
/// </summary>
[Description("High level control of the rendering quality on OpenGL")]
OpenGLQualityEnhancements = 0x20797D6C,
/// <summary>
/// Unified back/depth buffer
/// </summary>
[Description("Unified back/depth buffer")]
OpenGLSingleBackDepthBuffer = 0x20A29055,
/// <summary>
/// Enable NV_gpu_multicast extension
/// </summary>
[Description("Enable NV_gpu_multicast extension")]
OpenGLSLIMulticast = 0x2092D3BE,
/// <summary>
/// Threaded optimization
/// </summary>
[Description("Threaded optimization")] OpenGLThreadControl = 0x20C1221E,
/// <summary>
/// Event Log Tmon Severity Threshold
/// </summary>
[Description("Event Log Tmon Severity Threshold")]
OpenGLTMONLevel = 0x202888C1,
/// <summary>
/// Triple buffering
/// </summary>
[Description("Triple buffering")] OpenGLTripleBuffer = 0x20FDD1F9,
/// <summary>
/// Antialiasing - Behavior Flags
/// </summary>
[Description("Antialiasing - Behavior Flags")]
AntiAliasingBehaviorFlags = 0x10ECDB82,
/// <summary>
/// Antialiasing - Transparency Multisampling
/// </summary>
[Description("Antialiasing - Transparency Multisampling")]
AntiAliasingModeAlphaToCoverage = 0x10FC2D9C,
/// <summary>
/// Antialiasing - Gamma correction
/// </summary>
[Description("Antialiasing - Gamma correction")]
AntiAliasingModeGammaCorrection = 0x107D639D,
/// <summary>
/// Antialiasing - Setting
/// </summary>
[Description("Antialiasing - Setting")]
AntiAliasingModeMethod = 0x10D773D2,
/// <summary>
/// Antialiasing - Transparency Supersampling
/// </summary>
[Description("Antialiasing - Transparency Supersampling")]
AntiAliasingModeReplay = 0x10D48A85,
/// <summary>
/// Antialiasing - Mode
/// </summary>
[Description("Antialiasing - Mode")] AntiAliasingModeSelector = 0x107EFC5B,
/// <summary>
/// Antialiasing - SLI AA
/// </summary>
[Description("Antialiasing - SLI AA")] AntiAliasingModeSelectorSLIAntiAliasing = 0x107AFC5B,
/// <summary>
/// Anisotropic filtering setting
/// </summary>
[Description("Anisotropic filtering setting")]
AnisotropicModeLevel = 0x101E61A9,
/// <summary>
/// Anisotropic filtering mode
/// </summary>
[Description("Anisotropic filtering mode")]
AnisotropicModeSelector = 0x10D2BB16,
/// <summary>
/// NVIDIA Predefined Ansel Usage
/// </summary>
[Description("NVIDIA Predefined Ansel Usage")]
AnselAllow = 0x1035DB89,
/// <summary>
/// Enable Ansel
/// </summary>
[Description("Enable Ansel")] AnselEnable = 0x1075D972,
/// <summary>
/// Ansel flags for enabled applications
/// </summary>
[Description("Ansel flags for enabled applications")]
AnselWhiteListed = 0x1085DA8A,
/// <summary>
/// Application Profile Notification Popup Timeout
/// </summary>
[Description("Application Profile Notification Popup Timeout")]
ApplicationProfileNotificationTimeOut = 0x104554B6,
/// <summary>
/// Steam Application ID
/// </summary>
[Description("Steam Application ID")] ApplicationSteamId = 0x107CDDBC,
/// <summary>
/// Battery Boost
/// </summary>
[Description("Battery Boost")] BatteryBoost = 0x10115C89,
/// <summary>
/// Do not display this profile in the Control Panel
/// </summary>
[Description("Do not display this profile in the Control Panel")]
ControlPanelHiddenProfile = 0x106D5CFF,
/// <summary>
/// List of Universal GPU ids
/// </summary>
[Description("List of Universal GPU ids")]
CUDAExcludedGPUs = 0x10354FF8,
/// <summary>
/// Maximum GPU Power
/// </summary>
[Description("Maximum GPU Power")] D3DOpenGLGPUMaximumPower = 0x10D1EF29,
/// <summary>
/// Export Performance Counters
/// </summary>
[Description("Export Performance Counters")]
ExportPerformanceCounters = 0x108F0841,
/// <summary>
/// NVIDIA Predefined FXAA Usage
/// </summary>
[Description("NVIDIA Predefined FXAA Usage")]
FXAAAllow = 0x1034CB89,
/// <summary>
/// Enable FXAA
/// </summary>
[Description("Enable FXAA")] FXAAEnable = 0x1074C972,
/// <summary>
/// Enable FXAA Indicator
/// </summary>
[Description("Enable FXAA Indicator")] FXAAIndicatorEnable = 0x1068FB9C,
/// <summary>
/// SLI indicator
/// </summary>
[Description("SLI indicator")] MCSFRShowSplit = 0x10287051,
/// <summary>
/// NVIDIA Quality upscaling
/// </summary>
[Description("NVIDIA Quality upscaling")]
NvidiaQualityUpScaling = 0x10444444,
/// <summary>
/// Maximum AA samples allowed for a given application
/// </summary>
[Description("Maximum AA samples allowed for a given application")]
OptimusMaximumAntiAliasing = 0x10F9DC83,
/// <summary>
/// Display the PhysX indicator
/// </summary>
[Description("Display the PhysX indicator")]
PhysxIndicator = 0x1094F16F,
/// <summary>
/// Power management mode
/// </summary>
[Description("Power management mode")] PreferredPerformanceState = 0x1057EB71,
/// <summary>
/// No override of Anisotropic filtering
/// </summary>
[Description("No override of Anisotropic filtering")]
PreventUiAnisotropicOverride = 0x103BCCB5,
/// <summary>
/// Frame Rate Limiter
/// </summary>
[Description("Frame Rate Limiter")] PerformanceStateFrameRateLimiter = 0x10834FEE,
/// <summary>
/// Frame Rate Limiter 2 Control
/// </summary>
[Description("Frame Rate Limiter 2 Control")]
PerformanceStateFrameRateLimiter2Control = 0x10834FFF,
/// <summary>
/// Frame Rate Monitor
/// </summary>
[Description("Frame Rate Monitor")] PerformanceStateFrameRateLimiterGpsControl = 0x10834F01,
/// <summary>
/// Frame Rate Monitor Control
/// </summary>
[Description("Frame Rate Monitor Control")]
PerformanceStateFrameRateMonitorControl = 0x10834F05,
/// <summary>
/// Maximum resolution allowed for a given application
/// </summary>
[Description("Maximum resolution allowed for a given application")]
ShimMaxResolution = 0x10F9DC82,
/// <summary>
/// Optimus flags for enabled applications
/// </summary>
[Description("Optimus flags for enabled applications")]
ShimMCCOMPAT = 0x10F9DC80,
/// <summary>
/// Enable application for Optimus
/// </summary>
[Description("Enable application for Optimus")]
ShimRenderingMode = 0x10F9DC81,
/// <summary>
/// Shim Rendering Mode Options per application for Optimus
/// </summary>
[Description("Shim Rendering Mode Options per application for Optimus")]
ShimRenderingOptions = 0x10F9DC84,
/// <summary>
/// Number of GPUs to use on SLI rendering mode
/// </summary>
[Description("Number of GPUs to use on SLI rendering mode")]
SLIGPUCount = 0x1033DCD1,
/// <summary>
/// NVIDIA predefined number of GPUs to use on SLI rendering mode
/// </summary>
[Description("NVIDIA predefined number of GPUs to use on SLI rendering mode")]
SLIPredefinedGPUCount = 0x1033DCD2,
/// <summary>
/// NVIDIA predefined number of GPUs to use on SLI rendering mode on DirectX 10
/// </summary>
[Description("NVIDIA predefined number of GPUs to use on SLI rendering mode on DirectX 10")]
SLIPredefinedGPUCountDX10 = 0x1033DCD3,
/// <summary>
/// NVIDIA predefined SLI mode
/// </summary>
[Description("NVIDIA predefined SLI mode")]
SLIPredefinedMode = 0x1033CEC1,
/// <summary>
/// NVIDIA predefined SLI mode on DirectX 10
/// </summary>
[Description("NVIDIA predefined SLI mode on DirectX 10")]
SLIPredefinedModeDX10 = 0x1033CEC2,
/// <summary>
/// SLI rendering mode
/// </summary>
[Description("SLI rendering mode")] SLIRenderingMode = 0x1033CED1,
/// <summary>
/// Virtual Reality pre-rendered frames
/// </summary>
[Description("Virtual Reality pre-rendered frames")]
VRPreRenderLimit = 0x10111133,
/// <summary>
/// Toggle the VRR global feature
/// </summary>
[Description("Toggle the VRR global feature")]
VRRFeatureIndicator = 0x1094F157,
/// <summary>
/// Display the VRR Overlay Indicator
/// </summary>
[Description("Display the VRR Overlay Indicator")]
VRROverlayIndicator = 0x1095F16F,
/// <summary>
/// VRR requested state
/// </summary>
[Description("VRR requested state")] VRRRequestState = 0x1094F1F7,
/// <summary>
/// G-SYNC
/// </summary>
[Description("G-SYNC")] VRRApplicationOverride = 0x10A879CF,
/// <summary>
/// G-SYNC
/// </summary>
[Description("G-SYNC")] VRRApplicationOverrideRequestState = 0x10A879AC,
/// <summary>
/// Enable G-SYNC globally
/// </summary>
[Description("Enable G-SYNC globally")]
VRRMode = 0x1194F158,
/// <summary>
/// Flag to control smooth AFR behavior
/// </summary>
[Description("Flag to control smooth AFR behavior")]
VSyncSmoothAFR = 0x101AE763,
/// <summary>
/// Variable refresh Rate
/// </summary>
[Description("Variable refresh Rate")] VSyncVRRControl = 0x10A879CE,
/// <summary>
/// Vsync - Behavior Flags
/// </summary>
[Description("Vsync - Behavior Flags")]
VSyncBehaviorFlags = 0x10FDEC23,
/// <summary>
/// Stereo - Swap eyes
/// </summary>
[Description("Stereo - Swap eyes")] WKSAPIStereoEyesExchange = 0x11AE435C,
/// <summary>
/// Stereo - Display mode
/// </summary>
[Description("Stereo - Display mode")] WKSAPIStereoMode = 0x11E91A61,
/// <summary>
/// Memory Allocation Policy
/// </summary>
[Description("Memory Allocation Policy")]
WKSMemoryAllocationPolicy = 0x11112233,
/// <summary>
/// Stereo - Dongle Support
/// </summary>
[Description("Stereo - Dongle Support")]
WKSStereoDongleSupport = 0x112493BD,
/// <summary>
/// Stereo - Enable
/// </summary>
[Description("Stereo - Enable")] WKSStereoSupport = 0x11AA9E99,
/// <summary>
/// Stereo <20> swap mode
/// </summary>
[Description("Stereo <20> swap mode")] WKSStereoSwapMode = 0x11333333,
/// <summary>
/// Ambient Occlusion
/// </summary>
[Description("Ambient Occlusion")] AmbientOcclusionMode = 0x667329,
/// <summary>
/// NVIDIA Predefined Ambient Occlusion Usage
/// </summary>
[Description("NVIDIA Predefined Ambient Occlusion Usage")]
AmbientOcclusionModeActive = 0x664339,
/// <summary>
/// Texture filtering - Driver Controlled LOD Bias
/// </summary>
[Description("Texture filtering - Driver Controlled LOD Bias")]
AutoLODBiasAdjust = 0x638E8F,
/// <summary>
/// Export Performance Counters for DX9 only
/// </summary>
[Description("Export Performance Counters for DX9 only")]
ExportPerformanceCountersDX9Only = 0xB65E72,
/// <summary>
/// ICafe Settings
/// </summary>
[Description("ICafe Settings")] ICafeLogoConfig = 0xDB1337,
/// <summary>
/// Texture filtering - LOD Bias
/// </summary>
[Description("Texture filtering - LOD Bias")]
LODBiasAdjust = 0x738E8F,
/// <summary>
/// Enable sample interleaving (MFAA)
/// </summary>
[Description("Enable sample interleaving (MFAA)")]
MaxwellBSampleInterleave = 0x98C1AC,
/// <summary>
/// Maximum pre-rendered frames
/// </summary>
[Description("Maximum pre-rendered frames")]
PreRenderLimit = 0x7BA09E,
/// <summary>
/// Shader Cache
/// </summary>
[Description("Shader Cache")] PerformanceStateShaderDiskCache = 0x198FFF,
/// <summary>
/// Texture filtering - Anisotropic sample optimization
/// </summary>
[Description("Texture filtering - Anisotropic sample optimization")]
PerformanceStateTextureFilteringAnisotropicOptimization = 0xE73211,
/// <summary>
/// Texture filtering - Anisotropic filter optimization
/// </summary>
[Description("Texture filtering - Anisotropic filter optimization")]
PerformanceStateTextureFilteringBiLinearInAnisotropic = 0x84CD70,
/// <summary>
/// Texture filtering - Trilinear optimization
/// </summary>
[Description("Texture filtering - Trilinear optimization")]
PerformanceStateTextureFilteringDisableTrilinearSlope = 0x2ECAF2,
/// <summary>
/// Texture filtering - Negative LOD bias
/// </summary>
[Description("Texture filtering - Negative LOD bias")]
PerformanceStateTextureFilteringNoNegativeLODBias = 0x19BB68,
/// <summary>
/// Texture filtering - Quality
/// </summary>
[Description("Texture filtering - Quality")]
QualityEnhancements = 0xCE2691,
/// <summary>
/// Preferred refresh rate
/// </summary>
[Description("Preferred refresh rate")]
RefreshRateOverride = 0x64B541,
/// <summary>
/// PowerThrottle
/// </summary>
[Description("PowerThrottle")] SetPowerThrottleForPCIeCompliance = 0xAE785C,
/// <summary>
/// VAB Default Data
/// </summary>
[Description("VAB Default Data")] SetVABData = 0xAB8687,
/// <summary>
/// Vertical Sync
/// </summary>
[Description("Vertical Sync")] VSyncMode = 0xA879CF,
/// <summary>
/// Vertical Sync Tear Control
/// </summary>
[Description("Vertical Sync Tear Control")]
VSyncTearControl = 0x5A375C,
InvalidSetting = 0xFFFFFFFF
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,424 @@
using System;
using NvAPIWrapper.Native;
using NvAPIWrapper.Native.DRS.Structures;
using NvAPIWrapper.Native.Exceptions;
using NvAPIWrapper.Native.Interfaces.DRS;
namespace NvAPIWrapper.DRS
{
/// <summary>
/// Represents an application rule registered in a profile
/// </summary>
public class ProfileApplication
{
private IDRSApplication _application;
internal ProfileApplication(IDRSApplication application, DriverSettingsProfile profile)
{
Profile = profile;
_application = application;
}
/// <summary>
/// Gets the application name
/// </summary>
public string ApplicationName
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
return _application.ApplicationName;
}
}
/// <summary>
/// Gets the application command line
/// </summary>
public string CommandLine
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
if (_application is DRSApplicationV4 applicationV4)
{
return applicationV4.ApplicationCommandLine;
}
return null;
}
}
/// <summary>
/// Gets a list of files that are necessary to be present inside the application parent directory
/// </summary>
public string[] FilesInFolder
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
if (_application is DRSApplicationV2 applicationV2)
{
return applicationV2.FilesInFolder;
}
if (_application is DRSApplicationV3 applicationV3)
{
return applicationV3.FilesInFolder;
}
if (_application is DRSApplicationV4 applicationV4)
{
return applicationV4.FilesInFolder;
}
return null;
}
}
/// <summary>
/// Gets the application friendly name
/// </summary>
public string FriendlyName
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
return _application.FriendlyName;
}
}
/// <summary>
/// Gets a boolean value indicating if this application rule needs a specific command line; or <see langword="null" />
/// if this information is not available.
/// </summary>
public bool? HasCommandLine
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
if (_application is DRSApplicationV3 applicationV3)
{
return applicationV3.HasCommandLine;
}
if (_application is DRSApplicationV4 applicationV4)
{
return applicationV4.HasCommandLine;
}
return null;
}
}
/// <summary>
/// Gets a boolean value indicating if this application is a metro application; or <see langword="null" /> if this
/// information is not available.
/// </summary>
public bool? IsMetroApplication
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
if (_application is DRSApplicationV3 applicationV3)
{
return applicationV3.IsMetroApplication;
}
if (_application is DRSApplicationV4 applicationV4)
{
return applicationV4.IsMetroApplication;
}
return null;
}
}
/// <summary>
/// Gets a boolean value indicating if this application is predefined by the NVIDIA driver
/// </summary>
public bool IsPredefined
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
return _application.IsPredefined;
}
}
/// <summary>
/// Gets a boolean value indicating if this instance of <see cref="ProfileApplication" /> is a valid instance
/// representing an application in a profile
/// </summary>
public bool IsValid
{
get => _application != null && Profile.IsValid;
}
/// <summary>
/// Gets the application launcher name
/// </summary>
public string LauncherName
{
get
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
return _application.LauncherName;
}
}
/// <summary>
/// Gets the parent profile instance
/// </summary>
public DriverSettingsProfile Profile { get; }
/// <summary>
/// Creates a new application
/// </summary>
/// <param name="profile">The profile to create the new application in.</param>
/// <param name="applicationName">The application name (with extension).</param>
/// <param name="friendlyName">The application friendly name.</param>
/// <param name="launcherName">The application launcher name.</param>
/// <param name="fileInFolders">An array of files necessary to be present inside the application parent directory.</param>
/// <param name="isMetro">A boolean value indicating if this application is a metro application.</param>
/// <param name="commandLine">The application command line string.</param>
/// <returns>A new instance of <see cref="ProfileApplication" /> representing the newly created application.</returns>
// ReSharper disable once TooManyArguments
// ReSharper disable once FunctionComplexityOverflow
public static ProfileApplication CreateApplication(
DriverSettingsProfile profile,
string applicationName,
string friendlyName = null,
string launcherName = null,
string[] fileInFolders = null,
bool isMetro = false,
string commandLine = null
)
{
var createDelegates = new Func<string, string, string, string[], bool, string, IDRSApplication>[]
{
CreateApplicationInstanceV4,
CreateApplicationInstanceV3,
CreateApplicationInstanceV2,
CreateApplicationInstanceV1
};
Exception lastException = null;
IDRSApplication application = null;
foreach (var func in createDelegates)
{
try
{
// ReSharper disable once EventExceptionNotDocumented
application = func(
applicationName,
friendlyName,
launcherName,
fileInFolders,
isMetro,
commandLine
);
break;
}
catch (NVIDIANotSupportedException e)
{
// ignore
lastException = e;
}
}
if (application == null)
{
// ReSharper disable once ThrowingSystemException
throw lastException;
}
application = DRSApi.CreateApplication(profile.Session.Handle, profile.Handle, application);
return new ProfileApplication(application, profile);
}
// ReSharper disable once TooManyArguments
private static IDRSApplication CreateApplicationInstanceV1(
string applicationName,
string friendlyName = null,
string launcherName = null,
string[] fileInFolders = null,
bool isMetro = false,
string commandLine = null
)
{
if (!string.IsNullOrWhiteSpace(commandLine))
{
throw new NotSupportedException(
"CommandLine is not supported with the current execution environment."
);
}
if (fileInFolders?.Length > 0)
{
throw new NotSupportedException(
"Same folder file presence check is not supported with the current execution environment."
);
}
return new DRSApplicationV1(
applicationName,
friendlyName,
launcherName
);
}
// ReSharper disable once TooManyArguments
private static IDRSApplication CreateApplicationInstanceV2(
string applicationName,
string friendlyName = null,
string launcherName = null,
string[] fileInFolders = null,
bool isMetro = false,
string commandLine = null
)
{
if (!string.IsNullOrWhiteSpace(commandLine))
{
throw new NotSupportedException(
"CommandLine is not supported with the current execution environment."
);
}
return new DRSApplicationV2(
applicationName,
friendlyName,
launcherName,
fileInFolders
);
}
// ReSharper disable once TooManyArguments
private static IDRSApplication CreateApplicationInstanceV3(
string applicationName,
string friendlyName = null,
string launcherName = null,
string[] fileInFolders = null,
bool isMetro = false,
string commandLine = null
)
{
if (!string.IsNullOrWhiteSpace(commandLine))
{
throw new NotSupportedException(
"CommandLine is not supported with the current execution environment."
);
}
return new DRSApplicationV3(
applicationName,
friendlyName,
launcherName,
fileInFolders,
isMetro
);
}
// ReSharper disable once TooManyArguments
private static IDRSApplication CreateApplicationInstanceV4(
string applicationName,
string friendlyName = null,
string launcherName = null,
string[] fileInFolders = null,
bool isMetro = false,
string commandLine = null
)
{
return new DRSApplicationV4(
applicationName,
friendlyName,
launcherName,
fileInFolders,
isMetro,
commandLine
);
}
/// <inheritdoc />
public override string ToString()
{
if (!IsValid)
{
return "[Invalid]";
}
if (IsPredefined)
{
return $"{ApplicationName} (Predefined)";
}
return ApplicationName;
}
/// <summary>
/// Deletes this application and makes this instance invalid
/// </summary>
public void Delete()
{
if (!IsValid)
{
throw new InvalidOperationException(
"Can not perform this operation with an invalid application instance."
);
}
DRSApi.DeleteApplication(Profile.Session.Handle, Profile.Handle, _application);
_application = null;
}
}
}

View File

@@ -0,0 +1,126 @@
using System;
using NvAPIWrapper.Native.DRS;
using NvAPIWrapper.Native.DRS.Structures;
namespace NvAPIWrapper.DRS
{
/// <summary>
/// Represents a profile setting and its value
/// </summary>
public class ProfileSetting
{
private readonly DRSSettingV1 _setting;
internal ProfileSetting(DRSSettingV1 setting)
{
_setting = setting;
}
/// <summary>
/// Gets the current value of the setting
/// </summary>
public object CurrentValue
{
get
{
if (IsPredefinedValueValid && IsCurrentValuePredefined)
{
return _setting.PredefinedValue;
}
return _setting.CurrentValue;
}
}
/// <summary>
/// Gets a boolean value indicating if the current value is the predefined value.
/// </summary>
public bool IsCurrentValuePredefined
{
get => _setting.IsCurrentValuePredefined;
}
/// <summary>
/// Gets a boolean value indicating if this setting had a predefined valid value.
/// </summary>
public bool IsPredefinedValueValid
{
get => _setting.IsPredefinedValueValid;
}
/// <summary>
/// Gets the predefined value of this setting.
/// </summary>
public object PredefinedValue
{
get
{
if (!IsPredefinedValueValid)
{
throw new InvalidOperationException("Predefined value is not valid.");
}
return _setting.PredefinedValue;
}
}
/// <summary>
/// Gets the setting identification number
/// </summary>
public uint SettingId
{
get => _setting.Id;
}
/// <summary>
/// Gets additional information regarding this setting including possible valid values
/// </summary>
public SettingInfo SettingInfo
{
get => SettingInfo.FromId(SettingId);
}
/// <summary>
/// Gets the profile location of this setting
/// </summary>
public DRSSettingLocation SettingLocation
{
get => _setting.SettingLocation;
}
/// <summary>
/// Gets the value type of this setting
/// </summary>
public DRSSettingType SettingType
{
get => _setting.SettingType;
}
/// <inheritdoc />
public override string ToString()
{
string settingName = null;
try
{
settingName = SettingInfo.Name;
}
catch
{
// ignore;
}
if (string.IsNullOrWhiteSpace(settingName))
{
settingName = $"#{SettingId:X}";
}
if (IsCurrentValuePredefined)
{
return $"{settingName} = {CurrentValue ?? "[NULL]"} (Predefined)";
}
return $"{settingName} = {CurrentValue ?? "[NULL]"}";
}
}
}

View File

@@ -0,0 +1,360 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using NvAPIWrapper.Native;
using NvAPIWrapper.Native.DRS;
namespace NvAPIWrapper.DRS
{
/// <summary>
/// Contains information about a setting
/// </summary>
public class SettingInfo
{
private static uint[] _availableSettingIds;
private SettingInfo(uint settingId)
{
SettingId = settingId;
}
/// <summary>
/// Gets an array of available possible valid values.
/// </summary>
public object[] AvailableValues
{
get
{
if (!IsAvailable)
{
return null;
}
return DRSApi.EnumAvailableSettingValues(SettingId).Values;
}
}
/// <summary>
/// Gets the default value of this setting
/// </summary>
public object DefaultValue
{
get
{
if (!IsAvailable)
{
return null;
}
var values = DRSApi.EnumAvailableSettingValues(SettingId);
return values.DefaultValue;
}
}
/// <summary>
/// Gets a boolean value indicating if this setting is available on this machine and with the current version of NVIDIA
/// driver
/// </summary>
public bool IsAvailable
{
get => GetAvailableSetting().Any(info => info.SettingId == SettingId);
}
/// <summary>
/// Gets a boolean value indicating if this setting is know by this library
/// </summary>
public bool IsKnown
{
get => IsSettingKnown(SettingId);
}
/// <summary>
/// Gets the description of this setting from the library or <see langword="null" /> if this setting is not known by
/// the library.
/// </summary>
public string KnownDescription
{
get
{
if (!IsKnown || KnownSettingId == null)
{
return null;
}
return GetSettingDescription(KnownSettingId.Value);
}
}
/// <summary>
/// Gets the known identification number of this setting from the library or <see langword="null" /> if this setting is
/// not known by the library.
/// </summary>
public KnownSettingId? KnownSettingId
{
get
{
if (!IsKnown)
{
return null;
}
return GetKnownSettingId(SettingId);
}
}
/// <summary>
/// Gets the type of a static class or an enum containing possible known values for this setting from the library or
/// <see langword="null" /> if this setting is not known by the library
/// </summary>
public Type KnownValueType
{
get
{
if (!IsKnown || !IsAvailable)
{
return null;
}
var name = KnownSettingId.ToString();
var nameSpace = typeof(SettingInfo).Namespace + ".SettingValues";
if (SettingType == DRSSettingType.Integer)
{
return Assembly.GetExecutingAssembly().GetTypes().FirstOrDefault(type =>
type.IsEnum &&
type.Namespace?.Equals(nameSpace, StringComparison.InvariantCultureIgnoreCase) == true &&
type.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
}
if (SettingType == DRSSettingType.String || SettingType == DRSSettingType.UnicodeString)
{
return Assembly.GetExecutingAssembly().GetTypes().FirstOrDefault(type =>
type.IsClass &&
type.Namespace?.Equals(nameSpace, StringComparison.InvariantCultureIgnoreCase) == true &&
type.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
}
return null;
}
}
/// <summary>
/// Gets the name of the setting from NVIDIA driver or <see langword="null" /> if the setting is not available on this
/// machine.
/// </summary>
public string Name
{
get
{
if (!IsAvailable)
{
return null;
}
return DRSApi.GetSettingNameFromId(SettingId);
}
}
/// <summary>
/// Gets the setting identification number
/// </summary>
public uint SettingId { get; }
/// <summary>
/// Gets the value type of the setting from NVIDIA driver or <see langword="null" /> if the setting is not available on
/// this machine.
/// </summary>
public DRSSettingType? SettingType
{
get
{
if (!IsAvailable)
{
return null;
}
var values = DRSApi.EnumAvailableSettingValues(SettingId);
return values.SettingType;
}
}
/// <summary>
/// Gets information regarding a setting from its identification number.
/// </summary>
/// <param name="settingId">The identification number of the setting to get information about.</param>
/// <returns>An instance of <see cref="SettingInfo" /> containing information about the setting.</returns>
public static SettingInfo FromId(uint settingId)
{
return new SettingInfo(settingId);
}
/// <summary>
/// Gets information regarding a setting from its known identification number.
/// </summary>
/// <param name="settingId">The known identification number of the setting to get information about.</param>
/// <returns>An instance of <see cref="SettingInfo" /> containing information about the setting.</returns>
public static SettingInfo FromKnownSettingId(KnownSettingId settingId)
{
return FromId(GetSettingId(settingId));
}
/// <summary>
/// Gets information regarding a setting from its name.
/// </summary>
/// <param name="settingName">The name of the setting to get information about.</param>
/// <returns>An instance of <see cref="SettingInfo" /> containing information about the setting.</returns>
public static SettingInfo FromName(string settingName)
{
var settingId = DRSApi.GetSettingIdFromName(settingName);
return FromId(settingId);
}
/// <summary>
/// Gets a list of all available setting on this machine
/// </summary>
/// <returns>Instances of <see cref="SettingInfo" /> each representing a available setting on this machine.</returns>
public static SettingInfo[] GetAvailableSetting()
{
if (_availableSettingIds == null)
{
_availableSettingIds = DRSApi.EnumAvailableSettingIds();
}
return _availableSettingIds.Select(FromId).ToArray();
}
/// <summary>
/// Gets the known identification number of a setting from its identification number
/// </summary>
/// <param name="settingId">The setting identification number.</param>
/// <returns>The known setting identification number if the setting is known; otherwise <see langword="null" />.</returns>
public static KnownSettingId? GetKnownSettingId(uint settingId)
{
if (!IsSettingKnown(settingId))
{
return null;
}
return (KnownSettingId) settingId;
}
/// <summary>
/// Gets the known setting description from its identification number
/// </summary>
/// <param name="knownSettingId">The known setting identification number.</param>
/// <returns>The known setting description if available; otherwise <see langword="null" />.</returns>
public static string GetSettingDescription(KnownSettingId knownSettingId)
{
var enumName = Enum.GetName(typeof(KnownSettingId), knownSettingId);
if (enumName == null)
{
return null;
}
var enumField = typeof(KnownSettingId).GetField(enumName);
if (enumField == null)
{
return null;
}
var descriptionAttribute = enumField
.GetCustomAttributes(typeof(DescriptionAttribute), false)
.OfType<DescriptionAttribute>()
.FirstOrDefault();
if (string.IsNullOrWhiteSpace(descriptionAttribute?.Description))
{
return null;
}
return descriptionAttribute.Description;
}
/// <summary>
/// Gets the identification number of a setting from its known identification number
/// </summary>
/// <param name="knownSettingId">The known setting identification number.</param>
/// <returns>The setting identification number.</returns>
public static uint GetSettingId(KnownSettingId knownSettingId)
{
return (uint) knownSettingId;
}
/// <summary>
/// Checks if a setting is known by this library.
/// </summary>
/// <param name="settingId">The setting identification number.</param>
/// <returns>true if setting is known by this library; otherwise false.</returns>
public static bool IsSettingKnown(uint settingId)
{
return Enum.IsDefined(typeof(KnownSettingId), settingId);
}
/// <inheritdoc />
public override string ToString()
{
try
{
var settingName = Name;
if (!string.IsNullOrWhiteSpace(settingName))
{
return settingName;
}
}
catch
{
// ignore;
}
return $"#{SettingId:X}";
}
/// <summary>
/// Tries to resolve the name of a known value using its actual value
/// </summary>
/// <param name="value">The actual value</param>
/// <returns>The name of the known value member.</returns>
public string ResolveKnownValueName(object value)
{
if (!IsKnown)
{
return null;
}
var valueType = KnownValueType;
if (valueType == null)
{
return null;
}
if (valueType.IsEnum)
{
return Enum.GetName(valueType, value);
}
var comparerType = typeof(EqualityComparer<>).MakeGenericType(value.GetType());
var comparer = comparerType.GetProperty(nameof(EqualityComparer<object>.Default))?.GetValue(null);
if (!(comparer is IEqualityComparer equalityComparer))
{
return null;
}
return valueType.GetFields()
.FirstOrDefault(info =>
info.IsStatic &&
equalityComparer.Equals(info.GetValue(null), value)
)?.Name;
}
}
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AmbientOcclusionMode : uint
{
Off = 0x0,
Low = 0x1,
Medium = 0x2,
High = 0x3,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AmbientOcclusionModeActive : uint
{
Disabled = 0x0,
Enabled = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AnisotropicModeLevel : uint
{
Mask = 0xFFFF,
NonePoint = 0x0,
NoneLinear = 0x1,
Maximum = 0x10,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,19 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AnisotropicModeSelector : uint
{
Mask = 0xF,
Application = 0x0,
User = 0x1,
Condition = 0x2,
Maximum = 0x2,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AnselAllow : uint
{
Disallowed = 0x0,
Allowed = 0x1,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AnselEnable : uint
{
Off = 0x0,
On = 0x1,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AnselWhiteListed : uint
{
Disallowed = 0x0,
Allowed = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,43 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AntiAliasingBehaviorFlags : uint
{
None = 0x0,
TreatOverrideAsApplicationControlled = 0x1,
TreatOverrideAsEnhance = 0x2,
DisableOverride = 0x3,
TreatEnhanceAsApplicationControlled = 0x4,
TreatEnhanceAsOverride = 0x8,
DisableEnhance = 0xC,
MapVCAAToMultiSampling = 0x10000,
SLIDisableTransparencySupersampling = 0x20000,
DisableCplaa = 0x40000,
SkipRTDIMCheckForEnhance = 0x80000,
DisableSLIAntiAliasing = 0x100000,
Default = 0x0,
AntiAliasingRTBPPDIV4 = 0xF0000000,
AntiAliasingRTBPPDIV4Shift = 0x1C,
NonAntiAliasingRTBPPDIV4 = 0xF000000,
NonAntiAliasingRTBPPDIV4Shift = 0x18,
Mask = 0xFF1F000F
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AntiAliasingModeAlphaToCoverage : uint
{
ModeMask = 0x4,
ModeOff = 0x0,
ModeOn = 0x4,
ModeMaximum = 0x4,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,23 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AntiAliasingModeGammaCorrection : uint
{
Mask = 0x3,
Off = 0x0,
OnIfFOS = 0x1,
OnAlways = 0x2,
Maximum = 0x2,
Default = 0x0,
DefaultTesla = 0x2,
DefaultFermi = 0x2
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,109 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AntiAliasingModeMethod : uint
{
None = 0x0,
SuperSample2XHorizontal = 0x1,
SuperSample2XVertical = 0x2,
SuperSample15X15 = 0x2,
Free0X03 = 0x3,
Free0X04 = 0x4,
SuperSample4X = 0x5,
SuperSample4XBias = 0x6,
SuperSample4XGaussian = 0x7,
Free0X08 = 0x8,
Free0X09 = 0x9,
SuperSample9X = 0xA,
SuperSample9XBias = 0xB,
SuperSample16X = 0xC,
SuperSample16XBias = 0xD,
MultiSample2XDiagonal = 0xE,
MultiSample2XQuincunx = 0xF,
MultiSample4X = 0x10,
Free0X11 = 0x11,
MultiSample4XGaussian = 0x12,
MixedSample4XSkewed4Tap = 0x13,
Free0X14 = 0x14,
Free0X15 = 0x15,
MixedSample6X = 0x16,
MixedSample6XSkewed6Tap = 0x17,
MixedSample8X = 0x18,
MixedSample8XSkewed8Tap = 0x19,
MixedSample16X = 0x1A,
MultiSample4XGamma = 0x1B,
MultiSample16X = 0x1C,
VCAA32X8V24 = 0x1D,
CorruptionCheck = 0x1E,
_6XCT = 0x1F,
MultiSample2XDiagonalGamma = 0x20,
SuperSample4XGamma = 0x21,
MultiSample4XFosgamma = 0x22,
MultiSample2XDiagonalFosgamma = 0x23,
SuperSample4XFosgamma = 0x24,
MultiSample8X = 0x25,
VCAA8X4V4 = 0x26,
VCAA16X4V12 = 0x27,
VCAA16X8V8 = 0x28,
MixedSample32X = 0x29,
SuperVCAA64X4V12 = 0x2A,
SuperVCAA64X8V8 = 0x2B,
MixedSample64X = 0x2C,
MixedSample128X = 0x2D,
Count = 0x2E,
MethodMask = 0xFFFF,
MethodMaximum = 0xF1C57815,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,49 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AntiAliasingModeReplay : uint
{
SamplesMask = 0x70,
SamplesOne = 0x0,
SamplesTwo = 0x10,
SamplesFour = 0x20,
SamplesEight = 0x30,
SamplesMaximum = 0x30,
ModeMask = 0xF,
ModeOff = 0x0,
ModeAlphaTest = 0x1,
ModePixelKill = 0x2,
ModeDynamicBranch = 0x4,
ModeOptimal = 0x4,
ModeAll = 0x8,
ModeMaximum = 0xF,
Transparency = 0x23,
DisAllowTraa = 0x100,
TransparencyDefault = 0x0,
TransparencyDefaultTesla = 0x0,
TransparencyDefaultFermi = 0x0,
Mask = 0x17F,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,19 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AntiAliasingModeSelector : uint
{
Mask = 0x3,
ApplicationControl = 0x0,
Override = 0x1,
Enhance = 0x2,
Maximum = 0x2,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AntiAliasingModeSelectorSLIAntiAliasing : uint
{
Disabled = 0x0,
Enabled = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,21 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum ApplicationProfileNotificationTimeOut : uint
{
Disabled = 0x0,
NineSeconds = 0x9,
FifteenSeconds = 0xF,
ThirtySeconds = 0x1E,
OneMinute = 0x3C,
TwoMinutes = 0x78,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum AutoLODBiasAdjust : uint
{
Off = 0x0,
On = 0x1,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum BatteryBoost : uint
{
Minimum = 0x1,
Maximum = 0xFF,
Enabled = 0x10000000,
Disabled = 0x0,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,10 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public static class CUDAExcludedGPUs
{
public const string Default = "none";
public const string None = "none";
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum ControlPanelHiddenProfile : uint
{
Disabled = 0x0,
Enabled = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,10 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public static class D3DOpenGLGPUMaximumPower
{
public const string Default = "0";
public const string DefaultPower = "0";
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum ExportPerformanceCounters : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum ExportPerformanceCountersDX9Only : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum FXAAAllow : uint
{
Disallowed = 0x0,
Allowed = 0x1,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum FXAAEnable : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum FXAAIndicatorEnable : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum LODBiasAdjust : uint
{
Minimum = 0xFFFFFF80,
Maximum = 0x80,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum MCSFRShowSplit : uint
{
Disabled = 0x34534064,
Enabled = 0x24545582,
Default = 0x34534064
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum MaxwellBSampleInterleave : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum NvidiaQualityUpScaling : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLAntiAliasingLineGamma : uint
{
Disabled = 0x10,
Enabled = 0x23,
Minimum = 0x1,
Maximum = 0x64,
Default = 0x10
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLDeepColorScanOut : uint
{
Disable = 0x0,
Enable = 0x1,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,27 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLDefaultSwapInterval : uint
{
Tear = 0x0,
VSyncOne = 0x1,
VSync = 0x1,
ValueMask = 0xFFFF,
ForceMask = 0xF0000000,
ForceOff = 0xF0000000,
ForceOn = 0x10000000,
ApplicationControlled = 0x0,
Disable = 0xFFFFFFFF,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLDefaultSwapIntervalFractional : uint
{
ZeroScanLines = 0x0,
OneFullFrameOfScanLines = 0x64,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLDefaultSwapIntervalSign : uint
{
Positive = 0x0,
Negative = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,19 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLEventLogSeverityThreshold : uint
{
Disable = 0x0,
Critical = 0x1,
Warning = 0x2,
Information = 0x3,
All = 0x4,
Default = 0x4
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLForceBlit : uint
{
On = 0x1,
Off = 0x0,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLForceStereo : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,12 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public static class OpenGLImplicitGPUAffinity
{
public const string AutoSelect = "autoselect";
public const string Default = "autoselect";
public const string EnvironmentVariable = "OGL_DEFAULT_RENDERING_GPU";
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLOverlayPixelType : uint
{
None = 0x0,
CI = 0x1,
RGBA = 0x2,
CIAndRGBA = 0x3,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,15 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLOverlaySupport : uint
{
Off = 0x0,
On = 0x1,
ForceSoftware = 0x2,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLQualityEnhancements : uint
{
HighQuality = 0xFFFFFFF6,
Quality = 0x0,
Performance = 0xA,
HighPerformance = 0x14,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLSLIMulticast : uint
{
Disable = 0x0,
Enable = 0x1,
ForceDisable = 0x2,
AllowMosaic = 0x4,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,15 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLSingleBackDepthBuffer : uint
{
Disable = 0x0,
Enable = 0x1,
UseHardwareDefault = 0xFFFFFFFF,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,21 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLTMONLevel : uint
{
Disable = 0x0,
Critical = 0x1,
Warning = 0x2,
Information = 0x3,
Most = 0x4,
Verbose = 0x5,
Default = 0x4
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLThreadControl : uint
{
Enable = 0x1,
Disable = 0x2,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OpenGLTripleBuffer : uint
{
Disabled = 0x0,
Enabled = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum OptimusMaximumAntiAliasing : uint
{
Minimum = 0x0,
Maximum = 0x10,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,47 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateFrameRateLimiter : uint
{
Disabled = 0x0,
FPS20 = 0x14,
FPS30 = 0x1E,
FPS40 = 0x28,
Fpsmask = 0xFF,
NoAlign = 0x4000,
BBQM = 0x8000,
LowerFPSToAlign = 0x20000,
ForceVSyncOff = 0x40000,
GpsWeb = 0x80000,
Disallowed = 0x200000,
UseCPUWait = 0x400000,
NoLagOffset = 0x800000,
Accurate = 0x10000000,
AllowWindowed = 0x20000000,
ForceOn = 0x40000000,
Enabled = 0x80000000,
OpenGLRemoteDesktop = 0xE000003C,
Mask = 0xF0EEC0FF,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,27 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateFrameRateLimiter2Control : uint
{
DelayCE = 0x0,
Delay3D = 0x1,
AvoidNoop = 0x2,
DelayCEPresent3D = 0x8,
AllowAllMaxwell = 0x10,
AllowAll = 0x20,
ForceOff = 0x40,
EnableVCE = 0x80,
DefaultForGM10X = 0x11,
Default = 0x88
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,31 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateFrameRateLimiterGpsControl : uint
{
Disabled = 0x0,
DecreaseFilterMask = 0x1FF,
PauseTimeMask = 0xFE00,
PauseTimeShift = 0x9,
TargetRenderTimeMask = 0xFF0000,
TargetRenderTimeShift = 0x10,
PerformanceStepSizeMask = 0x1F000000,
PerformanceStepSizeShift = 0x18,
IncreaseFilterMask = 0xE0000000,
IncreaseFilterShift = 0x1D,
OptimalSetting = 0x4A5A3219,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,39 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateFrameRateMonitorControl : uint
{
Disabled = 0x0,
ThresholdPctMask = 0xFF,
MovingAverageXMask = 0xF00,
MovingAverageXShift = 0x8,
EnableFineGrained = 0x400000,
EnableOnVSync = 0x800000,
VSyncOffsetMask = 0xF000,
VSyncOffsetShift = 0xC,
FPSUseFrl = 0x0,
FPS30 = 0x1E000000,
FPS60 = 0x3C000000,
FPSMask = 0xFF000000,
FPSShift = 0x18,
OptimalSetting = 0x364,
VSyncOptimalSetting = 0x80F364,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateShaderDiskCache : uint
{
Off = 0x0,
On = 0x1,
Default = 0x1
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateTextureFilteringAnisotropicOptimization : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateTextureFilteringBiLinearInAnisotropic : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateTextureFilteringDisableTrilinearSlope : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PerformanceStateTextureFilteringNoNegativeLODBias : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PhysxIndicator : uint
{
Disabled = 0x34534064,
Enabled = 0x24545582,
Default = 0x34534064
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,15 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PreRenderLimit : uint
{
Minimum = 0x0,
Maximum = 0xFF,
ApplicationControlled = 0x0,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,25 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PreferredPerformanceState : uint
{
Adaptive = 0x0,
PreferMaximum = 0x1,
DriverControlled = 0x2,
PreferConsistentPerformance = 0x3,
PreferMinimum = 0x4,
OptimalPower = 0x5,
Minimum = 0x0,
Maximum = 0x5,
Default = 0x5
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum PreventUiAnisotropicOverride : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,17 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum QualityEnhancements : uint
{
HighQuality = 0xFFFFFFF6,
Quality = 0x0,
Performance = 0xA,
HighPerformance = 0x14,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,15 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum RefreshRateOverride : uint
{
ApplicationControlled = 0x0,
HighestAvailable = 0x1,
LowLatencyRefreshRateMask = 0xFF0,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,19 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum SLIGPUCount : uint
{
AutoSelect = 0x0,
One = 0x1,
Two = 0x2,
Three = 0x3,
Four = 0x4,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,19 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum SLIPredefinedGPUCount : uint
{
AutoSelect = 0x0,
One = 0x1,
Two = 0x2,
Three = 0x3,
Four = 0x4,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,19 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum SLIPredefinedGPUCountDX10 : uint
{
AutoSelect = 0x0,
One = 0x1,
Two = 0x2,
Three = 0x3,
Four = 0x4,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,21 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum SLIPredefinedMode : uint
{
AutoSelect = 0x0,
ForceSingle = 0x1,
ForceAFR = 0x2,
ForceAFR2 = 0x3,
ForceSFR = 0x4,
ForceAFROfSFRFallback3AFR = 0x5,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,21 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum SLIPredefinedModeDX10 : uint
{
AutoSelect = 0x0,
ForceSingle = 0x1,
ForceAFR = 0x2,
ForceAFR2 = 0x3,
ForceSFR = 0x4,
ForceAFROfSFRFallback3AFR = 0x5,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,21 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum SLIRenderingMode : uint
{
AutoSelect = 0x0,
ForceSingle = 0x1,
ForceAFR = 0x2,
ForceAFR2 = 0x3,
ForceSFR = 0x4,
ForceAFROfSFRFallback3AFR = 0x5,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,13 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum SetPowerThrottleForPCIeCompliance : uint
{
Off = 0x0,
On = 0x1,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,21 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum SetVABData : uint
{
Zero = 0x0,
UIntOne = 0x1,
FloatOne = 0x3F800000,
FloatPosInf = 0x7F800000,
FloatNan = 0x7FC00000,
UseAPIDefaults = 0xFFFFFFFF,
Default = 0xFFFFFFFF
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,25 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum ShimMCCOMPAT : uint
{
Integrated = 0x0,
Enable = 0x1,
UserEditable = 0x2,
Mask = 0x3,
VideoMask = 0x4,
VaryingBit = 0x8,
AutoSelect = 0x10,
OverrideBit = 0x80000000,
Default = 0x10
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,25 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum ShimRenderingMode : uint
{
Integrated = 0x0,
Enable = 0x1,
UserEditable = 0x2,
Mask = 0x3,
VideoMask = 0x4,
VaryingBit = 0x8,
AutoSelect = 0x10,
OverrideBit = 0x80000000,
Default = 0x10
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,59 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum ShimRenderingOptions : uint
{
DefaultRenderingMode = 0x0,
DisableAsyncPresent = 0x1,
EHShellDetect = 0x2,
FlashplayerHostDetect = 0x4,
VideoDRMApplicationDetect = 0x8,
IgnoreOverrides = 0x10,
Reserved1 = 0x20,
EnableDWMAsyncPresent = 0x40,
Reserved2 = 0x80,
AllowInheritance = 0x100,
DisableWrappers = 0x200,
DisableDxgiWrappers = 0x400,
PruneUnsupportedFormats = 0x800,
EnableAlphaFormat = 0x1000,
IGPUTranscoding = 0x2000,
DisableCUDA = 0x4000,
AllowCpCapabilitiesForVideo = 0x8000,
IGPUTranscodingFwdOptimus = 0x10000,
DisableDuringSecureBoot = 0x20000,
InvertForQuadro = 0x40000,
InvertForMSHybrid = 0x80000,
RegisterProcessEnableGold = 0x100000,
HandleWindowedModePerformanceOptimal = 0x200000,
HandleWin7AsyncRuntimeBug = 0x400000,
ExplicitAdapterOptedByApplication = 0x800000,
Default = 0x0
}
#pragma warning restore 1591
}

View File

@@ -0,0 +1,15 @@
namespace NvAPIWrapper.DRS.SettingValues
{
#pragma warning disable 1591
public enum VRPreRenderLimit : uint
{
Minimum = 0x0,
Maximum = 0xFF,
ApplicationControlled = 0x0,
Default = 0x1
}
#pragma warning restore 1591
}

Some files were not shown because too many files have changed in this diff Show More