From fcbdd9e418fd85a1c69ff48c0dcc552e05e36acb Mon Sep 17 00:00:00 2001 From: dmcdiar Date: Mon, 10 May 2021 19:34:54 -0700 Subject: [PATCH] Added RHI feature flag for unbounded arrays --- Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/DeviceFeatures.h | 3 +++ Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp | 2 ++ Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp | 1 + 3 files changed, 6 insertions(+) diff --git a/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/DeviceFeatures.h b/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/DeviceFeatures.h index 246db1522a..94d1cbd9ae 100644 --- a/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/DeviceFeatures.h +++ b/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/DeviceFeatures.h @@ -76,6 +76,9 @@ namespace AZ //! Whether Ray Tracing support is available. bool m_rayTracing = false; + //! Whether Unbounded Array support is available. + bool m_unboundedArrays = false; + /// Additional features here. }; } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp index 2c47a5a443..af94aef3fb 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp @@ -166,6 +166,8 @@ namespace AZ m_features.m_rayTracing = false; #endif + m_features.m_unboundedArrays = true; + m_limits.m_maxImageDimension1D = D3D12_REQ_TEXTURE1D_U_DIMENSION; m_limits.m_maxImageDimension2D = D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION; m_limits.m_maxImageDimension3D = D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION; diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp index ff7eb7f4c0..76662ebc6e 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp +++ b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp @@ -720,6 +720,7 @@ namespace AZ StringList deviceExtensions = physicalDevice.GetDeviceExtensionNames(); StringList::iterator itRayTracingExtension = AZStd::find(deviceExtensions.begin(), deviceExtensions.end(), VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME); m_features.m_rayTracing = (itRayTracingExtension != deviceExtensions.end()); + m_features.m_unboundedArrays = true; const auto& deviceLimits = physicalDevice.GetDeviceLimits(); m_limits.m_maxImageDimension1D = deviceLimits.maxImageDimension1D;