initialized = true; return true; }
include_directories(${AGS_ROOT}/inc)
return info; }
// Get CrossFire GPU count directly int crossfireCount = detector.GetCrossFireGPUCout();
// Get CrossFire GPU count using agsGetCrossfireGPUCount int GetCrossFireGPUCout();
struct CrossFireInfo { bool isCrossFireEnabled; int gpuCount; std::vector<std::string> gpuNames; bool isAMDPlatform; std::string errorMessage; };
// CrossFireGPUDetector.cpp #include "CrossFireGPUDetector.h" #include <iostream>
detector.Shutdown(); return 0; } cmake_minimum_required(VERSION 3.10) project(CrossFireDetector) set(CMAKE_CXX_STANDARD 17) Path to AMD AGS SDK set(AGS_ROOT "C:/Path/To/AMD/AGS_SDK")
if (!detector.Initialize()) { std::cout << "Failed to initialize AMD AGS. Non-AMD system?" << std::endl; return -1; }
return crossfireGPUs; }
link_directories(${AGS_ROOT}/lib)
// Cleanup AGS context void Shutdown(); private: AGSContext* agsContext; AGSGPUInfo gpuInfo; bool initialized; };
void CrossFireDetector::Shutdown() { if (agsContext) { agsDeInit(agsContext); agsContext = nullptr; } initialized = false; } // main.cpp - Example usage #include "CrossFireGPUDetector.h" #include <iostream> int main() { CrossFireDetector detector;