[Bf-blender-cvs] [f9ff8a0] cycles_kernel_split: Merge branch 'master' into cycles_kernel_split

Sergey Sharybin noreply at git.blender.org
Mon Mar 30 17:27:06 CEST 2015


Commit: f9ff8a0bc19fe9c18ac5467311c8fb4600579343
Author: Sergey Sharybin
Date:   Mon Mar 30 15:31:13 2015 +0500
Branches: cycles_kernel_split
https://developer.blender.org/rBf9ff8a0bc19fe9c18ac5467311c8fb4600579343

Merge branch 'master' into cycles_kernel_split

Conflicts:
	intern/cycles/device/device_opencl.cpp
	intern/cycles/kernel/kernel_shader.h
	intern/cycles/kernel/svm/svm_closure.h
	intern/cycles/kernel/svm/svm_wavelength.h
	intern/cycles/kernel/svm/svm_wireframe.h

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



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

diff --cc intern/cycles/device/device_opencl.cpp
index ae8a029,a77a6aa..04c819e
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@@ -1127,42 -595,11 +1127,42 @@@ public
  
  		return true;
  	}
 +#endif
 +
 +#if __SPLIT_KERNEL__
 +	bool build_kernel_SPLIT_KERNEL(const string& kernel_path, cl_program *kernel_program, string custom_kernel_build_options, const string *debug_src = NULL)
 +	{
 +		string build_options;
 +		build_options = opencl_kernel_build_options(platform_name, debug_src) + custom_kernel_build_options;
 +
 +		ciErr = clBuildProgram(*kernel_program, 0, NULL, build_options.c_str(), NULL, NULL);
  
 +		/* show warnings even if build is successful */
 +		size_t ret_val_size = 0;
 +
 +		clGetProgramBuildInfo(*kernel_program, cdDevice, CL_PROGRAM_BUILD_LOG, 0, NULL, &ret_val_size);
 +
 +		if(ret_val_size > 1) {
 +			vector<char> build_log(ret_val_size+1);
 +			clGetProgramBuildInfo(*kernel_program, cdDevice, CL_PROGRAM_BUILD_LOG, ret_val_size, &build_log[0], NULL);
 +
 +			build_log[ret_val_size] = '\0';
 +			fprintf(stderr, "OpenCL kernel build output:\n");
 +			fprintf(stderr, "%s\n", &build_log[0]);
 +		}
 +
 +		if(ciErr != CL_SUCCESS) {
 +			opencl_error("OpenCL build failed: errors in console");
 +			return false;
 +		}
 +
 +		return true;
 +	}
 +#else
- 	bool build_kernel(const string& kernel_path, const string *debug_src = NULL)
+ 	bool build_kernel(const string& /*kernel_path*/, const string *debug_src = NULL)
  	{
  		string build_options = opencl_kernel_build_options(platform_name, debug_src);
 -	
 +
  		ciErr = clBuildProgram(cpProgram, 0, NULL, build_options.c_str(), NULL, NULL);
  
  		/* show warnings even if build is successful */
@@@ -1271,263 -675,7 +1271,263 @@@
  		return md5.get_hex();
  	}
  
 +#if __SPLIT_KERNEL__
 +	bool load_split_kernel_SPLIT_KERNEL(cl_program *program, string kernel_path, string kernel_name, string device_md5, string kernel_init_source, string clbin, string custom_kernel_build_options) {
 +
 +		if(!opencl_version_check())
 +			return false;
 +
 +		clbin = path_user_get(path_join("cache", clbin));
 +
 +		/* path to preprocessed source for debugging */
 +		string *debug_src = NULL;
 +
 +		/* if exists already, try use it */
 +		if(path_exists(clbin) && load_binary_SPLIT_KERNEL(program, kernel_path, clbin, custom_kernel_build_options, debug_src)) {
 +			/* kernel loaded from binary */
 +		}
 +		else {
 +			/* if does not exist or loading binary failed, compile kernel */
 +			if(!compile_kernel_SPLIT_KERNEL(kernel_path, kernel_name, kernel_init_source, program, custom_kernel_build_options))
 +				return false;
 +
 +			/* save binary for reuse */
 +			if(!save_binary_SPLIT_KERNEL(program, clbin))
 +				return false;
 +		}
 +
 +		return true;
 +	}
 +#endif
 +
 +#if __SPLIT_KERNEL__
 +	/* Get enum type names */
 +	string get_node_type_as_string(NodeType node) {
 +		switch (node) {
 +			case NODE_SHADER_JUMP :
 +				return "__NODE_SHADER_JUMP__";
 +				break;
 +			case NODE_CLOSURE_BSDF:
 +				return "__NODE_CLOSURE_BSDF__";
 +				break;
 +			case NODE_CLOSURE_EMISSION:
 +				return "__NODE_CLOSURE_EMISSION__";
 +				break;
 +			case NODE_CLOSURE_BACKGROUND:
 +				return "__NODE_CLOSURE_BACKGROUND__";
 +				break;
 +			case NODE_CLOSURE_HOLDOUT:
 +				return "__NODE_CLOSURE_HOLDOUT__";
 +				break;
 +			case NODE_CLOSURE_AMBIENT_OCCLUSION:
 +				return "__NODE_CLOSURE_AMBIENT_OCCLUSION__";
 +				break;
 +			case NODE_CLOSURE_VOLUME:
 +				return "__NODE_CLOSURE_VOLUME__";
 +				break;
 +			case NODE_CLOSURE_SET_WEIGHT:
 +				return "__NODE_CLOSURE_SET_WEIGHT__";
 +				break;
 +			case NODE_CLOSURE_WEIGHT:
 +				return "__NODE_CLOSURE_WEIGHT__";
 +				break;
 +			case NODE_EMISSION_WEIGHT:
 +				return "__NODE_EMISSION_WEIGHT__";
 +				break;
 +			case NODE_MIX_CLOSURE:
 +				return "__NODE_MIX_CLOSURE__";
 +				break;
 +			case NODE_JUMP_IF_ZERO:
 +				return "__NODE_JUMP_IF_ZERO__";
 +				break;
 +			case NODE_JUMP_IF_ONE:
 +				return "__NODE_JUMP_IF_ONE__";
 +				break;
 +			case NODE_TEX_IMAGE:
 +				return "__NODE_TEX_IMAGE__";
 +				break;
 +			case NODE_TEX_IMAGE_BOX:
 +				return "__NODE_TEX_IMAGE_BOX__";
 +				break;
 +			case NODE_TEX_ENVIRONMENT:
 +				return "__NODE_TEX_ENVIRONMENT__";
 +				break;
 +			case NODE_TEX_SKY:
 +				return "__NODE_TEX_SKY__";
 +				break;
 +			case NODE_TEX_GRADIENT:
 +				return "__NODE_TEX_GRADIENT__";
 +				break;
 +			case NODE_TEX_NOISE:
 +				return "__NODE_TEX_NOISE__";
 +				break;
 +			case NODE_TEX_VORONOI:
 +				return "__NODE_TEX_VORONOI__";
 +				break;
 +			case NODE_TEX_MUSGRAVE:
 +				return "__NODE_TEX_MUSGRAVE__";
 +				break;
 +			case NODE_TEX_WAVE:
 +				return "__NODE_TEX_WAVE__";
 +				break;
 +			case NODE_TEX_MAGIC:
 +				return "__NODE_TEX_MAGIC__";
 +				break;
 +			case NODE_TEX_CHECKER:
 +				return "__NODE_TEX_CHECKER__";
 +				break;
 +			case NODE_TEX_BRICK:
 +				return "__NODE_TEX_BRICK__";
 +				break;
 +			case NODE_CAMERA:
 +				return "__NODE_CAMERA__";
 +				break;
 +			case NODE_GEOMETRY:
 +				return "__NODE_GEOMETRY__";
 +				break;
 +			case NODE_GEOMETRY_BUMP_DX:
 +				return "__NODE_GEOMETRY_BUMP_DX__";
 +				break;
 +			case NODE_GEOMETRY_BUMP_DY:
 +				return "__NODE_GEOMETRY_BUMP_DY__";
 +				break;
 +			case NODE_LIGHT_PATH:
 +				return "__NODE_LIGHT_PATH__";
 +				break;
 +			case NODE_OBJECT_INFO:
 +				return "__NODE_OBJECT_INFO__";
 +				break;
 +			case NODE_PARTICLE_INFO:
 +				return "__NODE_PARTICLE_INFO__";
 +				break;
 +			case NODE_HAIR_INFO:
 +				return "__NODE_HAIR_INFO__";
 +				break;
 +			case NODE_CONVERT:
 +				return "__NODE_CONVERT__";
 +				break;
 +			case NODE_VALUE_F:
 +				return "__NODE_VALUE_F__";
 +				break;
 +			case NODE_VALUE_V:
 +				return "__NODE_VALUE_V__";
 +				break;
 +			case NODE_INVERT:
 +				return "__NODE_INVERT__";
 +				break;
 +			case NODE_GAMMA:
 +				return "__NODE_GAMMA__";
 +				break;
 +			case NODE_BRIGHTCONTRAST:
 +				return "__NODE_BRIGHTCONTRAST__";
 +				break;
 +			case NODE_MIX:
 +				return "__NODE_MIX__";
 +				break;
 +			case NODE_SEPARATE_VECTOR:
 +				return "__NODE_SEPARATE_VECTOR__";
 +				break;
 +			case NODE_COMBINE_VECTOR:
 +				return "__NODE_COMBINE_VECTOR__";
 +				break;
 +			case NODE_SEPARATE_HSV:
 +				return "__NODE_SEPARATE_HSV__";
 +				break;
 +			case NODE_COMBINE_HSV:
 +				return "__NODE_COMBINE_HSV__";
 +				break;
 +			case NODE_HSV:
 +				return "__NODE_HSV__";
 +				break;
 +			case NODE_ATTR:
 +				return "__NODE_ATTR__";
 +				break;
 +			case NODE_ATTR_BUMP_DX:
 +				return "__NODE_ATTR_BUMP_DX__";
 +				break;
 +			case NODE_ATTR_BUMP_DY:
 +				return "__NODE_ATTR_BUMP_DY__";
 +				break;
 +			case NODE_FRESNEL:
 +				return "__NODE_FRESNEL__";
 +				break;
 +			case NODE_LAYER_WEIGHT:
 +				return "__NODE_LAYER_WEIGHT__";
 +				break;
 +			case NODE_WIREFRAME:
 +				return "__NODE_WIREFRAME__";
 +				break;
 +			case NODE_WAVELENGTH:
 +				return "__NODE_WAVELENGTH__";
 +				break;
 +			case NODE_BLACKBODY:
 +				return "__NODE_BLACKBODY__";
 +				break;
 +			case NODE_SET_DISPLACEMENT:
 +				return "__NODE_SET_DISPLACEMENT__";
 +				break;
 +			case NODE_SET_BUMP:
 +				return "__NODE_SET_BUMP__";
 +				break;
 +			case NODE_MATH:
 +				return "__NODE_MATH__";
 +				break;
 +			case NODE_VECTOR_MATH:
 +				return "__NODE_VECTOR_MATH__";
 +				break;
 +			case NODE_VECTOR_TRANSFORM:
 +				return "__NODE_VECTOR_TRANSFORM__";
 +				break;
 +			case NODE_NORMAL:
 +				return "__NODE_NORMAL__";
 +				break;
 +			case NODE_MAPPING:
 +				return "__NODE_MAPPING__";
 +				break;
 +			case NODE_MIN_MAX:
 +				return "__NODE_MIN_MAX__";
 +				break;
 +			case NODE_TEX_COORD:
 +				return "__NODE_TEX_COORD__";
 +				break;
 +			case NODE_TEX_COORD_BUMP_DX:
 +				return "__NODE_TEX_COORD_BUMP_DX__";
 +				break;
 +			case NODE_TEX_COORD_BUMP_DY:
 +				return "__NODE_TEX_COORD_BUMP_DY__";
 +				break;
 +			case NODE_CLOSURE_SET_NORMAL:
 +				return "__NODE_CLOSURE_SET_NORMAL__";
 +				break;
 +			case NODE_RGB_RAMP:
 +				return "__NODE_RGB_RAMP__";
 +				break;
 +			case NODE_RGB_CURVES:
 +				return "__NODE_RGB_CURVES__";
 +				break;
 +			case NODE_VECTOR_CURVES:
 +				return "__NODE_VECTOR_CURVES__";
 +				break;
 +			case NODE_LIGHT_FALLOFF:
 +				return "__NODE_LIGHT_FALLOFF__";
 +				break;
 +			case NODE_TANGENT:
 +				return "__NODE_TANGENT__";
 +				break;
 +			case NODE_NORMAL_MAP:
 +				return "__NODE_NORMAL_MAP__";
 +				break;
 +			case NODE_END:
 +				return "__NODE_END__";
 +				break;
 +			default:
 +				assert(0);
 +		}
 +	}
 +#endif
 +
 +
- 	bool load_kernels(bool experimental)
+ 	bool load_kernels(bool /*experimental*/)
  	{
  		/* verify if device was initialized */
  		if(!device_initialized) {
diff --cc intern/cycles/kernel/closure/bsdf_diffuse_ramp.h
index 3c0f8a2,e0287e7..728158b
--- a/intern/cycles/kernel/closure/bsdf_diffuse_ramp.h
+++ b/intern/cycles/kernel/closure/bsdf_diffuse_ramp.h
@@@ -49,9 -49,11 +49,11 @@@ ccl_device float3 bsdf_diffuse_ramp_get
  	return colors[ipos] * (1.0f - offset) + colors[ipos+1] * offset;
  }
  
 -ccl_device int bsdf_diffuse_ramp_setup(ShaderClosure *sc)
 +ccl_device int bsdf_diffuse_ramp_setup(__ADDR_SPACE__ ShaderClosure *sc)
  {
  	sc->type = CLOSURE_BSDF_DIFFUSE_RAMP_ID;
+ 	sc->data0 = 0.0f;
+ 	sc->data1 = 0.0f;
  	return SD_BSDF|SD_BSDF_HAS_EVAL;
  }
  
diff --cc intern/cycles/kernel/closure/bsdf_phong_ramp.h
index ce65f1f,1ab15ee..118ed36
--- a/intern/cycles/kernel/closure/bsdf_phong_ramp.h
+++ b/intern/cycles/kernel/closure/bsdf_phong_ramp.h
@@@ -49,11 -49,11 +49,11 @@@ ccl_device float3 bsdf_phong_ramp_get_c
  	return colors[ipos] * (1.0f - offset) + colors[ipos+1] * offset;
  }
  
 -ccl_device int bsdf_phong_ramp_setup(ShaderClosure *sc)
 +ccl_device int bsdf_phong_ramp_setup(__ADDR_SPACE__ ShaderClosure *sc)
  {
- 	sc->data0 = max(sc->data0, 0.0f);
- 	
  	sc->type = CLOSURE_BSDF_PHONG_RAMP_ID;
+ 	sc->data0 = max(sc->data0, 0.0f);
+ 	sc->data1 = 0.0f;
  	return SD_BSDF|SD_BSDF_HAS_EVAL;
  }
  
diff --cc intern/cycles/kernel/kernel_shader.h
index a21d5c4,71b2f74..7fed01d
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@@ -845,9 -796,11 +845,11 @@@ ccl_device void shader_eval_surface(_

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list