diff options
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/device/device_optix.cpp | 8 | ||||
-rw-r--r-- | intern/cycles/kernel/CMakeLists.txt | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/intern/cycles/device/device_optix.cpp b/intern/cycles/device/device_optix.cpp index 42d7b00314c..37d6ae3d041 100644 --- a/intern/cycles/device/device_optix.cpp +++ b/intern/cycles/device/device_optix.cpp @@ -383,7 +383,13 @@ class OptiXDevice : public CUDADevice { { // Load and compile PTX module with OptiX kernels string ptx_data, ptx_filename = path_get("lib/kernel_optix.ptx"); - if (use_adaptive_compilation()) { + if (use_adaptive_compilation() || path_file_size(ptx_filename) == -1) { + if (!getenv("OPTIX_ROOT_DIR")) { + set_error( + "OPTIX_ROOT_DIR environment variable not set, must be set with the path to the " + "Optix SDK in order to compile the Optix kernel on demand."); + return false; + } ptx_filename = compile_kernel(requested_features, "kernel_optix", "optix", true); } if (ptx_filename.empty() || !path_read_text(ptx_filename, ptx_data)) { diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt index 3264b5afea2..ac3a85089c2 100644 --- a/intern/cycles/kernel/CMakeLists.txt +++ b/intern/cycles/kernel/CMakeLists.txt @@ -507,7 +507,7 @@ endif() # OptiX PTX modules -if(WITH_CYCLES_DEVICE_OPTIX) +if(WITH_CYCLES_DEVICE_OPTIX AND WITH_CYCLES_CUDA_BINARIES) foreach(input ${SRC_OPTIX_KERNELS}) get_filename_component(input_we ${input} NAME_WE) @@ -677,7 +677,7 @@ source_group("svm" FILES ${SRC_SVM_HEADERS}) if(WITH_CYCLES_CUDA) add_dependencies(cycles_kernel cycles_kernel_cuda) endif() -if(WITH_CYCLES_DEVICE_OPTIX) +if(WITH_CYCLES_DEVICE_OPTIX AND WITH_CYCLES_CUDA_BINARIES) add_dependencies(cycles_kernel cycles_kernel_optix) endif() |