Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jp7677/dxvk-nvapi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJens Peters <jp7677@gmail.com>2022-02-06 21:43:04 +0300
committerJens Peters <jp7677@gmail.com>2022-02-06 21:43:04 +0300
commitcf436ff6703cbbf4dbdea116c7db67e44cb848c4 (patch)
treef16eb9bc3ccb686fa2dd9a7dfd5a00ece70e80d4 /tests
parentf17a75b443ba13acdf3ac02c8e9221aab43e69be (diff)
tests: Add tests for invalid struct version
Diffstat (limited to 'tests')
-rw-r--r--tests/nvapi_d3d12.cpp49
1 files changed, 34 insertions, 15 deletions
diff --git a/tests/nvapi_d3d12.cpp b/tests/nvapi_d3d12.cpp
index 27d45c1..40d6233 100644
--- a/tests/nvapi_d3d12.cpp
+++ b/tests/nvapi_d3d12.cpp
@@ -191,25 +191,44 @@ TEST_CASE("D3D12 methods succeed", "[.d3d12]") {
::SetEnvironmentVariableA("DXVK_NVAPI_ALLOW_OTHER_DRIVERS", "");
}
+ SECTION("GetGraphicsCapabilities with future struct version returns incompatible-struct-version") {
+ SetupResourceFactory(std::move(dxgiFactory), std::move(vulkan), std::move(nvml));
+ REQUIRE(NvAPI_Initialize() == NVAPI_OK);
+
+ NV_D3D12_GRAPHICS_CAPS graphicsCaps{};
+ REQUIRE(NvAPI_D3D12_GetGraphicsCapabilities(static_cast<ID3D12Device*>(&device), NV_D3D12_GRAPHICS_CAPS_VER1 + 1, &graphicsCaps) == NVAPI_INCOMPATIBLE_STRUCT_VERSION);
+ }
+
delete luid;
}
- SECTION("CreateGraphicsPipelineState for SetDepthBounds returns OK") {
- // See https://developer.nvidia.com/unlocking-gpu-intrinsics-hlsl how to use NvAPI_D3D12_CreateGraphicsPipelineState
- auto desc = D3D12_GRAPHICS_PIPELINE_STATE_DESC{};
- NVAPI_D3D12_PSO_ENABLE_DEPTH_BOUND_TEST_DESC extensionDesc;
- extensionDesc.baseVersion = NV_PSO_EXTENSION_DESC_VER;
- extensionDesc.psoExtension = NV_PSO_ENABLE_DEPTH_BOUND_TEST_EXTENSION;
- extensionDesc.version = NV_ENABLE_DEPTH_BOUND_TEST_PSO_EXTENSION_DESC_VER;
- extensionDesc.EnableDBT = true;
- const NVAPI_D3D12_PSO_EXTENSION_DESC* extensions[] = { &extensionDesc };
- ID3D12PipelineState* pipelineState = nullptr;
- REQUIRE_CALL(device, CreateGraphicsPipelineState(&desc, __uuidof(ID3D12PipelineState), reinterpret_cast<void**>(&pipelineState)))
- .RETURN(S_OK);
+ SECTION("CreateGraphicsPipelineState succeeds") {
+ SECTION("CreateGraphicsPipelineState for SetDepthBounds returns OK") {
+ // See https://developer.nvidia.com/unlocking-gpu-intrinsics-hlsl how to use NvAPI_D3D12_CreateGraphicsPipelineState
+ auto desc = D3D12_GRAPHICS_PIPELINE_STATE_DESC{};
+ NVAPI_D3D12_PSO_ENABLE_DEPTH_BOUND_TEST_DESC_V1 extensionDesc{};
+ extensionDesc.baseVersion = NV_PSO_EXTENSION_DESC_VER_1;
+ extensionDesc.psoExtension = NV_PSO_ENABLE_DEPTH_BOUND_TEST_EXTENSION;
+ extensionDesc.version = NV_ENABLE_DEPTH_BOUND_TEST_PSO_EXTENSION_DESC_VER;
+ extensionDesc.EnableDBT = true;
+ const NVAPI_D3D12_PSO_EXTENSION_DESC* extensions[] = { &extensionDesc };
+ ID3D12PipelineState* pipelineState = nullptr;
+ REQUIRE_CALL(device, CreateGraphicsPipelineState(&desc, __uuidof(ID3D12PipelineState), reinterpret_cast<void**>(&pipelineState)))
+ .RETURN(S_OK);
+
+ REQUIRE(NvAPI_D3D12_CreateGraphicsPipelineState(&device, &desc, 1, extensions, &pipelineState) == NVAPI_OK);
+ REQUIRE(deviceRefCount == 0);
+ REQUIRE(commandListRefCount == 0);
+ }
- REQUIRE(NvAPI_D3D12_CreateGraphicsPipelineState(&device, &desc, 1, extensions, &pipelineState) == NVAPI_OK);
- REQUIRE(deviceRefCount == 0);
- REQUIRE(commandListRefCount == 0);
+ SECTION("CreateGraphicsPipelineState with future struct version returns incompatible-struct-version") {
+ auto desc = D3D12_GRAPHICS_PIPELINE_STATE_DESC{};
+ NVAPI_D3D12_PSO_ENABLE_DEPTH_BOUND_TEST_DESC extensionDesc;
+ extensionDesc.baseVersion = NV_PSO_EXTENSION_DESC_VER_1 + 1;
+ const NVAPI_D3D12_PSO_EXTENSION_DESC* extensions[] = { &extensionDesc };
+ ID3D12PipelineState* pipelineState = nullptr;
+ REQUIRE(NvAPI_D3D12_CreateGraphicsPipelineState(&device, &desc, 1, extensions, &pipelineState) == NVAPI_INCOMPATIBLE_STRUCT_VERSION);
+ }
}
SECTION("SetDepthBoundsTestValues returns OK") {