Split Vulkan backend tests by responsibility
This commit is contained in:
70
tests/RHI/Vulkan/unit/test_shader.cpp
Normal file
70
tests/RHI/Vulkan/unit/test_shader.cpp
Normal file
@@ -0,0 +1,70 @@
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
|
||||
#include "fixtures/VulkanTestFixture.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
using namespace XCEngine::RHI;
|
||||
|
||||
namespace {
|
||||
|
||||
TEST_F(VulkanGraphicsFixture, CreateShaderFromSpirvProducesValidComputeShader) {
|
||||
RHIShader* shader = CreateWriteRedComputeShader();
|
||||
ASSERT_NE(shader, nullptr);
|
||||
EXPECT_TRUE(shader->IsValid());
|
||||
EXPECT_EQ(shader->GetType(), ShaderType::Compute);
|
||||
EXPECT_NE(shader->GetNativeHandle(), nullptr);
|
||||
shader->Shutdown();
|
||||
delete shader;
|
||||
}
|
||||
|
||||
TEST_F(VulkanGraphicsFixture, CreateShaderFromGlslSourceProducesValidVertexShader) {
|
||||
static const char* vertexSource = R"(#version 450
|
||||
layout(location = 0) in vec4 aPosition;
|
||||
void main() {
|
||||
gl_Position = aPosition;
|
||||
}
|
||||
)";
|
||||
|
||||
ShaderCompileDesc shaderDesc = {};
|
||||
shaderDesc.sourceLanguage = ShaderLanguage::GLSL;
|
||||
shaderDesc.profile = L"vs";
|
||||
shaderDesc.source.assign(vertexSource, vertexSource + std::strlen(vertexSource));
|
||||
|
||||
RHIShader* shader = m_device->CreateShader(shaderDesc);
|
||||
ASSERT_NE(shader, nullptr);
|
||||
EXPECT_TRUE(shader->IsValid());
|
||||
EXPECT_EQ(shader->GetType(), ShaderType::Vertex);
|
||||
EXPECT_NE(shader->GetNativeHandle(), nullptr);
|
||||
shader->Shutdown();
|
||||
delete shader;
|
||||
}
|
||||
|
||||
TEST_F(VulkanGraphicsFixture, CreateShaderFromGlslFileProducesValidVertexShader) {
|
||||
ShaderCompileDesc shaderDesc = {};
|
||||
shaderDesc.fileName = ResolveShaderPath(L"tests/RHI/integration/triangle/Res/Shader/triangle_vulkan.vert");
|
||||
shaderDesc.entryPoint = L"main";
|
||||
shaderDesc.profile = L"vs";
|
||||
|
||||
RHIShader* shader = m_device->CreateShader(shaderDesc);
|
||||
ASSERT_NE(shader, nullptr);
|
||||
EXPECT_TRUE(shader->IsValid());
|
||||
EXPECT_EQ(shader->GetType(), ShaderType::Vertex);
|
||||
EXPECT_NE(shader->GetNativeHandle(), nullptr);
|
||||
shader->Shutdown();
|
||||
delete shader;
|
||||
}
|
||||
|
||||
TEST_F(VulkanGraphicsFixture, CreateShaderFromGlslSourceInfersComputeShader) {
|
||||
RHIShader* shader = CreateWriteRedComputeShaderFromGlsl();
|
||||
ASSERT_NE(shader, nullptr);
|
||||
EXPECT_TRUE(shader->IsValid());
|
||||
EXPECT_EQ(shader->GetType(), ShaderType::Compute);
|
||||
EXPECT_NE(shader->GetNativeHandle(), nullptr);
|
||||
shader->Shutdown();
|
||||
delete shader;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user