[Bf-blender-cvs] [93867ae] master: Cycles: Cleanup: use generic utility function to set kernel arguments

Sergey Sharybin noreply at git.blender.org
Wed May 13 16:56:36 CEST 2015


Commit: 93867ae549f54cf98451c0a72e0843fc7b1c62bc
Author: Sergey Sharybin
Date:   Wed May 13 19:29:19 2015 +0500
Branches: master
https://developer.blender.org/rB93867ae549f54cf98451c0a72e0843fc7b1c62bc

Cycles: Cleanup: use generic utility function to set kernel arguments

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

M	intern/cycles/device/device_opencl.cpp

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

diff --git a/intern/cycles/device/device_opencl.cpp b/intern/cycles/device/device_opencl.cpp
index 46d6706..f2ac5fc 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -39,8 +39,6 @@
 CCL_NAMESPACE_BEGIN
 
 #define CL_MEM_PTR(p) ((cl_mem)(uintptr_t)(p))
-#define KERNEL_APPEND_ARG(kernel_name, arg) \
-               opencl_assert(clSetKernelArg(kernel_name, narg++, sizeof(arg), (void*)&arg))
 
 /* Macro declarations used with split kernel */
 
@@ -1008,29 +1006,30 @@ public:
 		cl_int d_offset = task.offset;
 		cl_int d_stride = task.stride;
 
-		/* sample arguments */
-		cl_uint narg = 0;
-
 
 		cl_kernel ckFilmConvertKernel = (rgba_byte)? ckFilmConvertByteKernel: ckFilmConvertHalfFloatKernel;
 
-		/* TODO : Make the kernel launch similar to Cuda */
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_data);
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_rgba);
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_buffer);
+		cl_uint start_arg_index =
+			kernel_set_args(ckFilmConvertKernel,
+			                0,
+			                d_data,
+			                d_rgba,
+			                d_buffer);
 
 #define KERNEL_TEX(type, ttype, name) \
-	set_kernel_arg_mem(ckFilmConvertKernel, &narg, #name);
+	set_kernel_arg_mem(ckFilmConvertKernel, &start_arg_index, #name);
 #include "kernel_textures.h"
 #undef KERNEL_TEX
 
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_sample_scale);
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_x);
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_y);
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_w);
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_h);
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_offset);
-		KERNEL_APPEND_ARG(ckFilmConvertKernel, d_stride);
+		start_arg_index += kernel_set_args(ckFilmConvertKernel,
+		                                   start_arg_index,
+		                                   d_sample_scale,
+		                                   d_x,
+		                                   d_y,
+		                                   d_w,
+		                                   d_h,
+		                                   d_offset,
+		                                   d_stride);
 
 		enqueue_kernel(ckFilmConvertKernel, d_w, d_h);
 	}
@@ -1046,9 +1045,6 @@ public:
 		cl_int d_shader_w = task.shader_w;
 		cl_int d_offset = task.offset;
 
-		/* sample arguments */
-		cl_uint narg = 0;
-
 		cl_kernel kernel;
 
 		if(task.shader_eval_type >= SHADER_EVAL_BAKE)
@@ -1063,21 +1059,25 @@ public:
 
 			cl_int d_sample = sample;
 
-			/* TODO : Make the kernel launch similar to Cuda */
-			KERNEL_APPEND_ARG(kernel, d_data);
-			KERNEL_APPEND_ARG(kernel, d_input);
-			KERNEL_APPEND_ARG(kernel, d_output);
+			cl_uint start_arg_index =
+				kernel_set_args(kernel,
+				                0,
+				                d_data,
+				                d_input,
+				                d_output);
 
 #define KERNEL_TEX(type, ttype, name) \
-		set_kernel_arg_mem(kernel, &narg, #name);
+		set_kernel_arg_mem(kernel, &start_arg_index, #name);
 #include "kernel_textures.h"
 #undef KERNEL_TEX
 
-			KERNEL_APPEND_ARG(kernel, d_shader_eval_type);
-			KERNEL_APPEND_ARG(kernel, d_shader_x);
-			KERNEL_APPEND_ARG(kernel, d_shader_w);
-			KERNEL_APPEND_ARG(kernel, d_offset);
-			KERNEL_APPEND_ARG(kernel, d_sample);
+			start_arg_index += kernel_set_args(kernel,
+			                                   start_arg_index,
+			                                   d_shader_eval_type,
+			                                   d_shader_x,
+			                                   d_shader_w,
+			                                   d_offset,
+			                                   d_sample);
 
 			enqueue_kernel(kernel, task.shader_w, 1);
 
@@ -1361,25 +1361,28 @@ public:
 
 		/* Sample arguments. */
 		cl_int d_sample = sample;
-		cl_uint narg = 0;
 
-		/* TODO : Make the kernel launch similar to Cuda. */
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_data);
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_buffer);
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_rng_state);
+		cl_uint start_arg_index =
+			kernel_set_args(ckPathTraceKernel,
+			                0,
+			                d_data,
+			                d_buffer,
+			                d_rng_state);
 
 #define KERNEL_TEX(type, ttype, name) \
-		set_kernel_arg_mem(ckPathTraceKernel, &narg, #name);
+		set_kernel_arg_mem(ckPathTraceKernel, &start_arg_index, #name);
 #include "kernel_textures.h"
 #undef KERNEL_TEX
 
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_sample);
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_x);
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_y);
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_w);
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_h);
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_offset);
-		KERNEL_APPEND_ARG(ckPathTraceKernel, d_stride);
+		start_arg_index += kernel_set_args(ckPathTraceKernel,
+		                                   start_arg_index,
+		                                   d_sample,
+		                                   d_x,
+		                                   d_y,
+		                                   d_w,
+		                                   d_h,
+		                                   d_offset,
+		                                   d_stride);
 
 		enqueue_kernel(ckPathTraceKernel, d_w, d_h);
 	}
@@ -2384,8 +2387,8 @@ public:
 
 		start_arg_index +=
 			kernel_set_args(ckPathTraceKernel_data_init,
-#ifdef __RAY_DIFFERENTIALS__
 			                start_arg_index,
+#ifdef __RAY_DIFFERENTIALS__
 			                dP_sd,
 			                dP_sd_DL_shadow,
 			                dI_sd,




More information about the Bf-blender-cvs mailing list