diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-07-11 16:50:43 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-07-11 16:50:43 +0300 |
commit | 06312c6d2db8a6d959bed153f76a28f9faf866f8 (patch) | |
tree | 0c0e419621bf295ca18133d84eb6d35897584d7d /intern/cycles | |
parent | 3fe0c32fae20be4146bfa20fe64f56f5716a132b (diff) | |
parent | 7ad21c3876c2453f11fd509a0157639d615567fc (diff) |
Merge branch 'master' into blender-v2.80-releasev2.80-rc1
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/device/device_cpu.cpp | 12 | ||||
-rw-r--r-- | intern/cycles/kernel/bvh/bvh.h | 2 |
2 files changed, 5 insertions, 9 deletions
diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp index dc9adcb1537..b2d923dfdf0 100644 --- a/intern/cycles/device/device_cpu.cpp +++ b/intern/cycles/device/device_cpu.cpp @@ -980,14 +980,11 @@ class CPUDevice : public Device { void thread_shader(DeviceTask &task) { - KernelGlobals kg = kernel_globals; + KernelGlobals *kg = new KernelGlobals(thread_kernel_globals_init()); -#ifdef WITH_OSL - OSLShader::thread_init(&kg, &kernel_globals, &osl_globals); -#endif for (int sample = 0; sample < task.num_samples; sample++) { for (int x = task.shader_x; x < task.shader_x + task.shader_w; x++) - shader_kernel()(&kg, + shader_kernel()(kg, (uint4 *)task.shader_input, (float4 *)task.shader_output, task.shader_eval_type, @@ -1002,9 +999,8 @@ class CPUDevice : public Device { task.update_progress(NULL); } -#ifdef WITH_OSL - OSLShader::thread_free(&kg); -#endif + thread_kernel_globals_free(kg); + delete kg; } int get_split_task_count(DeviceTask &task) diff --git a/intern/cycles/kernel/bvh/bvh.h b/intern/cycles/kernel/bvh/bvh.h index 7503bad37b0..be0f05285e8 100644 --- a/intern/cycles/kernel/bvh/bvh.h +++ b/intern/cycles/kernel/bvh/bvh.h @@ -174,7 +174,7 @@ ccl_device_inline bool scene_intersect_valid(const Ray *ray) * From production scenes so far it seems it's enough to test first element * only. */ - return isfinite(ray->P.x); + return isfinite_safe(ray->P.x) && isfinite_safe(ray->D.x); } /* Note: ray is passed by value to work around a possible CUDA compiler bug. */ |