[Bf-blender-cvs] [b753fb6] cycles_kernel_split: Add mem_alloc() function for Split kernel buffer allocation

Jothi_PM noreply at git.blender.org
Wed May 6 09:54:14 CEST 2015


Commit: b753fb675150c1ad3786e57e56f79ec73a51e4c1
Author: Jothi_PM
Date:   Wed May 6 11:23:33 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rBb753fb675150c1ad3786e57e56f79ec73a51e4c1

Add mem_alloc() function for Split kernel buffer allocation

Conflicts:
	intern/cycles/device/device_opencl.cpp

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

M	intern/cycles/device/device_opencl.cpp

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

diff --git a/intern/cycles/device/device_opencl.cpp b/intern/cycles/device/device_opencl.cpp
index ebc374a..5d8772a 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -550,7 +550,7 @@ public:
 		if(opencl_error(ciErr))
 			return;
 
-		fprintf(stderr, "Device init succes\n");
+		fprintf(stderr, "Device init success\n");
 		device_initialized = true;
 	}
 
@@ -674,6 +674,17 @@ public:
 		mem.device_size = size;
 	}
 
+	/* overloading function for creating split kernel device buffers */
+	cl_mem mem_alloc(size_t bufsize, cl_mem_flags mem_flag = CL_MEM_READ_WRITE) {
+		cl_mem ptr;
+		ptr = clCreateBuffer(cxContext, mem_flag, bufsize, NULL, &ciErr);
+		if (ciErr != CL_SUCCESS) {
+			fprintf(stderr, "(%d) %s in clCreateBuffer\n", ciErr, clewErrorString(ciErr));
+			assert(0);
+		}
+		return ptr;
+	}
+
 	void mem_copy_to(device_memory& mem)
 	{
 		/* this is blocking */
@@ -2424,250 +2435,105 @@ public:
 			max_work_groups = (max_global_size[0] * max_global_size[1]) / (local_size[0] * local_size[1]);
 
 			/* Allocate work_pool_wgs memory */
-			work_pool_wgs = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, max_work_groups * sizeof(unsigned int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create work_pool_wgs memory");
+			work_pool_wgs = mem_alloc(max_work_groups * sizeof(unsigned int));
 #endif
 
 			/* Allocate queue_index memory only once */
-			Queue_index = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, NUM_QUEUES * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create Queue_index memory");
-
-			use_queues_flag = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, sizeof(char), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create use_queues_flag memory");
-
-			kgbuffer = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, get_KernelGlobals_size(), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create kgbuffer memory");
+			Queue_index = mem_alloc(NUM_QUEUES * sizeof(int));
+			use_queues_flag = mem_alloc(sizeof(char));
+			kgbuffer = mem_alloc(get_KernelGlobals_size());
 
 			/* Create global buffers for ShaderData */
-			sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, get_shaderdata_soa_size(), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create Shaderdata memory");
-
-			sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, get_shaderdata_soa_size(), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create sd_DL_shadow memory");
-
-			P_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(float3), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create P_sd memory");
-
-			P_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(float3), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create P_sd_DL_shadow memory");
-
-			N_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(float3), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create N_sd memory");
-
-			N_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(float3), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create N_sd_DL_shadow memory");
-
-			Ng_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(float3), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create Ng_sd memory");
-
-			Ng_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(float3), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create Ng_sd_DL_shadow memory");
-
-			I_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(float3), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create I_sd memory");
-
-			I_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(float3), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create I_sd_DL_shadow memory");
-
-			shader_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create shader_sd memory");
-
-			shader_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create shader_sd_DL_shadow memory");
-
-			flag_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create flag_sd memory");
-
-			flag_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create flag_sd_DL_shadow memory");
-
-			prim_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create prim_sd memory");
-
-			prim_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create prim_sd_DL_shadow memory");
-
-			type_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create type_sd memory");
-
-			type_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create type_sd_DL_shadow memory");
-
-			u_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(float), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create u_sd memory");
-
-			u_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(float), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create u_sd_DL_shadow memory");
-
-			v_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(float), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create v_sd memory");
-
-			v_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(float), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create v_sd_DL_shadow memory");
-
-			object_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create object_sd memory");
-
-			object_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create object_sd_DL_shadow memory");
-
-			time_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(float), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create time_sd memory");
-
-			time_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(float), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create time_sd_DL_shadow memory");
-
-			ray_length_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(float), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create ray_length_sd memory");
-
-			ray_length_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(float), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create ray_length_sd_DL_shadow memory");
-
-			ray_depth_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create ray_depth_sd memory");
-
-			ray_depth_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create ray_depth_sd_DL_shadow memory");
-
-			transparent_depth_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create transparent_depth_sd memory");
-
-			transparent_depth_sd_DL_shadow = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, num_global_elements * 2 * sizeof(int), NULL, &ciErr);
-			assert(ciErr == CL_SUCCESS && "Can't create transparent_depth_sd_DL_shadow memory");
+			sd = mem_alloc(get_shaderdata_soa_size());
+			sd_DL_shadow = mem_alloc(get_shaderdata_soa_size());
+			P_sd = mem_alloc(num_global_elements * sizeof(float3));
+			P_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(float3));
+			N_sd = mem_alloc(num_global_elements * sizeof(float3));
+			N_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(float3));
+			Ng_sd = mem_alloc(num_global_elements * sizeof(float3));
+			Ng_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(float3));
+			I_sd = mem_alloc(num_global_elements * sizeof(float3));
+			I_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(float3));
+			shader_sd = mem_alloc(num_global_elements * sizeof(int));
+			shader_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(int));
+			flag_sd = mem_alloc(num_global_elements * sizeof(int));
+			flag_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(int));
+			prim_sd = mem_alloc(num_global_elements * sizeof(int));
+			prim_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(int));
+			type_sd = mem_alloc(num_global_elements * sizeof(int));
+			type_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(int));
+			u_sd = mem_alloc(num_global_elements * sizeof(float));
+			u_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(float));
+			v_sd = mem_alloc(num_global_elements * sizeof(float));
+			v_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(float));
+			object_sd = mem_alloc(num_global_elements * sizeof(int));
+			object_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(int));
+			time_sd = mem_alloc(num_global_elements * sizeof(float));
+			time_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(float));
+			ray_length_sd = mem_alloc(num_global_elements * sizeof(float));
+			ray_length_sd_DL_shadow = mem_alloc(num_global_elements * 2 * sizeof(float));
+			ray_depth_sd = mem_alloc(num_global_elements * sizeof(int));
+			ray_depth_sd_DL_shadow = mem_alloc(num_global_elements * 2 *

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list