-
Notifications
You must be signed in to change notification settings - Fork 10
/
DeviceInfo.cpp
60 lines (47 loc) · 1.49 KB
/
DeviceInfo.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// © 2021 NVIDIA Corporation
#include <malloc.h>
#include <stdio.h>
#define NRI_FORCE_C
#include "NRI.h"
#include "Extensions/NRIDeviceCreation.h"
static const char* vendors[] = {
"unknown",
"NVIDIA",
"AMD",
"INTEL"};
#if _WIN32
# define alloca _alloca
#else
# include <alloca.h>
#endif
bool EnumerateAdapters() {
// Query device adapterDescs number
uint32_t adaptersNum = 0;
NriResult result = nriEnumerateAdapters(NULL, &adaptersNum);
if (result != NriResult_SUCCESS)
return false;
printf("NriGetPhysicalDevices: %u adapterDescs reported\n", adaptersNum);
if (!adaptersNum)
return true;
// Query device adapterDescs
size_t bytes = adaptersNum * sizeof(NriAdapterDesc);
NriAdapterDesc* adapterDescs = (NriAdapterDesc*)alloca(bytes);
result = nriEnumerateAdapters(adapterDescs, &adaptersNum);
if (result != NriResult_SUCCESS)
return false;
// Print information
for (uint32_t i = 0; i < adaptersNum; i++) {
const NriAdapterDesc* p = adapterDescs + i;
printf("\nGroup #%u\n", i + 1);
printf("\tName: %s\n", p->name);
printf("\tLUID: 0x%016llX\n", p->luid);
printf("\tVideo memory (Mb): %llu\n", p->videoMemorySize >> 20);
printf("\tSystem memory (Mb): %llu\n", p->systemMemorySize >> 20);
printf("\tID: 0x%08X\n", p->deviceId);
printf("\tVendor: %s\n", vendors[p->vendor]);
}
return true;
}
int main() {
return EnumerateAdapters() ? 0 : 1;
}