Files
XCEngine/tests/RHI/unit/test_capabilities.cpp

107 lines
3.1 KiB
C++

#include "fixtures/RHITestFixture.h"
#include "XCEngine/RHI/RHICapabilities.h"
using namespace XCEngine::RHI;
TEST_P(RHITestFixture, Capabilities_Query_Basic) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
EXPECT_GE(caps.maxTexture2DSize, 1u);
EXPECT_GE(caps.maxTexture3DSize, 1u);
EXPECT_GE(caps.maxTextureCubeSize, 1u);
EXPECT_GE(caps.maxRenderTargets, 1u);
EXPECT_GE(caps.maxViewports, 1u);
EXPECT_GE(caps.maxVertexAttribs, 1u);
EXPECT_GE(caps.maxColorAttachments, 1u);
}
TEST_P(RHITestFixture, Capabilities_Query_Version) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
EXPECT_GE(caps.majorVersion, 0);
EXPECT_GE(caps.minorVersion, 0);
}
TEST_P(RHITestFixture, Capabilities_Query_ShaderModel) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
if (GetBackendType() == RHIType::D3D12) {
EXPECT_FALSE(caps.shaderModel.empty());
}
}
TEST_P(RHITestFixture, Capabilities_Query_Anisotropy) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
if (caps.maxAnisotropy > 1) {
EXPECT_GE(caps.maxAnisotropy, 2u);
EXPECT_LE(caps.maxAnisotropy, 16u);
}
}
TEST_P(RHITestFixture, Capabilities_Query_LineWidth) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
EXPECT_GE(caps.minSmoothedLineWidth, 1.0f);
EXPECT_GE(caps.maxSmoothedLineWidth, 1.0f);
EXPECT_GE(caps.maxLineWidth, 1.0f);
}
TEST_P(RHITestFixture, Capabilities_Query_PointSize) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
EXPECT_GE(caps.minPointSize, 1.0f);
EXPECT_GE(caps.maxPointSize, 1.0f);
EXPECT_GE(caps.maxPointSizeAA, 1.0f);
}
TEST_P(RHITestFixture, Capabilities_FeatureFlags) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
if (GetBackendType() == RHIType::D3D12) {
EXPECT_TRUE(caps.bSupportsComputeShaders);
}
}
TEST_P(RHITestFixture, Capabilities_Query_DeviceInfo) {
const RHIDeviceInfo& info = GetDevice()->GetDeviceInfo();
EXPECT_FALSE(info.vendor.empty());
EXPECT_FALSE(info.renderer.empty());
EXPECT_GT(info.vendorId, 0u);
EXPECT_GT(info.deviceId, 0u);
}
TEST_P(RHITestFixture, Capabilities_DeviceInfo_Memory) {
const RHIDeviceInfo& info = GetDevice()->GetDeviceInfo();
if (!info.isSoftware) {
EXPECT_GT(info.dedicatedVideoMemory, 0ull);
}
}
TEST_P(RHITestFixture, Capabilities_MaxTextureSizes) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
EXPECT_GE(caps.maxTexture2DSize, 2048u);
EXPECT_GE(caps.maxTextureCubeSize, 2048u);
if (GetBackendType() == RHIType::D3D12) {
EXPECT_GE(caps.maxTexture3DSize, 256u);
}
}
TEST_P(RHITestFixture, Capabilities_RenderTargets) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
EXPECT_GE(caps.maxRenderTargets, 1u);
EXPECT_GE(caps.maxColorAttachments, 1u);
EXPECT_LE(caps.maxRenderTargets, 8u);
}
TEST_P(RHITestFixture, Capabilities_ConstantBuffer) {
const RHICapabilities& caps = GetDevice()->GetCapabilities();
EXPECT_GT(caps.maxConstantBufferSize, 0u);
EXPECT_LE(caps.maxConstantBufferSize, 128 * 1024 * 1024u);
}