Skip to content

Commit d0fead9

Browse files
nvetillisonjp7677
authored andcommitted
nvapi: Implement NVAPI_GetLogicalGPUFromPhysicalGPU
1 parent 8a5f8b5 commit d0fead9

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

src/nvapi.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,24 @@ extern "C" {
127127
return Ok(n);
128128
}
129129

130+
NvAPI_Status __cdecl NvAPI_GetLogicalGPUFromPhysicalGPU(NvPhysicalGpuHandle hPhysicalGPU, NvLogicalGpuHandle* pLogicalGPU) {
131+
constexpr auto n = __func__;
132+
133+
if (nvapiAdapterRegistry == nullptr)
134+
return ApiNotInitialized(n);
135+
136+
if (hPhysicalGPU == nullptr)
137+
return InvalidArgument(n);
138+
139+
auto adapter = reinterpret_cast<NvapiAdapter*>(hPhysicalGPU);
140+
if (!nvapiAdapterRegistry->IsAdapter(adapter))
141+
return ExpectedPhysicalGpuHandle(n);
142+
143+
*pLogicalGPU = reinterpret_cast<NvLogicalGpuHandle>(adapter);
144+
145+
return Ok(n);
146+
}
147+
130148
NvAPI_Status __cdecl NvAPI_GetPhysicalGPUsFromLogicalGPU(NvLogicalGpuHandle hLogicalGPU, NvPhysicalGpuHandle hPhysicalGPU[NVAPI_MAX_PHYSICAL_GPUS], NvU32* pGpuCount) {
131149
constexpr auto n = __func__;
132150

src/nvapi_interface.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ extern "C" {
121121
INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GetGPUIDfromPhysicalGPU)
122122
INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GetDisplayDriverVersion)
123123
INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GetPhysicalGPUsFromDisplay)
124+
INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GetLogicalGPUFromPhysicalGPU)
124125
INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GetPhysicalGPUsFromLogicalGPU)
125126
INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_EnumNvidiaDisplayHandle)
126127
INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_EnumNvidiaUnAttachedDisplayHandle)

tests/nvapi_sysinfo_topo.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,19 @@ TEST_CASE("Topology methods succeed", "[.sysinfo-topo]") {
9393
REQUIRE(handle == nullptr);
9494
}
9595

96+
SECTION("GetLogicalGPUFromPhysicalGPU succeeds") {
97+
NvPhysicalGpuHandle handles[NVAPI_MAX_PHYSICAL_GPUS]{};
98+
NvU32 count;
99+
REQUIRE(NvAPI_EnumPhysicalGPUs(handles, &count) == NVAPI_OK);
100+
101+
NvLogicalGpuHandle logicalhandle;
102+
REQUIRE(NvAPI_GetLogicalGPUFromPhysicalGPU(handles[0], &logicalhandle) == NVAPI_OK);
103+
REQUIRE(logicalhandle == reinterpret_cast<NvLogicalGpuHandle>(handles[0]));
104+
105+
REQUIRE(NvAPI_GetLogicalGPUFromPhysicalGPU(handles[1], &logicalhandle) == NVAPI_OK);
106+
REQUIRE(logicalhandle == reinterpret_cast<NvLogicalGpuHandle>(handles[1]));
107+
}
108+
96109
SECTION("GetPhysicalGPUsFromLogicalGPU succeeds") {
97110
NvLogicalGpuHandle handles[NVAPI_MAX_LOGICAL_GPUS]{};
98111
NvU32 count;

0 commit comments

Comments
 (0)