Cycles: Remove the experimental CUDA kernel.

This commit removes the experimental CUDA kernel, making SSS and CMJ
regular features.

Several improvements have been made in the past few
weeks (thanks Sergey!) which make SSS render several times faster (2-3x
compared to 2.76b) on the GPU, and the increased VRAM usage has also been
fixed. Therefore the experimental kernel is no longer needed.

Differential Revision: https://developer.blender.org/D1726

Manual has been updated: too:
https://www.blender.org/manual/render/cycles/features.html
This commit is contained in:
Thomas Dinges 2016-01-14 12:51:11 +01:00
parent cc55f97da9
commit 3ba9742be2
5 changed files with 3 additions and 34 deletions

View File

@ -187,7 +187,7 @@ class CyclesRender_PT_sampling(CyclesButtonsPanel, Panel):
sub.prop(cscene, "subsurface_samples", text="Subsurface")
sub.prop(cscene, "volume_samples", text="Volume")
if use_cpu(context) or cscene.feature_set == 'EXPERIMENTAL':
if not (use_opencl(context) and cscene.feature_set != 'EXPERIMENTAL'):
layout.row().prop(cscene, "sampling_pattern", text="Pattern")
for rl in scene.render.layers:

View File

@ -253,10 +253,7 @@ public:
string cubin;
/* attempt to use kernel provided with blender */
if(requested_features.experimental)
cubin = path_get(string_printf("lib/kernel_experimental_sm_%d%d.cubin", major, minor));
else
cubin = path_get(string_printf("lib/kernel_sm_%d%d.cubin", major, minor));
cubin = path_get(string_printf("lib/kernel_sm_%d%d.cubin", major, minor));
VLOG(1) << "Testing for pre-compiled kernel " << cubin;
if(path_exists(cubin)) {
VLOG(1) << "Using precompiled kernel";
@ -275,10 +272,7 @@ public:
major, minor,
md5.c_str());
#else
if(requested_features.experimental)
cubin = string_printf("cycles_kernel_experimental_sm%d%d_%s.cubin", major, minor, md5.c_str());
else
cubin = string_printf("cycles_kernel_sm%d%d_%s.cubin", major, minor, md5.c_str());
cubin = string_printf("cycles_kernel_sm%d%d_%s.cubin", major, minor, md5.c_str());
#endif
cubin = path_user_get(path_join("cache", cubin));
@ -338,10 +332,6 @@ public:
#ifdef KERNEL_USE_ADAPTIVE
command += " " + feature_build_options;
#else
if(requested_features.experimental) {
command += " -D__KERNEL_EXPERIMENTAL__";
}
#endif
const char* extra_cflags = getenv("CYCLES_CUDA_EXTRA_CFLAGS");

View File

@ -260,9 +260,6 @@ if(WITH_CYCLES_CUDA_BINARIES)
foreach(arch ${CYCLES_CUDA_BINARIES_ARCH})
# Compile regular kernel
CYCLES_CUDA_KERNEL_ADD(${arch} FALSE)
# Compile experimental kernel
CYCLES_CUDA_KERNEL_ADD(${arch} TRUE)
endforeach()
add_custom_target(cycles_kernel_cuda ALL DEPENDS ${cuda_cubins})

View File

@ -83,15 +83,10 @@ CCL_NAMESPACE_BEGIN
#define __BRANCHED_PATH__
#define __VOLUME__
#define __VOLUME_SCATTER__
/* Experimental on GPU */
#ifdef __KERNEL_EXPERIMENTAL__
#define __SUBSURFACE__
#define __CMJ__
#endif
#endif
#ifdef __KERNEL_OPENCL__
/* keep __KERNEL_ADV_SHADING__ in sync with opencl_kernel_use_advanced_shading! */

View File

@ -1057,19 +1057,6 @@ static void node_shader_buts_anisotropic(uiLayout *layout, bContext *UNUSED(C),
static void node_shader_buts_subsurface(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
/* SSS only enabled in Experimental Kernel */
PointerRNA scene = CTX_data_pointer_get(C, "scene");
if (scene.data) {
PointerRNA cscene = RNA_pointer_get(&scene, "cycles");
if (cscene.data &&
((U.compute_device_type != USER_COMPUTE_DEVICE_NONE) &&
(RNA_enum_get(&cscene, "device") == 1) &&
(RNA_enum_get(&cscene, "feature_set") == 0)))
{
uiItemL(layout, IFACE_("Only enabled in experimental GPU kernel"), ICON_ERROR);
}
}
uiItemR(layout, ptr, "falloff", 0, "", ICON_NONE);
}