Add quick and dirty RGBController interface for Gigabyte Aorus 1080Ti Xtreme using GvDisplay.dll hack

This commit is contained in:
Adam Honse 2019-06-17 20:52:37 -05:00
parent 08532dc56c
commit ab4a07244a
5 changed files with 135 additions and 0 deletions

View file

@ -12,6 +12,7 @@
#include "RGBController_Aura.h"
#include "RGBController_Corsair.h"
#include "RGBController_OpenRazer.h"
#include "RGBController_AorusGPU.h"
#include "i2c_smbus.h"
#include <vector>
#include <stdio.h>
@ -686,6 +687,13 @@ int main(int argc, char *argv[])
rgb_controllers.push_back(razer_rgb);
#endif
//This is for testing Aorus GPU
#if 0
RGBController_AorusGPU* aorus_rgb = new RGBController_AorusGPU();
rgb_controllers.push_back(aorus_rgb);
#endif
#if WIN32
OpenAuraSDKDialog dlg(busses, rgb_controllers);
dlg.DoModal();

View file

@ -188,6 +188,7 @@
<ClInclude Include="OpenAuraSDKDialog.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="RGBController.h" />
<ClInclude Include="RGBController_AorusGPU.h" />
<ClInclude Include="RGBController_Aura.h" />
<ClInclude Include="RGBController_Corsair.h" />
<ClInclude Include="wmi.h" />
@ -202,6 +203,7 @@
<ClCompile Include="i2c_smbus_nuvoton_nct6793d.cpp" />
<ClCompile Include="i2c_smbus_piix4.cpp" />
<ClCompile Include="OpenAuraSDKDialog.cpp" />
<ClCompile Include="RGBController_AorusGPU.cpp" />
<ClCompile Include="RGBController_Aura.cpp" />
<ClCompile Include="RGBController_Corsair.cpp" />
<ClCompile Include="wmi.cpp" />

View file

@ -57,6 +57,9 @@
<ClInclude Include="RGBController_Corsair.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="RGBController_AorusGPU.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="OpenAuraSDK.cpp">
@ -98,6 +101,9 @@
<ClCompile Include="RGBController_Corsair.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="RGBController_AorusGPU.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Resource.rc">

View file

@ -0,0 +1,87 @@
/*-----------------------------------------*\
| RGBController_AorusGPU.cpp |
| |
| Generic RGB Interface for OpenAuraSDK |
| Aorus GPU |
| |
| Adam Honse (CalcProgrammer1) 6/17/2019 |
\*-----------------------------------------*/
#include "RGBController_AorusGPU.h"
#include <Windows.h>
static HMODULE handle;
static unsigned char data[] = { 0x8E, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00,
0x64, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00 };
int RGBController_AorusGPU::GetMode()
{
return(0);
}
void RGBController_AorusGPU::SetMode(int mode)
{
}
void RGBController_AorusGPU::SetAllLEDs(RGBColor color)
{
data[9] = RGBGetRValue(color);
data[10] = RGBGetGValue(color);
data[11] = RGBGetBValue(color);
GvWriteI2C(0x00000000, data, 0x00000000);
}
void RGBController_AorusGPU::SetAllZoneLEDs(int zone, RGBColor color)
{
data[9] = RGBGetRValue(color);
data[10] = RGBGetGValue(color);
data[11] = RGBGetBValue(color);
GvWriteI2C(0x00000000, data, 0x00000000);
}
void RGBController_AorusGPU::SetLED(int led, RGBColor color)
{
data[9] = RGBGetRValue(color);
data[10] = RGBGetGValue(color);
data[11] = RGBGetBValue(color);
GvWriteI2C(0x00000000, data, 0x00000000);
}
RGBController_AorusGPU::RGBController_AorusGPU()
{
name = "Aorus GPU";
handle = LoadLibrary("GvDisplay.dll");
GvWriteI2C = (_GvWriteI2C)GetProcAddress(handle, "GvWriteI2C");
GvFreeDispLib = (_GvFreeDispLib)GetProcAddress(handle, "GvFreeDispLib");
GvInitDispLib = (_GvInitDispLib)GetProcAddress(handle, "GvInitDispLib");
GvFreeDispLib();
GvInitDispLib();
mode aorus_mode;
aorus_mode.name = "Static";
modes.push_back(aorus_mode);
led aorus_led;
aorus_led.name = "GPU LED";
leds.push_back(aorus_led);
zone aorus_zone;
aorus_zone.name = "GPU LED";
std::vector<int> aorus_zone_map;
aorus_zone_map.push_back(0);
aorus_zone.map.push_back(aorus_zone_map);
zones.push_back(aorus_zone);
}

View file

@ -0,0 +1,32 @@
/*-----------------------------------------*\
| RGBController_AorusGPU.h |
| |
| Generic RGB Interface for OpenAuraSDK |
| Aorus GPU |
| |
| Adam Honse (CalcProgrammer1) 6/17/2019 |
\*-----------------------------------------*/
#pragma once
#include "RGBController.h"
typedef unsigned int uint32;
typedef uint32(*_GvWriteI2C)(uint32, void*, uint32);
typedef void (*_GvFreeDispLib)();
typedef void (*_GvInitDispLib)();
class RGBController_AorusGPU : public RGBController
{
public:
RGBController_AorusGPU();
int GetMode();
void SetMode(int mode);
void SetAllLEDs(RGBColor color);
void SetAllZoneLEDs(int zone, RGBColor color);
void SetLED(int led, RGBColor color);
private:
_GvWriteI2C GvWriteI2C;
_GvFreeDispLib GvFreeDispLib;
_GvInitDispLib GvInitDispLib;
};