-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added usage of AMD device_info library, printing its information
Printing structure GDT_GfxCardInfo, GDT_DeviceInfo.
- Loading branch information
Showing
7 changed files
with
262 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,18 @@ | ||
[submodule "Src/ThirdParty/gpudetect"] | ||
path = Src/ThirdParty/gpudetect | ||
url = https://github.com/GameTechDev/gpudetect.git | ||
[submodule "Src/ThirdParty/rapidjson"] | ||
path = Src/ThirdParty/rapidjson | ||
url = https://github.com/Tencent/rapidjson.git | ||
[submodule "Src/ThirdParty/nvapi"] | ||
path = Src/ThirdParty/nvapi | ||
url = https://github.com/NVIDIA/nvapi.git | ||
[submodule "Src/ThirdParty/AGS_SDK"] | ||
path = Src/ThirdParty/AGS_SDK | ||
url = https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK.git | ||
[submodule "Src/ThirdParty/Vulkan-Headers"] | ||
path = Src/ThirdParty/Vulkan-Headers | ||
url = https://github.com/KhronosGroup/Vulkan-Headers.git | ||
[submodule "Src/ThirdParty/gpudetect"] | ||
path = Src/ThirdParty/gpudetect | ||
url = https://github.com/GameTechDev/gpudetect.git | ||
[submodule "Src/ThirdParty/rapidjson"] | ||
path = Src/ThirdParty/rapidjson | ||
url = https://github.com/Tencent/rapidjson.git | ||
[submodule "Src/ThirdParty/nvapi"] | ||
path = Src/ThirdParty/nvapi | ||
url = https://github.com/NVIDIA/nvapi.git | ||
[submodule "Src/ThirdParty/AGS_SDK"] | ||
path = Src/ThirdParty/AGS_SDK | ||
url = https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK.git | ||
[submodule "Src/ThirdParty/Vulkan-Headers"] | ||
path = Src/ThirdParty/Vulkan-Headers | ||
url = https://github.com/KhronosGroup/Vulkan-Headers.git | ||
[submodule "Src/ThirdParty/AMD_device_info"] | ||
path = Src/ThirdParty/AMD_device_info | ||
url = https://github.com/GPUOpen-Tools/device_info.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
/* | ||
This file is part of D3d12info project: | ||
https://github.com/sawickiap/D3d12info | ||
Copyright (c) 2018-2025 Adam Sawicki, https://asawicki.info | ||
License: MIT | ||
For more information, see files README.md, LICENSE.txt. | ||
*/ | ||
#include "AmdDeviceInfoData.hpp" | ||
#include "Printing.hpp" | ||
#include "Utils.hpp" | ||
#include "Json.hpp" | ||
#include "Enums.hpp" | ||
|
||
// Macro set by Cmake. | ||
#if USE_AMD_DEVICE_INFO | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
// PRIVATE | ||
|
||
#include "ThirdParty/AMD_device_info/DeviceInfo.h" | ||
|
||
ENUM_BEGIN(GDT_HW_ASIC_TYPE) | ||
ENUM_ITEM(GDT_ASIC_TYPE_NONE) | ||
ENUM_ITEM(GDT_TAHITI_PRO) | ||
ENUM_ITEM(GDT_TAHITI_XT) | ||
ENUM_ITEM(GDT_PITCAIRN_PRO) | ||
ENUM_ITEM(GDT_PITCAIRN_XT) | ||
ENUM_ITEM(GDT_CAPEVERDE_PRO) | ||
ENUM_ITEM(GDT_CAPEVERDE_XT) | ||
ENUM_ITEM(GDT_OLAND) | ||
ENUM_ITEM(GDT_HAINAN) | ||
ENUM_ITEM(GDT_BONAIRE) | ||
ENUM_ITEM(GDT_HAWAII) | ||
ENUM_ITEM(GDT_KALINDI) | ||
ENUM_ITEM(GDT_SPECTRE) | ||
ENUM_ITEM(GDT_SPECTRE_SL) | ||
ENUM_ITEM(GDT_SPECTRE_LITE) | ||
ENUM_ITEM(GDT_SPOOKY) | ||
ENUM_ITEM(GDT_ICELAND) | ||
ENUM_ITEM(GDT_TONGA) | ||
ENUM_ITEM(GDT_CARRIZO) | ||
ENUM_ITEM(GDT_CARRIZO_EMB) | ||
ENUM_ITEM(GDT_FIJI) | ||
ENUM_ITEM(GDT_STONEY) | ||
ENUM_ITEM(GDT_ELLESMERE) | ||
ENUM_ITEM(GDT_BAFFIN) | ||
ENUM_ITEM(GDT_GFX8_0_4) | ||
ENUM_ITEM(GDT_VEGAM1) | ||
ENUM_ITEM(GDT_VEGAM2) | ||
ENUM_ITEM(GDT_GFX9_0_0) | ||
ENUM_ITEM(GDT_GFX9_0_2) | ||
ENUM_ITEM(GDT_GFX9_0_4) | ||
ENUM_ITEM(GDT_GFX9_0_6) | ||
ENUM_ITEM(GDT_GFX9_0_9) | ||
ENUM_ITEM(GDT_GFX9_0_A) | ||
ENUM_ITEM(GDT_GFX9_0_C) | ||
ENUM_ITEM(GDT_GFX9_4_2) | ||
ENUM_ITEM(GDT_GFX10_1_0) | ||
ENUM_ITEM(GDT_GFX10_1_0_XL) | ||
ENUM_ITEM(GDT_GFX10_1_2) | ||
ENUM_ITEM(GDT_GFX10_1_1) | ||
ENUM_ITEM(GDT_GFX10_3_0) | ||
ENUM_ITEM(GDT_GFX10_3_1) | ||
ENUM_ITEM(GDT_GFX10_3_2) | ||
ENUM_ITEM(GDT_GFX10_3_3) | ||
ENUM_ITEM(GDT_GFX10_3_4) | ||
ENUM_ITEM(GDT_GFX10_3_5) | ||
ENUM_ITEM(GDT_GFX11_0_0) | ||
ENUM_ITEM(GDT_GFX11_0_1) | ||
ENUM_ITEM(GDT_GFX11_0_2) | ||
ENUM_ITEM(GDT_GFX11_0_3) | ||
ENUM_ITEM(GDT_GFX11_0_3B) | ||
ENUM_ITEM(GDT_GFX11_5_0) | ||
ENUM_ITEM(GDT_LAST) | ||
ENUM_END(GDT_HW_ASIC_TYPE) | ||
|
||
ENUM_BEGIN(GDT_HW_GENERATION) | ||
ENUM_ITEM(GDT_HW_GENERATION_NONE) | ||
ENUM_ITEM(GDT_HW_GENERATION_NVIDIA) | ||
ENUM_ITEM(GDT_HW_GENERATION_INTEL) | ||
ENUM_ITEM(GDT_HW_GENERATION_SOUTHERNISLAND) | ||
ENUM_ITEM(GDT_HW_GENERATION_FIRST_AMD) | ||
ENUM_ITEM(GDT_HW_GENERATION_SEAISLAND) | ||
ENUM_ITEM(GDT_HW_GENERATION_VOLCANICISLAND) | ||
ENUM_ITEM(GDT_HW_GENERATION_GFX9) | ||
ENUM_ITEM(GDT_HW_GENERATION_GFX10) | ||
ENUM_ITEM(GDT_HW_GENERATION_GFX103) | ||
ENUM_ITEM(GDT_HW_GENERATION_GFX11) | ||
ENUM_ITEM(GDT_HW_GENERATION_CDNA) | ||
ENUM_ITEM(GDT_HW_GENERATION_CDNA2) | ||
ENUM_ITEM(GDT_HW_GENERATION_CDNA3) | ||
ENUM_ITEM(GDT_HW_GENERATION_LAST) | ||
ENUM_END(GDT_HW_GENERATION) | ||
|
||
static const GDT_GfxCardInfo* FindCardInfo(const AmdDeviceInfo_Initialize_RAII::DeviceId& id) | ||
{ | ||
for(size_t i = 0; i < gs_cardInfoSize; ++i) | ||
{ | ||
const GDT_GfxCardInfo& info = gs_cardInfo[i]; | ||
if(info.m_deviceID == id.deviceId && | ||
(info.m_revID == id.revisionId || info.m_revID == REVISION_ID_ANY)) | ||
{ | ||
return &info; | ||
} | ||
} | ||
return nullptr; | ||
} | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
// PUBLIC | ||
|
||
void AmdDeviceInfo_Initialize_RAII::PrintDeviceData(const DeviceId& id) | ||
{ | ||
const GDT_GfxCardInfo* const cardInfo = FindCardInfo(id); | ||
if(!cardInfo) | ||
return; | ||
|
||
{ | ||
ScopedStructRegion region{L"AMD GDT_GfxCardInfo"}; | ||
PrintEnum(L"asicType", cardInfo->m_asicType, Enum_GDT_HW_ASIC_TYPE); | ||
PrintEnum(L"generation", cardInfo->m_generation, Enum_GDT_HW_GENERATION); | ||
Print_BOOL(L"APU", cardInfo->m_bAPU ? TRUE : FALSE); | ||
Print_string(L"CALName", StrToWstr(cardInfo->m_szCALName, CP_UTF8).c_str()); | ||
Print_string(L"MarketingName", StrToWstr(cardInfo->m_szMarketingName, CP_UTF8).c_str()); | ||
} | ||
|
||
if(cardInfo->m_asicType >= 0 && cardInfo->m_asicType < gs_deviceInfoSize) | ||
{ | ||
const GDT_DeviceInfo& devInfo = gs_deviceInfo[cardInfo->m_asicType]; | ||
if(devInfo.m_deviceInfoValid) | ||
{ | ||
ScopedStructRegion region(L"AMD GDT_DeviceInfo"); | ||
Print_uint64(L"NumShaderEngines", devInfo.m_nNumShaderEngines); // Number of shader engines. | ||
Print_uint64(L"MaxWavePerSIMD", devInfo.m_nMaxWavePerSIMD); // Number of wave slots per SIMD. | ||
Print_uint64(L"ClocksPrim", devInfo.m_suClocksPrim); // Number of clocks it takes to process a primitive. | ||
Print_uint64(L"NumSQMaxCounters", devInfo.m_nNumSQMaxCounters); // Max number of SQ counters. | ||
Print_uint64(L"NumPrimPipes", devInfo.m_nNumPrimPipes); // Number of primitive pipes. | ||
Print_uint64(L"WaveSize", devInfo.m_nWaveSize); // Wavefront size. | ||
Print_uint64(L"NumSHPerSE", devInfo.m_nNumSHPerSE); // Number of shader array per Shader Engine. | ||
Print_uint64(L"NumCUPerSH", devInfo.m_nNumCUPerSH); // Number of compute unit per Shader Array. | ||
Print_uint64(L"NumSIMDPerCU", devInfo.m_nNumSIMDPerCU); // Number of SIMDs per Compute unit. | ||
} | ||
} | ||
} | ||
|
||
#endif // #if USE_AMD_DEVICE_INFO |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/* | ||
This file is part of D3d12info project: | ||
https://github.com/sawickiap/D3d12info | ||
Copyright (c) 2018-2025 Adam Sawicki, https://asawicki.info | ||
License: MIT | ||
For more information, see files README.md, LICENSE.txt. | ||
*/ | ||
#pragma once | ||
|
||
// Macro set by Cmake. | ||
#if USE_AMD_DEVICE_INFO | ||
|
||
class AmdDeviceInfo_Initialize_RAII | ||
{ | ||
public: | ||
struct DeviceId | ||
{ | ||
uint32_t deviceId, revisionId; | ||
}; | ||
void PrintDeviceData(const DeviceId& id); | ||
}; | ||
|
||
#else | ||
|
||
class AmdDeviceInfo_Initialize_RAII { }; | ||
|
||
#endif // #if USE_AMD_DEVICE_INFO |
Oops, something went wrong.