diff options
| author | aidanfnv <aidanf@nvidia.com> | 2025-04-11 18:47:32 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-12 01:47:32 +0000 |
| commit | 28006e36d92f7709f7c5ad84d50d1c5584c42508 (patch) | |
| tree | db0044d7ff68189eda7023f91ffe497221b22ba2 | |
| parent | 6dd5bd52e3a5fb721776224e5e9a390d626faf26 (diff) | |
Add slang-test check for D3D11 double support (#6761)
Fixes #6171
This commit adds logic for reporting double support
to the d3d11 backend, for running tests on GPUs that
do not support D3D11_FEATURE_DOUBLES, and add checks
for that support to tests that require the feature.
| -rw-r--r-- | tests/bugs/dxbc-double-problem.slang | 2 | ||||
| -rw-r--r-- | tests/bugs/frexp-double.slang | 2 | ||||
| -rw-r--r-- | tests/compute/transcendental-double.slang | 2 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/bit-cast-double.slang | 2 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/classify-double.slang | 2 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/scalar-double-simple.slang | 2 | ||||
| -rw-r--r-- | tools/gfx/d3d11/d3d11-device.cpp | 13 |
7 files changed, 19 insertions, 6 deletions
diff --git a/tests/bugs/dxbc-double-problem.slang b/tests/bugs/dxbc-double-problem.slang index 793a4b9d0..1cbf35f35 100644 --- a/tests/bugs/dxbc-double-problem.slang +++ b/tests/bugs/dxbc-double-problem.slang @@ -1,4 +1,4 @@ -//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -shaderobj -render-feature double //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj -render-feature double //TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -shaderobj //TEST(compute):COMPARE_COMPUTE_EX:-dx12 -compute -use-dxil -output-using-type -shaderobj diff --git a/tests/bugs/frexp-double.slang b/tests/bugs/frexp-double.slang index e85f23825..97b944a6a 100644 --- a/tests/bugs/frexp-double.slang +++ b/tests/bugs/frexp-double.slang @@ -1,4 +1,4 @@ -//TEST(smoke,compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-output-using-type +//TEST(smoke,compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-output-using-type -render-feature double //TEST(smoke,compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-dx12 -use-dxil -output-using-type //TEST(smoke,compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-cpu -output-using-type //TEST(smoke,compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -output-using-type -render-feature double diff --git a/tests/compute/transcendental-double.slang b/tests/compute/transcendental-double.slang index 025262429..dc35eb565 100644 --- a/tests/compute/transcendental-double.slang +++ b/tests/compute/transcendental-double.slang @@ -1,6 +1,6 @@ //TEST(compute):COMPARE_COMPUTE:-cuda -output-using-type -shaderobj //TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type -shaderobj -//TEST(compute):COMPARE_COMPUTE: -output-using-type -shaderobj +//TEST(compute):COMPARE_COMPUTE: -output-using-type -shaderobj -render-feature double // Cos values are all 0 on D3d12(!) //DISABLE_TEST(compute):COMPARE_COMPUTE: -dx12 -output-using-type -shaderobj diff --git a/tests/hlsl-intrinsic/bit-cast-double.slang b/tests/hlsl-intrinsic/bit-cast-double.slang index bacaaee03..4b1876a19 100644 --- a/tests/hlsl-intrinsic/bit-cast-double.slang +++ b/tests/hlsl-intrinsic/bit-cast-double.slang @@ -1,5 +1,5 @@ //TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-slang -compute -cpu -shaderobj -//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHK):-slang -compute -dx11 -shaderobj +//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHK):-slang -compute -dx11 -shaderobj -render-feature double //TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHK):-slang -compute -dx12 -shaderobj //TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-slang -vk -compute -shaderobj -render-feature double //TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-slang -cuda -compute -shaderobj diff --git a/tests/hlsl-intrinsic/classify-double.slang b/tests/hlsl-intrinsic/classify-double.slang index 6cdc7dba5..839f54727 100644 --- a/tests/hlsl-intrinsic/classify-double.slang +++ b/tests/hlsl-intrinsic/classify-double.slang @@ -1,5 +1,5 @@ //TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj -//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -render-feature double //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -render-feature double //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj diff --git a/tests/hlsl-intrinsic/scalar-double-simple.slang b/tests/hlsl-intrinsic/scalar-double-simple.slang index 1e9c25351..57049bbe7 100644 --- a/tests/hlsl-intrinsic/scalar-double-simple.slang +++ b/tests/hlsl-intrinsic/scalar-double-simple.slang @@ -2,7 +2,7 @@ // For simplicity we are not going to use any intrinsics, and not use any resources that use double //TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj -//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -render-feature double //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil -shaderobj //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -render-feature double diff --git a/tools/gfx/d3d11/d3d11-device.cpp b/tools/gfx/d3d11/d3d11-device.cpp index ab4670a17..b101c6d13 100644 --- a/tools/gfx/d3d11/d3d11-device.cpp +++ b/tools/gfx/d3d11/d3d11-device.cpp @@ -267,6 +267,19 @@ SlangResult DeviceImpl::initialize(const Desc& desc) #endif } + // Check double precision support + { + D3D11_FEATURE_DATA_DOUBLES doublePrecisionFeature = {}; + if (SUCCEEDED(m_device->CheckFeatureSupport( + D3D11_FEATURE_DOUBLES, + &doublePrecisionFeature, + sizeof(doublePrecisionFeature))) && + doublePrecisionFeature.DoublePrecisionFloatShaderOps) + { + m_features.add("double"); + } + } + { // Create a TIMESTAMP_DISJOINT query object to query/update frequency info. D3D11_QUERY_DESC disjointQueryDesc = {}; |
