Skip to content

Commit e0ceb25

Browse files
only check 16bit float control if 16bit floats can be used
1 parent ed50b15 commit e0ceb25

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/nbl/video/CVulkanPhysicalDevice.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -401,8 +401,7 @@ std::unique_ptr<CVulkanPhysicalDevice> CVulkanPhysicalDevice::create(core::smart
401401
//vulkan12Properties.denormBehaviorIndependence;
402402
//vulkan12Properties.denormBehaviorIndependence;
403403

404-
if (!vulkan12Properties.shaderSignedZeroInfNanPreserveFloat16)
405-
return nullptr;
404+
//! preserve of 16bit float checked later when features are known
406405
if (!vulkan12Properties.shaderSignedZeroInfNanPreserveFloat32)
407406
return nullptr;
408407
properties.limits.shaderSignedZeroInfNanPreserveFloat64 = vulkan12Properties.shaderSignedZeroInfNanPreserveFloat64;
@@ -905,6 +904,13 @@ std::unique_ptr<CVulkanPhysicalDevice> CVulkanPhysicalDevice::create(core::smart
905904
properties.limits.shaderSharedInt64Atomics = vulkan12Features.shaderSharedInt64Atomics;
906905

907906
properties.limits.shaderFloat16 = vulkan12Features.shaderFloat16;
907+
if (!vulkan12Features.shaderFloat16)
908+
{
909+
// only fail if 16bit floats can be used
910+
if (!vulkan12Properties.shaderSignedZeroInfNanPreserveFloat16)
911+
return nullptr;
912+
}
913+
908914
if (!vulkan12Features.shaderInt8)
909915
return nullptr;
910916

@@ -1899,4 +1905,4 @@ core::smart_refctd_ptr<ILogicalDevice> CVulkanPhysicalDevice::createLogicalDevic
18991905
return core::make_smart_refctd_ptr<CVulkanLogicalDevice>(core::smart_refctd_ptr<const IAPIConnection>(m_initData.api),m_rdoc_api,this,vk_device,params);
19001906
}
19011907

1902-
}
1908+
}

0 commit comments

Comments
 (0)