Commit: a62967787cc9aa1bc6d4cca400e776b529838f4f
Author: Sergey Sharybin
Date:   Fri Jul 8 09:41:36 2016 +0200
Branches: master
https://developer.blender.org/rBa62967787cc9aa1bc6d4cca400e776b529838f4f

Fix T48808: Regression: Cycles OpenCL broken after Hair BVH commit

===================================================================

M       intern/cycles/kernel/geom/geom_bvh_nodes.h
M       intern/cycles/kernel/kernel_random.h
M       intern/cycles/util/util_transform.h

===================================================================

diff --git a/intern/cycles/kernel/geom/geom_bvh_nodes.h 
b/intern/cycles/kernel/geom/geom_bvh_nodes.h
index deb91ec..5b0d878 100644
--- a/intern/cycles/kernel/geom/geom_bvh_nodes.h
+++ b/intern/cycles/kernel/geom/geom_bvh_nodes.h
@@ -36,7 +36,7 @@ ccl_device_inline int 
bvh_aligned_node_intersect(KernelGlobals *kg,
                                                  const float t,
                                                  const int nodeAddr,
                                                  const uint visibility,
-                                                 float *dist)
+                                                 float dist[2])
 {
 
        /* fetch node data */
@@ -85,7 +85,7 @@ ccl_device_inline int 
bvh_aligned_node_intersect_robust(KernelGlobals *kg,
                                                         const float extmax,
                                                         const int nodeAddr,
                                                         const uint visibility,
-                                                        float *dist)
+                                                        float dist[2])
 {
 
        /* fetch node data */
@@ -146,7 +146,7 @@ ccl_device_inline bool bvh_unaligned_node_intersect_child(
         const float t,
         int nodeAddr,
         int child,
-        float *dist)
+        float dist[2])
 {
        Transform space  = bvh_unaligned_node_fetch_space(kg, nodeAddr, child);
        float3 aligned_dir = transform_direction(&space, dir);
@@ -172,10 +172,9 @@ ccl_device_inline bool 
bvh_unaligned_node_intersect_child_robust(
         const float3 dir,
         const float t,
         const float difl,
-        const float /*extmax*/,
         int nodeAddr,
         int child,
-        float *dist)
+        float dist[2])
 {
        Transform space  = bvh_unaligned_node_fetch_space(kg, nodeAddr, child);
        float3 aligned_dir = transform_direction(&space, dir);
@@ -210,7 +209,7 @@ ccl_device_inline int 
bvh_unaligned_node_intersect(KernelGlobals *kg,
                                                    const float t,
                                                    const int nodeAddr,
                                                    const uint visibility,
-                                                   float *dist)
+                                                   float dist[2])
 {
        int mask = 0;
        float4 cnodes = kernel_tex_fetch(__bvh_nodes, nodeAddr+0);
@@ -242,11 +241,11 @@ ccl_device_inline int 
bvh_unaligned_node_intersect_robust(KernelGlobals *kg,
                                                           const float extmax,
                                                           const int nodeAddr,
                                                           const uint 
visibility,
-                                                          float *dist)
+                                                          float dist[2])
 {
        int mask = 0;
        float4 cnodes = kernel_tex_fetch(__bvh_nodes, nodeAddr+0);
-       if(bvh_unaligned_node_intersect_child_robust(kg, P, dir, t, difl, 
extmax, nodeAddr, 0, &dist[0])) {
+       if(bvh_unaligned_node_intersect_child_robust(kg, P, dir, t, difl, 
nodeAddr, 0, &dist[0])) {
 #ifdef __VISIBILITY_FLAG__
                if((__float_as_uint(cnodes.x) & visibility))
 #endif
@@ -254,7 +253,7 @@ ccl_device_inline int 
bvh_unaligned_node_intersect_robust(KernelGlobals *kg,
                        mask |= 1;
                }
        }
-       if(bvh_unaligned_node_intersect_child_robust(kg, P, dir, t, difl, 
extmax, nodeAddr, 1, &dist[1])) {
+       if(bvh_unaligned_node_intersect_child_robust(kg, P, dir, t, difl, 
nodeAddr, 1, &dist[1])) {
 #ifdef __VISIBILITY_FLAG__
                if((__float_as_uint(cnodes.y) & visibility))
 #endif
@@ -509,7 +508,6 @@ int ccl_device_inline 
bvh_unaligned_node_intersect_robust(KernelGlobals *kg,
                                                           const ssef& tnear,
                                                           const ssef& tfar,
                                                           const float difl,
-                                                          const float 
/*extmax*/,
                                                           const int nodeAddr,
                                                           const uint 
visibility,
                                                           float dist[2])
@@ -636,7 +634,6 @@ ccl_device_inline int 
bvh_node_intersect_robust(KernelGlobals *kg,
                                                           tnear,
                                                           tfar,
                                                           difl,
-                                                          extmax,
                                                           nodeAddr,
                                                           visibility,
                                                           dist);
diff --git a/intern/cycles/kernel/kernel_random.h 
b/intern/cycles/kernel/kernel_random.h
index 94598e2..731dc04 100644
--- a/intern/cycles/kernel/kernel_random.h
+++ b/intern/cycles/kernel/kernel_random.h
@@ -309,7 +309,7 @@ ccl_device_inline void path_state_branch(PathState *state, 
int branch, int num_b
        state->num_samples = state->num_samples*num_branches;
 }
 
-ccl_device_inline uint lcg_state_init(RNG *rng, const ccl_addr_space PathState 
*state, uint scramble)
+ccl_device_inline uint lcg_state_init(RNG *rng, const PathState *state, uint 
scramble)
 {
        return lcg_init(*rng + state->rng_offset + state->sample*scramble);
 }
diff --git a/intern/cycles/util/util_transform.h 
b/intern/cycles/util/util_transform.h
index 7aee7e5..6fed18a 100644
--- a/intern/cycles/util/util_transform.h
+++ b/intern/cycles/util/util_transform.h
@@ -128,7 +128,7 @@ ccl_device_inline Transform make_transform(float a, float 
b, float c, float d,
 }
 
 /* Constructs a coordinate frame from a normalized normal. */
-ccl_device_inline Transform make_transform_frame(const float3& N)
+ccl_device_inline Transform make_transform_frame(float3 N)
 {
        const float3 dx0 = cross(make_float3(1.0f, 0.0f, 0.0f), N);
        const float3 dx1 = cross(make_float3(0.0f, 1.0f, 0.0f), N);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to