[Bf-blender-cvs] [1382514bf2f] blender-v3.3-release: Fix: Error in oneAPI image code for texture access with clip extension

Nikita Sirgienko noreply at git.blender.org
Mon Aug 8 10:49:31 CEST 2022


Commit: 1382514bf2f881bc2139ebfd477e54bba92e497a
Author: Nikita Sirgienko
Date:   Mon Aug 8 10:47:11 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rB1382514bf2f881bc2139ebfd477e54bba92e497a

Fix: Error in oneAPI image code for texture access with clip extension

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

M	intern/cycles/kernel/device/oneapi/image.h

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

diff --git a/intern/cycles/kernel/device/oneapi/image.h b/intern/cycles/kernel/device/oneapi/image.h
index 6681977a675..2417b8eac3b 100644
--- a/intern/cycles/kernel/device/oneapi/image.h
+++ b/intern/cycles/kernel/device/oneapi/image.h
@@ -81,10 +81,15 @@ ccl_device_inline float4 svm_image_texture_read_2d(int id, int x, int y)
     x = svm_image_texture_wrap_periodic(x, info.width);
     y = svm_image_texture_wrap_periodic(y, info.height);
   }
-  else {
+  else if (info.extension == EXTENSION_EXTEND) {
     x = svm_image_texture_wrap_clamp(x, info.width);
     y = svm_image_texture_wrap_clamp(y, info.height);
   }
+  else {
+    if (x < 0 || x >= info.width || y < 0 || y >= info.height) {
+      return make_float4(0.0f, 0.0f, 0.0f, 0.0f);
+    }
+  }
 
   return svm_image_texture_read(info, x, y, 0);
 }
@@ -99,11 +104,16 @@ ccl_device_inline float4 svm_image_texture_read_3d(int id, int x, int y, int z)
     y = svm_image_texture_wrap_periodic(y, info.height);
     z = svm_image_texture_wrap_periodic(z, info.depth);
   }
-  else {
+  else if (info.extension == EXTENSION_EXTEND) {
     x = svm_image_texture_wrap_clamp(x, info.width);
     y = svm_image_texture_wrap_clamp(y, info.height);
     z = svm_image_texture_wrap_clamp(z, info.depth);
   }
+  else {
+    if (x < 0 || x >= info.width || y < 0 || y >= info.height || z < 0 || z >= info.depth) {
+      return make_float4(0.0f, 0.0f, 0.0f, 0.0f);
+    }
+  }
 
   return svm_image_texture_read(info, x, y, z);
 }
@@ -128,12 +138,6 @@ ccl_device float4 kernel_tex_image_interp(KernelGlobals, int id, float x, float
 {
   const TextureInfo &info = kernel_data_fetch(texture_info, id);
 
-  if (info.extension == EXTENSION_CLIP) {
-    if (x < 0.0f || y < 0.0f || x > 1.0f || y > 1.0f) {
-      return make_float4(0.0f, 0.0f, 0.0f, 0.0f);
-    }
-  }
-
   if (info.interpolation == INTERPOLATION_CLOSEST) {
     /* Closest interpolation. */
     int ix, iy;
@@ -315,12 +319,6 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals, int id, float3 P, in
   }
 #endif
   else {
-    if (info.extension == EXTENSION_CLIP) {
-      if (x < 0.0f || y < 0.0f || z < 0.0f || x > 1.0f || y > 1.0f || z > 1.0f) {
-        return make_float4(0.0f, 0.0f, 0.0f, 0.0f);
-      }
-    }
-
     x *= info.width;
     y *= info.height;
     z *= info.depth;



More information about the Bf-blender-cvs mailing list