tests: Add a Driver class to abstract the vulkan implementation
The idea here is that we can build a number of fine granularity SPIR-V tests, which we can also verify against any optional system Vulkan hardware.
This CL adds support for building and running the Vulkan unit tests on mac and linux.
Bug: b/123749916
Change-Id: I01a4e2a914ffd5473d271013957fa3dddbc43645
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/24328
Presubmit-Ready: Ben Clayton <bclayton@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 965f7dd..6850639 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2326,6 +2326,7 @@
endif()
endif()
+# GLES unit tests. TODO: Rename 'unittests' to 'gles-unittests'?
if(BUILD_TESTS)
set(UNITTESTS_LIST
${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/main.cpp
@@ -2349,3 +2350,28 @@
target_link_libraries(unittests libEGL libGLESv2 ${OS_LIBS})
endif()
+
+if(BUILD_TESTS AND BUILD_VULKAN)
+ set(UNITTESTS_LIST
+ ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Driver.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/main.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/unittests.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
+ )
+
+ set(UNITTESTS_INCLUDE_DIR
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
+ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/
+ )
+
+ add_executable(vk-unittests ${UNITTESTS_LIST})
+ set_target_properties(vk-unittests PROPERTIES
+ INCLUDE_DIRECTORIES "${UNITTESTS_INCLUDE_DIR}"
+ FOLDER "Tests"
+ COMPILE_DEFINITIONS "STANDALONE"
+ )
+
+ target_link_libraries(vk-unittests ${OS_LIBS})
+endif()