From 67ca54997d445e15891965b8d77561b9d10bb18c Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Mon, 24 Aug 2020 14:26:27 -0400 Subject: NVAPI improvements (#1512) * First pass at incorporating nvapi into test harness. * D3d12 Atomic Float Add via NVAPI working * Dx12 atomic float appears to work. * Atomic float add on Dx12. * Added atomic64 feature addition to vk. Fix correct output for atomic-float-byte-address.slang * Disable atomic float failing tests. * Upgraded VK headers. * Detect atomic float availability on VK. * Try to get test working for in64 atomic. * Made HLSL prelude controlled via the render-test requirements. * Added -enable-nvapi to premake. * Fix D3D12Renderer when NVAPI is not available. * Small improvements to VKRenderer. * Improve atomic documentation in target-compatibility.md. * Fixed NVAPI working on D3D12. * Test for specific NVAPI features. * Remove requiredFeatures from Renderer::Desc as was ignored. Tried to document more around nvapiExtnSlot. * Readded requiredFeatures to Renderer::Desc * Improve comments in the tests. --- .../slang-extension/atomic-float-byte-address-buffer.slang | 14 +++++--------- .../slang-extension/atomic-int64-byte-address-buffer.slang | 9 ++++----- 2 files changed, 9 insertions(+), 14 deletions(-) (limited to 'tests') diff --git a/tests/slang-extension/atomic-float-byte-address-buffer.slang b/tests/slang-extension/atomic-float-byte-address-buffer.slang index a332ddeac..603b92d65 100644 --- a/tests/slang-extension/atomic-float-byte-address-buffer.slang +++ b/tests/slang-extension/atomic-float-byte-address-buffer.slang @@ -1,18 +1,14 @@ // atomic-float-byte-address-buffer.slang //DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -// Produces a different result -//TEST(compute):COMPARE_COMPUTE_EX:-dx11 -slang -compute -render-features atomic-float -output-using-type -nvapi-register u0 -// Disabled because crashes currently on vulkan -// https://vulkan.gpuinfo.org/listdevicescoverage.php?extension=VK_EXT_shader_atomic_float +//TEST(compute):COMPARE_COMPUTE_EX:-dx11 -slang -compute -render-features atomic-float -output-using-type -nvapi-slot u0 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-float -output-using-type -// Doesn't work on D3D12 for unknown reasons -//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -render-features atomic-float -output-using-type -compile-arg -O2 -nvapi-register u0 -//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -use-dxil -render-features atomic-float -output-using-type -compile-arg -O2 -nvapi-register u0 +//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -render-features atomic-float -output-using-type -compile-arg -O2 -nvapi-slot u0 +//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -use-dxil -render-features atomic-float -output-using-type -compile-arg -O2 -nvapi-slot u0 //TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -// We don't use this, but having this defined makes the 0 slot available if nvapi is going to be used -// Only strictly necessary on the dx12 path +// The test doesn't directly use this, but having this defined makes the 0 slot available if NVAPI is going to be used +// Only strictly necessary on the D3D11/D3D12 paths //TEST_INPUT:ubuffer(data=[0 0 0 0 ], stride=4):name=nvapiBuffer RWStructuredBuffer nvapiBuffer; diff --git a/tests/slang-extension/atomic-int64-byte-address-buffer.slang b/tests/slang-extension/atomic-int64-byte-address-buffer.slang index 216e55dc2..628c675a2 100644 --- a/tests/slang-extension/atomic-int64-byte-address-buffer.slang +++ b/tests/slang-extension/atomic-int64-byte-address-buffer.slang @@ -4,14 +4,13 @@ //DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute // No support for int64_t on fxc - we need SM6.0 and dxil // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/hlsl-shader-model-6-0-features-for-direct3d-12 -//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-register u0 -// Doesn't work on current version of driver. The atomics have no effect perhaps meaning they aren't being decoded correctly -//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-register u0 -compile-arg -O2 +//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -nvapi-slot u0 +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -render-features atomic-int64 -nvapi-slot u0 -compile-arg -O2 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -render-features atomic-int64 //TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -// We don't use this, but having this defined makes the 0 slot available if nvapi is going to be used -// Only strictly necessary on the dx12 path +// The test doesn't directly use this, but having this defined makes the 0 slot available if NVAPI is going to be used +// Only strictly necessary on the D3D12 path //TEST_INPUT:ubuffer(data=[0 0 0 0 ], stride=4):name=nvapiBuffer RWStructuredBuffer nvapiBuffer; -- cgit v1.2.3