107 lines
3.1 KiB
C++
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);
|
|
} |