mirror of
https://github.com/Kbz-8/Pulse.git
synced 2026-01-11 07:23:35 +00:00
adding command list Vulkan support
This commit is contained in:
42
Tests/Vulkan/Backend.c
git.filemode.normal_file
42
Tests/Vulkan/Backend.c
git.filemode.normal_file
@@ -0,0 +1,42 @@
|
||||
#include "Common.h"
|
||||
|
||||
#include <unity/unity.h>
|
||||
#include <Pulse.h>
|
||||
|
||||
void DumbDebugCallBack(PulseDebugMessageSeverity severity, const char* message)
|
||||
{
|
||||
(void)severity;
|
||||
(void)message;
|
||||
}
|
||||
|
||||
void TestBackendSetup()
|
||||
{
|
||||
PulseBackend backend = PulseLoadBackend(PULSE_BACKEND_VULKAN, PULSE_SHADER_FORMAT_SPIRV_BIT, PULSE_HIGH_DEBUG);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(backend, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
PulseSetDebugCallback(backend, DumbDebugCallBack);
|
||||
PulseUnloadBackend(backend);
|
||||
}
|
||||
|
||||
void TestBackendAnySetup()
|
||||
{
|
||||
PulseBackend backend = PulseLoadBackend(PULSE_BACKEND_ANY, PULSE_SHADER_FORMAT_SPIRV_BIT, PULSE_HIGH_DEBUG);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(backend, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
TEST_ASSERT_EQUAL(PulseGetBackendType(backend), PULSE_BACKEND_VULKAN);
|
||||
PulseSetDebugCallback(backend, DumbDebugCallBack);
|
||||
PulseUnloadBackend(backend);
|
||||
}
|
||||
|
||||
void TestWrongBackendSetup()
|
||||
{
|
||||
PulseBackend backend = PulseLoadBackend(PULSE_BACKEND_VULKAN, PULSE_SHADER_FORMAT_DXBC_BIT, PULSE_HIGH_DEBUG);
|
||||
TEST_ASSERT_EQUAL(backend, PULSE_NULL_HANDLE);
|
||||
PulseSetDebugCallback(backend, DumbDebugCallBack);
|
||||
PulseUnloadBackend(backend);
|
||||
}
|
||||
|
||||
void TestBackend()
|
||||
{
|
||||
RUN_TEST(TestBackendSetup);
|
||||
RUN_TEST(TestBackendAnySetup);
|
||||
RUN_TEST(TestWrongBackendSetup);
|
||||
}
|
||||
28
Tests/Vulkan/Common.c
git.filemode.normal_file
28
Tests/Vulkan/Common.c
git.filemode.normal_file
@@ -0,0 +1,28 @@
|
||||
#include "Common.h"
|
||||
#include <unity/unity.h>
|
||||
|
||||
void DebugCallBack(PulseDebugMessageSeverity severity, const char* message)
|
||||
{
|
||||
if(severity == PULSE_DEBUG_MESSAGE_SEVERITY_ERROR)
|
||||
TEST_FAIL_MESSAGE(message);
|
||||
}
|
||||
|
||||
#define LOG_MESSAGE_MAX_LENGTH 4096
|
||||
|
||||
void SetupPulse(PulseBackend* backend)
|
||||
{
|
||||
*backend = PulseLoadBackend(PULSE_BACKEND_VULKAN, PULSE_SHADER_FORMAT_SPIRV_BIT, PULSE_PARANOID_DEBUG);
|
||||
if(*backend == PULSE_NULL_HANDLE)
|
||||
{
|
||||
char complete_message[LOG_MESSAGE_MAX_LENGTH] = { 0 };
|
||||
snprintf(complete_message, LOG_MESSAGE_MAX_LENGTH, "Fatal Error: could not load Pulse using Vulkan due to %s", PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
TEST_FAIL_MESSAGE(complete_message);
|
||||
TEST_ABORT();
|
||||
}
|
||||
PulseSetDebugCallback(*backend, DebugCallBack);
|
||||
}
|
||||
|
||||
void CleanupPulse(PulseBackend backend)
|
||||
{
|
||||
PulseUnloadBackend(backend);
|
||||
}
|
||||
26
Tests/Vulkan/Common.h
git.filemode.normal_file
26
Tests/Vulkan/Common.h
git.filemode.normal_file
@@ -0,0 +1,26 @@
|
||||
#ifndef TEST_COMMON_H_
|
||||
#define TEST_COMMON_H_
|
||||
|
||||
#define RUN_TEST_AT_LINE(fn, line) \
|
||||
{ \
|
||||
Unity.TestFile = __FILE__; \
|
||||
Unity.CurrentTestName = #fn; \
|
||||
Unity.CurrentTestLineNumber = line; \
|
||||
Unity.NumberOfTests++; \
|
||||
UNITY_CLR_DETAILS(); \
|
||||
UNITY_EXEC_TIME_START(); \
|
||||
if(TEST_PROTECT()) \
|
||||
fn(); \
|
||||
UNITY_EXEC_TIME_STOP(); \
|
||||
UnityConcludeTest(); \
|
||||
}
|
||||
|
||||
#define RUN_TEST(fn) RUN_TEST_AT_LINE(fn, __LINE__);
|
||||
|
||||
#include <Pulse.h>
|
||||
|
||||
void DebugCallBack(PulseDebugMessageSeverity severity, const char* message);
|
||||
void SetupPulse(PulseBackend* backend);
|
||||
void CleanupPulse(PulseBackend backend);
|
||||
|
||||
#endif
|
||||
75
Tests/Vulkan/Device.c
git.filemode.normal_file
75
Tests/Vulkan/Device.c
git.filemode.normal_file
@@ -0,0 +1,75 @@
|
||||
#include "Common.h"
|
||||
|
||||
#include <unity/unity.h>
|
||||
#include <Pulse.h>
|
||||
|
||||
void TestDeviceSetup()
|
||||
{
|
||||
PulseBackend backend;
|
||||
SetupPulse(&backend);
|
||||
|
||||
PulseDevice device = PulseCreateDevice(backend, NULL, 0);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(device, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
PulseDestroyDevice(device);
|
||||
|
||||
CleanupPulse(backend);
|
||||
}
|
||||
|
||||
void TestForbiddenDeviceSetup()
|
||||
{
|
||||
PulseBackend backend;
|
||||
SetupPulse(&backend);
|
||||
|
||||
PulseDevice device1 = PulseCreateDevice(backend, NULL, 0);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(device1, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
|
||||
PulseDevice device2 = PulseCreateDevice(backend, &device1, 1);
|
||||
TEST_ASSERT_NOT_EQUAL(device2, device1);
|
||||
|
||||
PulseDestroyDevice(device2);
|
||||
PulseDestroyDevice(device1);
|
||||
|
||||
CleanupPulse(backend);
|
||||
}
|
||||
|
||||
void TestInvalidBackendDeviceSetup()
|
||||
{
|
||||
PulseDevice device= PulseCreateDevice(PULSE_NULL_HANDLE, NULL, 0);
|
||||
TEST_ASSERT_EQUAL(device, PULSE_NULL_HANDLE);
|
||||
PulseDestroyDevice(device);
|
||||
}
|
||||
|
||||
void TestBackendInUse()
|
||||
{
|
||||
PulseBackend backend;
|
||||
SetupPulse(&backend);
|
||||
|
||||
PulseDevice device = PulseCreateDevice(backend, NULL, 0);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(device, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
TEST_ASSERT_EQUAL(PulseGetBackendInUseByDevice(device), PULSE_BACKEND_VULKAN);
|
||||
PulseDestroyDevice(device);
|
||||
|
||||
CleanupPulse(backend);
|
||||
}
|
||||
|
||||
void TestShaderFormatSupport()
|
||||
{
|
||||
PulseBackend backend;
|
||||
SetupPulse(&backend);
|
||||
|
||||
PulseDevice device = PulseCreateDevice(backend, NULL, 0);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(device, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
TEST_ASSERT_TRUE(PulseDeviceSupportsShaderFormats(device, PULSE_SHADER_FORMAT_SPIRV_BIT));
|
||||
PulseDestroyDevice(device);
|
||||
|
||||
CleanupPulse(backend);
|
||||
}
|
||||
|
||||
void TestDevice()
|
||||
{
|
||||
RUN_TEST(TestDeviceSetup);
|
||||
RUN_TEST(TestForbiddenDeviceSetup);
|
||||
RUN_TEST(TestInvalidBackendDeviceSetup);
|
||||
RUN_TEST(TestBackendInUse);
|
||||
RUN_TEST(TestShaderFormatSupport);
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
#include <unity/unity.h>
|
||||
#include <Pulse.h>
|
||||
|
||||
extern PulseBackend backend;
|
||||
|
||||
void TestDeviceSetup()
|
||||
{
|
||||
PulseDevice device = PulseCreateDevice(backend, NULL, 0);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(device, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
PulseDestroyDevice(device);
|
||||
}
|
||||
@@ -3,39 +3,13 @@
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
PulseBackend backend;
|
||||
|
||||
extern void TestDeviceSetup();
|
||||
|
||||
bool SetupPulse()
|
||||
{
|
||||
backend = PulseLoadBackend(PULSE_BACKEND_VULKAN, PULSE_SHADER_FORMAT_SPIRV_BIT, PULSE_NO_DEBUG);
|
||||
if(backend == PULSE_NULL_HANDLE)
|
||||
{
|
||||
fprintf(stderr, "Fatal Error: could not load Pulse using Vulkan due to %s", PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
return false;
|
||||
}
|
||||
puts("Pulse loaded using Vulkan");
|
||||
return true;
|
||||
}
|
||||
|
||||
int RunUnitTests()
|
||||
{
|
||||
UNITY_BEGIN();
|
||||
RUN_TEST(TestDeviceSetup);
|
||||
return UNITY_END();
|
||||
}
|
||||
|
||||
void UnloadPulse()
|
||||
{
|
||||
PulseUnloadBackend(backend);
|
||||
puts("Pulse unloaded");
|
||||
}
|
||||
extern void TestBackend();
|
||||
extern void TestDevice();
|
||||
|
||||
int main(void)
|
||||
{
|
||||
SetupPulse();
|
||||
int result = RunUnitTests();
|
||||
UnloadPulse();
|
||||
return result;
|
||||
UNITY_BEGIN();
|
||||
TestBackend();
|
||||
TestDevice();
|
||||
return UNITY_END();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user