Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/device/opencl/opencl_split.cpp')
-rw-r--r--intern/cycles/device/opencl/opencl_split.cpp32
1 files changed, 25 insertions, 7 deletions
diff --git a/intern/cycles/device/opencl/opencl_split.cpp b/intern/cycles/device/opencl/opencl_split.cpp
index 76f9ce7a18f..af40aa89db4 100644
--- a/intern/cycles/device/opencl/opencl_split.cpp
+++ b/intern/cycles/device/opencl/opencl_split.cpp
@@ -1308,13 +1308,7 @@ void OpenCLDevice::thread_run(DeviceTask *task)
{
flush_texture_buffers();
- if (task->type == DeviceTask::FILM_CONVERT) {
- film_convert(*task, task->buffer, task->rgba_byte, task->rgba_half);
- }
- else if (task->type == DeviceTask::SHADER) {
- shader(*task);
- }
- else if (task->type == DeviceTask::RENDER) {
+ if (task->type == DeviceTask::RENDER || task->type == DeviceTask::DENOISE) {
RenderTile tile;
DenoisingTask denoising(this, *task);
@@ -1352,6 +1346,30 @@ void OpenCLDevice::thread_run(DeviceTask *task)
kgbuffer.free();
}
+ else if (task->type == DeviceTask::SHADER) {
+ shader(*task);
+ }
+ else if (task->type == DeviceTask::FILM_CONVERT) {
+ film_convert(*task, task->buffer, task->rgba_byte, task->rgba_half);
+ }
+ else if (task->type == DeviceTask::DENOISE_BUFFER) {
+ RenderTile tile;
+ tile.x = task->x;
+ tile.y = task->y;
+ tile.w = task->w;
+ tile.h = task->h;
+ tile.buffer = task->buffer;
+ tile.sample = task->sample + task->num_samples;
+ tile.num_samples = task->num_samples;
+ tile.start_sample = task->sample;
+ tile.offset = task->offset;
+ tile.stride = task->stride;
+ tile.buffers = task->buffers;
+
+ DenoisingTask denoising(this, *task);
+ denoise(tile, denoising);
+ task->update_progress(&tile, tile.w * tile.h);
+ }
}
void OpenCLDevice::film_convert(DeviceTask &task,