@@ -6,56 +6,62 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
66set (CMAKE_CXX_EXTENSIONS OFF )
77
88find_package (Vulkan REQUIRED )
9- <<<<<<< ours
10- <<<<<<< ours
119include (cmake/compile_shaders.cmake )
1210
13- set (SHADER_DIR "${CMAKE_CURRENT_SOURCE_DIR} /shaders" )
14- set (SPIRV_DIR "${CMAKE_CURRENT_BINARY_DIR} /shaders" )
11+ option (VK_BENCH_ENABLE_WINDOW "Enable window mode support (requires GLFW)" ON )
12+ option (VK_BENCH_FETCH_GLFW
13+ "Download and build GLFW if it is not available on the system" ON )
14+
15+ set (VK_BENCH_HAS_WINDOW OFF )
16+ set (VK_BENCH_GLFW_TARGET "" )
17+
18+ if (VK_BENCH_ENABLE_WINDOW)
19+ find_package (glfw3 QUIET )
20+
21+ if (glfw3_FOUND)
22+ set (VK_BENCH_HAS_WINDOW ON )
23+ set (VK_BENCH_GLFW_TARGET glfw)
24+ message (STATUS "Using system glfw3 package" )
25+ elseif (VK_BENCH_FETCH_GLFW)
26+ include (FetchContent )
27+ FetchContent_Declare (
28+ glfw
29+ GIT_REPOSITORY https://github.com/glfw/glfw.git
30+ GIT_TAG 3.4
31+ )
32+ set (GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE )
33+ set (GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE )
34+ set (GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE )
35+ set (GLFW_INSTALL OFF CACHE BOOL "" FORCE )
36+ FetchContent_MakeAvailable (glfw)
37+ set (VK_BENCH_HAS_WINDOW ON )
38+ set (VK_BENCH_GLFW_TARGET glfw)
39+ message (STATUS "Using fetched GLFW (3.4)" )
40+ else ()
41+ message (STATUS
42+ "glfw3 not found and VK_BENCH_FETCH_GLFW=OFF: windowed rendering disabled, use --headless" )
43+ endif ()
44+ else ()
45+ message (STATUS "VK_BENCH_ENABLE_WINDOW=OFF: windowed rendering disabled, use --headless" )
46+ endif ()
47+
48+ set (SHADER_DIR "${CMAKE_CURRENT_SOURCE_DIR} /shaders" )
49+ set (SPIRV_DIR "${CMAKE_CURRENT_BINARY_DIR} /shaders" )
50+ file (TO_CMAKE_PATH "${SPIRV_DIR} " SPIRV_DIR_CMAKE )
1551vk_compile_slang_shaders (SHADER_OUTPUTS vk-bench-shaders "${SHADER_DIR} " "${SPIRV_DIR} " )
52+
1653add_executable (vk-bench src/main.cpp )
1754target_include_directories (vk-bench PRIVATE "${CMAKE_CURRENT_SOURCE_DIR} /include" )
55+ target_compile_definitions (vk-bench PRIVATE VK_BENCH_SHADER_DIR= "${SPIRV_DIR_CMAKE} " )
1856target_link_libraries (vk-bench PRIVATE Vulkan::Vulkan )
57+ if (VK_BENCH_HAS_WINDOW)
58+ target_link_libraries (vk-bench PRIVATE ${VK_BENCH_GLFW_TARGET} )
59+ target_compile_definitions (vk-bench PRIVATE VK_BENCH_HAS_WINDOW=1 )
60+ else ()
61+ target_compile_definitions (vk-bench PRIVATE VK_BENCH_HAS_WINDOW=0 )
62+ endif ()
1963
2064add_dependencies (vk-bench vk-bench-shaders )
2165
2266install (TARGETS vk-bench RUNTIME DESTINATION bin)
2367install (FILES ${SHADER_OUTPUTS} DESTINATION bin/shaders)
24- =======
25- =======
26- >>>>>>> theirs
27- find_program (SLANGC slangc REQUIRED )
28-
29- set (SHADER_DIR ${CMAKE_CURRENT_SOURCE_DIR} /shaders)
30- set (SPIRV_DIR ${CMAKE_CURRENT_BINARY_DIR} /shaders)
31- file (MAKE_DIRECTORY ${SPIRV_DIR} )
32-
33- set (SHADER_OUTPUTS
34- ${SPIRV_DIR} /triangle.vert.spv
35- ${SPIRV_DIR} /triangle.frag.spv
36- )
37-
38- add_custom_command (
39- OUTPUT ${SPIRV_DIR} /triangle.vert.spv
40- COMMAND ${SLANGC} -target spirv -profile glsl_460 -entry main -stage vertex ${SHADER_DIR} /triangle.vert.slang -o ${SPIRV_DIR} /triangle.vert.spv
41- DEPENDS ${SHADER_DIR} /triangle.vert.slang
42- )
43-
44- add_custom_command (
45- OUTPUT ${SPIRV_DIR} /triangle.frag.spv
46- COMMAND ${SLANGC} -target spirv -profile glsl_460 -entry main -stage fragment ${SHADER_DIR} /triangle.frag.slang -o ${SPIRV_DIR} /triangle.frag.spv
47- DEPENDS ${SHADER_DIR} /triangle.frag.slang
48- )
49-
50- add_custom_target (vk-bench-shaders DEPENDS ${SHADER_OUTPUTS} )
51-
52- add_executable (vk-bench src/main.cpp )
53- add_dependencies (vk-bench vk-bench-shaders )
54- target_include_directories (vk-bench PRIVATE include )
55- target_link_libraries (vk-bench PRIVATE Vulkan::Vulkan )
56- install (TARGETS vk-bench RUNTIME DESTINATION bin)
57- install (FILES ${SHADER_OUTPUTS} DESTINATION bin/shaders)
58- <<<<<<< ours
59- >>>>>>> theirs
60- =======
61- >>>>>>> theirs
0 commit comments