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