Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles')
-rw-r--r--intern/cycles/device/device_cpu.cpp12
-rw-r--r--intern/cycles/kernel/bvh/bvh.h2
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. */