Skip to content

Commit cf1500e

Browse files
author
nitrocaster
committed
Implement CrossFire detection. Close #41.
1 parent 59ad959 commit cf1500e

File tree

7 files changed

+131
-55
lines changed

7 files changed

+131
-55
lines changed

src/Layers/xrRender/HWCaps.cpp

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#if !defined(_EDITOR) && !defined(USE_OGL)
88
#include <nvapi.h>
9+
#include <ags_lib/inc/amd_ags.h>
910
#endif
1011

1112
namespace
@@ -70,16 +71,25 @@ u32 GetNVGpuNum()
7071

7172
u32 GetATIGpuNum()
7273
{
73-
// XXX: use AMD AGS
74-
//int iGpuNum = AtiMultiGPUAdapters();
75-
int iGpuNum = 1;
76-
77-
if (iGpuNum>1)
78-
{
79-
Msg ("* ATI MGPU: %d-Way CrossFire detected.", iGpuNum);
80-
}
81-
82-
return iGpuNum;
74+
AGSContext *ags = nullptr;
75+
AGSGPUInfo gpuInfo = {};
76+
AGSReturnCode status = agsInit(&ags, &gpuInfo);
77+
if (status!=AGS_SUCCESS)
78+
{
79+
Msg("! AGS: Initialization failed (%d)", status);
80+
return 1;
81+
}
82+
int crossfireGpuCount = 1;
83+
status = agsGetCrossfireGPUCount(ags, &crossfireGpuCount);
84+
if (status!=AGS_SUCCESS)
85+
{
86+
Msg("! AGS: Unable to get CrossFire GPU count (%d)", status);
87+
agsDeInit(ags);
88+
return 1;
89+
}
90+
Msg("* AGS: CrossFire GPU count: %d", crossfireGpuCount);
91+
agsDeInit(ags);
92+
return crossfireGpuCount;
8393
}
8494

8595
u32 GetGpuNum()

src/Layers/xrRenderPC_GL/xrRender_GL.vcxproj

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
<ClCompile>
7373
<Optimization>Disabled</Optimization>
7474
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
75-
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\glbinding\source\glbinding\include;$(SolutionDir)Externals\gli;$(SolutionDir)Externals\gli\external\glm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
75+
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\glbinding\source\glbinding\include;$(SolutionDir)Externals\gli;$(SolutionDir)Externals\gli\external\glm;$(SolutionDir)Externals\AGS_SDK;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
7676
<PreprocessorDefinitions>USE_OGL;GLBINDING_STATIC;NO_XR_VDECLARATOR;_USRDLL;XRRENDER_GL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
7777
<MinimalRebuild>false</MinimalRebuild>
7878
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -86,9 +86,9 @@
8686
<AdditionalOptions>-Zm200 %(AdditionalOptions)</AdditionalOptions>
8787
</ClCompile>
8888
<Link>
89-
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;oalib.lib;opengl32.lib;glu32.lib;glbinding.lib;%(AdditionalDependencies)</AdditionalDependencies>
89+
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;amd_ags_x86.lib;oalib.lib;opengl32.lib;glu32.lib;glbinding.lib;%(AdditionalDependencies)</AdditionalDependencies>
9090
<SuppressStartupBanner>true</SuppressStartupBanner>
91-
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
91+
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);$(SolutionDir)Externals\AGS_SDK\ags_lib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
9292
<GenerateDebugInformation>true</GenerateDebugInformation>
9393
<GenerateMapFile>false</GenerateMapFile>
9494
<SubSystem>Windows</SubSystem>
@@ -97,6 +97,10 @@
9797
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
9898
<RandomizedBaseAddress>false</RandomizedBaseAddress>
9999
</Link>
100+
<PostBuildEvent>
101+
<Message>Copy AGS dll to output directory</Message>
102+
<Command>copy /Y "$(SolutionDir)Externals\AGS_SDK\ags_lib\lib\amd_ags_$(PlatformShortName).dll" "$(OutDir)amd_ags_$(PlatformShortName).dll"</Command>
103+
</PostBuildEvent>
100104
</ItemDefinitionGroup>
101105
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
102106
<ClCompile>
@@ -107,7 +111,7 @@
107111
<OmitFramePointers>true</OmitFramePointers>
108112
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
109113
<WholeProgramOptimization>true</WholeProgramOptimization>
110-
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\glbinding\source\glbinding\include;$(SolutionDir)Externals\gli;$(SolutionDir)Externals\gli\external\glm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
114+
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\glbinding\source\glbinding\include;$(SolutionDir)Externals\gli;$(SolutionDir)Externals\gli\external\glm;$(SolutionDir)Externals\AGS_SDK;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
111115
<PreprocessorDefinitions>USE_OGL;GLBINDING_STATIC;NO_XR_VDECLARATOR;_USRDLL;XRRENDER_GL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
112116
<StringPooling>true</StringPooling>
113117
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -122,8 +126,8 @@
122126
<AdditionalOptions>-Zm200 %(AdditionalOptions)</AdditionalOptions>
123127
</ClCompile>
124128
<Link>
125-
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;oalib.lib;opengl32.lib;glu32.lib;glbinding.lib;%(AdditionalDependencies)</AdditionalDependencies>
126-
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
129+
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;amd_ags_x86.lib;oalib.lib;opengl32.lib;glu32.lib;glbinding.lib;%(AdditionalDependencies)</AdditionalDependencies>
130+
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);$(SolutionDir)Externals\AGS_SDK\ags_lib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
127131
<GenerateDebugInformation>true</GenerateDebugInformation>
128132
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
129133
<GenerateMapFile>false</GenerateMapFile>
@@ -136,6 +140,10 @@
136140
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
137141
<RandomizedBaseAddress>false</RandomizedBaseAddress>
138142
</Link>
143+
<PostBuildEvent>
144+
<Message>Copy AGS dll to output directory</Message>
145+
<Command>copy /Y "$(SolutionDir)Externals\AGS_SDK\ags_lib\lib\amd_ags_$(PlatformShortName).dll" "$(OutDir)amd_ags_$(PlatformShortName).dll"</Command>
146+
</PostBuildEvent>
139147
</ItemDefinitionGroup>
140148
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Mixed|Win32'">
141149
<ClCompile>
@@ -145,7 +153,7 @@
145153
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
146154
<OmitFramePointers>false</OmitFramePointers>
147155
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
148-
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\glbinding\source\glbinding\include;$(SolutionDir)Externals\gli;$(SolutionDir)Externals\gli\external\glm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
156+
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\glbinding\source\glbinding\include;$(SolutionDir)Externals\gli;$(SolutionDir)Externals\gli\external\glm;$(SolutionDir)Externals\AGS_SDK;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
149157
<PreprocessorDefinitions>USE_OGL;GLBINDING_STATIC;NO_XR_VDECLARATOR;_USRDLL;XRRENDER_GL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
150158
<StringPooling>true</StringPooling>
151159
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -159,8 +167,8 @@
159167
<AdditionalOptions>-Zm200 %(AdditionalOptions)</AdditionalOptions>
160168
</ClCompile>
161169
<Link>
162-
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;oalib.lib;opengl32.lib;glu32.lib;glbinding.lib;%(AdditionalDependencies)</AdditionalDependencies>
163-
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
170+
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;amd_ags_x86.lib;oalib.lib;opengl32.lib;glu32.lib;glbinding.lib;%(AdditionalDependencies)</AdditionalDependencies>
171+
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);$(SolutionDir)Externals\AGS_SDK\ags_lib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
164172
<GenerateDebugInformation>true</GenerateDebugInformation>
165173
<GenerateMapFile>false</GenerateMapFile>
166174
<SubSystem>Windows</SubSystem>
@@ -169,6 +177,10 @@
169177
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
170178
<RandomizedBaseAddress>false</RandomizedBaseAddress>
171179
</Link>
180+
<PostBuildEvent>
181+
<Message>Copy AGS dll to output directory</Message>
182+
<Command>copy /Y "$(SolutionDir)Externals\AGS_SDK\ags_lib\lib\amd_ags_$(PlatformShortName).dll" "$(OutDir)amd_ags_$(PlatformShortName).dll"</Command>
183+
</PostBuildEvent>
172184
</ItemDefinitionGroup>
173185
<ItemGroup>
174186
<ClCompile Include="..\xrRenderGL\Blender_Recorder_GL.cpp" />

src/Layers/xrRenderPC_R1/xrRender_R1.vcxproj

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
<ClCompile>
7373
<Optimization>Disabled</Optimization>
7474
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
75-
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\nvapi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
75+
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\nvapi;$(SolutionDir)Externals\AGS_SDK;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
7676
<PreprocessorDefinitions>_USRDLL;XRRENDER_R1_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
7777
<MinimalRebuild>true</MinimalRebuild>
7878
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -85,14 +85,18 @@
8585
<AdditionalOptions>-Zm150 %(AdditionalOptions)</AdditionalOptions>
8686
</ClCompile>
8787
<Link>
88-
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;oalib.lib;%(AdditionalDependencies)</AdditionalDependencies>
88+
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;amd_ags_x86.lib;oalib.lib;%(AdditionalDependencies)</AdditionalDependencies>
8989
<SuppressStartupBanner>true</SuppressStartupBanner>
90-
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
90+
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);$(SolutionDir)Externals\AGS_SDK\ags_lib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
9191
<SubSystem>Windows</SubSystem>
9292
<RandomizedBaseAddress>false</RandomizedBaseAddress>
9393
<TargetMachine>MachineX86</TargetMachine>
9494
<LargeAddressAware>true</LargeAddressAware>
9595
</Link>
96+
<PostBuildEvent>
97+
<Message>Copy AGS dll to output directory</Message>
98+
<Command>copy /Y "$(SolutionDir)Externals\AGS_SDK\ags_lib\lib\amd_ags_$(PlatformShortName).dll" "$(OutDir)amd_ags_$(PlatformShortName).dll"</Command>
99+
</PostBuildEvent>
96100
</ItemDefinitionGroup>
97101
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
98102
<ClCompile>
@@ -103,7 +107,7 @@
103107
<OmitFramePointers>true</OmitFramePointers>
104108
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
105109
<WholeProgramOptimization>true</WholeProgramOptimization>
106-
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\nvapi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
110+
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\nvapi;$(SolutionDir)Externals\AGS_SDK;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
107111
<PreprocessorDefinitions>_USRDLL;XRRENDER_R1_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
108112
<StringPooling>true</StringPooling>
109113
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -117,8 +121,8 @@
117121
<AdditionalOptions>-Zm150 %(AdditionalOptions)</AdditionalOptions>
118122
</ClCompile>
119123
<Link>
120-
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;oalib.lib;%(AdditionalDependencies)</AdditionalDependencies>
121-
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
124+
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;amd_ags_x86.lib;oalib.lib;%(AdditionalDependencies)</AdditionalDependencies>
125+
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);$(SolutionDir)Externals\AGS_SDK\ags_lib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
122126
<SubSystem>Windows</SubSystem>
123127
<OptimizeReferences>true</OptimizeReferences>
124128
<EnableCOMDATFolding>true</EnableCOMDATFolding>
@@ -127,6 +131,10 @@
127131
<TargetMachine>MachineX86</TargetMachine>
128132
<LargeAddressAware>true</LargeAddressAware>
129133
</Link>
134+
<PostBuildEvent>
135+
<Message>Copy AGS dll to output directory</Message>
136+
<Command>copy /Y "$(SolutionDir)Externals\AGS_SDK\ags_lib\lib\amd_ags_$(PlatformShortName).dll" "$(OutDir)amd_ags_$(PlatformShortName).dll"</Command>
137+
</PostBuildEvent>
130138
</ItemDefinitionGroup>
131139
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Mixed|Win32'">
132140
<ClCompile>
@@ -136,7 +144,7 @@
136144
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
137145
<OmitFramePointers>false</OmitFramePointers>
138146
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
139-
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\nvapi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
147+
<AdditionalIncludeDirectories>$(SolutionDir)Externals\OpenAutomate\inc;$(SolutionDir)Externals\nvapi;$(SolutionDir)Externals\AGS_SDK;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
140148
<PreprocessorDefinitions>_USRDLL;XRRENDER_R1_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
141149
<StringPooling>true</StringPooling>
142150
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -149,14 +157,18 @@
149157
<AdditionalOptions>-Zm150 %(AdditionalOptions)</AdditionalOptions>
150158
</ClCompile>
151159
<Link>
152-
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;oalib.lib;%(AdditionalDependencies)</AdditionalDependencies>
153-
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
160+
<AdditionalDependencies>LuaJIT.lib;luabind.lib;nvapi.lib;amd_ags_x86.lib;oalib.lib;%(AdditionalDependencies)</AdditionalDependencies>
161+
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;$(SolutionDir)Externals\OpenAutomate\libraries;$(SolutionDir)Externals\nvapi\x86;$(SolutionDir)Externals\luajit\bin\$(PlatformShortName);$(SolutionDir)Externals\AGS_SDK\ags_lib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
154162
<SubSystem>Windows</SubSystem>
155163
<LargeAddressAware>true</LargeAddressAware>
156164
<RandomizedBaseAddress>false</RandomizedBaseAddress>
157165
<ImportLibrary>$(xrLibDir)$(TargetName).lib</ImportLibrary>
158166
<TargetMachine>MachineX86</TargetMachine>
159167
</Link>
168+
<PostBuildEvent>
169+
<Message>Copy AGS dll to output directory</Message>
170+
<Command>copy /Y "$(SolutionDir)Externals\AGS_SDK\ags_lib\lib\amd_ags_$(PlatformShortName).dll" "$(OutDir)amd_ags_$(PlatformShortName).dll"</Command>
171+
</PostBuildEvent>
160172
</ItemDefinitionGroup>
161173
<ItemGroup>
162174
<ClInclude Include="..\..\Include\xrRender\animation_blend.h" />

0 commit comments

Comments
 (0)