[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