From 532eaa747876540ae0c2a2b861dae5072750af85 Mon Sep 17 00:00:00 2001 From: Chris M Date: Thu, 26 Jan 2023 10:51:08 +1100 Subject: [PATCH] Adding MSI 3090 Suprim 24G GPU * Code clean up for the MSI GPU V1 * Registered detector in `MSIGPUControllerDetect.cpp` * Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-3090- SUPRIM-24G/Specification) --- .../MSIGPUController/MSIGPUController.h | 75 ++-- .../MSIGPUControllerDetect.cpp | 1 + .../MSIGPUController/RGBController_MSIGPU.cpp | 420 +++++++++--------- .../MSIGPUController/RGBController_MSIGPU.h | 1 - pci_ids/pci_ids.h | 1 + 5 files changed, 245 insertions(+), 253 deletions(-) diff --git a/Controllers/MSIGPUController/MSIGPUController.h b/Controllers/MSIGPUController/MSIGPUController.h index a0c2ca8c..d3be2e12 100644 --- a/Controllers/MSIGPUController/MSIGPUController.h +++ b/Controllers/MSIGPUController/MSIGPUController.h @@ -12,46 +12,53 @@ typedef unsigned char msi_gpu_dev_id; +#define MSI_GPU_SPEED_MIN 0 +#define MSI_GPU_SPEED_MID 1 +#define MSI_GPU_SPEED_MAX 2 +#define MSI_GPU_BRIGHTNESS_MIN 0 +#define MSI_GPU_BRIGHTNESS_MAX 5 +#define MSI_GPU_BRIGHTNESS_MULTI 20 + enum { - MSI_GPU_REG_BRIGHTNESS = 0x36, /* MSI GPU Brightness Register */ - MSI_GPU_REG_SPEED = 0x38, /* MSI GPU Speed Register */ - MSI_GPU_REG_UNKNOWN = 0x26, /* MSI GPU Unknown Register */ - MSI_GPU_REG_R1 = 0x30, /* MSI GPU R1 Register */ - MSI_GPU_REG_G1 = 0x31, /* MSI GPU G1 Register */ - MSI_GPU_REG_B1 = 0x32, /* MSI GPU B1 Register */ - MSI_GPU_REG_R2 = 0x27, /* MSI GPU R2 Register */ - MSI_GPU_REG_G2 = 0x28, /* MSI GPU G2 Register */ - MSI_GPU_REG_B2 = 0x29, /* MSI GPU B2 Register */ - MSI_GPU_REG_R3 = 0x2a, /* MSI GPU R3 Register */ - MSI_GPU_REG_G3 = 0x2b, /* MSI GPU G3 Register */ - MSI_GPU_REG_B3 = 0x2c, /* MSI GPU B3 Register */ - MSI_GPU_REG_MODE = 0x22, /* MSI GPU Mode Selection Register */ - MSI_GPU_REG_SAVE = 0x3f, /* MSI GPU Save Changes Register */ + MSI_GPU_REG_BRIGHTNESS = 0x36, /* MSI GPU Brightness Register */ + MSI_GPU_REG_SPEED = 0x38, /* MSI GPU Speed Register */ + MSI_GPU_REG_UNKNOWN = 0x26, /* MSI GPU Unknown Register */ + MSI_GPU_REG_R1 = 0x30, /* MSI GPU R1 Register */ + MSI_GPU_REG_G1 = 0x31, /* MSI GPU G1 Register */ + MSI_GPU_REG_B1 = 0x32, /* MSI GPU B1 Register */ + MSI_GPU_REG_R2 = 0x27, /* MSI GPU R2 Register */ + MSI_GPU_REG_G2 = 0x28, /* MSI GPU G2 Register */ + MSI_GPU_REG_B2 = 0x29, /* MSI GPU B2 Register */ + MSI_GPU_REG_R3 = 0x2A, /* MSI GPU R3 Register */ + MSI_GPU_REG_G3 = 0x2B, /* MSI GPU G3 Register */ + MSI_GPU_REG_B3 = 0x2C, /* MSI GPU B3 Register */ + MSI_GPU_REG_MODE = 0x22, /* MSI GPU Mode Selection Register */ + MSI_GPU_REG_SAVE = 0x3F, /* MSI GPU Save Changes Register */ }; enum { - MSI_GPU_MODE_OFF = 0x01, /* OFF mode */ - MSI_GPU_MODE_RAINBOW = 0x08, /* Rainbow effect mode */ - MSI_GPU_MODE_STATIC = 0x13, /* Static color mode */ - MSI_GPU_MODE_RAINDROP = 0x1a, /* Raindrop effect mode */ - MSI_GPU_MODE_MAGIC = 0x07, /* Magic effect mode */ - MSI_GPU_MODE_PATROLLING = 0x05, /* Patrolling effect mode */ - MSI_GPU_MODE_STREAMING = 0x06, /* Streaming effect mode */ - MSI_GPU_MODE_LIGHTNING = 0x15, /* Lightning effect mode */ - MSI_GPU_MODE_WAVE = 0x1f, /* Wave effect mode */ - MSI_GPU_MODE_METEOR = 0x16, /* Meteor effect mode */ - MSI_GPU_MODE_STACK = 0x0d, /* Stack effect mode */ - MSI_GPU_MODE_RHYTHM = 0x0b, /* Rhythm effect mode */ - MSI_GPU_MODE_FLOWING = 0x09, /* Flowing effect mode */ - MSI_GPU_MODE_WHIRLING = 0x0f, /* Whirling effect mode */ - MSI_GPU_MODE_TWISTING = 0x11, /* Twisting effect mode */ - MSI_GPU_MODE_LAMINATING = 0x1d, /* Laminating effect mode */ - MSI_GPU_MODE_FADEIN = 0x14, /* Fadein effect mode */ - MSI_GPU_MODE_BREATHING = 0x04, /* Breathing effect mode */ - MSI_GPU_MODE_FLASHING = 0x02, /* Flashing effect mode */ - MSI_GPU_MODE_DOUBLEFLASHING = 0x03, /* Doubleflashing effect mode */ + MSI_GPU_MODE_OFF = 0x01, /* OFF mode */ + MSI_GPU_MODE_RAINBOW = 0x08, /* Rainbow effect mode */ + MSI_GPU_MODE_STATIC = 0x13, /* Static color mode */ + MSI_GPU_MODE_RAINDROP = 0x1A, /* Raindrop effect mode */ + MSI_GPU_MODE_MAGIC = 0x07, /* Magic effect mode */ + MSI_GPU_MODE_PATROLLING = 0x05, /* Patrolling effect mode */ + MSI_GPU_MODE_STREAMING = 0x06, /* Streaming effect mode */ + MSI_GPU_MODE_LIGHTNING = 0x15, /* Lightning effect mode */ + MSI_GPU_MODE_WAVE = 0x1F, /* Wave effect mode */ + MSI_GPU_MODE_METEOR = 0x16, /* Meteor effect mode */ + MSI_GPU_MODE_STACK = 0x0D, /* Stack effect mode */ + MSI_GPU_MODE_RHYTHM = 0x0B, /* Rhythm effect mode */ + MSI_GPU_MODE_FLOWING = 0x09, /* Flowing effect mode */ + MSI_GPU_MODE_WHIRLING = 0x0F, /* Whirling effect mode */ + MSI_GPU_MODE_TWISTING = 0x11, /* Twisting effect mode */ + MSI_GPU_MODE_LAMINATING = 0x1D, /* Laminating effect mode */ + MSI_GPU_MODE_FADEIN = 0x14, /* Fadein effect mode */ + MSI_GPU_MODE_BREATHING = 0x04, /* Breathing effect mode */ + MSI_GPU_MODE_FLASHING = 0x02, /* Flashing effect mode */ + MSI_GPU_MODE_DOUBLEFLASHING = 0x03, /* Doubleflashing effect mode */ }; class MSIGPUController diff --git a/Controllers/MSIGPUController/MSIGPUControllerDetect.cpp b/Controllers/MSIGPUController/MSIGPUControllerDetect.cpp index 5a0f01d9..2524e49a 100644 --- a/Controllers/MSIGPUController/MSIGPUControllerDetect.cpp +++ b/Controllers/MSIGPUController/MSIGPUControllerDetect.cpp @@ -98,6 +98,7 @@ REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 12GB Gaming Z Trio LHR", Dete REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Ti Gaming X Trio 12G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, MSI_SUB_VEN, MSI_RTX3080TI_GAMING_X_TRIO_SUB_DEV, 0x68); REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Ti Suprim X 12G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, MSI_SUB_VEN, MSI_RTX3080TI_SUPRIM_X_SUB_DEV, 0x68); REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 24GB Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_GAMING_X_TRIO_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Suprim 24G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_SUPRIM_SUB_DEV, 0x68); REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Suprim X 24G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_SUPRIM_X_SUB_DEV, 0x68); REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Ti Suprim X 24G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090TI_DEV, MSI_SUB_VEN, MSI_RTX3090TI_SUPRIM_X_SUB_DEV, 0x68); REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Ti Gaming X Trio 24G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090TI_DEV, MSI_SUB_VEN, MSI_RTX3090TI_GAMING_X_TRIO_SUB_DEV, 0x68); diff --git a/Controllers/MSIGPUController/RGBController_MSIGPU.cpp b/Controllers/MSIGPUController/RGBController_MSIGPU.cpp index cbec23f8..ae64e596 100644 --- a/Controllers/MSIGPUController/RGBController_MSIGPU.cpp +++ b/Controllers/MSIGPUController/RGBController_MSIGPU.cpp @@ -8,7 +8,6 @@ #include "RGBController_MSIGPU.h" #include -static const std::array brightness_values = { 0x14, 0x28, 0x3c, 0x50, 0x64 }; static const std::array speed_values = { 0x04, 0x02, 0x01 }; int RGBController_MSIGPU::GetDeviceMode() @@ -42,21 +41,6 @@ int RGBController_MSIGPU::GetModeSpeed() return 0; } -int RGBController_MSIGPU::GetModeBrightness() -{ - unsigned char mode_brightness = msi_gpu->MSIGPURegisterRead(MSI_GPU_REG_BRIGHTNESS); - - for(std::size_t brightness = 0; brightness < brightness_values.size(); brightness++) - { - if (brightness_values[brightness] == mode_brightness) - { - return brightness; - } - } - - return 0; -} - /**------------------------------------------------------------------*\ @name MSI GPU @category GPU @@ -75,265 +59,265 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) name = "MSI GPU Device"; vendor = "MSI"; type = DEVICE_TYPE_GPU; - description = "MSI GPU Device"; + description = name; location = msi_gpu->GetDeviceLocation(); - mode Off; - Off.name = "Off"; - Off.value = MSI_GPU_MODE_OFF; - Off.flags = MODE_FLAG_MANUAL_SAVE; - Off.color_mode = MODE_COLORS_NONE; - modes.push_back(Off); - - mode Rainbow; - Rainbow.name = "Rainbow"; - Rainbow.value = MSI_GPU_MODE_RAINBOW; - Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Rainbow.speed_min = 0; - Rainbow.speed = 0; - Rainbow.speed_max = 2; - Rainbow.brightness_min = 0; - Rainbow.brightness = 2; - Rainbow.brightness_max = 4; - Rainbow.color_mode = MODE_COLORS_NONE; - modes.push_back(Rainbow); - mode Direct; - Direct.name = "Direct"; - Direct.value = MSI_GPU_MODE_STATIC; - Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Direct.color_mode = MODE_COLORS_PER_LED; - Direct.brightness_min = 0; - Direct.brightness = 2; - Direct.brightness_max = 4; + Direct.name = "Direct"; + Direct.value = MSI_GPU_MODE_STATIC; + Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Direct.color_mode = MODE_COLORS_PER_LED; + Direct.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Direct.brightness = MSI_GPU_BRIGHTNESS_MAX; + Direct.brightness_max = MSI_GPU_BRIGHTNESS_MAX; modes.push_back(Direct); + mode Rainbow; + Rainbow.name = "Rainbow"; + Rainbow.value = MSI_GPU_MODE_RAINBOW; + Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Rainbow.speed_min = MSI_GPU_SPEED_MIN; + Rainbow.speed = MSI_GPU_SPEED_MID; + Rainbow.speed_max = MSI_GPU_SPEED_MAX; + Rainbow.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Rainbow.brightness = MSI_GPU_BRIGHTNESS_MAX; + Rainbow.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Rainbow.color_mode = MODE_COLORS_NONE; + modes.push_back(Rainbow); + mode Raindrop; - Raindrop.name = "Raindrop"; - Raindrop.value = MSI_GPU_MODE_RAINDROP; - Raindrop.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Raindrop.speed_min = 0; - Raindrop.speed = 0; - Raindrop.speed_max = 2; - Raindrop.brightness_min = 0; - Raindrop.brightness = 2; - Raindrop.brightness_max = 4; - Raindrop.color_mode = MODE_COLORS_PER_LED; + Raindrop.name = "Raindrop"; + Raindrop.value = MSI_GPU_MODE_RAINDROP; + Raindrop.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Raindrop.speed_min = MSI_GPU_SPEED_MIN; + Raindrop.speed = MSI_GPU_SPEED_MID; + Raindrop.speed_max = MSI_GPU_SPEED_MAX; + Raindrop.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Raindrop.brightness = MSI_GPU_BRIGHTNESS_MAX; + Raindrop.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Raindrop.color_mode = MODE_COLORS_PER_LED; modes.push_back(Raindrop); mode Magic; - Magic.name = "Magic"; - Magic.value = MSI_GPU_MODE_MAGIC; - Magic.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Magic.speed_min = 0; - Magic.speed = 0; - Magic.speed_max = 2; - Magic.brightness_min = 0; - Magic.brightness = 2; - Magic.brightness_max = 4; - Magic.color_mode = MODE_COLORS_NONE; + Magic.name = "Magic"; + Magic.value = MSI_GPU_MODE_MAGIC; + Magic.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Magic.speed_min = MSI_GPU_SPEED_MIN; + Magic.speed = MSI_GPU_SPEED_MID; + Magic.speed_max = MSI_GPU_SPEED_MAX; + Magic.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Magic.brightness = MSI_GPU_BRIGHTNESS_MAX; + Magic.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Magic.color_mode = MODE_COLORS_NONE; modes.push_back(Magic); mode Patrolling; - Patrolling.name = "Patrolling"; - Patrolling.value = MSI_GPU_MODE_PATROLLING; - Patrolling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Patrolling.speed_min = 0; - Patrolling.speed = 0; - Patrolling.speed_max = 2; - Patrolling.brightness_min = 0; - Patrolling.brightness = 2; - Patrolling.brightness_max = 4; - Patrolling.color_mode = MODE_COLORS_PER_LED; + Patrolling.name = "Patrolling"; + Patrolling.value = MSI_GPU_MODE_PATROLLING; + Patrolling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Patrolling.speed_min = MSI_GPU_SPEED_MIN; + Patrolling.speed = MSI_GPU_SPEED_MID; + Patrolling.speed_max = MSI_GPU_SPEED_MAX; + Patrolling.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Patrolling.brightness = MSI_GPU_BRIGHTNESS_MAX; + Patrolling.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Patrolling.color_mode = MODE_COLORS_PER_LED; modes.push_back(Patrolling); mode Streaming; - Streaming.name = "Streaming"; - Streaming.value = MSI_GPU_MODE_STREAMING; - Streaming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Streaming.speed_min = 0; - Streaming.speed = 0; - Streaming.speed_max = 2; - Streaming.brightness_min = 0; - Streaming.brightness = 2; - Streaming.brightness_max = 4; - Streaming.color_mode = MODE_COLORS_NONE; + Streaming.name = "Streaming"; + Streaming.value = MSI_GPU_MODE_STREAMING; + Streaming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Streaming.speed_min = MSI_GPU_SPEED_MIN; + Streaming.speed = MSI_GPU_SPEED_MID; + Streaming.speed_max = MSI_GPU_SPEED_MAX; + Streaming.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Streaming.brightness = MSI_GPU_BRIGHTNESS_MAX; + Streaming.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Streaming.color_mode = MODE_COLORS_NONE; modes.push_back(Streaming); mode Lightning; - Lightning.name = "Lightning"; - Lightning.value = MSI_GPU_MODE_LIGHTNING; - Lightning.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Lightning.speed_min = 0; - Lightning.speed = 0; - Lightning.speed_max = 2; - Lightning.brightness_min = 0; - Lightning.brightness = 2; - Lightning.brightness_max = 4; - Lightning.color_mode = MODE_COLORS_NONE; + Lightning.name = "Lightning"; + Lightning.value = MSI_GPU_MODE_LIGHTNING; + Lightning.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Lightning.speed_min = MSI_GPU_SPEED_MIN; + Lightning.speed = MSI_GPU_SPEED_MID; + Lightning.speed_max = MSI_GPU_SPEED_MAX; + Lightning.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Lightning.brightness = MSI_GPU_BRIGHTNESS_MAX; + Lightning.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Lightning.color_mode = MODE_COLORS_NONE; modes.push_back(Lightning); mode Wave; - Wave.name = "Wave"; - Wave.value = MSI_GPU_MODE_WAVE; - Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Wave.speed_min = 0; - Wave.speed = 0; - Wave.speed_max = 2; - Wave.brightness_min = 0; - Wave.brightness = 2; - Wave.brightness_max = 4; - Wave.color_mode = MODE_COLORS_PER_LED; + Wave.name = "Wave"; + Wave.value = MSI_GPU_MODE_WAVE; + Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Wave.speed_min = MSI_GPU_SPEED_MIN; + Wave.speed = MSI_GPU_SPEED_MID; + Wave.speed_max = MSI_GPU_SPEED_MAX; + Wave.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Wave.brightness = MSI_GPU_BRIGHTNESS_MAX; + Wave.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Wave.color_mode = MODE_COLORS_PER_LED; modes.push_back(Wave); mode Meteor; - Meteor.name = "Meteor"; - Meteor.value = MSI_GPU_MODE_METEOR; - Meteor.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Meteor.speed_min = 0; - Meteor.speed = 0; - Meteor.speed_max = 2; - Meteor.brightness_min = 0; - Meteor.brightness = 2; - Meteor.brightness_max = 4; - Meteor.color_mode = MODE_COLORS_PER_LED; + Meteor.name = "Meteor"; + Meteor.value = MSI_GPU_MODE_METEOR; + Meteor.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Meteor.speed_min = MSI_GPU_SPEED_MIN; + Meteor.speed = MSI_GPU_SPEED_MID; + Meteor.speed_max = MSI_GPU_SPEED_MAX; + Meteor.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Meteor.brightness = MSI_GPU_BRIGHTNESS_MAX; + Meteor.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Meteor.color_mode = MODE_COLORS_PER_LED; modes.push_back(Meteor); mode Stack; - Stack.name = "Stack"; - Stack.value = MSI_GPU_MODE_STACK; - Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Stack.speed_min = 0; - Stack.speed = 0; - Stack.speed_max = 2; - Stack.brightness_min = 0; - Stack.brightness = 2; - Stack.brightness_max = 4; - Stack.color_mode = MODE_COLORS_PER_LED; + Stack.name = "Stack"; + Stack.value = MSI_GPU_MODE_STACK; + Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Stack.speed_min = MSI_GPU_SPEED_MIN; + Stack.speed = MSI_GPU_SPEED_MID; + Stack.speed_max = MSI_GPU_SPEED_MAX; + Stack.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Stack.brightness = MSI_GPU_BRIGHTNESS_MAX; + Stack.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Stack.color_mode = MODE_COLORS_PER_LED; modes.push_back(Stack); mode Rhythm; - Rhythm.name = "Rhythm"; - Rhythm.value = MSI_GPU_MODE_RHYTHM; - Rhythm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Rhythm.speed_min = 0; - Rhythm.speed = 0; - Rhythm.speed_max = 2; - Rhythm.brightness_min = 0; - Rhythm.brightness = 2; - Rhythm.brightness_max = 4; - Rhythm.color_mode = MODE_COLORS_PER_LED; + Rhythm.name = "Rhythm"; + Rhythm.value = MSI_GPU_MODE_RHYTHM; + Rhythm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Rhythm.speed_min = MSI_GPU_SPEED_MIN; + Rhythm.speed = MSI_GPU_SPEED_MID; + Rhythm.speed_max = MSI_GPU_SPEED_MAX; + Rhythm.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Rhythm.brightness = MSI_GPU_BRIGHTNESS_MAX; + Rhythm.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Rhythm.color_mode = MODE_COLORS_PER_LED; modes.push_back(Rhythm); mode Flowing; - Flowing.name = "Flowing"; - Flowing.value = MSI_GPU_MODE_FLOWING; - Flowing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Flowing.speed_min = 0; - Flowing.speed = 0; - Flowing.speed_max = 2; - Flowing.brightness_min = 0; - Flowing.brightness = 2; - Flowing.brightness_max = 4; - Flowing.color_mode = MODE_COLORS_PER_LED; + Flowing.name = "Flowing"; + Flowing.value = MSI_GPU_MODE_FLOWING; + Flowing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Flowing.speed_min = MSI_GPU_SPEED_MIN; + Flowing.speed = MSI_GPU_SPEED_MID; + Flowing.speed_max = MSI_GPU_SPEED_MAX; + Flowing.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Flowing.brightness = MSI_GPU_BRIGHTNESS_MAX; + Flowing.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Flowing.color_mode = MODE_COLORS_PER_LED; modes.push_back(Flowing); mode Whirling; - Whirling.name = "Whirling"; - Whirling.value = MSI_GPU_MODE_WHIRLING; - Whirling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Whirling.speed_min = 0; - Whirling.speed = 0; - Whirling.speed_max = 2; - Whirling.brightness_min = 0; - Whirling.brightness = 2; - Whirling.brightness_max = 4; - Whirling.color_mode = MODE_COLORS_PER_LED; + Whirling.name = "Whirling"; + Whirling.value = MSI_GPU_MODE_WHIRLING; + Whirling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Whirling.speed_min = MSI_GPU_SPEED_MIN; + Whirling.speed = MSI_GPU_SPEED_MID; + Whirling.speed_max = MSI_GPU_SPEED_MAX; + Whirling.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Whirling.brightness = MSI_GPU_BRIGHTNESS_MAX; + Whirling.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Whirling.color_mode = MODE_COLORS_PER_LED; modes.push_back(Whirling); mode Twisting; - Twisting.name = "Twisting"; - Twisting.value = MSI_GPU_MODE_TWISTING; - Twisting.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Twisting.speed_min = 0; - Twisting.speed = 0; - Twisting.speed_max = 2; - Twisting.brightness_min = 0; - Twisting.brightness = 2; - Twisting.brightness_max = 4; - Twisting.color_mode = MODE_COLORS_PER_LED; + Twisting.name = "Twisting"; + Twisting.value = MSI_GPU_MODE_TWISTING; + Twisting.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Twisting.speed_min = MSI_GPU_SPEED_MIN; + Twisting.speed = MSI_GPU_SPEED_MID; + Twisting.speed_max = MSI_GPU_SPEED_MAX; + Twisting.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Twisting.brightness = MSI_GPU_BRIGHTNESS_MAX; + Twisting.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Twisting.color_mode = MODE_COLORS_PER_LED; modes.push_back(Twisting); mode Laminating; - Laminating.name = "Laminating"; - Laminating.value = MSI_GPU_MODE_LAMINATING; - Laminating.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Laminating.speed_min = 0; - Laminating.speed = 0; - Laminating.speed_max = 2; - Laminating.brightness_min = 0; - Laminating.brightness = 2; - Laminating.brightness_max = 4; - Laminating.color_mode = MODE_COLORS_PER_LED; + Laminating.name = "Laminating"; + Laminating.value = MSI_GPU_MODE_LAMINATING; + Laminating.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Laminating.speed_min = MSI_GPU_SPEED_MIN; + Laminating.speed = MSI_GPU_SPEED_MID; + Laminating.speed_max = MSI_GPU_SPEED_MAX; + Laminating.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Laminating.brightness = MSI_GPU_BRIGHTNESS_MAX; + Laminating.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Laminating.color_mode = MODE_COLORS_PER_LED; modes.push_back(Laminating); mode Fadein; - Fadein.name = "Fadein"; - Fadein.value = MSI_GPU_MODE_FADEIN; - Fadein.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Fadein.speed_min = 0; - Fadein.speed = 0; - Fadein.speed_max = 2; - Fadein.brightness_min = 0; - Fadein.brightness = 2; - Fadein.brightness_max = 4; - Fadein.color_mode = MODE_COLORS_PER_LED; + Fadein.name = "Fadein"; + Fadein.value = MSI_GPU_MODE_FADEIN; + Fadein.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Fadein.speed_min = MSI_GPU_SPEED_MIN; + Fadein.speed = MSI_GPU_SPEED_MID; + Fadein.speed_max = MSI_GPU_SPEED_MAX; + Fadein.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Fadein.brightness = MSI_GPU_BRIGHTNESS_MAX; + Fadein.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Fadein.color_mode = MODE_COLORS_PER_LED; modes.push_back(Fadein); mode Breathing; - Breathing.name = "Breathing"; - Breathing.value = MSI_GPU_MODE_BREATHING; - Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Breathing.speed_min = 0; - Breathing.speed = 0; - Breathing.speed_max = 2; - Breathing.brightness_min = 0; - Breathing.brightness = 2; - Breathing.brightness_max = 4; - Breathing.color_mode = MODE_COLORS_PER_LED; + Breathing.name = "Breathing"; + Breathing.value = MSI_GPU_MODE_BREATHING; + Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Breathing.speed_min = MSI_GPU_SPEED_MIN; + Breathing.speed = MSI_GPU_SPEED_MID; + Breathing.speed_max = MSI_GPU_SPEED_MAX; + Breathing.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + Breathing.brightness = MSI_GPU_BRIGHTNESS_MAX; + Breathing.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + Breathing.color_mode = MODE_COLORS_PER_LED; modes.push_back(Breathing); mode flashing; - flashing.name = "Flashing"; - flashing.value = MSI_GPU_MODE_FLASHING; - flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - flashing.speed_min = 0; - flashing.speed = 0; - flashing.speed_max = 2; - flashing.brightness_min = 0; - flashing.brightness = 2; - flashing.brightness_max = 4; - flashing.color_mode = MODE_COLORS_PER_LED; + flashing.name = "Flashing"; + flashing.value = MSI_GPU_MODE_FLASHING; + flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + flashing.speed_min = MSI_GPU_SPEED_MIN; + flashing.speed = MSI_GPU_SPEED_MID; + flashing.speed_max = MSI_GPU_SPEED_MAX; + flashing.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + flashing.brightness = MSI_GPU_BRIGHTNESS_MAX; + flashing.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + flashing.color_mode = MODE_COLORS_PER_LED; modes.push_back(flashing); mode doubleflashing; - doubleflashing.name = "Doubleflashing"; - doubleflashing.value = MSI_GPU_MODE_DOUBLEFLASHING; - doubleflashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - doubleflashing.speed_min = 0; - doubleflashing.speed = 0; - doubleflashing.speed_max = 2; - doubleflashing.brightness_min = 0; - doubleflashing.brightness = 2; - doubleflashing.brightness_max = 4; - doubleflashing.color_mode = MODE_COLORS_PER_LED; + doubleflashing.name = "Doubleflashing"; + doubleflashing.value = MSI_GPU_MODE_DOUBLEFLASHING; + doubleflashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + doubleflashing.speed_min = 0; + doubleflashing.speed = 0; + doubleflashing.speed_max = 2; + doubleflashing.brightness_min = MSI_GPU_BRIGHTNESS_MIN; + doubleflashing.brightness = MSI_GPU_BRIGHTNESS_MAX; + doubleflashing.brightness_max = MSI_GPU_BRIGHTNESS_MAX; + doubleflashing.color_mode = MODE_COLORS_PER_LED; modes.push_back(doubleflashing); + mode Off; + Off.name = "Off"; + Off.value = MSI_GPU_MODE_OFF; + Off.flags = MODE_FLAG_MANUAL_SAVE; + Off.color_mode = MODE_COLORS_NONE; + modes.push_back(Off); + SetupZones(); - active_mode = GetDeviceMode(); - modes[active_mode].speed = GetModeSpeed(); - modes[active_mode].brightness = GetModeBrightness(); + active_mode = GetDeviceMode(); + modes[active_mode].speed = GetModeSpeed(); + modes[active_mode].brightness = msi_gpu->MSIGPURegisterRead(MSI_GPU_REG_BRIGHTNESS) / MSI_GPU_BRIGHTNESS_MULTI; } RGBController_MSIGPU::~RGBController_MSIGPU() @@ -443,7 +427,7 @@ void RGBController_MSIGPU::DeviceUpdateMode() { if(modes[active_mode].flags & MODE_FLAG_HAS_BRIGHTNESS) { - msi_gpu->MSIGPURegisterWrite(MSI_GPU_REG_BRIGHTNESS, brightness_values[modes[active_mode].brightness]); + msi_gpu->MSIGPURegisterWrite(MSI_GPU_REG_BRIGHTNESS, modes[active_mode].brightness * MSI_GPU_BRIGHTNESS_MULTI); if(modes[active_mode].flags & MODE_FLAG_HAS_SPEED) { diff --git a/Controllers/MSIGPUController/RGBController_MSIGPU.h b/Controllers/MSIGPUController/RGBController_MSIGPU.h index 53bfad01..f305233f 100644 --- a/Controllers/MSIGPUController/RGBController_MSIGPU.h +++ b/Controllers/MSIGPUController/RGBController_MSIGPU.h @@ -32,6 +32,5 @@ private: bool TimeToSend(); int GetDeviceMode(); - int GetModeBrightness(); int GetModeSpeed(); }; diff --git a/pci_ids/pci_ids.h b/pci_ids/pci_ids.h index 53e7a394..426b25d4 100644 --- a/pci_ids/pci_ids.h +++ b/pci_ids/pci_ids.h @@ -501,6 +501,7 @@ #define MSI_RTX3080TI_GAMING_X_TRIO_SUB_DEV 0x389B #define MSI_RTX3080TI_SUPRIM_X_SUB_DEV 0x3897 #define MSI_RTX3090_GAMING_X_TRIO_SUB_DEV 0x3884 +#define MSI_RTX3090_SUPRIM_SUB_DEV 0x3883 #define MSI_RTX3090_SUPRIM_X_SUB_DEV 0x3882 #define MSI_RTX3090TI_SUPRIM_X_SUB_DEV 0x5090 #define MSI_RTX3090TI_GAMING_X_TRIO_SUB_DEV 0x5091