Check resource binding tier

This commit is contained in:
2025-03-23 16:01:04 -04:00
parent c56bc43723
commit d8c36b7715

View File

@@ -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);
}