diff options
author | Jens Peters <jp7677@gmail.com> | 2021-08-21 18:24:11 +0300 |
---|---|---|
committer | Jens Peters <jp7677@gmail.com> | 2021-10-30 21:13:28 +0300 |
commit | 332615c6a8a7d796ca41c18121a85ab247c28623 (patch) | |
tree | e169b87124328a82857aa6fdb2916655278b8327 | |
parent | 16d36c739d0b0020e470e98a3606594e20bb5200 (diff) |
nvapi: Implement NvAPI_GetInterfaceVersionStringExget-interface-version-string-ex
Lets make the non-ex interface version a static identifier and move header version to extended version identifier.
Add tests accordingly.
-rw-r--r-- | src/nvapi.cpp | 14 | ||||
-rw-r--r-- | src/nvapi_interface.cpp | 1 | ||||
-rw-r--r-- | tests/nvapi_sysinfo.cpp | 8 | ||||
-rw-r--r-- | tests/nvapi_system.cpp | 8 |
4 files changed, 27 insertions, 4 deletions
diff --git a/src/nvapi.cpp b/src/nvapi.cpp index 82387fb..eb7452e 100644 --- a/src/nvapi.cpp +++ b/src/nvapi.cpp @@ -136,7 +136,19 @@ extern "C" { if (szDesc == nullptr) return InvalidArgument(n); - strcpy(szDesc, "R470"); + strcpy(szDesc, "DXVK-NVAPI"); + + return Ok(n); + } + + NvAPI_Status __cdecl NvAPI_GetInterfaceVersionStringEx(NvAPI_ShortString szDesc) { + constexpr auto n = __func__; + + if (szDesc == nullptr) + return InvalidArgument(n); + + const std::string headerVersion = "R470"; + strcpy(szDesc, str::format("DXVK-NVAPI", " ", DXVK_NVAPI_VERSION, " (", headerVersion , ")").c_str()); return Ok(n); } diff --git a/src/nvapi_interface.cpp b/src/nvapi_interface.cpp index 3f93b1d..b27aa36 100644 --- a/src/nvapi_interface.cpp +++ b/src/nvapi_interface.cpp @@ -98,6 +98,7 @@ extern "C" { INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_EnumNvidiaDisplayHandle) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_EnumNvidiaUnAttachedDisplayHandle) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GetInterfaceVersionString) + INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GetInterfaceVersionStringEx) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GetErrorMessage) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_Unload) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_Initialize) diff --git a/tests/nvapi_sysinfo.cpp b/tests/nvapi_sysinfo.cpp index ef2b42d..203afdb 100644 --- a/tests/nvapi_sysinfo.cpp +++ b/tests/nvapi_sysinfo.cpp @@ -18,7 +18,13 @@ using namespace trompeloeil; TEST_CASE("GetInterfaceVersionString returns OK", "[.sysinfo]") { NvAPI_ShortString desc; REQUIRE(NvAPI_GetInterfaceVersionString(desc) == NVAPI_OK); - REQUIRE(strcmp(desc, "R470") == 0); + REQUIRE(strcmp(desc, "DXVK-NVAPI") == 0); +} + +TEST_CASE("GetInterfaceVersionStringEx returns OK", "[.sysinfo]") { + NvAPI_ShortString desc; + REQUIRE(NvAPI_GetInterfaceVersionStringEx(desc) == NVAPI_OK); + REQUIRE(std::string(desc).rfind("DXVK-NVAPI", 0) == 0); } TEST_CASE("GetErrorMessage returns OK", "[.sysinfo]") { diff --git a/tests/nvapi_system.cpp b/tests/nvapi_system.cpp index 9e6c509..a5296b8 100644 --- a/tests/nvapi_system.cpp +++ b/tests/nvapi_system.cpp @@ -9,6 +9,7 @@ typedef void* (*PFN_NvAPI_QueryInterface)(unsigned int id); typedef decltype(&NvAPI_Initialize) PFN_NvAPI_Initialize; typedef decltype(&NvAPI_Unload) PFN_NvAPI_Unload; typedef decltype(&NvAPI_GetInterfaceVersionString) PFN_NvAPI_GetInterfaceVersionString; +typedef decltype(&NvAPI_GetInterfaceVersionStringEx) PFN_NvAPI_GetInterfaceVersionStringEx; typedef decltype(&NvAPI_SYS_GetDriverAndBranchVersion) PFN_NvAPI_SYS_GetDriverAndBranchVersion; typedef decltype(&NvAPI_EnumPhysicalGPUs) PFN_NvAPI_EnumPhysicalGPUs; typedef decltype(&NvAPI_GPU_GetGPUType) PFN_NvAPI_GPU_GetGPUType; @@ -84,6 +85,7 @@ TEST_CASE("Sysinfo methods succeed against local system", "[system]") { auto nvAPI_Initialize = GetNvAPIProcAddress<PFN_NvAPI_Initialize>(nvAPI_QueryInterface, "NvAPI_Initialize"); auto nvAPI_Unload = GetNvAPIProcAddress<PFN_NvAPI_Unload>(nvAPI_QueryInterface, "NvAPI_Unload"); auto nvAPI_GetInterfaceVersionString = GetNvAPIProcAddress<PFN_NvAPI_GetInterfaceVersionString>(nvAPI_QueryInterface, "NvAPI_GetInterfaceVersionString"); + auto nvAPI_GetInterfaceVersionStringEx = GetNvAPIProcAddress<PFN_NvAPI_GetInterfaceVersionStringEx>(nvAPI_QueryInterface, "NvAPI_GetInterfaceVersionStringEx"); auto nvAPI_SYS_GetDriverAndBranchVersion = GetNvAPIProcAddress<PFN_NvAPI_SYS_GetDriverAndBranchVersion>(nvAPI_QueryInterface, "NvAPI_SYS_GetDriverAndBranchVersion"); auto nvAPI_EnumPhysicalGPUs = GetNvAPIProcAddress<PFN_NvAPI_EnumPhysicalGPUs>(nvAPI_QueryInterface, "NvAPI_EnumPhysicalGPUs"); auto nvAPI_GPU_GetGPUType = GetNvAPIProcAddress<PFN_NvAPI_GPU_GetGPUType>(nvAPI_QueryInterface, "NvAPI_GPU_GetGPUType"); @@ -102,10 +104,12 @@ TEST_CASE("Sysinfo methods succeed against local system", "[system]") { NvAPI_Status result; REQUIRE(nvAPI_Initialize() == NVAPI_OK); + std::cout << "--------------------------------" << std::endl; NvAPI_ShortString desc; REQUIRE(nvAPI_GetInterfaceVersionString(desc) == NVAPI_OK); - std::cout << "--------------------------------" << std::endl; - std::cout << "Interface version: " << desc << std::endl; + NvAPI_ShortString descEx; + REQUIRE(nvAPI_GetInterfaceVersionStringEx(descEx) == NVAPI_OK); + std::cout << "Interface version: " << desc << " / " << descEx << std::endl; NvU32 version; NvAPI_ShortString branch; |