[Bf-blender-cvs] [b0a90818837] master: Fix T82884: Cycles Compilation Error OpenCL/NanoVDB

Jeroen Bakker noreply at git.blender.org
Mon Nov 23 16:43:19 CET 2020


Commit: b0a9081883778d134d0e8e2b411cf2d3c1523770
Author: Jeroen Bakker
Date:   Mon Nov 23 16:38:06 2020 +0100
Branches: master
https://developer.blender.org/rBb0a9081883778d134d0e8e2b411cf2d3c1523770

Fix T82884: Cycles Compilation Error OpenCL/NanoVDB

Recent changes introduced `acc` parameter into the texture read
functions. When nanovdb isn't enabled this leads to compilation errors
as the `acc` variable wasn't defined. OpenCL only compiles needed
features what made it more prominent.

Reviewed By: Patrick Mours

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

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

M	intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h

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

diff --git a/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h b/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h
index f39998299ef..79e3a16ef19 100644
--- a/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h
+++ b/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h
@@ -273,6 +273,9 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float3 P
     y *= info->height;
     z *= info->depth;
   }
+#  define NANOVDB_ACCESS_POINTER &acc
+#else
+#  define NANOVDB_ACCESS_POINTER NULL
 #endif
 
   if (interpolation == INTERPOLATION_CLOSEST) {
@@ -282,7 +285,7 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float3 P
     svm_image_texture_frac(y, &iy);
     svm_image_texture_frac(z, &iz);
 
-    return svm_image_texture_read_3d(kg, id, &acc, ix, iy, iz);
+    return svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy, iz);
   }
   else if (interpolation == INTERPOLATION_LINEAR) {
     /* Trilinear interpolation. */
@@ -293,15 +296,22 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float3 P
 
     float4 r;
     r = (1.0f - tz) * (1.0f - ty) * (1.0f - tx) *
-        svm_image_texture_read_3d(kg, id, &acc, ix, iy, iz);
-    r += (1.0f - tz) * (1.0f - ty) * tx * svm_image_texture_read_3d(kg, id, &acc, ix + 1, iy, iz);
-    r += (1.0f - tz) * ty * (1.0f - tx) * svm_image_texture_read_3d(kg, id, &acc, ix, iy + 1, iz);
-    r += (1.0f - tz) * ty * tx * svm_image_texture_read_3d(kg, id, &acc, ix + 1, iy + 1, iz);
-
-    r += tz * (1.0f - ty) * (1.0f - tx) * svm_image_texture_read_3d(kg, id, &acc, ix, iy, iz + 1);
-    r += tz * (1.0f - ty) * tx * svm_image_texture_read_3d(kg, id, &acc, ix + 1, iy, iz + 1);
-    r += tz * ty * (1.0f - tx) * svm_image_texture_read_3d(kg, id, &acc, ix, iy + 1, iz + 1);
-    r += tz * ty * tx * svm_image_texture_read_3d(kg, id, &acc, ix + 1, iy + 1, iz + 1);
+        svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy, iz);
+    r += (1.0f - tz) * (1.0f - ty) * tx *
+         svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix + 1, iy, iz);
+    r += (1.0f - tz) * ty * (1.0f - tx) *
+         svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy + 1, iz);
+    r += (1.0f - tz) * ty * tx *
+         svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix + 1, iy + 1, iz);
+
+    r += tz * (1.0f - ty) * (1.0f - tx) *
+         svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy, iz + 1);
+    r += tz * (1.0f - ty) * tx *
+         svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix + 1, iy, iz + 1);
+    r += tz * ty * (1.0f - tx) *
+         svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy + 1, iz + 1);
+    r += tz * ty * tx *
+         svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix + 1, iy + 1, iz + 1);
     return r;
   }
   else {
@@ -322,13 +332,14 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float3 P
       for (int y = 0; y < 4; y++) {
         for (int x = 0; x < 4; x++) {
           float weight = u[x] * v[y] * w[z];
-          r += weight *
-               svm_image_texture_read_3d(kg, id, &acc, ix + x - 1, iy + y - 1, iz + z - 1);
+          r += weight * svm_image_texture_read_3d(
+                            kg, id, NANOVDB_ACCESS_POINTER, ix + x - 1, iy + y - 1, iz + z - 1);
         }
       }
     }
     return r;
   }
+#undef NANOVDB_ACCESS_POINTER
 }
 
 #undef SET_CUBIC_SPLINE_WEIGHTS



More information about the Bf-blender-cvs mailing list