Files
XCEngine/tests/RHI/D3D12/unit/test_device.cpp

63 lines
2.5 KiB
C++

#include "fixtures/D3D12TestFixture.h"
#include <d3d12.h>
#include <dxgi1_4.h>
#include <windows.h>
TEST_F(D3D12TestFixture, Device_Create_Success) {
ASSERT_NE(GetDevice(), nullptr);
}
TEST_F(D3D12TestFixture, Device_Get_CommandQueue) {
ASSERT_NE(GetCommandQueue(), nullptr);
}
TEST_F(D3D12TestFixture, Device_Get_FeatureLevel) {
static const D3D_FEATURE_LEVEL requestedLevels[] = { D3D_FEATURE_LEVEL_12_0 };
D3D12_FEATURE_DATA_FEATURE_LEVELS featureLevels = {};
featureLevels.NumFeatureLevels = 1;
featureLevels.pFeatureLevelsRequested = requestedLevels;
HRESULT hr = GetDevice()->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS, &featureLevels, sizeof(featureLevels));
ASSERT_HRESULT_SUCCEEDED(hr);
EXPECT_EQ(featureLevels.MaxSupportedFeatureLevel, D3D_FEATURE_LEVEL_12_0);
}
TEST_F(D3D12TestFixture, Device_Get_DescriptorHandleIncrementSize) {
UINT cbvSrvUavSize = GetDevice()->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
EXPECT_GT(cbvSrvUavSize, 0);
UINT samplerSize = GetDevice()->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
EXPECT_GT(samplerSize, 0);
UINT rtvSize = GetDevice()->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
EXPECT_GT(rtvSize, 0);
UINT dsvSize = GetDevice()->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_DSV);
EXPECT_GT(dsvSize, 0);
}
TEST_F(D3D12TestFixture, Device_Get_ShaderModelSupport) {
D3D12_FEATURE_DATA_SHADER_MODEL shaderModel = {};
shaderModel.HighestShaderModel = D3D_SHADER_MODEL_6_0;
HRESULT hr = GetDevice()->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &shaderModel, sizeof(shaderModel));
ASSERT_HRESULT_SUCCEEDED(hr);
EXPECT_GE(shaderModel.HighestShaderModel, D3D_SHADER_MODEL_6_0);
}
TEST_F(D3D12TestFixture, Device_Get_ResourceBindingTier) {
D3D12_FEATURE_DATA_D3D12_OPTIONS options = {};
HRESULT hr = GetDevice()->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &options, sizeof(options));
ASSERT_HRESULT_SUCCEEDED(hr);
EXPECT_GE(options.ResourceBindingTier, D3D12_RESOURCE_BINDING_TIER_1);
}
TEST_F(D3D12TestFixture, Device_Get_TiledResourcesTier) {
D3D12_FEATURE_DATA_D3D12_OPTIONS options = {};
HRESULT hr = GetDevice()->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &options, sizeof(options));
ASSERT_HRESULT_SUCCEEDED(hr);
EXPECT_GE(options.TiledResourcesTier, D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED);
}