@@ -22,7 +22,7 @@ if(NOT VULKAN_THIRD_PARTY_PATH)
22
22
set (VULKAN_THIRD_PARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR} /../third-party )
23
23
endif ()
24
24
25
- # Source paths and compile settings
25
+ # Source file paths
26
26
27
27
set (ATEN_PATH ${PYTORCH_PATH} /aten/src )
28
28
set (ATEN_VULKAN_PATH ${ATEN_PATH} /ATen/native/vulkan )
@@ -31,28 +31,26 @@ set(VULKAN_HEADERS_PATH ${VULKAN_THIRD_PARTY_PATH}/Vulkan-Headers/include)
31
31
set (VOLK_PATH ${VULKAN_THIRD_PARTY_PATH} /volk )
32
32
set (VMA_PATH ${VULKAN_THIRD_PARTY_PATH} /VulkanMemoryAllocator )
33
33
34
+ # Compile settings
35
+
34
36
set (VULKAN_CXX_FLAGS "" )
35
37
list (APPEND VULKAN_CXX_FLAGS "-DUSE_VULKAN_API" )
36
38
list (APPEND VULKAN_CXX_FLAGS "-DUSE_VULKAN_WRAPPER" )
37
39
list (APPEND VULKAN_CXX_FLAGS "-DUSE_VULKAN_VOLK" )
38
40
list (APPEND VULKAN_CXX_FLAGS "-DVK_NO_PROTOTYPES" )
39
41
list (APPEND VULKAN_CXX_FLAGS "-DVOLK_DEFAULT_VISIBILITY" )
40
42
41
- # vulkan_api_lib
42
-
43
- file (GLOB VULKAN_API_CPP ${ATEN_VULKAN_PATH} /api/*.cpp )
43
+ # vulkan_api source files
44
44
45
- add_library (vulkan_api_lib STATIC ${VULKAN_API_CPP} ${VOLK_PATH} /volk.c )
45
+ file (GLOB vulkan_api_cpp ${ATEN_VULKAN_PATH} /api/*.cpp )
46
+ list (APPEND vulkan_api_cpp ${VOLK_PATH} /volk.c )
46
47
47
48
set (VULKAN_API_HEADERS )
48
49
list (APPEND VULKAN_API_HEADERS ${ATEN_PATH} )
49
50
list (APPEND VULKAN_API_HEADERS ${VULKAN_HEADERS_PATH} )
50
51
list (APPEND VULKAN_API_HEADERS ${VOLK_PATH} )
51
52
list (APPEND VULKAN_API_HEADERS ${VMA_PATH} )
52
53
53
- target_include_directories (vulkan_api_lib PRIVATE ${VULKAN_API_HEADERS} )
54
- target_compile_options (vulkan_api_lib PRIVATE ${VULKAN_CXX_FLAGS} )
55
-
56
54
# Find GLSL compiler executable
57
55
58
56
if (ANDROID )
@@ -65,9 +63,8 @@ if(ANDROID)
65
63
else ()
66
64
find_program (
67
65
GLSLC_PATH glslc
68
- PATHS ENV VULKAN_SDK
69
- PATHS "$ENV{VULKAN_SDK} /${CMAKE_HOST_SYSTEM_PROCESSOR} /bin"
70
- PATHS "$ENV{VULKAN_SDK} /bin" )
66
+ PATHS ENV VULKAN_SDK "$ENV{VULKAN_SDK} /${CMAKE_HOST_SYSTEM_PROCESSOR} /bin"
67
+ "$ENV{VULKAN_SDK} /bin" )
71
68
72
69
if (NOT GLSLC_PATH )
73
70
message (FATAL_ERROR "USE_VULKAN glslc not found" )
@@ -77,29 +74,31 @@ endif()
77
74
# Required to enable linking with --whole-archive
78
75
include (${EXECUTORCH_ROOT} /build/Utils.cmake )
79
76
80
- # Convenience macro to create a shader library
81
-
82
- macro (vulkan_shader_library SHADERS_PATH LIBRARY_NAME )
77
+ # Convenience macro to generate a SPIR-V shader library target. Given the path
78
+ # to the shaders to compile and the name of the library, it will create a static
79
+ # library containing the generated SPIR-V shaders. The generated_spv_cpp
80
+ # variable can be used to reference the generated CPP file outside the macro.
81
+ macro (VULKAN_SHADER_LIBRARY shaders_path library_name )
83
82
set (VULKAN_SHADERGEN_ENV "" )
84
- set (VULKAN_SHADERGEN_OUT_PATH ${CMAKE_BINARY_DIR} /${LIBRARY_NAME } )
83
+ set (VULKAN_SHADERGEN_OUT_PATH ${CMAKE_BINARY_DIR} /${library_name } )
85
84
86
85
execute_process (
87
86
COMMAND
88
87
"${PYTHON_EXECUTABLE} " ${PYTORCH_PATH} /tools/gen_vulkan_spv.py --glsl-path
89
- ${SHADERS_PATH } --output-path ${VULKAN_SHADERGEN_OUT_PATH}
88
+ ${shaders_path } --output-path ${VULKAN_SHADERGEN_OUT_PATH}
90
89
--glslc-path=${GLSLC_PATH} --tmp-dir-path=${VULKAN_SHADERGEN_OUT_PATH}
91
90
--env ${VULKAN_GEN_ARG_ENV}
92
91
RESULT_VARIABLE error_code )
93
92
set (ENV{PYTHONPATH} ${PYTHONPATH} )
94
93
95
- set (vulkan_generated_cpp ${VULKAN_SHADERGEN_OUT_PATH} /spv.cpp )
94
+ set (generated_spv_cpp ${VULKAN_SHADERGEN_OUT_PATH} /spv.cpp )
96
95
97
- add_library (${LIBRARY_NAME } STATIC ${vulkan_generated_cpp } )
98
- target_include_directories (${LIBRARY_NAME } PRIVATE ${COMMON_INCLUDES} )
99
- target_link_libraries (${LIBRARY_NAME} vulkan_api_lib )
100
- target_compile_options (${LIBRARY_NAME } PRIVATE ${VULKAN_CXX_FLAGS} )
96
+ add_library (${library_name } STATIC ${generated_spv_cpp } )
97
+ target_include_directories (${library_name } PRIVATE ${COMMON_INCLUDES} )
98
+ target_link_libraries (${library_name} vulkan_graph_lib )
99
+ target_compile_options (${library_name } PRIVATE ${VULKAN_CXX_FLAGS} )
101
100
# Link this library with --whole-archive due to dynamic shader registrations
102
- target_link_options_shared_lib (${LIBRARY_NAME } )
101
+ target_link_options_shared_lib (${library_name } )
103
102
104
103
unset (VULKAN_SHADERGEN_ENV )
105
104
unset (VULKAN_SHADERGEN_OUT_PATH )
0 commit comments