forked from bartvdbraak/blender
Merge branch 'master' into blender2.8
This commit is contained in:
commit
09895cae48
@ -409,6 +409,8 @@ option(WITH_CYCLES_OSL "Build Cycles with OSL support" ${_init_CYCLES_OSL})
|
|||||||
option(WITH_CYCLES_OPENSUBDIV "Build Cycles with OpenSubdiv support" ${_init_CYCLES_OPENSUBDIV})
|
option(WITH_CYCLES_OPENSUBDIV "Build Cycles with OpenSubdiv support" ${_init_CYCLES_OPENSUBDIV})
|
||||||
option(WITH_CYCLES_CUDA_BINARIES "Build Cycles CUDA binaries" OFF)
|
option(WITH_CYCLES_CUDA_BINARIES "Build Cycles CUDA binaries" OFF)
|
||||||
option(WITH_CYCLES_CUBIN_COMPILER "Build cubins with nvrtc based compiler instead of nvcc" OFF)
|
option(WITH_CYCLES_CUBIN_COMPILER "Build cubins with nvrtc based compiler instead of nvcc" OFF)
|
||||||
|
option(WITH_CYCLES_CUDA_BUILD_SERIAL "Build cubins one after another (useful on machines with limited RAM)" OFF)
|
||||||
|
mark_as_advanced(WITH_CYCLES_CUDA_BUILD_SERIAL)
|
||||||
set(CYCLES_CUDA_BINARIES_ARCH sm_30 sm_35 sm_37 sm_50 sm_52 sm_60 sm_61 CACHE STRING "CUDA architectures to build binaries for")
|
set(CYCLES_CUDA_BINARIES_ARCH sm_30 sm_35 sm_37 sm_50 sm_52 sm_60 sm_61 CACHE STRING "CUDA architectures to build binaries for")
|
||||||
mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
|
mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
|
||||||
unset(PLATFORM_DEFAULT)
|
unset(PLATFORM_DEFAULT)
|
||||||
|
@ -357,8 +357,14 @@ if(WITH_CYCLES_CUDA_BINARIES)
|
|||||||
)
|
)
|
||||||
set(cuda_cubins)
|
set(cuda_cubins)
|
||||||
|
|
||||||
macro(CYCLES_CUDA_KERNEL_ADD arch name flags sources experimental)
|
macro(CYCLES_CUDA_KERNEL_ADD arch prev_arch name flags sources experimental)
|
||||||
set(cuda_cubin ${name}_${arch}.cubin)
|
set(cuda_cubin ${name}_${arch}.cubin)
|
||||||
|
|
||||||
|
set(kernel_sources ${sources})
|
||||||
|
if(NOT ${prev_arch} STREQUAL "none")
|
||||||
|
set(kernel_sources ${kernel_sources} ${name}_${prev_arch}.cubin)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(cuda_kernel_src "/kernels/cuda/${name}.cu")
|
set(cuda_kernel_src "/kernels/cuda/${name}.cu")
|
||||||
|
|
||||||
set(cuda_flags
|
set(cuda_flags
|
||||||
@ -402,7 +408,7 @@ if(WITH_CYCLES_CUDA_BINARIES)
|
|||||||
${cuda_flags}
|
${cuda_flags}
|
||||||
-v
|
-v
|
||||||
-cuda-toolkit-dir "${CUDA_TOOLKIT_ROOT_DIR}"
|
-cuda-toolkit-dir "${CUDA_TOOLKIT_ROOT_DIR}"
|
||||||
DEPENDS ${sources} cycles_cubin_cc)
|
DEPENDS ${kernel_sources} cycles_cubin_cc)
|
||||||
else()
|
else()
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${cuda_cubin}
|
OUTPUT ${cuda_cubin}
|
||||||
@ -413,7 +419,7 @@ if(WITH_CYCLES_CUDA_BINARIES)
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}${cuda_kernel_src}
|
${CMAKE_CURRENT_SOURCE_DIR}${cuda_kernel_src}
|
||||||
--ptxas-options="-v"
|
--ptxas-options="-v"
|
||||||
${cuda_flags}
|
${cuda_flags}
|
||||||
DEPENDS ${sources})
|
DEPENDS ${kernel_sources})
|
||||||
endif()
|
endif()
|
||||||
delayed_install("${CMAKE_CURRENT_BINARY_DIR}" "${cuda_cubin}" ${CYCLES_INSTALL_PATH}/lib)
|
delayed_install("${CMAKE_CURRENT_BINARY_DIR}" "${cuda_cubin}" ${CYCLES_INSTALL_PATH}/lib)
|
||||||
list(APPEND cuda_cubins ${cuda_cubin})
|
list(APPEND cuda_cubins ${cuda_cubin})
|
||||||
@ -421,18 +427,23 @@ if(WITH_CYCLES_CUDA_BINARIES)
|
|||||||
unset(cuda_debug_flags)
|
unset(cuda_debug_flags)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
set(prev_arch "none")
|
||||||
foreach(arch ${CYCLES_CUDA_BINARIES_ARCH})
|
foreach(arch ${CYCLES_CUDA_BINARIES_ARCH})
|
||||||
if(${arch} MATCHES "sm_2.")
|
if(${arch} MATCHES "sm_2.")
|
||||||
message(STATUS "CUDA binaries for ${arch} are no longer supported, skipped.")
|
message(STATUS "CUDA binaries for ${arch} are no longer supported, skipped.")
|
||||||
else()
|
else()
|
||||||
# Compile regular kernel
|
# Compile regular kernel
|
||||||
CYCLES_CUDA_KERNEL_ADD(${arch} filter "" "${cuda_filter_sources}" FALSE)
|
CYCLES_CUDA_KERNEL_ADD(${arch} ${prev_arch} filter "" "${cuda_filter_sources}" FALSE)
|
||||||
CYCLES_CUDA_KERNEL_ADD(${arch} kernel "" "${cuda_sources}" FALSE)
|
CYCLES_CUDA_KERNEL_ADD(${arch} ${prev_arch} kernel "" "${cuda_sources}" FALSE)
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CYCLES_CUDA_SPLIT_KERNEL_BINARIES)
|
if(WITH_CYCLES_CUDA_SPLIT_KERNEL_BINARIES)
|
||||||
# Compile split kernel
|
# Compile split kernel
|
||||||
CYCLES_CUDA_KERNEL_ADD(${arch} kernel_split "-D __SPLIT__" ${cuda_sources} FALSE)
|
CYCLES_CUDA_KERNEL_ADD(${arch} ${prev_arch} kernel_split "-D __SPLIT__" "${cuda_sources}" FALSE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WITH_CYCLES_CUDA_BUILD_SERIAL)
|
||||||
|
set(prev_arch ${arch})
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
@ -623,7 +623,7 @@ static bool calc_curve_deform(Object *par, float co[3],
|
|||||||
if (is_neg_axis) {
|
if (is_neg_axis) {
|
||||||
index = axis - 3;
|
index = axis - 3;
|
||||||
if (cu->flag & CU_STRETCH)
|
if (cu->flag & CU_STRETCH)
|
||||||
fac = (-co[index] - cd->dmax[index]) / (cd->dmax[index] - cd->dmin[index]);
|
fac = -(co[index] - cd->dmax[index]) / (cd->dmax[index] - cd->dmin[index]);
|
||||||
else
|
else
|
||||||
fac = -(co[index] - cd->dmax[index]) / (par->runtime.curve_cache->path->totdist);
|
fac = -(co[index] - cd->dmax[index]) / (par->runtime.curve_cache->path->totdist);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user