CMake: Add support with Swiftshader with DAWN_ENABLE_SWIFTSHADER Change-Id: I2b3d906bac760a22f33104231a6341415cbff3b5 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/85365 Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/CMakeLists.txt b/CMakeLists.txt index 060bac9..2d7d0ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -128,6 +128,7 @@ option_if_not_defined(DAWN_BUILD_SAMPLES "Enables building Dawn's samples" ${BUILD_SAMPLES}) option_if_not_defined(DAWN_BUILD_NODE_BINDINGS "Enables building Dawn's NodeJS bindings" OFF) +option_if_not_defined(DAWN_ENABLE_SWIFTSHADER "Enables building Swiftshader as part of the build and Vulkan adapter discovery" OFF) option_if_not_defined(DAWN_ENABLE_PIC "Build with Position-Independent-Code enabled" OFF) @@ -141,6 +142,7 @@ set_if_not_defined(DAWN_JINJA2_DIR "${DAWN_THIRD_PARTY_DIR}/jinja2" "Directory in which to find Jinja2") set_if_not_defined(DAWN_SPIRV_HEADERS_DIR "${DAWN_THIRD_PARTY_DIR}/vulkan-deps/spirv-headers/src" "Directory in which to find SPIRV-Headers") set_if_not_defined(DAWN_SPIRV_TOOLS_DIR "${DAWN_THIRD_PARTY_DIR}/vulkan-deps/spirv-tools/src" "Directory in which to find SPIRV-Tools") +set_if_not_defined(DAWN_SWIFTSHADER_DIR "${DAWN_THIRD_PARTY_DIR}/swiftshader" "Directory in which to find swiftshader") set_if_not_defined(DAWN_TINT_DIR "${Dawn_SOURCE_DIR}" "Directory in which to find Tint") set_if_not_defined(DAWN_VULKAN_DEPS_DIR "${DAWN_THIRD_PARTY_DIR}/vulkan-deps" "Directory in which to find vulkan-deps") set_if_not_defined(DAWN_VULKAN_HEADERS_DIR "${DAWN_VULKAN_DEPS_DIR}/vulkan-headers/src" "Directory in which to find Vulkan-Headers")
diff --git a/src/dawn/native/CMakeLists.txt b/src/dawn/native/CMakeLists.txt index e7cab14..d695c20 100644 --- a/src/dawn/native/CMakeLists.txt +++ b/src/dawn/native/CMakeLists.txt
@@ -442,6 +442,10 @@ target_link_libraries(dawn_native PRIVATE dawn_khronos_platform) endif() +if (DAWN_ENABLE_SWIFTSHADER) + target_compile_definitions(dawn_native PRIVATE "DAWN_ENABLE_SWIFTSHADER") +endif() + if (DAWN_ENABLE_VULKAN) target_sources(dawn_native PRIVATE "${DAWN_INCLUDE_DIR}/dawn/native/VulkanBackend.h"
diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index bc75898..d516352 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt
@@ -96,6 +96,14 @@ ) target_include_directories(dawn_vulkan_headers INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/khronos") +if (${DAWN_ENABLE_SWIFTSHADER} AND NOT TARGET vk_swiftshader) + set(SWIFTSHADER_BUILD_TESTS OFF CACHE BOOL "" FORCE) + set(SWIFTSHADER_BUILD_BENCHMARKS OFF CACHE BOOL "" FORCE) + + message(STATUS "Dawn: using Swiftshader at ${DAWN_SWIFTSHADER_DIR}") + add_subdirectory(${DAWN_SWIFTSHADER_DIR} "${CMAKE_CURRENT_BINARY_DIR}/swiftshader") +endif() + if (${TINT_BUILD_BENCHMARKS}) set(BENCHMARK_ENABLE_TESTING FALSE CACHE BOOL FALSE FORCE) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/benchmark EXCLUDE_FROM_ALL)