[Bf-committers] Antw.: [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43734] trunk/blender/intern/cycles: Cycles: render passes for CUDA cards with compute model >= 2.x.
Thomas Dinges
blender at dingto.org
Thu Jan 26 21:36:54 CET 2012
Only affects background render, 3D view works.
Sent from my mobile device
----- Reply message -----
Von: "Thomas Dinges" <blender at dingto.org>
An: <bf-committers at blender.org>
Betreff: [Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43734] trunk/blender/intern/cycles: Cycles: render passes for CUDA cards with compute model >= 2.x.
Datum: Do., Jan. 26, 2012 20:43
Hi Brecht,
after this commit I get an error with CUDA:
CUDA error: Unknown error in cuCtxSynchronize()
CUDA error: Unknown error in cuMemFree(cuda_device_ptr(mem.device_pointer))
I use a GTX 540, with 2GB RAM. Windows x64.
It does not matter what scene, happens even with the default cube.
Am 26.01.2012 20:07, schrieb Brecht Van Lommel:
> Revision: 43734
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43734
> Author: blendix
> Date: 2012-01-26 19:07:01 +0000 (Thu, 26 Jan 2012)
> Log Message:
> -----------
> Cycles: render passes for CUDA cards with compute model>= 2.x.
>
> Modified Paths:
> --------------
> trunk/blender/intern/cycles/blender/blender_session.cpp
> trunk/blender/intern/cycles/device/device.cpp
> trunk/blender/intern/cycles/device/device.h
> trunk/blender/intern/cycles/device/device_cpu.cpp
> trunk/blender/intern/cycles/device/device_cuda.cpp
> trunk/blender/intern/cycles/device/device_multi.cpp
> trunk/blender/intern/cycles/device/device_network.cpp
> trunk/blender/intern/cycles/device/device_opencl.cpp
> trunk/blender/intern/cycles/kernel/kernel_passes.h
> trunk/blender/intern/cycles/kernel/kernel_types.h
> trunk/blender/intern/cycles/render/buffers.cpp
> trunk/blender/intern/cycles/render/svm.cpp
>
> Modified: trunk/blender/intern/cycles/blender/blender_session.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/blender/blender_session.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/blender/blender_session.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -206,7 +206,7 @@
> vector<Pass> passes;
> Pass::add(PASS_COMBINED, passes);
>
> - if(session_params.device.type == DEVICE_CPU) { /* todo */
> + if(session_params.device.advanced_shading) {
> BL::RenderLayer::passes_iterator b_pass_iter;
>
> for(b_rlay.passes.begin(b_pass_iter); b_pass_iter != b_rlay.passes.end(); ++b_pass_iter) {
>
> Modified: trunk/blender/intern/cycles/device/device.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/device/device.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/device/device.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -183,6 +183,9 @@
> return NULL;
> }
>
> + if(device)
> + device->info = info;
> +
> return device;
> }
>
>
> Modified: trunk/blender/intern/cycles/device/device.h
> ===================================================================
> --- trunk/blender/intern/cycles/device/device.h 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/device/device.h 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -51,6 +51,7 @@
> string id;
> int num;
> bool display_device;
> + bool advanced_shading;
> vector<DeviceInfo> multi_devices;
>
> DeviceInfo()
> @@ -59,6 +60,7 @@
> id = "CPU";
> num = 0;
> display_device = false;
> + advanced_shading = true;
> }
> };
>
> @@ -101,10 +103,8 @@
> public:
> virtual ~Device() {}
>
> - virtual bool support_full_kernel() = 0;
> -
> /* info */
> - virtual string description() = 0;
> + DeviceInfo info;
> virtual const string& error_message() { return error_msg; }
>
> /* regular memory */
>
> Modified: trunk/blender/intern/cycles/device/device_cpu.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/device/device_cpu.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/device/device_cpu.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -72,16 +72,11 @@
> kernel_globals_free(kg);
> }
>
> - bool support_full_kernel()
> + bool support_advanced_shading()
> {
> return true;
> }
>
> - string description()
> - {
> - return system_cpu_brand_string();
> - }
> -
> void mem_alloc(device_memory& mem, MemoryType type)
> {
> mem.device_pointer = mem.data_pointer;
> @@ -271,6 +266,7 @@
> info.description = system_cpu_brand_string();
> info.id = "CPU";
> info.num = 0;
> + info.advanced_shading = true;
>
> devices.insert(devices.begin(), info);
> }
>
> Modified: trunk/blender/intern/cycles/device/device_cuda.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/device/device_cuda.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/device/device_cuda.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -194,26 +194,6 @@
> cuda_assert(cuCtxDetach(cuContext))
> }
>
> - bool support_full_kernel()
> - {
> - int major, minor;
> - cuDeviceComputeCapability(&major,&minor, cuDevId);
> -
> - return (major>= 2);
> - }
> -
> - string description()
> - {
> - /* print device information */
> - char deviceName[256];
> -
> - cuda_push_context();
> - cuDeviceGetName(deviceName, 256, cuDevId);
> - cuda_pop_context();
> -
> - return string("CUDA ") + deviceName;
> - }
> -
> bool support_device(bool experimental)
> {
> if(!experimental) {
> @@ -881,6 +861,10 @@
> info.id = string_printf("CUDA_%d", num);
> info.num = num;
>
> + int major, minor;
> + cuDeviceComputeCapability(&major,&minor, num);
> + info.advanced_shading = (major>= 2);
> +
> /* if device has a kernel timeout, assume it is used for display */
> if(cuDeviceGetAttribute(&attr, CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT, num) == CUDA_SUCCESS&& attr == 1) {
> info.display_device = true;
>
> Modified: trunk/blender/intern/cycles/device/device_multi.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/device/device_multi.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/device/device_multi.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -76,16 +76,6 @@
> delete sub.device;
> }
>
> - bool support_full_kernel()
> - {
> - foreach(SubDevice& sub, devices) {
> - if(!sub.device->support_full_kernel())
> - return false;
> - }
> -
> - return true;
> - }
> -
> const string& error_message()
> {
> foreach(SubDevice& sub, devices) {
> @@ -99,38 +89,6 @@
> return error_msg;
> }
>
> - string description()
> - {
> - /* create map to find duplicate descriptions */
> - map<string, int> dupli_map;
> - map<string, int>::iterator dt;
> -
> - foreach(SubDevice& sub, devices) {
> - string key = sub.device->description();
> -
> - if(dupli_map.find(key) == dupli_map.end())
> - dupli_map[key] = 1;
> - else
> - dupli_map[key]++;
> - }
> -
> - /* generate string */
> - stringstream desc;
> - bool first = true;
> -
> - for(dt = dupli_map.begin(); dt != dupli_map.end(); dt++) {
> - if(!first) desc<< ", ";
> - first = false;
> -
> - if(dt->second> 1)
> - desc<< dt->second<< "x "<< dt->first;
> - else
> - desc<< dt->first;
> - }
> -
> - return desc.str();
> - }
> -
> bool load_kernels(bool experimental)
> {
> foreach(SubDevice& sub, devices)
> @@ -344,6 +302,8 @@
> map<string, int>::iterator dt;
> int num_added = 0, num_display = 0;
>
> + info.advanced_shading = true;
> +
> foreach(DeviceInfo& subinfo, devices) {
> if(subinfo.type == type) {
> if(subinfo.display_device) {
> @@ -363,6 +323,8 @@
> info.multi_devices.push_back(subinfo);
> if(subinfo.display_device)
> info.display_device = true;
> + if(!subinfo.advanced_shading)
> + info.advanced_shading = false;
> num_added++;
> }
> }
>
> Modified: trunk/blender/intern/cycles/device/device_network.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/device/device_network.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/device/device_network.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -57,24 +57,6 @@
> {
> }
>
> - bool support_full_kernel()
> - {
> - return false;
> - }
> -
> - string description()
> - {
> - RPCSend snd(socket, "description");
> - snd.write();
> -
> - RPCReceive rcv(socket);
> - string desc_string;
> -
> - *rcv.archive& desc_string;
> -
> - return desc_string + " (remote)";
> - }
> -
> void mem_alloc(device_memory& mem, MemoryType type)
> {
> #if 0
>
> Modified: trunk/blender/intern/cycles/device/device_opencl.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/device/device_opencl.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/device/device_opencl.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -453,20 +453,6 @@
> clReleaseContext(cxContext);
> }
>
> - bool support_full_kernel()
> - {
> - return false;
> - }
> -
> - string description()
> - {
> - char name[1024];
> -
> - clGetDeviceInfo(cdDevice, CL_DEVICE_NAME, sizeof(name),&name, NULL);
> -
> - return string("OpenCL ") + name;
> - }
> -
> void mem_alloc(device_memory& mem, MemoryType type)
> {
> size_t size = mem.memory_size();
> @@ -750,6 +736,7 @@
> info.num = num;
> /* we don't know if it's used for display, but assume it is */
> info.display_device = true;
> + info.advanced_shading = false;
>
> devices.push_back(info);
> }
>
> Modified: trunk/blender/intern/cycles/kernel/kernel_passes.h
> ===================================================================
> --- trunk/blender/intern/cycles/kernel/kernel_passes.h 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/kernel/kernel_passes.h 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -36,7 +36,7 @@
> *buf = (sample == 0)? value: *buf + value;
> }
>
> -__device void kernel_write_data_passes(KernelGlobals *kg, __global float *buffer, PathRadiance *L,
> +__device_inline void kernel_write_data_passes(KernelGlobals *kg, __global float *buffer, PathRadiance *L,
> ShaderData *sd, int sample, int path_flag, float3 throughput)
> {
> #ifdef __PASSES__
> @@ -86,7 +86,7 @@
> #endif
> }
>
> -__device void kernel_write_light_passes(KernelGlobals *kg, __global float *buffer, PathRadiance *L, int sample)
> +__device_inline void kernel_write_light_passes(KernelGlobals *kg, __global float *buffer, PathRadiance *L, int sample)
> {
> #ifdef __PASSES__
> int flag = kernel_data.film.pass_flag;
>
> Modified: trunk/blender/intern/cycles/kernel/kernel_types.h
> ===================================================================
> --- trunk/blender/intern/cycles/kernel/kernel_types.h 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/kernel/kernel_types.h 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -185,6 +185,9 @@
> struct PathRadiance {
> int use_light_pass;
>
> + float3 emission;
> + float3 background;
> +
> float3 indirect;
> float3 direct_throughput;
> float3 direct_emission;
> @@ -200,9 +203,6 @@
> float3 indirect_diffuse;
> float3 indirect_glossy;
> float3 indirect_transmission;
> -
> - float3 emission;
> - float3 background;
> };
>
> struct BsdfEval {
>
> Modified: trunk/blender/intern/cycles/render/buffers.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/render/buffers.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/render/buffers.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -130,7 +130,7 @@
> if(!buffer.device_pointer)
> return false;
>
> - device->mem_copy_from(buffer, 0, params.width, params.height, sizeof(float4));
> + device->mem_copy_from(buffer, 0, params.width, params.height, params.get_passes_size()*sizeof(float));
>
> return true;
> }
>
> Modified: trunk/blender/intern/cycles/render/svm.cpp
> ===================================================================
> --- trunk/blender/intern/cycles/render/svm.cpp 2012-01-26 17:11:43 UTC (rev 43733)
> +++ trunk/blender/intern/cycles/render/svm.cpp 2012-01-26 19:07:01 UTC (rev 43734)
> @@ -58,7 +58,7 @@
> }
>
> bool sunsky_done = false;
> - bool use_multi_closure = device->support_full_kernel();
> + bool use_multi_closure = device->info.advanced_shading;
>
> for(i = 0; i< scene->shaders.size(); i++) {
> Shader *shader = scene->shaders[i];
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
--
Thomas Dinges
Blender Developer, Artist and Musician
www.dingto.org
_______________________________________________
Bf-committers mailing list
Bf-committers at blender.org
http://lists.blender.org/mailman/listinfo/bf-committers
More information about the Bf-committers
mailing list