1*da0073e9SAndroid Build Coastguard Worker# Shaders processing 2*da0073e9SAndroid Build Coastguard Workerif(NOT USE_VULKAN) 3*da0073e9SAndroid Build Coastguard Worker return() 4*da0073e9SAndroid Build Coastguard Workerendif() 5*da0073e9SAndroid Build Coastguard Worker 6*da0073e9SAndroid Build Coastguard Workerset(VULKAN_GEN_OUTPUT_PATH "${CMAKE_BINARY_DIR}/vulkan/ATen/native/vulkan") 7*da0073e9SAndroid Build Coastguard Workerset(VULKAN_GEN_ARG_ENV "") 8*da0073e9SAndroid Build Coastguard Worker 9*da0073e9SAndroid Build Coastguard Workerif(USE_VULKAN_RELAXED_PRECISION) 10*da0073e9SAndroid Build Coastguard Worker list(APPEND VULKAN_GEN_ARG_ENV "PRECISION=mediump") 11*da0073e9SAndroid Build Coastguard Workerendif() 12*da0073e9SAndroid Build Coastguard Workerif(USE_VULKAN_FP16_INFERENCE) 13*da0073e9SAndroid Build Coastguard Worker list(APPEND VULKAN_GEN_ARG_ENV "FLOAT_IMAGE_FORMAT=rgba16f") 14*da0073e9SAndroid Build Coastguard Workerelse() 15*da0073e9SAndroid Build Coastguard Worker list(APPEND VULKAN_GEN_ARG_ENV "FLOAT_IMAGE_FORMAT=rgba32f") 16*da0073e9SAndroid Build Coastguard Workerendif() 17*da0073e9SAndroid Build Coastguard Worker 18*da0073e9SAndroid Build Coastguard Worker# Precompiling shaders 19*da0073e9SAndroid Build Coastguard Workerif(ANDROID) 20*da0073e9SAndroid Build Coastguard Worker if(NOT ANDROID_NDK) 21*da0073e9SAndroid Build Coastguard Worker message(FATAL_ERROR "ANDROID_NDK not set") 22*da0073e9SAndroid Build Coastguard Worker endif() 23*da0073e9SAndroid Build Coastguard Worker 24*da0073e9SAndroid Build Coastguard Worker set(GLSLC_PATH "${ANDROID_NDK}/shader-tools/${ANDROID_NDK_HOST_SYSTEM_NAME}/glslc") 25*da0073e9SAndroid Build Coastguard Workerelse() 26*da0073e9SAndroid Build Coastguard Worker find_program( 27*da0073e9SAndroid Build Coastguard Worker GLSLC_PATH glslc 28*da0073e9SAndroid Build Coastguard Worker PATHS 29*da0073e9SAndroid Build Coastguard Worker ENV VULKAN_SDK 30*da0073e9SAndroid Build Coastguard Worker PATHS "$ENV{VULKAN_SDK}/${CMAKE_HOST_SYSTEM_PROCESSOR}/bin" 31*da0073e9SAndroid Build Coastguard Worker PATHS "$ENV{VULKAN_SDK}/bin" 32*da0073e9SAndroid Build Coastguard Worker ) 33*da0073e9SAndroid Build Coastguard Worker 34*da0073e9SAndroid Build Coastguard Worker if(NOT GLSLC_PATH) 35*da0073e9SAndroid Build Coastguard Worker message(FATAL_ERROR "USE_VULKAN glslc not found") 36*da0073e9SAndroid Build Coastguard Worker endif(NOT GLSLC_PATH) 37*da0073e9SAndroid Build Coastguard Workerendif() 38*da0073e9SAndroid Build Coastguard Worker 39*da0073e9SAndroid Build Coastguard Workerset(PYTHONPATH "$ENV{PYTHONPATH}") 40*da0073e9SAndroid Build Coastguard Workerset(NEW_PYTHONPATH ${PYTHONPATH}) 41*da0073e9SAndroid Build Coastguard Workerlist(APPEND NEW_PYTHONPATH "${CMAKE_CURRENT_LIST_DIR}/..") 42*da0073e9SAndroid Build Coastguard Workerset(ENV{PYTHONPATH} ${NEW_PYTHONPATH}) 43*da0073e9SAndroid Build Coastguard Workerexecute_process( 44*da0073e9SAndroid Build Coastguard Worker COMMAND 45*da0073e9SAndroid Build Coastguard Worker "${Python_EXECUTABLE}" 46*da0073e9SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../tools/gen_vulkan_spv.py 47*da0073e9SAndroid Build Coastguard Worker --glsl-path ${CMAKE_CURRENT_LIST_DIR}/../aten/src/ATen/native/vulkan/glsl 48*da0073e9SAndroid Build Coastguard Worker --output-path ${VULKAN_GEN_OUTPUT_PATH} 49*da0073e9SAndroid Build Coastguard Worker --glslc-path=${GLSLC_PATH} 50*da0073e9SAndroid Build Coastguard Worker --tmp-dir-path=${CMAKE_BINARY_DIR}/vulkan/spv 51*da0073e9SAndroid Build Coastguard Worker --env ${VULKAN_GEN_ARG_ENV} 52*da0073e9SAndroid Build Coastguard Worker RESULT_VARIABLE error_code) 53*da0073e9SAndroid Build Coastguard Workerset(ENV{PYTHONPATH} ${PYTHONPATH}) 54*da0073e9SAndroid Build Coastguard Worker 55*da0073e9SAndroid Build Coastguard Worker if(error_code) 56*da0073e9SAndroid Build Coastguard Worker message(FATAL_ERROR "Failed to gen spv.h and spv.cpp with precompiled shaders for Vulkan backend") 57*da0073e9SAndroid Build Coastguard Worker endif() 58*da0073e9SAndroid Build Coastguard Worker 59*da0073e9SAndroid Build Coastguard Workerset(vulkan_generated_cpp ${VULKAN_GEN_OUTPUT_PATH}/spv.cpp) 60