Fix T41222 Blender gives weird output when baking (4096*4096) resolution on GPU

In collaboration with Sergey Sharybin.

Also thanks to Wolfgang Faehnle (mib2berlin) for help testing the
solutions.

Reviewers: sergey

Differential Revision: https://developer.blender.org/D690
This commit is contained in:
Dalai Felinto 2014-08-05 13:50:50 -03:00
parent 9855edcacf
commit a48b372b04
Notes: blender-bot 2023-10-18 15:23:11 +02:00
Referenced by commit 2c5b6859d9, Revert "Fix T41222 Blender gives weird output when baking (4096*4096) resolution on GPU"
Referenced by issue #41222, Blender gives weird ouput when baking (4096*4096) resolution on GPU
2 changed files with 26 additions and 2 deletions

View File

@ -25,6 +25,7 @@
#include "cuew.h"
#include "util_debug.h"
#include "util_foreach.h"
#include "util_map.h"
#include "util_opengl.h"
#include "util_path.h"
@ -966,7 +967,10 @@ public:
int get_split_task_count(DeviceTask& task)
{
return 1;
if (task.type == DeviceTask::SHADER)
return task.get_subtask_count(TaskScheduler::num_threads(), 1024 * 1024);
else
return 1;
}
void task_add(DeviceTask& task)
@ -979,6 +983,15 @@ public:
cuda_assert(cuCtxSynchronize());
cuda_pop_context();
}
else if(task.type == DeviceTask::SHADER) {
/* split task into smaller ones */
list<DeviceTask> tasks;
task.split(tasks, TaskScheduler::num_threads(), 1024 * 1024);
foreach(DeviceTask& task, tasks)
task_pool.push(new CUDADeviceTask(this, task));
}
else {
task_pool.push(new CUDADeviceTask(this, task));
}

View File

@ -280,7 +280,18 @@ public:
int get_split_task_count(DeviceTask& task)
{
return 1;
int total_tasks = 0;
list<DeviceTask> tasks;
task.split(tasks, devices.size());
foreach(SubDevice& sub, devices) {
if(!tasks.empty()) {
DeviceTask subtask = tasks.front();
tasks.pop_front();
total_tasks += sub.device->get_split_task_count(subtask);
}
}
return total_tasks;
}
void task_add(DeviceTask& task)