Skip to content

Commit 8af4909

Browse files
Add brightness control for Gigabyte GPUs
1 parent 5d30d61 commit 8af4909

File tree

3 files changed

+57
-36
lines changed

3 files changed

+57
-36
lines changed

Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ void RGBFusionGPUController::SetColor(unsigned char red, unsigned char green, un
4747
}
4848
}
4949

50-
void RGBFusionGPUController::SetMode(unsigned char mode, unsigned char speed)
50+
void RGBFusionGPUController::SetMode(unsigned char mode, unsigned char speed, unsigned char brightness)
5151
{
5252
bus->i2c_smbus_write_byte(dev, RGB_FUSION_GPU_REG_MODE);
5353
bus->i2c_smbus_write_byte(dev, mode);
5454
bus->i2c_smbus_write_byte(dev, speed);
55-
bus->i2c_smbus_write_byte(dev, 0x63);
55+
bus->i2c_smbus_write_byte(dev, brightness);
5656

5757
// Pad commands with 4 zero-bytes for NVIDIA_RTX3060_DEV
5858
if (dev == 0x62)

Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ enum
3636
RGB_FUSION_GPU_SPEED_FASTEST = 0x09
3737
};
3838

39+
enum
40+
{
41+
RGB_FUSION_GPU_BRIGHTNESS_MIN = 0x00,
42+
RGB_FUSION_GPU_BRIGHTNESS_MAX = 0x63
43+
};
44+
3945
class RGBFusionGPUController
4046
{
4147
public:
@@ -45,7 +51,7 @@ class RGBFusionGPUController
4551
std::string GetDeviceLocation();
4652

4753
void SetColor(unsigned char red, unsigned char green, unsigned char blue);
48-
void SetMode(unsigned char mode, unsigned char speed);
54+
void SetMode(unsigned char mode, unsigned char speed, unsigned char brightness);
4955

5056
private:
5157
i2c_smbus_interface* bus;

Controllers/GigabyteRGBFusionGPUController/RGBController_GigabyteRGBFusionGPU.cpp

Lines changed: 48 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,50 +21,65 @@ RGBController_RGBFusionGPU::RGBController_RGBFusionGPU(RGBFusionGPUController* r
2121
type = DEVICE_TYPE_GPU;
2222

2323
mode Direct;
24-
Direct.name = "Direct";
25-
Direct.value = RGB_FUSION_GPU_MODE_STATIC;
26-
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
27-
Direct.color_mode = MODE_COLORS_PER_LED;
24+
Direct.name = "Direct";
25+
Direct.value = RGB_FUSION_GPU_MODE_STATIC;
26+
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
27+
Direct.color_mode = MODE_COLORS_PER_LED;
28+
Direct.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN;
29+
Direct.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX;
30+
Direct.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX;
2831
modes.push_back(Direct);
2932

3033
mode Breathing;
31-
Breathing.name = "Breathing";
32-
Breathing.value = RGB_FUSION_GPU_MODE_BREATHING;
33-
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR;
34-
Breathing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST;
35-
Breathing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST;
36-
Breathing.speed = RGB_FUSION_GPU_SPEED_NORMAL;
37-
Breathing.color_mode = MODE_COLORS_PER_LED;
34+
Breathing.name = "Breathing";
35+
Breathing.value = RGB_FUSION_GPU_MODE_BREATHING;
36+
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
37+
Breathing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST;
38+
Breathing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST;
39+
Breathing.speed = RGB_FUSION_GPU_SPEED_NORMAL;
40+
Breathing.color_mode = MODE_COLORS_PER_LED;
41+
Breathing.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN;
42+
Breathing.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX;
43+
Breathing.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX;
3844
modes.push_back(Breathing);
3945

4046
mode Flashing;
41-
Flashing.name = "Flashing";
42-
Flashing.value = RGB_FUSION_GPU_MODE_FLASHING;
43-
Flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR;
44-
Flashing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST;
45-
Flashing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST;
46-
Flashing.speed = RGB_FUSION_GPU_SPEED_NORMAL;
47-
Flashing.color_mode = MODE_COLORS_PER_LED;
47+
Flashing.name = "Flashing";
48+
Flashing.value = RGB_FUSION_GPU_MODE_FLASHING;
49+
Flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
50+
Flashing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST;
51+
Flashing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST;
52+
Flashing.speed = RGB_FUSION_GPU_SPEED_NORMAL;
53+
Flashing.color_mode = MODE_COLORS_PER_LED;
54+
Flashing.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN;
55+
Flashing.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX;
56+
Flashing.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX;
4857
modes.push_back(Flashing);
4958

5059
mode DualFlashing;
51-
DualFlashing.name = "Dual Flashing";
52-
DualFlashing.value = RGB_FUSION_GPU_MODE_DUAL_FLASHING;
53-
DualFlashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR;
54-
DualFlashing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST;
55-
DualFlashing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST;
56-
DualFlashing.speed = RGB_FUSION_GPU_SPEED_NORMAL;
57-
DualFlashing.color_mode = MODE_COLORS_PER_LED;
60+
DualFlashing.name = "Dual Flashing";
61+
DualFlashing.value = RGB_FUSION_GPU_MODE_DUAL_FLASHING;
62+
DualFlashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
63+
DualFlashing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST;
64+
DualFlashing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST;
65+
DualFlashing.speed = RGB_FUSION_GPU_SPEED_NORMAL;
66+
DualFlashing.color_mode = MODE_COLORS_PER_LED;
67+
DualFlashing.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN;
68+
DualFlashing.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX;
69+
DualFlashing.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX;
5870
modes.push_back(DualFlashing);
5971

6072
mode SpectrumCycle;
61-
SpectrumCycle.name = "Spectrum Cycle";
62-
SpectrumCycle.value = RGB_FUSION_GPU_MODE_SPECTRUM_CYCLE;
63-
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED;
64-
SpectrumCycle.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST;
65-
SpectrumCycle.speed_max = RGB_FUSION_GPU_SPEED_FASTEST;
66-
SpectrumCycle.speed = RGB_FUSION_GPU_SPEED_NORMAL;
67-
SpectrumCycle.color_mode = MODE_COLORS_NONE;
73+
SpectrumCycle.name = "Spectrum Cycle";
74+
SpectrumCycle.value = RGB_FUSION_GPU_MODE_SPECTRUM_CYCLE;
75+
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
76+
SpectrumCycle.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST;
77+
SpectrumCycle.speed_max = RGB_FUSION_GPU_SPEED_FASTEST;
78+
SpectrumCycle.speed = RGB_FUSION_GPU_SPEED_NORMAL;
79+
SpectrumCycle.color_mode = MODE_COLORS_NONE;
80+
SpectrumCycle.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN;
81+
SpectrumCycle.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX;
82+
SpectrumCycle.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX;
6883
modes.push_back(SpectrumCycle);
6984

7085
SetupZones();
@@ -139,5 +154,5 @@ void RGBController_RGBFusionGPU::SetCustomMode()
139154

140155
void RGBController_RGBFusionGPU::DeviceUpdateMode()
141156
{
142-
rgb_fusion->SetMode((unsigned char)modes[(unsigned int)active_mode].value, (unsigned char)modes[(unsigned int)active_mode].speed);
157+
rgb_fusion->SetMode((unsigned char)modes[(unsigned int)active_mode].value, (unsigned char)modes[(unsigned int)active_mode].speed, (unsigned char)modes[(unsigned int)active_mode].brightness);
143158
}

0 commit comments

Comments
 (0)