From 1644008a7eb9d5b3534807af16f9c3125d195ab2 Mon Sep 17 00:00:00 2001 From: Jens Peters Date: Wed, 8 Dec 2021 21:01:15 +0100 Subject: [PATCH] nvapi-d3d: Add NvAPI_D3D_ImplicitSLIControl --- src/nvapi_d3d.cpp | 9 +++++++++ src/nvapi_interface.cpp | 1 + tests/nvapi_d3d.cpp | 10 +++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/nvapi_d3d.cpp b/src/nvapi_d3d.cpp index 58bee635..88c20cc2 100644 --- a/src/nvapi_d3d.cpp +++ b/src/nvapi_d3d.cpp @@ -52,6 +52,15 @@ extern "C" { return Ok(n, alreadyLoggedOk); } + NvAPI_Status __cdecl NvAPI_D3D_ImplicitSLIControl(IMPLICIT_SLI_CONTROL implicitSLIControl) { + constexpr auto n = __func__; + + if (implicitSLIControl == ENABLE_IMPLICIT_SLI) + return Error(n); // No SLI with this implementation + + return Ok(n); + } + NvAPI_Status __cdecl NvAPI_D3D1x_GetGraphicsCapabilities(IUnknown *pDevice, NvU32 structVersion, NV_D3D1x_GRAPHICS_CAPS *pGraphicsCaps) { diff --git a/src/nvapi_interface.cpp b/src/nvapi_interface.cpp index f90b2f7a..80f6e4ee 100644 --- a/src/nvapi_interface.cpp +++ b/src/nvapi_interface.cpp @@ -70,6 +70,7 @@ extern "C" { INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_D3D_GetObjectHandleForResource) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_D3D_SetResourceHint) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_D3D_GetCurrentSLIState) + INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_D3D_ImplicitSLIControl) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_D3D_BeginResourceRendering) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_D3D_EndResourceRendering) INSERT_AND_RETURN_WHEN_EQUALS(NvAPI_GPU_GetGPUType) diff --git a/tests/nvapi_d3d.cpp b/tests/nvapi_d3d.cpp index 46f69b6e..f70789ae 100644 --- a/tests/nvapi_d3d.cpp +++ b/tests/nvapi_d3d.cpp @@ -13,7 +13,7 @@ TEST_CASE("D3D methods succeed", "[.d3d]") { REQUIRE(NvAPI_D3D_SetResourceHint(&unknown, NVDX_ObjectHandle(), NVAPI_D3D_SRH_CATEGORY_SLI, 1, &value) == NVAPI_NO_IMPLEMENTATION); } - SECTION("SetResourceHint returns NoImplementation") { + SECTION("SetResourceHint returns no-implementation") { REQUIRE(NvAPI_D3D_SetResourceHint(&unknown, NVDX_ObjectHandle(), NVAPI_D3D_SRH_CATEGORY_SLI, 0, nullptr) == NVAPI_NO_IMPLEMENTATION); } @@ -38,6 +38,14 @@ TEST_CASE("D3D methods succeed", "[.d3d]") { REQUIRE(state.numVRSLIGpus == 0); } + SECTION("ImplicitSLIControl returns OK") { + REQUIRE(NvAPI_D3D_ImplicitSLIControl(DISABLE_IMPLICIT_SLI) == NVAPI_OK); + } + + SECTION("ImplicitSLIControl returns error when enabling SLI") { + REQUIRE(NvAPI_D3D_ImplicitSLIControl(ENABLE_IMPLICIT_SLI) == NVAPI_ERROR); + } + SECTION("GetGraphicsCapabilities (V1) returns OK") { NV_D3D1x_GRAPHICS_CAPS_V1 caps; REQUIRE(NvAPI_D3D1x_GetGraphicsCapabilities(&unknown, NV_D3D1x_GRAPHICS_CAPS_VER1, reinterpret_cast(&caps)) == NVAPI_OK);