[Bf-blender-cvs] [9f1f7ba2bbe] blender-v2.83-release: Fix T76925: more Cycles OpenCL compile errors with some drivers on Linux

Brecht Van Lommel noreply at git.blender.org
Mon May 25 17:06:25 CEST 2020


Commit: 9f1f7ba2bbee2bf82b09e63fde4d8a187265f49a
Author: Brecht Van Lommel
Date:   Mon May 25 16:48:11 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rB9f1f7ba2bbee2bf82b09e63fde4d8a187265f49a

Fix T76925: more Cycles OpenCL compile errors with some drivers on Linux

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

M	intern/cycles/kernel/kernel_adaptive_sampling.h
M	intern/cycles/kernel/kernel_path.h
M	intern/cycles/kernel/kernel_path_branched.h
M	intern/cycles/kernel/kernel_work_stealing.h

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

diff --git a/intern/cycles/kernel/kernel_adaptive_sampling.h b/intern/cycles/kernel/kernel_adaptive_sampling.h
index ee4d1507ef1..98b7bf7e7dc 100644
--- a/intern/cycles/kernel/kernel_adaptive_sampling.h
+++ b/intern/cycles/kernel/kernel_adaptive_sampling.h
@@ -185,19 +185,19 @@ ccl_device bool kernel_do_adaptive_filter_x(KernelGlobals *kg, int y, ccl_global
     ccl_global float *buffer = tile->buffer + index * kernel_data.film.pass_stride;
     ccl_global float4 *aux = (ccl_global float4 *)(buffer +
                                                    kernel_data.film.pass_adaptive_aux_buffer);
-    if (aux->w == 0.0f) {
+    if ((*aux).w == 0.0f) {
       any = true;
       if (x > tile->x && !prev) {
         index = index - 1;
         buffer = tile->buffer + index * kernel_data.film.pass_stride;
         aux = (ccl_global float4 *)(buffer + kernel_data.film.pass_adaptive_aux_buffer);
-        aux->w = 0.0f;
+        (*aux).w = 0.0f;
       }
       prev = true;
     }
     else {
       if (prev) {
-        aux->w = 0.0f;
+        (*aux).w = 0.0f;
       }
       prev = false;
     }
@@ -214,19 +214,19 @@ ccl_device bool kernel_do_adaptive_filter_y(KernelGlobals *kg, int x, ccl_global
     ccl_global float *buffer = tile->buffer + index * kernel_data.film.pass_stride;
     ccl_global float4 *aux = (ccl_global float4 *)(buffer +
                                                    kernel_data.film.pass_adaptive_aux_buffer);
-    if (aux->w == 0.0f) {
+    if ((*aux).w == 0.0f) {
       any = true;
       if (y > tile->y && !prev) {
         index = index - tile->stride;
         buffer = tile->buffer + index * kernel_data.film.pass_stride;
         aux = (ccl_global float4 *)(buffer + kernel_data.film.pass_adaptive_aux_buffer);
-        aux->w = 0.0f;
+        (*aux).w = 0.0f;
       }
       prev = true;
     }
     else {
       if (prev) {
-        aux->w = 0.0f;
+        (*aux).w = 0.0f;
       }
       prev = false;
     }
diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h
index db35303e3f1..ba46d84d158 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -662,7 +662,7 @@ ccl_device void kernel_path_trace(
   if (kernel_data.film.pass_adaptive_aux_buffer) {
     ccl_global float4 *aux = (ccl_global float4 *)(buffer +
                                                    kernel_data.film.pass_adaptive_aux_buffer);
-    if (aux->w > 0.0f) {
+    if ((*aux).w > 0.0f) {
       return;
     }
   }
diff --git a/intern/cycles/kernel/kernel_path_branched.h b/intern/cycles/kernel/kernel_path_branched.h
index 337c4fb1d10..b9569f531e6 100644
--- a/intern/cycles/kernel/kernel_path_branched.h
+++ b/intern/cycles/kernel/kernel_path_branched.h
@@ -526,7 +526,7 @@ ccl_device void kernel_branched_path_trace(
   if (kernel_data.film.pass_adaptive_aux_buffer) {
     ccl_global float4 *aux = (ccl_global float4 *)(buffer +
                                                    kernel_data.film.pass_adaptive_aux_buffer);
-    if (aux->w > 0.0f) {
+    if ((*aux).w > 0.0f) {
       return;
     }
   }
diff --git a/intern/cycles/kernel/kernel_work_stealing.h b/intern/cycles/kernel/kernel_work_stealing.h
index c642d227e4b..d1602744f1d 100644
--- a/intern/cycles/kernel/kernel_work_stealing.h
+++ b/intern/cycles/kernel/kernel_work_stealing.h
@@ -99,7 +99,7 @@ ccl_device bool get_next_work(KernelGlobals *kg,
         ccl_global float *buffer = kernel_split_params.tile.buffer + buffer_offset;
         ccl_global float4 *aux = (ccl_global float4 *)(buffer +
                                                        kernel_data.film.pass_adaptive_aux_buffer);
-        if (aux->w == 0.0f) {
+        if ((*aux).w == 0.0f) {
           break;
         }
       }



More information about the Bf-blender-cvs mailing list