Thanks for pointing out, committed a fix, should work now. Brecht.
On Thu, Jan 26, 2012 at 8:43 PM, Thomas Dinges <[email protected]> wrote: > 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 >> [email protected] >> http://lists.blender.org/mailman/listinfo/bf-blender-cvs > > > -- > Thomas Dinges > Blender Developer, Artist and Musician > > www.dingto.org > > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
