Cycles: Use special debug panel to fine-tune debug flags
This panel is only visible when debug_value is set to 256 and has no affect in other cases. However, if debug value is not set to this value, environment variables will be used to control which features are enabled, so there's no visible changes to anyone in fact. There are some changes needed to prevent devices re-enumeration on every Cycles session create. Reviewers: juicyfruit, lukasstockner97, dingto, brecht Reviewed By: lukasstockner97, dingto Differential Revision: https://developer.blender.org/D1720
This commit is contained in:
@@ -78,6 +78,40 @@ public:
|
||||
system_cpu_support_sse41();
|
||||
system_cpu_support_avx();
|
||||
system_cpu_support_avx2();
|
||||
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2
|
||||
if(system_cpu_support_avx2()) {
|
||||
VLOG(1) << "Will be using AVX2 kernels.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX
|
||||
if(system_cpu_support_avx()) {
|
||||
VLOG(1) << "Will be using AVX kernels.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE41
|
||||
if(system_cpu_support_sse41()) {
|
||||
VLOG(1) << "Will be using SSE4.1 kernels.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE3
|
||||
if(system_cpu_support_sse3()) {
|
||||
VLOG(1) << "Will be using SSE3kernels.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE2
|
||||
if(system_cpu_support_sse2()) {
|
||||
VLOG(1) << "Will be using SSE2 kernels.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
VLOG(1) << "Will be using regular kernels.";
|
||||
}
|
||||
}
|
||||
|
||||
~CPUDevice()
|
||||
@@ -181,8 +215,6 @@ public:
|
||||
|
||||
void thread_path_trace(DeviceTask& task)
|
||||
{
|
||||
static bool cpu_type_logged = false;
|
||||
|
||||
if(task_pool.canceled()) {
|
||||
if(task.need_finish_queue == false)
|
||||
return;
|
||||
@@ -201,41 +233,35 @@ public:
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2
|
||||
if(system_cpu_support_avx2()) {
|
||||
path_trace_kernel = kernel_cpu_avx2_path_trace;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Path tracing using AVX2 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX
|
||||
if(system_cpu_support_avx()) {
|
||||
path_trace_kernel = kernel_cpu_avx_path_trace;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Path tracing using AVX kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE41
|
||||
if(system_cpu_support_sse41()) {
|
||||
path_trace_kernel = kernel_cpu_sse41_path_trace;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Path tracing using SSE4.1 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE3
|
||||
if(system_cpu_support_sse3()) {
|
||||
path_trace_kernel = kernel_cpu_sse3_path_trace;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Path tracing using SSE3 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE2
|
||||
if(system_cpu_support_sse2()) {
|
||||
path_trace_kernel = kernel_cpu_sse2_path_trace;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Path tracing using SSE2 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
path_trace_kernel = kernel_cpu_path_trace;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Path tracing using regular kernel.";
|
||||
}
|
||||
|
||||
while(task.acquire_tile(this, tile)) {
|
||||
@@ -277,7 +303,6 @@ public:
|
||||
|
||||
void thread_film_convert(DeviceTask& task)
|
||||
{
|
||||
static bool cpu_type_logged = false;
|
||||
float sample_scale = 1.0f/(task.sample + 1);
|
||||
|
||||
if(task.rgba_half) {
|
||||
@@ -285,41 +310,35 @@ public:
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2
|
||||
if(system_cpu_support_avx2()) {
|
||||
convert_to_half_float_kernel = kernel_cpu_avx2_convert_to_half_float;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to half float using AVX2 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX
|
||||
if(system_cpu_support_avx()) {
|
||||
convert_to_half_float_kernel = kernel_cpu_avx_convert_to_half_float;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to half float using AVX kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE41
|
||||
if(system_cpu_support_sse41()) {
|
||||
convert_to_half_float_kernel = kernel_cpu_sse41_convert_to_half_float;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to half float using SSE4.1 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE3
|
||||
if(system_cpu_support_sse3()) {
|
||||
convert_to_half_float_kernel = kernel_cpu_sse3_convert_to_half_float;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to half float using SSE3 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE2
|
||||
if(system_cpu_support_sse2()) {
|
||||
convert_to_half_float_kernel = kernel_cpu_sse2_convert_to_half_float;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to half float using SSE2 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
convert_to_half_float_kernel = kernel_cpu_convert_to_half_float;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to half float using regular kernel.";
|
||||
}
|
||||
|
||||
for(int y = task.y; y < task.y + task.h; y++)
|
||||
@@ -332,41 +351,35 @@ public:
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2
|
||||
if(system_cpu_support_avx2()) {
|
||||
convert_to_byte_kernel = kernel_cpu_avx2_convert_to_byte;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to byte using AVX2 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX
|
||||
if(system_cpu_support_avx()) {
|
||||
convert_to_byte_kernel = kernel_cpu_avx_convert_to_byte;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to byte using AVX kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE41
|
||||
if(system_cpu_support_sse41()) {
|
||||
convert_to_byte_kernel = kernel_cpu_sse41_convert_to_byte;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to byte using SSE4.1 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE3
|
||||
if(system_cpu_support_sse3()) {
|
||||
convert_to_byte_kernel = kernel_cpu_sse3_convert_to_byte;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to byte using SSE3 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE2
|
||||
if(system_cpu_support_sse2()) {
|
||||
convert_to_byte_kernel = kernel_cpu_sse2_convert_to_byte;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to byte using SSE2 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
convert_to_byte_kernel = kernel_cpu_convert_to_byte;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Converting to byte using regular kernel.";
|
||||
}
|
||||
|
||||
for(int y = task.y; y < task.y + task.h; y++)
|
||||
@@ -380,7 +393,6 @@ public:
|
||||
void thread_shader(DeviceTask& task)
|
||||
{
|
||||
KernelGlobals kg = kernel_globals;
|
||||
static bool cpu_type_logged = false;
|
||||
|
||||
#ifdef WITH_OSL
|
||||
OSLShader::thread_init(&kg, &kernel_globals, &osl_globals);
|
||||
@@ -390,41 +402,35 @@ public:
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX2
|
||||
if(system_cpu_support_avx2()) {
|
||||
shader_kernel = kernel_cpu_avx2_shader;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Shading using AVX2 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_AVX
|
||||
if(system_cpu_support_avx()) {
|
||||
shader_kernel = kernel_cpu_avx_shader;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Shading using AVX kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE41
|
||||
if(system_cpu_support_sse41()) {
|
||||
shader_kernel = kernel_cpu_sse41_shader;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Shading using SSE4.1 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE3
|
||||
if(system_cpu_support_sse3()) {
|
||||
shader_kernel = kernel_cpu_sse3_shader;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Shading using SSE3 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef WITH_CYCLES_OPTIMIZED_KERNEL_SSE2
|
||||
if(system_cpu_support_sse2()) {
|
||||
shader_kernel = kernel_cpu_sse2_shader;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Shading using SSE2 kernel.";
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
shader_kernel = kernel_cpu_shader;
|
||||
VLOG_ONCE(1, cpu_type_logged) << "Shading using regular kernel.";
|
||||
}
|
||||
|
||||
for(int sample = 0; sample < task.num_samples; sample++) {
|
||||
|
Reference in New Issue
Block a user