From d8c36b771546fbb839051c48b558d03647aaa010 Mon Sep 17 00:00:00 2001 From: Patedam Date: Sun, 23 Mar 2025 16:01:04 -0400 Subject: [PATCH] Check resource binding tier --- .../Graphics/D3D12/D3D12GraphicsDevice.cpp | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.cpp b/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.cpp index 6bb7e68..14ed6ea 100644 --- a/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.cpp @@ -41,6 +41,25 @@ namespace Juliet::D3D12 constexpr D3D_FEATURE_LEVEL kD3DFeatureLevel = D3D_FEATURE_LEVEL_12_1; constexpr auto kD3DFeatureLevelStr = "12_1"; + bool CheckResourceTypeTier(ID3D12Device5* device) + { + D3D12_FEATURE_DATA_D3D12_OPTIONS options = {}; + HRESULT result = ID3D12Device5_CheckFeatureSupport(device, D3D12_FEATURE_D3D12_OPTIONS, &options, + sizeof(D3D12_FEATURE_DATA_D3D12_OPTIONS)); + if (SUCCEEDED(result)) + { + if (options.ResourceBindingTier < D3D12_RESOURCE_BINDING_TIER_3) + { + Juliet::LogError(LogCategory::Graphics, "Resource Binding Tier 3 not supported. :("); + return false; + } + return true; + } + + Juliet::LogError(LogCategory::Graphics, "Couldn't fetch D3D12_FEATURE_D3D12_OPTIONS :("); + return false; + } + bool CheckShaderModel(ID3D12Device5* device) { // Check Shader Model @@ -161,6 +180,7 @@ namespace Juliet::D3D12 if (SUCCEEDED(result)) { driverIsValid &= CheckShaderModel(device); + driverIsValid &= CheckResourceTypeTier(device); ID3D12Device5_Release(device); }